Capteur Arduino LoRa avec radio InAir9B

Capteur Arduino LoRa avec radio InAir9B

Table des matières:

Anonim

Je décrirai ici étape par étape comment faire fonctionner un capteur LoRa avec une pile LoRaWAN basée sur le module inAir9B et Arduino UNO (la même chose peut s’appliquer à Mega).

N'ayant trouvé aucun tutoriel complet sur le Web, j'ai décidé de le créer.

En fin de compte, vous devrez utiliser le noeud final LoRa pour envoyer le message 'Hello World' toutes les minutes.

Comme c'est un exemple de LoRaWAN, je suppose que vous avez déjà une passerelle LoRa.

Ce dont vous aurez besoin:

1. Arduino UNO (Mega ou autre)

2. Module inAir9B (vous pouvez essayer la même chose avec un autre module, mais cela n’entre pas dans le cadre de ce guide)

3. Fils et panneau de rupture

4. passerelle LoRa

5. PC ou ordinateur portable avec Arduino IDE

6. Serveur de réseau LoRa pour voir vos données arriver (j'utilise loriot.io ici)

Préparation:

Connectez Gateway à votre serveur de réseau:

1) le moyen le plus simple est d’utiliser un compte gratuit sur loriot.io. Inscrivez-vous là et ajoutez votre passerelle. Il fournit toutes les instructions pour configurer votre passerelle et télécharger un logiciel personnalisé si nécessaire. Lorsque vous avez terminé, votre passerelle est considérée comme "en ligne" et "connectée".

2) Créez une application réseau dans votre serveur.

3) Générez un nouveau périphérique dans votre application. Cela vous donnera des paramètres tels que 'Device EUI', DevADDR, NWKSKEY, APPSKEY et quelques autres dont nous n'avons plus besoin maintenant.

Provisions:

Étape 1: Module de câblage

Certains de mes modules dans Air 9B étaient avec des pattes soudées (à droite sur la photo) et d’autres soudés par moi-même (à gauche sur la photo). Les modules pré-assemblés ont des pattes au-dessus des étiquettes, ce qui n’est pas pratique pour mon POV, car si vous utilisez breadboard, vous ne pouvez pas voir ce qui est écrit dessus. Donc, mes modules, j'ai soudé avec les jambes vers le bas. Mais c'est à vous de choisir.

Connectez l’Air9B à Arduino comme suit:

inAir9B - Arduino

D0 - 2

D1 - 5

D2 - 6

CS - 10

0V-GND

3V3 - 3,3V

SI - MOSI (sur l'en-tête ICSP)

SO - MISO (sur l'en-tête ICSP)

CK - SCK (sur l'en-tête ICSP)

Pour les broches sur l'en-tête ICSP, voir l'image

Étape 2: Programmation

Il existe actuellement 2 versions de bibliothèques LoRaWAN pour Arduino:

1. http://github.com/matthijskooijman/arduino-lmic - cette bibliothèque est portée par IBM LoRaWAN dans la bibliothèque C. Le problème, c'est qu'il utilise beaucoup de mémoire (principalement à cause de la partie inscription AES) et ne peut pas être utilisé tel quel sur Arduino UNO à cause de cela. Mais il peut être utilisé après avoir désactivé certaines fonctionnalités (ce qui réduit la taille du code).

2. http://github.com/things4u/LoRa-LMIC-1.51 - il s'agit du même port de la bibliothèque IBM, mais avec une bibliothèque différente pour l'enchère AES (version plus petite).

J'ai eu des problèmes pour exécuter un croquis à partir de la deuxième option et j'ai décidé de m'arrêter sur la première.

Pour faire la même chose, vous devez télécharger la bibliothèque à partir du lien ci-dessus (version de Matthijs Kooijman) et la placer dans votre dossier "Bibliothèques" Arduino (non compressé). Ensuite, redémarrez Arduino IDE et vous le verrez dans les bibliothèques et exemples.

Tout d'abord, allez dans le dossier avec la bibliothèque et ouvrez le fichier 'config.h'. Vérifiez cette ligne

'#define CFG_sx1276_radio 1' n'est pas commenté et '// # define CFG_sx1272_radio 1' est commenté.

Décommentez les lignes '#define DISABLE_PING' et '#define DISABLE_BEACONS' pour économiser de l'espace pour Arduino UNO (pour Mega, vous pouvez l'ignorer).

Ouvrez ensuite dans Arduino IDE: Fichier -> Exemples -> Cadre IBM LMIC -> ttn

Les goupilles de contrôle devraient ressembler à ceci:

// mappage de broches

const lmic_pinmap lmic_pins = {.nss = 10,.rxtx = LMIC_UNUSED_PIN,.rst = 5,.dio = {2, 5, 6},};

Définissez NWKSKEY, APPSKEY, DEVADDR comme vous l'avez géré sur votre serveur de réseau.

Voir les fichiers joints à titre d'exemple.

Téléchargez votre dessin sur Arduino. Terminé!

Il commencera à envoyer des paquets à votre passerelle puis à être transmis au serveur réseau.

Si vous utilisez 'loriot', vous verrez peut-être des paquets se diriger vers votre serveur à la page: http: //www.loriot.io/apps/gwtap.html? Gw = B8-27-EB -… (mettez le MAC de votre GW ici)

Et aussi, vous pouvez vérifier les messages qui arrivent sur votre serveur (voir les images).

Vous pouvez convertir des données HEX en ASCII ici: http: //www.rapidtables.com/convert/number/hex-to-a …

Dans mon cas '48 65 6c 6c 6f 2c 20 77 6f 72 6c 64 21 'signifie' Bonjour, le monde! '

Prochaines étapes:

Connectez vos vrais capteurs à Arduino et programmez-le pour envoyer des données à la place de "Hello World".