Publié le 30 janvier 2020 - par

Mise en place d’une Passerelle et d’un nœud LoRa

Je les avais depuis un moment dans un tiroir mais là il se trouve qu’avec l’aménagement d’un atelier éloigné je souhaite surveiller à distance ce qui se passe. Température, humidité, intrusion et chaudière sont un minimum. Il y avait la solution du pont WiFi (1km) mais je me suis dit que c’était l’occasion de tester les cartes LoRa que Pi SUpply m’avait envoyées.

Passerelle et noeud Lora avec Raspberry Pi 4 et Pi Zero

Cliquez pour en savoir plus sur les niveaux

Un débutant pourra sans doute se lancer dans cette aventure, mais je préfère afficher “Avancé” car ce tutoriel met en œuvre de nombreuses techniques et il faut pouvoir tout relier ensemble pour arriver à ce que cela fonctionne…

Gateway and LoRa node with Raspberry Pi 4 and Pi Zero

Pi Supply a eu la gentillesse de me fournir ces cartes LoRa pour les tests. Je les en remercie et c’est donc un

============= Article sponsorisé =============

Je n’ai pas d’affiliation avec Pi Supply et je ne recevrai pas de pourcentage sur les ventes. Ils m’ont simplement offert les cartes LoRa et j’ai choisi de rédiger cet article, tout en conservant ma liberté rédactionnelle.

LoRa – LoRaWAN

Préambule

Comme c’est le cas dans de nombreux domaines de l’informatique, quand on se lance dans l’aventure LoRa, on se dit que ce domaine déjà bien exploré/exploité doit bénéficier d’un grand nombre de tutoriels et d’articles… Et en fait on s’aperçoit que pour réaliser les manips de base on se frotte à des tutos incomplets, faits par des utilisateurs avancés, qui considèrent que tout le monde a leur niveau et qui “zappent” des infos intéressantes et nécessaires quand on débute.
Après il y a les forums et là souvent ceux qui sont déjà avancés sur l’utilisation de LoRa renvoient les demandeurs à la documentation: “Vous trouverez la réponse dans cette doc…“. Mais quand on démarre et qu’on n’a pas les notions de base, on n’y comprend rien ou pas grand chose. Je suis donc passé par toutes ces étapes de recherche (je vous ai mis une partie des sites consultés dans les Sources en bas de l’article). Alors si ma contribution à la connaissance de LoRa peut aider d’autres débutants dans ce domaine, ce sera réussi.
J’ai regroupé ci-dessous (pas forcément dans un ordre logique) les étapes et les démarches pour mettre en place une solution LoRa complète.

L’objectif

L’idée est de surveiller un local distant d’un peu plus d’un kilomètre. Un pont WiFi était une solution, mais le prix piquait un peu, il fallait partir sur une solution à 3Km, des antennes extérieures… Pas simple.
L’autre solution c’était de dégainer les cartes LoRa que PiSupply m’avait envoyées et qui attendaient sagement leur heure, au fond d’un tiroir.

Le synoptique ci-dessus montre ce que nous allons mettre en œuvre dans ce tutoriel.
A gauche le Nœud LoRa qui va envoyer les valeurs par radio. Plusieurs nœuds pourront envoyer tout un tas de données. La passerelle (Gateway) est chargée de recevoir les infos et de les relayer vers le serveur The Things Network (TTN). Ici il n’y aura qu’une passerelle. Lorsque plusieurs passerelles sont accessibles et qu’un nœud envoie les infos vers plusieurs passerelles, le serveur se charge de supprimer les doublons, et ne garde que la trame provenant de la gateway qui reçoit le mieux le signal du nœud. Ce sera aussi sur cette passerelle qu’un éventuel envoi de données vers le nœud sera effectué. Dans mon cas j’ai un seul nœud et une seule passerelle, ce qui simplifie le schéma 🙂

Une fois que les données sont arrivées sur le serveur TTN elles sont stockées pendant un temps limité. Il faut donc les renvoyer vers une base de données (BDD) pour les enregistrer de façon pérenne. Vous pouvez utiliser votre propre base de données. Ici j’ai choisi la solution toute faite de MyDevices Cayenne dans sa version gratuite. Il suffit de créer un compte pour bénéficier des services de base de la plateforme. On pourra créer sur MyDevices un tableau de bord (DashBoard) qui sera accessible via internet sur tout périphérique (PC, tablette, smartphone…).

Qu’est ce c’est ?

Définitions

LoRa est l’acronyme de Long Range (Grande portée). c’est une technologie radio (sans fil) dans laquelle eun émetteur à très faible consommation envoie de petits paquets de données à faible vitesse (0.3kb/s à 5,5kb/s) à un récepteur situé à grande distance.

LoRaWAN est un protocole de télécommunication permettant la communication à bas débit, par radio. Il est utilisé pour des objets à faible consommation électrique communiquant selon la technologie LoRa et connectés à l’Internet via des passerelles, participant ainsi à l’Internet des objets (IoT). (source Wikipedia)

Sur cette image on voit l’architecture d’un réseau LoRaWAN (crédit image) A gauche les “nœuds” collectent les données. Ils sont capables de les envoyer en consommant une énergie minime, grâce à une transmission à bas débit. La portée est très variable mais on atteint couramment plusieurs kilomètres. La carte Lora Node pHAT de Pi Supply est annoncée pour 15Km environ. Dans de (très) bonnes conditions, un signal LoRa a été reçu à 766Km, l’émetteur avait une puissance de 25mW. C’est actuellement le record du monde.

Les Gateways sont chargées de collecter les données des nœuds et de les transférer à un serveur qui pourra les traiter, les redistribuer… Il existe des solutions propriétaires, pour ma part j’ai choisi d’utiliser The Things Network (TTN) un réseau international gratuit, open source et communautaire. Les serveurs de TTN vous permettent de recevoir dans vos applications les données de vos appareils, même à des milliers de kilomètres de chez vous !
Actuellement (janvier 2020) le réseau se compose de plus de 40000 contributeurs regroupés en plus de 400 communautés dans 90 pays ayant déployé plus de 4000 passerelles.
Il est possible pour les particuliers, universités, entreprises, ou encore les communes de contribuer au déploiement ou d’utiliser gratuitement The Things Network.

LoRaP2P
Il existe également un mode P2P (peer to peer) dont je ne parle pas ici. Il est utilisé pour communiquer entre des noeuds, sans gateway. Le protocole est différent de LoRaWAN et n’est pas compatible.

Sur quelles fréquences ?

En Europe c’est la bande 868MHz qui est utilisée pour LoRaWAN

Uplink:
  1. 868.1 – SF7BW125 to SF12BW125
  2. 868.3 – SF7BW125 to SF12BW125 and SF7BW250
  3. 868.5 – SF7BW125 to SF12BW125
  4. 867.1 – SF7BW125 to SF12BW125
  5. 867.3 – SF7BW125 to SF12BW125
  6. 867.5 – SF7BW125 to SF12BW125
  7. 867.7 – SF7BW125 to SF12BW125
  8. 867.9 – SF7BW125 to SF12BW125
  9. 868.8 – FSK
Downlink:
  • Uplink channels 1-9 (RX1)
  • 869.525 – SF9BW125 (RX2 downlink only)

A quoi correspond la modulation ?

Un très bon article sur LoRa est disponible sur linuxembedded.fr. Ce paragraphe en résume la partie concernant la modulation.

La modulation LoRa utilise un étalement de spectre appelée Chirp Spread Spectrum pour coder l’information. SigFox utilise l’Ultra Narrow Band.

Un chirp ou gazouillis est un signal sinusoïdal dont la fréquence varie au cours du temps. Initialement destinée à des applications militaires, cette modulation est également utilisée par les radars et les sonars. Elle est robuste contre différents types de perturbations.

Sur la copie d’écran ci-dessus on voit que le signal émis par un appareil LoRa “glisse” en fréquence. C’est cette modulation qui est utilisée pour transmettre les données.

La modulation peut également être plus ou moins rapide. Si elle est rapide, le temps d’occupation de la bande est faible mais la portée est plus réduite. Si la modulation est plus lente, le temps de transmission est plus long mais la portée augmente. En fonction des applications, il faudra trouver le bon compromis pour une occupation raisonnable de la bande avec une portée suffisante.

LoRaWAN supporte 6 facteurs d’étalement SF = Spreading Factor (SF7, SF8, SF9, SF10, SF11, SF12) comme le montre le schéma ci-dessus. L’utilisation des SF permet la réception de plusieurs signaux en parallèle sur le même canal. Une passerelle multicanaux comme celle de PiSupply peut traiter les signaux de centaines de nœuds. On voit sur les schémas ci-dessus que plus la vitesse de transmission est faible, plus la portée est grande.
Par défaut, le réseau doit au minimum supporter les trois canaux suivants (de 125 KHz de bande passante chacun) : 868,10 ; 868,30 et 868,50 MHz.

Quelle est la différence entre LoRa et LoRaWAN ?

Tout est résumé ici, LoRa concerne la modulation radio, la couche physique alors que LoRaWAN gère les couches supérieures qui s’occupent de la connexion et des applications.

The Things Network

L’utilisation de LoRa avec ce tutoriel nécessite la création d’un compte The Things Network (si vous n’en avez pas encore).

Rendez vous sur le site The Things Network. Cliquez sur le menu en haut à droite de la page (les trois traits horizontaux) et cliquez sur Sign Up.

Remplissez les champs du formulaire et validez par Create account.

Vous devriez recevoir un mail pour confirmer la création de votre compte TTN.

Cliquez sur Activate account pour activer votre compte TTN.

Cliquez maintenant sur Console pour accéder à la console TTN.

Vous avez maintenant accès à la partie Applications pour enregistrer vos objets et Gateways pour enregistrer… vos passerelles.

La passerelle LoRaWan / LoRaWAN Gateway

Présentation

 La passerelle IoT LoRa Gateway HAT pour Raspberry Pi (868MHz/915MHz) est proposée par PiSupply. Elle utilise le module concentrateur de passerelle LoRa RAKWireless RAK833 mPCIe qui est basé sur la technologie LoRa Semtech SX1301 et reçoit les 8 canaux simultanément. Elle est entièrement compatible LoRaWAN.
La passerelle est fournie sous forme de carte HAT. Dans le modèle que j’ai reçu, la carte PCIe RAK833 était déjà en place. Vous trouverez plus d’informations dans ce document sur le module RAK833.

A faire avant de mettre sous tension
Avant de mettre la passerelle sous tension, il faut impérativement coller le radiateur fourni et connecter l’antenne, sinon vous risquez de détruire les composants !

Montage

Positionnez la carte sur le Raspberry Pi (j’ai utilisé un Raspberry Pi 4)  et fixez la avec les entretoises et la visserie nylon. Vérifiez que l’antenne est bien connectée et que le radiateur est en place.

Le connecteur u.FL qui permet de connecter l’antenne sur la carte RAK833 n’est pas prévu pour être connecté/déconnecté de nombreuses fois. Limitez son utilisation sous peine de le détériorer.

Installation et Configuration

PiSupply a facilité la mise en œuvre de cette passerelle en mettant à disposition une distribution toute prête, basée sur Raspbian Lite. Elle est compatible avec toutes les versions de Raspberry Pi, y compris le Raspberry Pi 4. Elle est disponible en téléchargement et représente environ 500Mo. Après avoir récupéré la distribution , transférez la sur une carte micro SD avec Etcher si vous êtes sous Windows ou dd sous Linux.

Inscription de la passerelle sur TTN

Ouvrez le compte TTN que vous avez créé précédemment.

Cliquez sur Gateways

Puis en haut à droite de la fenêtre Gateways, cliquez sur “register gateway“.

Dans cette fenêtre, vous allez remplir les champs suivants :

Gateway ID/ID de la passerelle : Il doit s’agir d’un identifiant unique, qui peut être n’importe quoi, mais qui doit être unique.

Description : Texte libre, c’est pour que vous ayez une description de la passerelle.

Frequency plan/Plan de fréquences : Il s’agit de la fréquence de la passerelle qui doit correspondre à la région. Comme nous sommes en Europe, j’ai choisi le plan Europe 868Mhz.

Router : C’est le serveur sur lequel la passerelle va se connecter, ce devrait être le plus proche de votre lieu de résidence. Comme nous sommes en Europe, j’ai sélectionné l’Europe, mais vous trouverez peut-être un routeur plus proche de vous.

Location/Emplacement : Il y a un intérêt à indiquer l’emplacement de la passerelle, bien qu’il ne soit pas nécessaire, il peut être utile à l’avenir pour la cartographie de la couverture du signal LoRa. Cliquez sur l’emplacement de la passerelle, sur la carte.

Antenna placement/Placement de l’antenne : Indiquer si la passerelle et l’antenne sont à l’intérieur ou à l’extérieur. Pour moi elle est actuellement à l’intérieur, ce qui réduit la zone de couverture.

Attention
Tous ces paramètres peuvent être modifiés ultérieurement, à l’exception de l’ID de la passerelle

La clé Gateway Key est visible en cliquant sur l’œil à gauche de la zone. Vous pourrez la copier en cliquant sur l’icône de la feuille à droite de la zone. Cela vous servira un peu plus tard car il faudra coller cette clé lors de la configuration de la passerelle sur le Raspberry Pi.

Il faut ensuite modifier quelques paramètres. Cliquez sur l’onglet “Settings” et vous devriez pouvoir voir les paramètres que nous avons configurés, puis sur l’onglet “Informations” à gauche. Indiquez la marque “passerelle multicanal Raspberry Pi” et pour le modèle, sélectionnez “Raspberry Pi avec Pi Supply Gateway HAT“. Ne connaissant pas le type d’antenne je n’ai rien indiqué.

Enfin, cliquez sur Update Gateway  pour enregistrer les modifs et revenir à l’écran principal.

Mise en route de la passerelle

Placez la carte SD dans le Raspberry Pi et connectez le à Ethernet (si vous n’utilisez pas le WiFi) pour que la passerelle puisse discuter avec les serveurs TTN. Connectez l’alimentation en dernier.
Vous devriez voir la lumière rouge s’allumer sur votre Raspberry Pi et la LED verte clignoter. Si ce n’est pas le cas, essayez de dépanner cela avant de continuer.
Attendez environ 1 à 2 minutes lorsque que vous démarrez votre passerelle pour la première fois pendant que l’initialisation de Raspbian se termine.

Enfin, nous allons configurer notre passerelle. Pour commencer, vous devrez vous connecter à votre passerelle à partir d’un ordinateur connecté au même réseau. Ouvrez un navigateur web,  et tapez l’adresse de la passerelle dans la barre d’adresse du navigateur web.

Se connecter à la passerelle
Si vous êtes sous Mac OS ou Linux, vous devriez pouvoir vous connecter à votre passerelle avec http://iotloragateway.local. Sous Windows, vous devrez trouver l’adresse IP de votre passerelle. Pour ce faire, vous pouvez généralement consulter la liste des appareils sur votre Box et rechercher l’appareil .

Vous obtenez cette page d’accueil du logiciel de gestion de la passerelle LoRa. Pour configurer notre passerelle il faut aller sur Packet Forwarder Config.

Il faut se connecter pour accéder à la configuration. Par défaut le nom d’utilisateur et le mot de passe de l’utilisateur sont pi et raspberry.

Sur cette page, vous devrez saisir votre adresse électronique dans la première zone, l’ID de la passerelle dans la deuxième zone (surtout ne faites pas d’erreur) et copiez/collez la clé de la passerelle depuis la console TTN dans la zone TTN Gateway Key.
Cliquez ensuite sur Update Configuration.

Pour démarrer la passerelle, nous devons maintenant aller dans l’onglet “System Controls” dans le menu du haut.

Cliquez sur le bouton Restart pour prendre en compte les modifications et redémarrer la passerelle.

Une fois que vous aurez cliqué sur ce bouton, vous verrez une barre de progression  et à la fin, la lumière bleue devrait s’allumer sur le module LoRa. Vous serez redirigé(e) vers la page d’accueil.

Vous devriez maintenant être en mesure de voir l’ID de votre passerelle, le nombre de paquets qu’elle a reçus et d’autres informations pratiques !

Vous pouvez également utiliser la console The Things Network pour visualiser les paquets en temps réel, au fur et à mesure qu’ils sont reçus par la passerelle. Cependant, pour que cela fonctionne, un nœud doit transmettre des paquets LoRa à proximité ! C’est ce que nous allons voir ci-après.

En cliquant sur la flèche bleue à gauche d’une des lignes de la fenêtre trafic, vous déplierez le message et obtiendrez de nombreuses informations sur son contenu.

Le Noeud LoRa / LoRa Node

Présentation

La carte LoRa Node pHAT que j’ai utilisée m’a été fournie par PiSupply. Elle s’appelle “nœud” et est utilisée pour l’IoT. La carte utilise le module LoRa RAKWireless RAK811 qui est basé sur la technologie LoRa Semtech SX1276.
La carte peut être configurée pour différentes fréquences, pour l’Europe les fréquences vont de 863 à 870 MHz.

La carte communique avec le Raspberry Pi par l’UART en utilisant seulement 3 broches GPIO. Elle prend en charge les connexions LoRaWAN et LoRaP2P. Elle dispose d’une antenne intégrée et d’un connecteur u.FL permettant de choisir son antenne et de faciliter l’intégration en boîtier. La carte consomme moins de 50mA en émission.

Un nœud LoRa est composé d’un microcontrôleur destiné à gérer le module. Un circuit radio (ici SX1276) s’occupe des communications et un PA (Power Amplifier) fournit le signal à l’antenne. La communication avec le module se fait en série via un UART. Le module possède quelques GPIO qu’il est possible d’utiliser.
Dans le cas de cette carte Node pHAT, la carte est prévue pour être connectée à un Raspberry Pi qui va communiquer avec le microcontrôleur du module pour gérer les communications.
Si vous souhaitez plus d’information sur le circuit utilisé sur cette carte Node, vous pouvez consulter la documentation technique du module RAK811.

Montage

La carte est fournie avec un rehausseur et deux jeux d’entretoises. Si vous utilisez la carte seule  sur un Raspberry Pi, les petites entretoises feront l’affaire. Si vous souhaitez brancher autre chose par dessus la carte sur le GPIO, il faudra mettre en place le rehausseur de GPIO et les grandes entretoises.  
Lors de mes essais j’ai constaté que le rehausseur fourni a des pattes trop courtes pour recevoir sur le dessus des connecteurs Dupont (je voulais brancher un BME680). J’ai donc utilisé un autre modèle avec des pattes plus longues qui m’a permis de faire les connexions souhaitées.

La carte est fournie avec une antenne extérieure et une “queue de cochon” (Pig Tail en anglais) munie d’un connecteur u.FL et d’un SMA.

La carte que j’ai reçue avait deux straps (résistances de 0 ohm)  qui relient l’antenne INTérieure et l’antenne EXTérieure à la sortie du circuit (flèches bleues). L’antenne embarquée est le rectangle en haut de l’image (flèche marron).

Pour mon utilisation (plus d’un Km de portée) j’ai utilisé l’antenne extérieure. Il faut brancher le connecteur sur la prise. Attention, le petit connecteur u.FL n’est pas conçu pour être branché/débranché de nombreuses fois.

Un petit coup de fer à souder et la résistance (nulle) connectant l’antenne intérieur disparait, ne laissant que l’antenne extérieure connectée.

Les relevés (légèrement variables) que j’ai faits avec le retour de la gateway donnent ceci :

  avec 2 antennes 1 antenne / 90° 1 antenne / parallèle
RSSI -27dBm -17dBm -4dBm
S/N 8dB 8dB 10dB

Avec les deux antennes connectées, le niveau est à -27dBm. Avec la seule antenne extérieure placée à angle droit avec celle de la gateway (à 10cm) on monte à -17dbm et on passe à -4dBm si les antennes sont parallèles. Le rapport Signal/Bruit (S/N) passe de 8dB à 10dB. On veillera à placer les antennes dans la même position (verticale) pour avoir la meilleure transmission.

C’est un Raspberry Pi Zero WH (WiFi et connecteur GPIO) que j’ai retenu pour créer le nœud LoRa.

Ici le premier montage en direct sur le connecteur du GPIO et les entretoise en laiton (les plus courtes).

Finalement j’ai connecté un BME680 pour relever les valeurs de Température, Pression et Humidité qui seront transmises via LoRa.

Installation et Configuration

Configuration du WiFi

Les instructions pour installer le noeud LoRa sont fournies [en anglais] par Pi Supply sur leur site web. Je m’en suis servi pour l’installation et pour la rédaction de cette partie du tutoriel.

Créez une carte micro SD avec Raspbian Lite (j’ai utilisé la version de septembre 2019). Pour utiliser le Raspberry Pi il va falloir effectuer quelques réglages.
Lancez raspi-config :

sudo raspi-config

Configurez les locales pour franciser le système puis dans 2  Network Options > N2 WiFi configurez les paramètres pour vous connecter à votre réseau WiFi (SSID et passphrase)

Configuration des ports série

On va maintenant modifier la configuration pour utiliser l’UART matériel et dévalider la console.

dans 5 Interfacing Options > P6 Serial Répondez <Non> (voulez vous qu’un login shell soit accessible via le port série) puis sélectionnez <Oui> pour activer le port série matériel.

Enfin on va intervertir les interfaces série pour que le meilleur interface (matériel) attribué par défaut au Bluetooth, soit connecté à la carte LoRa. Dans un terminal saisissez :

sudo nano /boot/config.txt

Positionnez le curseur en bas du fichier et ajoutez

dtoverlay=pi3-miniuart-bt

Sauvegardez et fermez le fichier avec “CTRL+O” et “CTRL+X

Redémarrez le Raspberry Pi pour prendre les modifications en compte.

Installer la bibliothèque RAK811

Nous allons installer la bibliothèque RAK811 après avoir mis le système à jour. Éventuellement faites les mises à jour sur un Pi 3 ou un Pi 4… Ça ira plus vite 🙂

sudo apt update
sudo apt upgrade 
sudo apt install python3-pip
sudo pip3 install rak811

A partir de là Raspbian a les éléments pour fonctionner avec la carte LoRa.

Connexion au compte TTN

Il existe deux méthodes différentes pour rejoindre le réseau The Things Network TTN à partir du nœud Raspberry Pi pHAT : OTAA et ABP.

Activation en direct (OTAA)

L’activation en direct (OTAA) est le moyen recommandé (et le plus sûr) pour se connecter au réseau The Things Network. Les appareils exécutent une procédure pour rejoindre le réseau, au cours de laquelle une Adresse de module Dynamique (DevAddr) est attribuée et des clés de sécurité sont négociées avec le module.

Activation par personnalisation (ABP)

Dans certains cas, vous devrez peut-être adresser en dur le DevAddr ainsi que les clés de sécurité de l’appareil. Cela signifie qu’il faudra utiliser l’activation par personnalisation (ABP). Cette stratégie peut sembler plus simple, car vous évitez la procédure utilisée pour rejoindre le réseau, mais elle présente certains inconvénients liés à la sécurité.

J’ai donc choisi d’utiliser la Connexion OTAA

Pour connecter un noeud au réseau TTN, il faut d’abord déterminer l’EUI (Extended Unique Identifier = identifieur unique sur 64 bits) de notre appareil. Cette valeur unique pour chaque composant permet 264  valeurs, soit plus de 1.8×1019 possibilités. (de 0 à 18 446 744 073 709 551 615). Même avec un grand nombre de dispositifs LoRa, on devrait être tranquille un moment.

Ouvrez un terminal et tapez les deux lignes suivantes pour obtenir EUI : (la première ligne resette le rak811, vous n’avez besoin de l’utiliser qu’une seule fois après avoir démarré le système)

rak811 hard-reset
rak811 get-config dev_eui

pi@raspberrypi:~ $ rak811 get-config dev_eui
3038383659386A0C

Et vous récupérez l’identifiant de votre matériel.

Le programme Python

Le programme est chargé de relever les valeurs T, P, RH toutes les minutes et de les envoyer à la passerelle. Pour ajouter un capteur, vous devrez ajouter les bibliothèques correspondant au capteur que vous utilisez. Ici j’ai installé celle du BME680.

Le programme est visible sous une plus grande taille (cliquez sur l’image) et vous pouvez également le télécharger au format texte lora_node_progpy.

Quelques infos sur le programme :

Programme de test
Ce programme est disponible sur le github d’Amédée Bulle. Le programme ci-dessus est un test, il comporte encore des éléments inutiles, reliquats du programme original. Il comporte aussi la réception d’un downlink (message descendant) qui pourrait être utilisé pour déclencher une action (allumer la chaudière, déclencher une alarme, allumer une lampe…). Cette fonction a été testée avec TTN mais pas encore avec MyDevices.

En ligne 39 on reset le circuit LoRa (à faire au moins une fois après la connexion de la carte à l’alimentation)
En ligne 42 on entre les identifiants de l’appli et la clé correspondante. (Il faudra rentrer vos propres identifiants 🙂 )
En ligne 46 on se connecte à la passerelle en OTAA. Over The Air : Les clefs de chiffrement sont obtenues par un échange avec le réseau.
Des lignes 56 à 70 on récupère les données climatiques et on les met en forme pour les inclure dans la payload.
En ligne 75 on crée la trame au format CayenneLPP et on l’envoie.
Le programme envoie la payload  (voir ci-dessous) actualisée toutes les minutes (à modifier selon vos besoins).

Lorsque vous lancez le programme en ligne de commande, il sera fermé si vous étiez en SSH (puTTY) et fermez la fenêtre. Pour continuer l’exécution après fermeture de la fenêtre ajoutez un & à la fin de la ligne.

La charge utile (PayLoad)

On a sur cette copie d’écran la charge utile (payload) envoyée au format CayenneLPP par le nœud. Cette payload vaut : 01 67 00 D7 02 73 25 C9 03 68 51. Comment la décortiquer ?

Le codage Cayenne LPP

Ce codage créé par Cayenne est opensource et disponible sous forme de bibliothèque. LA charge utile a la structure suivante :

1 octet 1 octet N octets 1 octet 1 octet M octets
Data1 canal Type Data1 Data1 Data2 canal Type Data2 Data2

Les types de données dont définis par la norme IPSO Alliance qui identifie chaque donnée avec un “Object ID” (identifiant) en appliquant une conversion selon le tableau ci-dessous. Comme les codes IPSO débutent à 3200, une conversion est appliquée pour que le type n’occupe qu’un seul octet :  LPP_DATA_TYPE = IPSO_OBJECT_ID – 3200

On voit par exemple que la température (Temperature Sensor) code IPSO 3303 devient le type LPP 103 (on lui soustrait 3200) en décimal, ce qui fait 67 en hexadécimal. La donnée occupe 2 octets et contient un nombre signé (la température peut être négative) dont le bit de poids faible représente 0,1°C. Concrètement il faudra multiplier la température par 10 pour obtenir la valeur à stocker ici.

Avec ces informations, reprenons la charge utile :

01 67 00 D7 02 73 25 C9 03 68 51

01 67 00 D7 :

  • 01 = 1d => canal 1
  • 67 = 103d => Capteur de température valeur sur 2 octets
  • 00 D7 = 215d => 21.5°C (valeur/10)

02 73 25 C9 :

  • 02 = 2d => canal 2
  • 73 = 115d => Baromètre valeur sur 2 octets
  • 25 C9 = 9673d => 967.3 hPa (valeur/10)

03 68 51 :

  • 03 = 3 => canal 3
  • 68 = 104d => Capteur d’humidité valeur sur 1 octet
  • 51 = 81d => 40.5 % (valeur/2 car bit de poids faible =0,5% HR)

En 11 octets CayenneLPP a donc permis de passer les valeurs de 3 capteurs et leur type. Ce format est très utilisé dans le monde de l’IoT car il facilite la transmission des données, tout en conservant une occupation réduite de la bande passante.

Préparer le downlink (envoi de messages vers le nœud)

Il faudra ajouter un canal Digital output à votre payload pour 0/1. Ceci ajoute un interrupteur 0/1 à votre dashboard

04 01 01 :

  • 04 = 4 => canal 4
  • 01 = 1 => Sortie numérique
  • 01 = 1 => Valeur 1 (peut valoir 1  on reçoit 04 00 64 FF ou 0 on reçoit 04 00 00 FF)

Il faudra ajouter un canal Analog output à votre payload pour gérer une valeur variable. Ceci ajoute un slider (curseur) dont vous pouvez régler les paramètres (maxi, mini, intervalles)

05 03 00 80 :

  • 05  = 5 => canal 5
  • 03 =3 => Sortie analogique
  • 03 E8 = 1000 => Valeur de départ (réglage de température entre 5 et 25 degrés, on reçoit   05 03 f2 ff qui vaut 1010 si la temp. est réglée à 10.10°C)

Inscription du nœud sur The Things Network

Nous avions précédemment configuré la Gateway sur TTN, maintenant on passe à la configuration du nœud.

Connectez vous à votre compte TTN et cliquez sur Applications puis Add Application

Donnez un nom à votre application (attention tous les caractères ne sont pas autorisés) et ajoutez une description. Sélectionnez le serveur TTN qui sera sollicité, ici le serveur européen.

Vous récupérez un numéro d’application unique, qu’on va associer avec votre carte LoRa. Dans Devices, cliquez sur Register Device.

Donnez un nom à votre matériel, ce nom ne pourra pas être modifié. Collez le Device EUI récupéré plus haut en ligne de commande. App Key sera générée par la suite. Cliquez sur Register.

Après un moment vous avez accès à la fenêtre Device Overview. L’App Key existe et vous pouvez la voir (clic sur l’œil) et la copier (clic sur la feuille à droite du champ). En haut de la fenêtre (dans le fil d’Ariane) cliquez sur le nom de votre application puis dans le menu sur Payload Format. Dans la rubrique Payload Format, choisissez CayenneLPP qui est le format utilisé dans ce tutoriel. Quand vous serez aguerri(e) vous pourrez créer votre propre format 😉

Validez avec Save en bas de la fenêtre.

  A partir de là, vous devriez voir apparaître des données dans la rubrique Data. et vous devriez pouvoir “déployer” les infos pour voir les infos transmises…

Afficher les données sur Cayenne My Devices

Pour exploiter les données sur MyDevices Cayenne, créez un compte ou connectez vous à votre compte.

Page LoRa BME680Voici l’affichage obtenu avec le node LoRa et le BME680 sur Cayenne. Vous pouvez voir la page en temps réel en cliquant sur l’image ci-dessus ou sur ce lien.

Un peu de patience...
Quand vous vous connectez sur cette page, il n’y a pas d’information affichée. Il faut attendre le prochain envoi de données pour lire les valeurs (actuellement toutes les minutes)

Comme cette page MyDevices Cayenne est expérimentale, je ne peux pas garantir qu’elle fonctionne en permanence ni qu’elle va durer indéfiniment…

Pour pouvoir tranférer les données vers cayenne, on va d’abord repasser par la case TTN. Ouvrez votre Application dans The Things Network.

Cliquez sur Integrations puis sur Add Integration

Vous arrivez sur une liste qui vous permet de choisir où vous souhaitez envoyer vos données.

Descendez un peu dans la liste jusqu’à trouver myDevices. Cliquez dessus.

Donnez un nom unique à votre Integration, et choisissez l’Access Key par défaut. Validez en cliquant sur Add Integration en bas de la fenêtre.

Vous obtenez un résumé qui montre le lien que vous venez de créer vers myDevices. Votre application est prête à envoyer des données à myDevices. N’hésitez pas à consulter la documentation signalée en bleu 🙂 C’est également ici que vous pourrez supprimer cette intégration si elle n’est plus nécessaire.

Normalement vous avez déjà dû associer un device LoRa avec votre application précédemment. Si ce n’est pas le cas, faites le maintenant.

On va maintenant passer sur la page de myDevices Cayenne. Créez un compte si vous n’en avez pas encore.

Cliquez sur LoRa, dans la liste choisissez The Things Network

Parmi tous les matériels sélectionnez Cayenne LPP pour pouvoir récupérer les données TTN à ce format.

Si vous avez déjà des éléments dans myDevices, cliquez sur Add new en haut à gauche et la suite est comme ci-dessus.

Lorsque vous avez sélectionné Cayenne LPP, cette fenêtre s’ouvre et il vous reste à indiquer le N° du matériel Dev EUI

Il reste à ajouter le device en cliquant sur le bouton Add Device. Vous devriez voir apparaitre le tableau de bord avec le matériel et les champs du paquet de données que vous avez créé. Il vous reste à dimensionner les widgets des données et éventuellement leur présentation en cliquant sur la roue dentée en haut à droite. (flèches rouges)

En cliquant sur la courbe, vous pouvez afficher les données de l’heure, du jour, de la semaine…

Conclusion

Désolé pour la longueur de cet article, c’est la compilation d’une grosse semaine de lecture, de recherches, de tests et de rédaction. J’ai essayé de mettre les choses dans un ordre logique.
Pas sûr que j’y sois arrivé. Mais normalement vous avez toutes les infos pour démarrer avec LoRa.

N’hésitez pas à me faire un retour de vos expériences ou des manques que vous pourrez détecter.

Pour info la Gateway est vendue 153€ et le noeud pHAT est à 35€. On est à la veille du Brexit donc ces montants sont sujets à modification.

Sources

Gateway

Node pHAT

 

Share Button

À propos François MOCQ

Électronicien d'origine, devenu informaticien, et passionné de nouvelles technologies, formateur en maintenance informatique puis en Réseau et Télécommunications. Dès son arrivée sur le marché, le potentiel offert par Raspberry Pi m’a enthousiasmé j'ai rapidement créé un blog dédié à ce nano-ordinateur (www.framboise314.fr) pour partager cette passion. Auteur de plusieurs livres sur le Raspberry Pi publiés aux Editions ENI.

15 réflexions au sujet de « Mise en place d’une Passerelle et d’un nœud LoRa »

  1. GOUGIS Arthur

    Très bel article (comme toujours ?) ! Je vous en remercie, cela m’éclaire dans beaucoup de point.. Je pense que Lora à un très bel avenir mais il est vrai que c’est une technologie assez complexe à mettre en oeuvre au début.. La Gateway, les noeuds, le codage de la trame…
    Ayant eu des besoins similaire je me suis tourné vers son concurrent Sigfox, à mon grand regret, mais beaucoup plus simple. J’espère un jour me tourner vers Lora . Car aujourd’hui Lora souffre d’une lacune.. On ne peux faire du “pistage” par exemple car le réseau TTN est très peu déployé et ne vie que grace aux bénévole, un peu juste comme réseau.
    Petite remarque, aucune allusion à la différence entre gateway public ou privée si je ne m’abuse ?
    Bref un régale à lire, merci !

    Répondre
    1. François MOCQ Auteur de l’article

      Bonjour Arthur
      merci 🙂 effectivement j’ai travaillé avec SigFox il y a qques années (il y a des articles sur le blog).
      Pour LoRa il y a des solutions opérateur, comme pour SigFox. Voyez par ex. https://www.orange-business.com/fr/reseau-iot. On est autour de 1€ par mois (https://developer.orange.com/wp-content/uploads/Offre-tarifaire-IoT-Connect-Low-Power-octobre-2018.pdf) et où je suis (ville de Le Creusot) Orange n’offre que du LoRa outdoor – ça dépend de l’emplacement des antennes
      Je suis resté sur les solutions entreprise/maker gratuites. Une entreprise peut installer une gateway locale et exploiter LoRa sans se connecter au réseau national/mondial. L’avantage de TTN c’est que c’est utilisable gratuitement mais oui, il faut que la communauté installe les gateway pour pouvoir en bénéficier.
      Après je n’ai pas pu parler de tout, il faudrait développer sur ce point et tester la portée en fonction des SF mais… c’est encore beaucoup de temps à passer…. peut être plus tard 🙂
      cordialement
      françois

      Répondre
  2. Ping : Mise en place d’une Passerelle et d’un nœud LoRa

  3. Artemus24

    Salut à tous.

    Je n’ai pas compris le type de communication qui est utilisé.
    Je sais que c’est du type radio avec un faible débit que l’on utilise pour l’IOT.
    Mais peut-on faire une connexion SSH ?

    Un seul reproche, le prix est élevé.

    Merci pour ce magnifique sujet !

    Cordialement.
    Artemus24.
    @+

    Répondre
    1. François MOCQ Auteur de l’article

      Bonjour
      non pas de SSH ici on est sur un débit très faible et des paquets de données d’une cinquantaine d’octets.
      De plus la réglementation impose une occupation maxi de la bande ce qui fait qu’on ne peut transférer que quelques infos
      cdt
      françois

      Répondre
  4. artemus24

    Lora, c’est pour quel usage ? La météo ? L’agriculture ?
    Et la vidéo surveillance, non plus.
    C’est un beau joujou, mais j’ai du mal à comprendre pour quel genre d’applications ?

    @+

    Répondre
    1. François MOCQ Auteur de l’article

      Bonjour
      c’est ça tous les usages qui ne demandent pas une vitesse de transmission élevée et une longue distance de transmission. Il y a des réseaux LoRa partout dans le monde en France par exemple https://www.orange-business.com/fr/reseau-iot la couverture est importante. L’intérêt c’est qu’on n’est pas obligé de passer par un opérateur (c’est payant environ 1€/mois) quand on est maker ou entreprise, on peut installer sa propre passerelle.
      utilisations: surveillance de ruches, géolocalisation de véhicules ou de containers, stations météo agricoles, domotique, surveillance diverses, relevé de compteurs à distance… L’idée c’est d’envoyer des petits paquets de data avec une consommation minime, ce qui fait que les piles durent 10ans…
      cdt
      francois

      Répondre
      1. artemus24

        Je ne sais pas pourquoi, mais LORA n’intéresse pas grand monde cette fois-ci.
        C’est l’aspect communication qui m’intéresse.
        Pour l’instant, je n’ai pas encore d’idée. Peut-être dans le cadre de la domotique.

        Maintenant, je dois trouver le matériel et si possible pas trop cher.

        @+

        Répondre
  5. orazio

    Bonjour,
    Peut on Monter la carte lorahat sur un pi4 et mettre un joli boitier sans que ca ne chauffe trop? L’idee etant de faire a la fois une box TV et un point d’acces lors avec la framboise

    Répondre
    1. François MOCQ Auteur de l’article

      Bonjour José
      effectivement SnootLab a été mis en liquidation l’an passé et racheté par Scassi
      leur blog est vide mais on trouve encore des infos sur la carte Chistera et le github est toujours là
      La Chistera me sert maintenant pour montrer en expo un exemple de carte LoRa 🙂
      de mémoire ce n’est pas une vraie passerelle LoRa (tous canaux) mais un seul canal est géré
      si tu as besoin d’infos dis moi je regarderai ce que j’ai encore
      cdt
      francois

      Répondre
  6. Iznogoud

    Merci pour cet article qui a le grand mérite de faire le point sur cette technologie sous un angle pratique finement expliqué.
    “transférez la sur une carte micro SD avec Etcher si vous êtes sous Windows ou dd sous Linux.”
    Pour info, Etcher est disponible sous Linux et fonctionne parfaitement.
    Cordialement.

    Répondre
  7. Montague

    Hello François !

    Merci pour l’article. Effectivement, j’avais regardé LoRa pour un projet de ruches connectées. Au final, il était beaucoup plus efficace de partir sur un simple modem GSM., moins coûteux, et en cas de problème, permet également d’intervenir via texto (pour relancer le système par exemple).

    J’avoue avoir beaucoup de mal à trouver un intérêt à LoRa. Soit il faut se baser sur un réseau communautaire, soit c’est un abonnement + paiement au message descendant

    Répondre

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Complétez ce captcha SVP * Time limit is exhausted. Please reload CAPTCHA.

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.