
Que pensez-vous de cet article ? Aidez-nous à vous fournir un meilleur contenu.

Merci! Vos commentaires ont été reçus.

There was a problem submitting your feedback, please try again later.

Que pensez-vous de cet article ?
Utiliser un Raspberry Pi 2 + iC880A pour construire la première passerelle pour Things Network Calderdale
Le mois dernier, j’ai écrit un article sur The Things Network (TTN), un réseau de données LoRaWAN gratuit et ouvert pour applications IoT, et sur la façon dont nous avons créé une communauté à Calderdale, avec comme priorité immédiate d’utiliser ce réseau pour renforcer un réseau participatif de capteurs d'inondations.
Cet article reprend là où le précédent s’était arrêté, et s’intéresse plus en détail au matériel utilisé pour la construction d'une passerelle artisanale (c’est-à-dire un “point d’accès” ou une “station de base”) et porte sur le logiciel, sa configuration et les tests initiaux.
Notez qu’il existe de nombreuses passerelles LoRaWAN en vente dans le commerce, ainsi que des solutions artisanales plus simples et moins coûteuses. Mais l’approche utilisée ici offre un bon équilibre entre coût, flexibilité et performance, tout en nous permettant de mieux connaître le fonctionnement du réseau LoRaWAN
Matériel
Le front-end est une carte “concentrateur” IMST iC880A LoRaWAN. Elle inclut deux circuits intégrés Transceiver SX1257 Semtech et un processeur de bande de base SX1301. Cette combinaison permet l’émulation de démodulateurs LoRa 49x, avec 10 voies de démodulation parallèles pour recevoir jusqu’à 8 paquets LoRa envoyés simultanément avec différents facteurs de répartition sur des canaux différents.
Cela peut paraître complexe, mais c’est grâce au format de modulation du LoRa qu’il est possible d’atteindre des plages aussi incroyables avec des niveaux de puissance de transmission étonnamment modestes, tout en prenant également en charge des milliers de nœuds par passerelle. En pratique, vous n’avez probablement pas besoin de vous soucier de tous les détails, bien qu'une configuration radio et de couche MAC soit possible et puisse être requise dans certains cas.
Un Raspberry Pi 2 modèle B a été sélectionné pour exécuter le logiciel de passerelle et ses interfaces avec le concentrateur via SPI et un circuit imprimé, réalisé à partir d'une carte d'essai. Vous trouverez les détails des connexions de l’iC880A dans les documents annexes. Notez également qu’en plus de la connexion SPI, une broche GPIO standard est également nécessaire sur le Raspberry Pi pour réinitialiser le module.
Les cartes ont été installées dans un boîtier en aluminium moulé pour fournir un blindage RF, dans lequel ont été percés des trous pour un connecteur d'alimentation, un commutateur et une LED, et un accès à l’Ethernet.
Logiciel
The latest Raspbian Jessie Lite image was downloaded and written out to a Micro SD card. Upon then booting the Raspberry Pi, this was followed by the usual sequence of:
L’image Raspbian Jessie Lite la plus récente a été téléchargée et chargée sur une carte microSD. Puis le Raspberry Pi a été démarré, suivi par la séquence habituelle de :
$ sudo apt-get update
$ sudo apt-get upgrade
Mais aussi :
$ sudo apt-get install git wiringpi
"Git" est requis pour cloner les sources des logiciels, et "WiringPi" pour fournir un mécanisme simple permettant de basculer la broche GPIO qui réinitialise la carte concentrateur.
Le nom d’hôte a été changé en modifiant /etc/hostname, ainsi que l’entrée correspondante dans /etc/hosts.
L’outil de configuration de Raspberry Pi a ensuite été exécuté avec :
$ sudo raspi-config
Pour permettre les communications via le bus SPI, Options avancées (9), suivi de SPI (A6) a été sélectionné, afin de permettre au SPI et au module de noyau de se charger au démarrage.
Comme nous avons utilisé une carte microSD 16 Go, l’outil raspi-config a également été utilisé pour étendre le système de fichiers racine, avant de redémarrer.
La documentation d’IMST conseille de créer le programme LoRaWAN à partir des sources de référence fournies par Semtech. Cependant, différents aspects sont gérés par The Things Network, dans leur organisation GitHub.
The Things Network Zurich est allé encore plus loin en fournissant un programme d’installation automatisé. Mais je n’étais pas satisfait de plusieurs des étapes de ce programme, comme le fait de donner un nom générique au Raspberry Pi (ttn-gateway) et de créer WiringPi depuis la source, au lieu de simplement utiliser le package disponible dans les répertoires Raspbian.
J’ai donc privilégié le script install.sh comme crib pour réaliser une installation manuelle, et j’ai procédé de la façon suivante :
- J’ai récupéré la branche SPI du programme d’installation automatique (git clone, git checkout…)
- J’ai cloné et créé l’application de passerelle LoRa
- J’ai cloné et créé l’application de transmission de paquets
- J’ai créé le répertoire corbeille, plus le lien symbolique pour poly_pkt_fwd et je les ai copiés sur le fichier global_conf.json
- J’ai omisde créer local_conf.json ou de réinitialiser l’ID de la passerelle
- J’ai copié start.sh dans le répertoire de la corbeille et configuré l’application de transmission de paquets comme un service
Notez que lors de la création de l’application passerelle :
- Le fichier libloragw/library.cfg doit être mis à jour de façon à ce que la valeur de PLATFORM soit imst_rpi (se reporter à la lignesed correspondante dans install.sh)
- Le débogage peut être activé en définissant la ou les variables correspondantes dans libloragw/library.cfg
-
The libloragw/library.cfg file must be updated so that PLATFORM is set to imst_rpi (see the corresponding sed line in install.sh)
-
Debugging can be turned on by setting the appropriate variable(s) in libloragw/library.cfg
La capacité à activer le débogage pour SPI, les registres de circuit, le HAL, etc. peut s’avérer très utile si l’application ne démarre pas correctement après sa configuration.
Notez également que si vous souhaitez utiliser le fichier de description de service fourni (pour lancer l’application au démarrage) vous devez vous assurer que le logiciel et la configuration ont été mis aux emplacements attendus sous /opt/ttn-gateway, ou effectuer les modifications nécessaires.
Je finirai probablement par cloner le répertoire du programme d’installation et par modifier légèrement le script en fonction de mes préférences personnelles. Il serait cependant bien plus intéressant que les applications de passerelle et de transmission de paquets soient regroupées correctement et puissent être installées via un répertoire Debian et apt-get. Dans ce cas, la configuration réside à un emplacement plus adapté, tel que /etc/ttn/, au lieu d’être de figurer près des programmes exécutables dans le répertoire de la corbeille.
À ce stade, j’ai pu exécuter un utilitaire pour tester la transmission, et ainsi confirmer le fonctionnement du SPI et du logiciel.
Il faut noter que l’analyseur de spectre était doté d'une petite antenne connectée à son port et n’était pas connecté directement. Il faut donc ignorer la mesure de niveau. De plus, à ce stade, la passerelle fonctionnait avec une alimentation n’offrant pas un courant suffisant. L'impulsion de transmission pourra donc être légèrement différente lorsque la puissance fournie au concentrateur sera suffisante.
Configuration
Nous disposons donc maintenant de deux logiciels, lora_gateway et packet_forwarder. Mais à quoi servent-ils ?
lora_gateway est essentiellement une bibliothèque (libloragw.a) permettant de créer une passerelle configurée via le fichier library.cfg pour la plate-forme matérielle et l'interface exécutant le logiciel, ainsi qu'un débogage en option, etc. Des programmes d’aide sont également fournis et vous permettent d’enregistrer les paquets reçus et de tester le SPI et la transmission.
packet_forwarder est ensuite ajouté en supplément de la bibliothèque (c’est-à-dire le "pilote" ou "HAL") pour transmettre les paquets reçus sur l’interface hertzienne, via une liaison IP/UDP vers un hôte. En plus de l’opération de liaison montante, la passerelle prend également en charge l’envoi descendant (vers les nœuds) de paquets générés par le serveur, par exemple pour la synchronisation de l’heure. Notez qu’à ce stade elle ne prend pas en charge de service général de liaison descendante.
Au moment où j’écris cet article, il existe quatre applications de transmissions de paquets :
- Basique, comme son nom l’indique ! Elle transmet simplement les paquets reçus via UDP vers un hôte.
- Prend en charge un récepteur GPS pour synchroniser l’heure absolue et la localisation de la passerelle.
- Comme gps, mais avec en plus la prise en charge de l’envoi de paquets de balise pour la synchronisation des nœuds.
- Comme beacon, mais avec en plus la prise en charge de plusieurs serveurs et autres fonctionnalités.
-
L’application poly_pkt_forward semble être la plus populaire, même si vous n’avez pas besoin de certaines fonctionnalités les plus avancées, en raison de sa stabilité améliorée.
Les applications de transmission de paquets sont configurées par un fichier global_conf.json générique, qui fournit la masse de la configuration requise, notamment pour les transceivers, les canaux radio, les clés MAC et réseau, etc. La configuration du site est ensuite fournie par local_conf.json (comme le montre l’illustration ci-dessus), qui permet de définir de nouveaux paramètres et de remplacer les paramètres par défaut. Globalement, les paramètres sont les suivants :
- ID de la passerelle. Composé du préfixe FFE plus l’adresse MAC de l’interface Ethernet sur le Raspberry Pi.
- E-mail de contact et description.
- Coordonnées GPS et altitude. L’activation de fake_gps comme module récepteur n’est pas possible à ce stade.
- Adresse et ports du serveur. Ceux du serveur géré par The Things Network.
-
Sur ce dernier point de configuration, notez que vous pourriez également configurer les informations pour votre propre serveur.
Une fois la configuration terminée, l’application de transmission de paquets a été lancée manuellement avec :
$ ./poly_pkt_fwd
Une fois l’application de transmission de paquets de la passerelle démarrée correctement, le Pi a été éteint.
Installation sur site
La passerelle dans son boîtier en aluminium moulé a été placée dans un coffret mural en acier certifié IP. Celui-ci est suffisamment grand pour accueillir un récepteur SDR large bande qui pourra être utilisé pour la surveillance du spectre. Un rail DIN est installé en bas de l’armoire.
Celle-ci contient pour le moment le système de distribution d'alimentation secteur et une alimentation 5 V avec une importante capacité et un espace généreux au cas où nous aurions besoin de rails de tension supplémentaires plus tard.
En haut de l’armoire se trouvent des éclateurs fixés devant les antennes, avec un câble de grande section de 10 mm2 raccordant celles-ci à un piquet de terre dédié.
L’intérieur contient deux petits câbles coaxiaux pour les antennes 868 MHz et GPS. À leur gauche se trouve un connecteur type N traversant pour l’antenne 25-30 000 MHz. Un connecteur supplémentaire se trouve encore plus à gauche, et pourra être utilisé à l’avenir pour connecter cette antenne, via un relais coaxial, à une autre alimentation dans l’atelier, permettant ainsi de l’utiliser avec un autre équipement.
Essais
Une fois la passerelle installée, nous avons pu la tester. Pour le moment, le seul nœud LoRaWAN complet dont nous disposons est un prototype du nouveau capteur de Flood Network. Nous avons donc décidé de mettre l’installation sous tension et de voir si nous pouvions le trouver via l’API The Things Network. Et heureusement, oui !
Et maintenant ? Voici nos projets :
- Travailler avec Flood Network pour mettre en ligne quelques capteurs supplémentaires
- Cartographier la couverture de la première passerelle
- Travailler avec le hackerspace local,Bridge Rectifier, pour mettre une 2ème passerelle en ligne