J’avais décrit début 2020 un projet de passerelle (Gateway) LoRaWan sur Raspberry Pi 4, construite autour de la carte LoRa Gateway HAT de Pi Supply et un module RK833 embarquant un SX1301. Il y avait aussi un nœud LoRa sur Raspberry Pi Zero, avec un RAK811 sur la carte Node pHAT de Pi Supply. Le tout était connecté à TTN (The things Network). Après le passage en v3 de la console TTN, Pi Supply semble avoir abandonné les mises à jour de sa gateway. Dommage pour un matos qui approche les 200 € ! (Node+gateway).
Du coup ça valait le coup de se pencher sur le problème et d’essayer de remettre tout ça en service. Il y a de nombreux messages dans les forums et en grattant on arrive à avancer… Je vous raconte tout ça ici. Je vous parle d’abord de TTN mais dans l’ordre, il faudra faire fonctionner la passerelle et le node LoRa, TTN permettra de vérifier que l’ensemble est opérationnel.
Il ne s’agit pas ici d’une installation complète (la carte Gateway n’est plus distribuée par Pi Supply) à partir de zéro mais bien d’un « portage » d’une installation qui fonctionnait avec la console v2 de TTN vers la console v3.
Au sommaire :
- 1 Utiliser la Gateway RAK833 et le node RAK811 avec la console TTN The Things Network v3
- 1.1 LoRa – LoRaWAN
- 1.2 Installer la passerelle
- 1.3 Problème de la taille de l’API Key
- 1.4 Le nœud LoRa
- 1.5 Programme du noeud LoRa
- 2 Conclusion
- 3 Sources
Utiliser la Gateway RAK833 et le node RAK811 avec la console TTN The Things Network v3
Ici j’ai choisi de mettre le niveau un peu plus haut que pour le premier article. Cette fois pas d’image toute prête, pas de page web pour configurer la gateway. Les gars, il va falloir installer à la mano, ajouter des trucs qui manquent, modifier des machins qui merdent… Bref mettre les mains dans le cambouis. Si vous n’êtes pas à l’aise avec tout ça sachez qu’il va falloir vous débrouiller, faire des recherches… Je ne pourrai pas faire de l’assistance individuelle du genre : « J’ai tout bien suivi mais ça marche pas ! ». C’est un classique mais ça peut cacher tout un tas de choses qui n’ont pas été vues, de messages de warning ou d’erreur, de fichiers de log à exploiter, de versions qui ont changé etc… Comme je ne suis pas voyante, je ne peux pas me lancer dans ce genre de dépannage à distance.
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.
[stextbox id=’info’ caption=’La fin de LoRa chez les opérateurs’]Saviez vous que SigFox comme LoRa sont des inventions françaises ? Alors que Sigfox connait quelques déboires en ce début 2022 et vient de se faire racheter, LoRaWAN connait encore de beaux jours chez Orange. Bouygues va arrêter son réseau LoRa Objenious en décembre 2024. Orange poursuivra l’exploitation jusque 2027. Ensuite les opérateurs passeront sur les technologies cellulaires LTE-M et NB -IoT qui permettent de répondre aux besoins principaux des clients IoT. Je vous en parlerai sans doute dans un autre article à venir…. [/stextbox]
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. Avec un ballon le signal a été reçu à 832 Km…
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 (mai 2022) le réseau se compose de plus de 170 000 contributeurs regroupés en communautés dans 151 pays ayant déployé plus de 20000 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.
[stextbox id=’warning’ caption=’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.[/stextbox]
Sur quelles fréquences ?
En Europe c’est la bande 868MHz qui est utilisée pour LoRaWAN
Uplink:
- 868.1 – SF7BW125 to SF12BW125
- 868.3 – SF7BW125 to SF12BW125 and SF7BW250
- 868.5 – SF7BW125 to SF12BW125
- 867.1 – SF7BW125 to SF12BW125
- 867.3 – SF7BW125 to SF12BW125
- 867.5 – SF7BW125 to SF12BW125
- 867.7 – SF7BW125 to SF12BW125
- 867.9 – SF7BW125 to SF12BW125
- 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
C’est quoi ?
TTN fournit un ensemble d’outils ouverts et un réseau mondial ouvert pour créer votre prochaine application IoT à faible coût, avec une sécurité maximale et prête à évoluer.
[stextbox id=’warning’ caption=’Attention’]TTN ne garde les données que vous lui envoyez que durant 7 jours, il faudra donc envisager un moyen de les récupérer si vous voulez les enregistrer sur une plus longue durée (InfluxDB, mariaDB, Excel….). des solutions existent et sont disponibles sous forme de tutoriels.[/stextbox]
Créer un compte
Pour utiliser TTN il faut commencer par créer un compte.
Renseignez les informations demandées
Vous pouvez ajouter un photo de profil (ou pas) et indiquer votre nom.
Choisissez la région dans laquelle vous allez utiliser TTN. Pour moi ce sera Europe 1 (non, pas la radio).
Créer la passerelle dans TTN
En bas vous avez la version de la console TTN (ici v3.19.1) et l’accès à vos gateways et applications (vos nodes). Ça se retrouve également dans le menu en haut à gauche de l’écran.
Pour ajouter une passerelle cliquez sur… + Add gateway en haut à droite.
Remplissez les zones requises. Donnez un nom unique Gateway ID à votre gateway. Indiquez son EUI c’est son identifiant sur 64 bits (8 octets). La gateway prend comme EUI l’adresse MAC du Raspberry Pi 4 qui supporte la passerelle, en ajoutant FF FE au milieu. Vous trouverez plus d’infos dans ce forum. Je vous explique :
si l’adresse MAC de votre Raspberry Pi est 12 34 56 78 90 12, l’adresse de la passerelle sera
12 34 56 FF FE 78 90 12. L’ajout de ces deux octets se fait dans le fichier
/home/pi/rak_common_for_gateway/lora/set_eui.sh
Dans cette ligne :
GATEWAY_EUI=$(ip link show $GATEWAY_EUI_NIC | awk ‘/ether/ {print $2}’ | awk -F\: ‘{print $1$2$3″FFFE »$4$5$6}’)
C’est intéressant car même si vous supprimez une passerelle sur TTN, le numéro EUI reste enregistré et JAMAIS vous ne pourrez recréer cette passerelle avec le même EUI ! Mais… vous irez modifier le fichier set_eui.sh et remplacer FF FE par exemple en FF FF et hop, vous avez un nouveau EUI et vous pouvez recréer la passerelle.
Reportez vous à ce forum pour plus d’infos. Il faut re-installer ou lancer
sudo ./update_gwid.sh local_conf.json
pour prendre en compte les modifs.
Une fois que c’est fait la passerelle apparait sur les cartes de TTN avec sa localisation si vous avez indiqué latitude et longitude :
Bon, ici avec l’antenne miniature posée à l’intérieur que j’utilise pour les tests, on ne va pas avoir une couverture exceptionnelle.
Mais si je mets la gateway à l’extérieur (dans une boîte étanche !) avec une antenne à gain, la gateway devient accessible par tous les makers/entreprises intéressés dans la zone de couverture de l’antenne. Cette antenne vendue par Passion Radio offre un gain de 4.4dB et offre une bonne couverture et coûte ~75€. Pour la mettre à disposition des utilisateurs, il faudrait laisser la Gateway en fonctionnement 24/24 et 7/7, tout en assurant la liaison avec les serveurs TTN via Internet.
|
Créer le nœud LoRa dans TTN
Cette fois sur la page d’accueil de la console TTN on va se rendre sur la rubrique Applications. Une application comporte tout ce avec quoi vos appareils communiquent sur Internet. Cela peut être aussi simple qu’une applet IFTTT Maker (If This Then That) ou un flux visuel utilisant Node-RED vers un code personnalisé sur un serveur.
Cliquez sur Applications pour accéder à la création, puis sur + Add application en haut à droite de la page.
Renseignez les champs requis. Le champ Application ID ne peut contenir que des minuscules, des chiffres et des tirets –
Dans les applications, vous retrouvez l’appli que vous venez de créer. Ouvrez-la pour compléter les informations.
Lorsque l’appli est ouverte, cliquez en bas à droite sur + Add end device afin d’ajouter le matériel.
Si vous utilisez un matériel LoRa « officiel » il est peut être listé dans le dépôt (sélectionnez Brand puis le modèle). Si comme moi vous avez des moyens de maker, et que vous utilisez du matériel de chez Pi Supply, Waveshare ou Seeedstudio, il va falloir l’ajouter à la main. Cliquez sur Manually.
Alors là, les gars on a du boulot. Il va falloir renseigner tout ça ! C’est parti…
Frequency Plan
Europe 863-870 MHz si vous êtes en Europe. C’est le choix recommandé.
LoRaWAN version
Pour la version LoRaWAN comme on est sur du RAK811 sur le node, la page du composant nous indique que c’est du LoRaWAN® 1.0.2.
Regional parameters version
Je ne sais pas… J’ai pris le premier choix, RP001 Regional parameters 1.0.2 et ça fonctionne
Dev EUI
Cette valeur est donnée par le composant lui-même. Sur le node LoRa (ici le Raspberry Pi Zero) tapez les commandes suivantes :
rak811 hard-reset
rak811 get-config dev_eui
La première ligne resette le RAK811, vous n’aurez à la rentrer qu’une seule fois lors de chaque mise sous tension.
pi@raspiLoraNode:~ $ rak811 get-config dev_eui
3038383659386A0C
Vous obtenez ici le Dev EUI que vous pouvez reporter dans le formulaire.
AppEUI
Comme il s’agit ici de porter l’installation sur la v3 de la console, le noeud a déjà son AppEUI, j’ai réutilisé le même. TTN indique qu’on peut utiliser des 0 partout à condition d’avoir le même AppEUI sur le node mais je n’ai pas testé.
AppKey
Idem pour l’AppKey puisque j’en avais déjà une. Ici l’AppKey est générée sur le serveur TTN et enregistrée dans le programme pour que le node puisse se connecter à TTN.
Après le paramétrage, le formulaire devrait ressembler à ceci :
Il vous reste à enregistrer le device. Vous ne pourrez pas identifier le device si les identifiants sont déjà utilisés pour un autre appareil… Ce sont des identifiants uniques.
Installer la passerelle
Sysème d’exploitation
On va installer la passerelle. Ici il n’y a plus d’image comme celle que fournissait Pi Supply lors de la sortie de la carte Lora Gateway HAT. On va partir sur de l’installation à partir de zéro. Donc carte SD neuve ou fraichement formatée. Une 16 Go suffit si vous ne pensez pas stocker les données dessus. Ave Raspberry Pi Installer, préparez la carte SD avec la version Raspberry Pi OS 32 bits Lite. RAKWireless recommande la version Lite pour préserver la ressource CPU mais si vous avez vraiment besoin du Desktop, vous pouvez l’installer. Mettez à jour l’OS.
Utilisez la commande sudo raspi-config pour activer le bus SPI et l’interface I2C, dévalidez le login Shell sur le port série et enfin activer le hardware du port série.
Installer la passerelle depuis Github
1 2 3 4 |
sudo apt install git git clone https://github.com/RAKWireless/rak_common_for_gateway.git ~/rak_common_for_gateway cd ~/rak_common_for_gateway sudo ./install.sh |
Avec les commandes ci-dessus copiez le dépôt git en local et lancez l’installation. (c’est par ici wue ça se passe : https://michaelbergeron.com/blog/lora-gateway-pisupply-hat et sur github : https://github.com/RAKWireless/rak_common_for_gateway).
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
Please select your gateway model: * 1.RAK2245 * 2.RAK7243/RAK7244 no LTE * 3.RAK7243/RAK7244 with LTE * 4.RAK2247(USB) * 5.RAK2247(SPI) * 6.RAK2246 * 7.RAK7248 no LTE (RAK2287 SPI + raspberry pi) * 8.RAK7248 with LTE (RAK2287 SPI + LTE + raspberry pi) * 9.RAK2287 USB * 10.RAK5146 USB * 11.RAK5146 SPI * 12.RAK5146 SPI with LTE Please enter 1-12 to select the model: |
La passerelle RAK833 n’apparait plus ici mais elle est remplacée par la RAK2247 qui est plus sensible (de 3dB). Sélectionnez 5.RAK2247(SPI).
Modification de la pin de reset de la gateway
D’après https://forum.rakwireless.com/t/rak2247-spi-pi-supply-failed-to-start-concentrator-follow-up/4679. Alors que Pi Supply utilise la pin GPIO 22, RAK utilise la pin 17. On va remplacer dans le fichier start.sh (lancé à chaque boot) la broche de reset de la passerelle.
Ca se passe dans le fichier
/home/pi/rak_common_for_gateway/lora/start.sh
Le fichier ressemble à ça :
#! /bin/bash
# Reset iC880a PIN
SX1301_RESET_BCM_PIN=17
echo « $SX1301_RESET_BCM_PIN » > /sys/class/gpio/export
echo « out » > /sys/class/gpio/gpio$SX1301_RESET_BCM_PIN/direction
echo « 0 » > /sys/class/gpio/gpio$SX1301_RESET_BCM_PIN/value
sleep 0.1
echo « 1 » > /sys/class/gpio/gpio$SX1301_RESET_BCM_PIN/value
sleep 0.1
echo « 0 » > /sys/class/gpio/gpio$SX1301_RESET_BCM_PIN/value
sleep 0.1
echo « $SX1301_RESET_BCM_PIN » > /sys/class/gpio/unexport
./set_eui.sh
sleep 0.2
#./update_gwid.sh ./local_conf.json
sleep 0.5
./lora_pkt_fwd
Remplacez la broche de reset :
SX1301_RESET_BCM_PIN=17 devenant SX1301_RESET_BCM_PIN=22
et redémarrez la gateway pour prendre encompte la modification.
Autre solution c’est de modifier directement le fichier avec la commande (sur une seule ligne) :
sudo sed -i 's/^SX1301_RESET_BCM_PIN=17$/SX1301_RESET_BCM_PIN=22/' /opt/ttn-gateway/packet_forwarder/lora_pkt_fwd/start.sh
Qui a le même effet mais je préfère aller le faire moi-même avec mes petites mimines, j’ai l’impression de mieux comprendre ce que je fais 🙂
Pour vérifier que ça fonctionne, tapez par exemple : sudo gateway-version :
pi@rak-gateway:~/rak_common_for_gateway/lora $ sudo gateway-version
Raspberry Pi 4 Model B Rev 1.1, OS « 11 (bullseye) », 5.15.32-v7l+.
RAKWireless gateway RAK2247 for SPI version 4.2.7R install from source code.
Gateway ID: DCA632FFFE01C2EC.
Vous récupérez ici l’ID de la passerelle, comme vu plus haut vous constatez que c’est l’adresse MAC de l’interface de sortie du Raspberry Pi eth0 au milieu de laquelle on a ajouté FF FE :
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.1.33 netmask 255.255.255.0 broadcast 192.168.1.255
ether dc:a6:32:01:c2:ec txqueuelen 1000 (Ethernet)
Enregistrer les log en RAM avec Log2RAM
On peut encore améliorer un peu le système. Dans la passerelle, les écritures les plus fréquentes se font dans les fichiers de log (les journaux). On peut créer un système de fichiers /var/log en RAM avec Log2RAM, ce qui fait que la carte SD n’est plus sollicitée en permanence et sa durée de vie augmente. Une fois par heure ou lors de l’arrêt propre du système, les fichiers de log sont enregistrés sur la carteSD. Cette diminution importante des écritures sur la SD améliore également le temps de réponse du système.
Attention, il faut que la taille du /var/log existant soit plus petite que la taille du log2ram (augmentez la taille du lopg2ram dans le fichier de config – j’ai mis 128Mo, faites le ménage dans les fichiers log pour diminuer la taille…).
Vous trouverez les informations dans l’excellent blog de Dominique McHobby et aussi sur ce site mais en anglais.
Problème de la taille de l’API Key
Quand on crée l’API Key qui sert à la validation du flux montant et du flux descendant, on récupère une clé à 98 caractères. Or la console TTN v3 comporte une vérification sur la longueur de la clé et il faut que celle-ci fasse 101 caractères de long… Arghhh comment va-t-on faire ? En fait la vérification se fait au niveau du champ de saisie du formulaire. On va donc ouvrir le code source de la page et le modifier avant de valider la valeur… (voir ce post : https://github.com/PiSupply/iot-lora-image/issues/77)
Crééez la clé pour la passerelle et entrez la dans le champ prévu. Faites un clic droit sur le champ et choisissez Inspecter. Dans l’inspecteur remplacez minlength= »101″ par minlength= »98″. Vous pourrez maintenant valider sans provoquer d’erreur.
Vous avez maintenant une passerelle qui est opérationnelle. Rebbotez la pour vérifier que tout se pase bien. La LED bleue s’allume pour indiquer que la passerelle est bien connectée à TTN.
Le nœud LoRa
Ici Le noeud LoRa est toujours actif, il est installé sur un Raspberry Pi Zero et envoie les données lues sur un BME680. Il a été décrit dans un précedent article. Il faut le redéclarer dans la console v3
Les paramètres du noeud sont disponibles via rak811 qui est installé sur le PiZero :
pi@raspiLoraNode:~ $ rak811
Usage: rak811 [OPTIONS] COMMAND [ARGS]…
Command line interface for the RAK811 module.
Options:
-v, –verbose Verbose mode
–version Show the version and exit.
–help Show this message and exit.
Commands:
abp-info Get ABP info.
band Get/Set LoRaWan region.
clear-radio-status Clear radio statistics.
dr Get/Set next send data rate.
get-config Get LoraWan configuration.
hard-reset Hardware reset of the module.
join-abp Join the configured network in ABP mode.
join-otaa Join the configured network in OTAA mode.
link-cnt Get up & downlink counters.
mode Get/Set mode to LoRaWan or LoRaP2P.
radio-status Get radio statistics.
recv-ex RSSI & SNR report on receive.
reload Set LoRaWan or LoRaP2P configurations to default.
reset Reset Module or LoRaWan stack.
rf-config Get/Set LoraP2P configuration.
rx-get Get LoraP2P message.
rx-stop Stop LoraP2P RX.
rxc Set module in LoraP2P receive mode.
send Send LoRaWan message and check for downlink.
set-config Set LoraWAN configuration.
signal Get (RSSI,SNR) from latest received packet.
sleep Enter sleep mode.
tx-stop Stop LoraP2P TX.
txc Send LoRaP2P message.
version Get module version.
wake-up Wake up.
Exemple avec mon Raspberry Pi Zero et la carte LoRa Node :
Après un boot pesez à faire un reset du RAK811
rak811 hard-reset
puis
pi@raspiLoraNode:~ $ rak811 get-config app_eui
70B3D57ED002926F
pi@raspiLoraNode:~ $ rak811 get-config app_key
50ABA07434B5F65FE50A45BBBDE06ED5
pi@raspiLoraNode:~ $ rak811 get-config dev_eui
3038383659386A0C
Programme du noeud LoRa
Sur le noeud LoRa je fais lire le BME680 régulièrement et j envoie les données vers la gateway
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 |
#!/usr/bin/env python3 # -*- coding: utf-8 -*- from rak811 import Mode, Rak811 from cayennelpp import LppFrame from random import randint # Importer les bibliothèques utilisées par le script import bme680 import time # Initialiser les valeurs pour la communication LoRa lora = Rak811() lora.hard_reset() time.sleep(2) lora.mode = Mode.LoRaWan lora.band = 'EU868' lora.set_config(dev_eui='3038383659386A0C', app_eui='70B3D57ED002926F', app_key='50ABA07434B5F65FE50A45BBBDE06ED5') lora.join_otaa() lora.dr = 5 # Créer le capteur en testant les deux adresses possibles 0x76 et 0x77 try: capteur = bme680.BME680(bme680.I2C_ADDR_PRIMARY) except IOError: capteur = bme680.BME680(bme680.I2C_ADDR_SECONDARY) print('Démarrage du programme:') try: # Boucle infinie du script while True: # Si les données du capteur sont lues if capteur.get_sensor_data(): # Afficher la température print(f'Température : {capteur.data.temperature:.2f} °C') # Afficher la pression print(f'Pression : {capteur.data.pressure:.2f} hPa') # Afficher l'humidité relative print(f'Humidité : {capteur.data.humidity:.2f} %HR') print("==============") # create empty frame frame = LppFrame() # add some sensor data frame.add_temperature(0, round(capteur.data.temperature,1)) frame.add_humitidy(1, round(capteur.data.humidity,1)) # get byte buffer in CayenneLPP format print ("Frame avant conversion", frame) print ("\n") Temp = int(10*round(capteur.data.temperature, 1)) Pression = int(10*round(capteur.data.pressure, 1)) HR = int(2*capteur.data.humidity) lora.send(bytes.fromhex('0167{:04x}0273{:04x}0368{:02x}'.format(Temp, Pression, HR))) # Attendre 15 secondes print("Données envoyées") time.sleep(15) # Sortir du script sur CTRL+C except KeyboardInterrupt: lora.close() |
Ce qui permet de recevoir les data sur le serveur TTN :
Pour visualiser les data avec la bonne dénomination, j’utilise le format Cayenne qui permet de compresser les données (voir l’article précédent). TTN peut décoder et afficher ce format.
Conclusion
Au terme de cet article, les utilisateurs de la gateway RAK833 de Pisupply sur carte Lora Gateway HAT devraient pouvoir porter leur passerelle sur la version v3 de la console TTN.
Je suis en contact actuellement avec Orange pour obtenir un compte LoRa de démo et faire des tests sur le réseau Orange. Pour le moment la fermeture annoncée d’Objenious de Bouygues sature un peu les services d’Orange mais je ne désespère pas.
Au programme il y a des tests des cartes LoRa de Pi Supply, Seeed Studio et WaveShare.
Sources
Installation de la passerelle
https://github.com/RAKWireless/rak_common_for_gateway
Modification de la pin de commande de la gateway
https://forum.rakwireless.com/t/rak2247-spi-pi-supply-failed-to-start-concentrator-follow-up/4679
Ajouter 2 octets à l’adresse MAC
https://forum.rakwireless.com/t/gateway-eui-needs-to-be-8-digits-for-ttn-setup/2640
LoRaWAN :
http://pdacontrolen.com/getting-started-considerations-and-concepts-lorawan-1/
Ping : Carte SeeedStudio Lora Grove E5 - Framboise 314, le Raspberry Pi à la sauce française....
Bonjour,
j’ai lu avec grand intérêt votre article sur la passerelle.
Avant de me lancer dans sa réalisation, je voudrai savoir si vous avez fait des tests de distance de réception, s’il vous plait.
J’ai des capteurs Lora sur mes ruches qui sont distantes de 4-5 km de mon domicile. Pensez-vous que la passerelle pourrait faire le relais ?
Merci par avance de la suite que vous voudrez bien me donner.
Cordialement
Paul
Bonjour Paul
mes essais se sont limités à un peu plus d’un Km (c’était mon besoin à l’époque)
J’utilisais des antennes d’une dizaine de cm)
Après c’est de la radio, on peut toujours améliorer le bilan de la liaison.
Il faut prévoir une antenne « sérieuse » à la passerelle du style https://www.cdiscount.com/informatique/materiel-reseau-wifi-internet-bluetooth/delock-lora-868-mhz-antenna-antenne-32-cm-3-dbi-om/f-107151213-del4043619895830.html
mais vous en trouvez d’autres
qui amène un gain à la réception, surtout si vous la placez en hauteur et bien dégagée.
normalement avec une installation de ce type les 5 km sont atteignables.
Il faut toujours valider par un essai car il peut y avoir des obstacles entre les ruches et l’antenne de la passerelle…
cdt
francois
Merci François pour votre réponse aussi intéressante que l’article.
Je posais la question en espérant avoir un retour qui m’aurait permis de lever une inconnue hasardeuse ……..
J’ai actuellement une passerelle TTIG fonctionnant très bien mais dont la portée est assez limitée (passerelle intérieure) et j’aimerai bien l’augmenter à prix raisonnable (pour moi).
Encore merci pour votre aide et au prochain article
Cordialement
Paul
l’antenne extérieure et un bon câble vont fortement améliorer le fonctionnement
si vous pouvez mettez la passerelle au plus près de l’antenne
par exemple l’antenne sur le toit et la passerelle juste sous le toit
moins il y a de cable entre l’antenne et la passerelle, moins il y a de pertes
Oui merci mais ça devient une installation « lourde » (toujours pour moi :-)) et en plus un peu hasardeuse comme vous le disiez.
Bonjour, je réalise un projet universitaire dans lequel nous souhaitons mettre en place une transmission LoRa entre 2 cartes Raspberry.
Quel matériel devrions-nous nous procurer en remplacement de la RK833 qui semble malheureusement obsolète ?
Nous n’avons actuellement en notre possession qu’une Raspberry Pi 4.
Cordialement,
Marine.
Bonjour
effectivement ce modèle commence à dater un peu et est épuisé
regardez chez Seeedstudio https://www.seeedstudio.com/catalogsearch/result/?q=lora
ou chez https://uk.pi-supply.com/collections/lora
mais je ne connais pas ces produits
cdt
francois
je viens de regarder chez SeeedStudio… CE modèle pour outdoor : https://www.seeedstudio.com/LoRaWAN-Gateway-EU868-p-4305.html