Guide Pas à Pas pour Déployer une Passerelle LoRa RAK 831 sur Raspberry Pi 3
Ce projet vous guide à travers toutes les étapes nécessaires pour mettre en service votre module RAK 831 Lora Gateway avec le Wi-Fi comme backhaul.
Histoire
Introduction
Ce guide étape par étape s'adresse aux développeurs qui veulent développer leur propre passerelle LoRa en utilisant l'impressionnant module radio frontal RAK831 de RAK Wireless. Le guide suppose une connaissance de base de l'écosystème Raspberry Pi, du matériel et de l'OS Debian associé. Il suppose également une connaissance de base du GPIO et des périphériques présents sur le Raspberry Pi. Alors commençons :
Qu'est-ce que LoRa ?
LoRa Alliance™ Technology. LoRaWAN™ est une spécification de réseau LPWAN (Low Power Wide Area Network) destinée aux objets sans fil fonctionnant sur batterie dans un réseau régional, national ou mondial. LoRaWAN cible les exigences clés de l'Internet des Objets telles que la communication bidirectionnelle sécurisée, la mobilité et les services de localisation.
Le diagramme ci-dessus montre les différentes parties de l'architecture sans fil LoRa. Certaines des parties importantes sont brièvement expliquées ci-dessous :
Caractéristiques Clés de la Technologie LoRa et du Protocole LoRaWAN
- GÉOLOCALISATION : Permet le suivi d'applications à faible consommation sans GPS
- FAIBLE COÛT : Réduit les coûts de trois façons : investissement infrastructure, frais d'exploitation et capteurs de nœuds finaux
- STANDARDISÉ : Interopérabilité mondiale améliorée accélérant l'adoption et le déploiement de réseaux et applications IoT basés sur LoRaWAN
- FAIBLE CONSOMMATION : Protocole conçu spécifiquement pour une faible consommation d'énergie prolongeant la durée de vie de la batterie jusqu'à 20 ans
- LONGUE PORTÉE : Une station de base unique fournit une pénétration profonde dans les zones urbaines denses/intérieures, et connecte les zones rurales jusqu'à 30 miles
- SÉCURISÉ : Chiffrement AES128 de bout en bout intégré
- HAUTE CAPACITÉ : Supporte des millions de messages par station de base, idéal pour les opérateurs de réseaux publics servant de nombreux clients
Le RAK 831 est un frontend radio LoRa ; c.-à-d. qu'il agit comme récepteur de paquets de données LoRa entrants et les transmet à un logiciel/matériel hôte de gestion d'agrégation. Il peut également transmettre des paquets de données LoRa sur demande de la carte hôte. Dans notre cas, un Raspberry Pi 3 est la carte hôte contrôlant le frontend RAK 831.
Choisir le Backhaul
Qu'est-ce qu'un backhaul ? Le backhaul désigne la manière dont le Raspberry Pi sera connecté à Internet. Ce guide se concentre sur l'utilisation du Wi-Fi comme backhaul, mais vous pourriez aussi utiliser l'Ethernet ou la 3G/4G. Si vous avez de l'Ethernet disponible près de la passerelle, préférez-le au Wi-Fi ou à la 3G/4G. C'est parce qu'avoir un signal radio supplémentaire à l'intérieur du boîtier causera du bruit. Le logiciel peut gérer l'environnement bruyant, donc ce n'est pas un gros problème, mais moins il y a de bruit, mieux c'est. Vous pouvez combiner ce choix avec l'alimentation par Ethernet (PoE) pour minimiser le câblage allant jusqu'à la passerelle.
D'un autre côté, si vous choisissez le Wi-Fi au lieu de l'Ethernet, essayez d'utiliser un dongle avec antenne externe et déplacez l'antenne hors du boîtier pour avoir moins de bruit à l'intérieur de la boîte.
Configurer le Matériel :
Avant de connecter quoi que ce soit et d'allumer, faisons les configurations suivantes sur le Raspberry Pi et le module RAK 831 :
RASPBERRY PI
1) Obtenez la carte Raspberry Pi 3 et préparez une carte micro SD 8 Go avec le logiciel Raspbian. Vous pouvez même acheter une carte SD NOOBS avec le logiciel préchargé. Pour savoir comment flasher l'OS sur la carte SD, suivez les instructions ici : https://www.raspberrypi.org/learning/hardware-guide/
2) Connectez le Raspberry Pi à une alimentation 5 V 2 ampères. C'EST TRÈS IMPORTANT. Le module LoRa peut consommer 700 mA en crête pendant les transactions sans fil actives, donc ayez un bon bloc d'alimentation pour alimenter le Raspberry Pi.
RAK 831 :
1) Avant même d'alimenter la carte, prenez les antennes qui venaient dans votre kit et connectez-les au terminal à vis d'antenne. C'EST ESSENTIEL.
Détails de Connexion :
Voici un tableau montrant comment connecter le module rak831 avec le Raspberry Pi :
Connexion broches rpi v3 vers rak 831. Le plan de sérigraphie du rak 831 correspond aux broches du rak 831.
plan de sérigraphie du rak 831 correspondant aux broches du rak 831
Pour comprendre la disposition des broches du Raspberry Pi, rendez-vous sur : https://www.raspberrypi.org/documentation/usage/gpio/ pour plus de détails
Notes :
- La broche de reset peut être connectée à n'importe quel GPIO du Raspberry Pi 3.
- Il est essentiel de s'assurer que vous connectez correctement les broches d'alimentation pour éviter d'endommager la carte RAK 831.
Activer SPI :
Le périphérique SPI n'est pas activé par défaut. Pour l'activer, faites ce qui suit :
- Exécutez sudo raspi-config.
- Utilisez la flèche bas pour sélectionner 9 Advanced Options
- Flèche bas vers A6 SPI.
- Sélectionnez oui quand on vous demande d'activer SPI,
- Sélectionnez aussi oui quand on vous demande le chargement automatique du module noyau.
- Utilisez la flèche droite pour sélectionner le bouton <Finish>.
- Sélectionnez oui quand on vous demande de redémarrer.
Le système redémarrera. Quand il revient, connectez-vous et entrez la commande suivante :
>ls /dev/*spi*
Le Pi devrait répondre avec :
/dev/spidev0.0 /dev/spidev0.1
Ces derniers représentent les périphériques SPI sur les broches d'activation de puce 0 et 1, respectivement. Ces broches sont câblées en dur dans le Pi. Ordinairement, cela signifie que l'interface supporte au maximum deux périphériques, mais il y a des cas où plusieurs dispositifs peuvent être mis en chaîne, partageant un seul signal d'activation de puce.
Alimenter la Carte :
Comme pour tout projet sans fil, ils ont tendance à nécessiter plus d'énergie que la carte hôte ne peut fournir via les broches d'alimentation. Les deux schémas ci-dessous énumèrent comment vous pouvez alimenter le RAK 831 et le Raspberry Pi 3.
1) Alimenter le rail 5 V depuis le Raspberry Pi
2) Alimenter le rail 5 V sur le Raspberry Pi et le RAK831 séparément
Installation Logicielle :
Sur le Raspberry Pi, faisons les étapes suivantes pour installer le logiciel essentiel :
- Activer SPI :
Utilisez l'utilitaire raspi-config pour activer SPI ([5] Interfacing options -> P4 SPI) et aussi étendre le système de fichiers ([7] Advanced options -> A1 Expand filesystem) :
$ sudo raspi-config
- Assurez-vous que git est installé
Sudo apt-get update
Sudo apt-get upgrade
Sudo apt-get install git
- Gérez votre connexion Wi-Fi sur le Raspberry Pi
- Configurez les identifiants Wi-Fi (voir ici pour plus de détails)
$ sudo nano /etc/wpa_supplicant/wpa_supplicant.conf
Et ajoutez le bloc suivant à la fin du fichier, en remplaçant SSID et mot de passe pour correspondre à votre réseau :
network={
ssid="Le_SSID_de_votre_wifi"
psk="Votre_mot_de_passe_wifi"
}
- Clonez l'installateur et lancez l'installation
$ git clone -b spi https://github.com/ttn-zh/ic880a-gateway.git ~/ic880a-gateway
$cd ~/ic880a-gateway
$ sudo ./install.sh spi
- L'étape d'installation vous demandera si vous voulez activer la configuration à distance. Tapez 'y' ou 'yes' et continuez l'installation. Au début de l'installation en ligne de commande, le script vous montrera l'EUI de la passerelle qui est important pour les prochaines étapes. NOTEZ-LE !
- Si vous voulez utiliser l'option de configuration à distance, assurez-vous d'avoir créé un fichier JSON nommé comme votre EUI de passerelle (ex. B827EBFFFE7B80CD.json) dans le dépôt Gateway Remote Config ici : https://github.com/ttn-zh/gateway-remote-config. Forkez le repo, ajoutez votre fichier <EUI>.json avec la configuration appropriée et commitez le repo forké. Une fois fait, envoyez une pull request vers le repo principal et le fichier devrait apparaître dans le repo le lendemain. Un exemple de json est montré ci-dessous :
{
"gateway_conf": {
"gateway_ID": "l'id que vous avez noté dans la sortie de console install.sh",
"servers": [
{
"server_address": "le routeur auquel vous voulez vous connecter",
"serv_port_up": 1700,
"serv_port_down": 1700,
"serv_enabled": true
}
],
"ref_latitude": la lat de la passerelle rak 831,
"ref_longitude": la long de la passerelle rak 831,
"ref_altitude": 40,
"contact_email": "email de contact du propriétaire de la passerelle",
"description": "une courte description"
}
}
Note :
Pour une liste de routeurs valides, consultez le lien ici : https://www.thethingsnetwork.org/wiki/Backend/Connect/Gateway
- Par défaut, l'installateur change le nom d'hôte de votre Raspberry Pi en ttn-gateway (pour éviter les collisions avec d'autres Raspberry Pi dans votre réseau). Vous pouvez outrepasser cela en mode configuration non-distante.
- HURRAY votre passerelle devrait maintenant fonctionner. Assurez-vous de redémarrer la passerelle le lendemain pour que votre fichier json soit correctement téléchargé sur le RPi3.
- Notez que le global_config.json doit être ajusté selon :
https://github.com/TheThingsNetwork/gateway-conf/blob/master/US-global_conf.json
Pour ceux qui cherchent à utiliser le mp_pkt_fwd au lieu de l'ancien poly packet forwarder, suivez les instructions ici et installez-le avec les instructions fournies :
https://github.com/kersing/packet_forwarder/tree/master/mp_pkt_fwd
Encore une fois, vous pouvez voir le fichier global_conf.json à la racine du projet, assurez-vous simplement de modifier le fichier (sections importantes décrites ci-dessous) et de copier le même dans le dossier bin après la compilation.
Entités Configurables dans global_conf.json :
Le fichier global_conf.json se trouve dans ./bin/global_conf.json à partir de la base de votre répertoire de projet après l'exécution du script d'installation. Voici une liste de certaines entités que vous pourriez vouloir modifier dans le fichier global_conf.json pour votre configuration de passerelle particulière :
- Configuration « radio_0 » ou « radio_1 », en particulier le paramètre Fréquence et les paramètres de balayage de fréquence min et max.
- Section « gateway_conf ». En particulier l'ID de la passerelle ou l'EUI de votre passerelle.
- Ports serveur up et down dans le même objet gateway_conf ainsi que l'adresse du serveur TTN ou l'adresse de votre propre serveur d'application si disponible.
Réinitialiser la Carte :
Chaque fois que nous démarrons le Raspberry Pi, il est bon de réinitialiser le module RAK831 LoRa attaché. Il y a deux façons de le faire :
- Via script Shell :
Un petit script shell peut être écrit pour réinitialiser le RAK831 avant que le driver LoRa n'accède au matériel. Le contenu du script shell peut ressembler à l'exemple suivant (qui suppose que le GPIO 17 (broche 11) du Raspberry Pi est connecté à la broche de reset du RAK831) :
#!/bin/bash
echo "17" > /sys/class/gpio/export
echo "out" > /sys/class/gpio/gpio17/direction
echo "1" > /sys/class/gpio/gpio17/value
sleep 5
echo "0" > /sys/class/gpio/gpio17/value
sleep 1
echo "0" > /sys/class/gpio/gpio17/value
Ces lignes peuvent être stockées dans un fichier appelé « rak831_reset.sh ». L'utilisateur doit appeler ce script une fois après chaque démarrage afin de mettre l'IC concentrateur dans un état propre.
- Via Wiring Pi :
Si le système hôte est un Raspberry Pi, l'utilisateur peut écrire un petit outil C pour réinitialiser le RAK831. Pour accéder aux broches GPIO du Raspberry Pi, il existe une bibliothèque appelée « wiringPi » qui gère les détails de bas niveau. La bibliothèque peut être téléchargée depuis https://wiringpi.com. Veuillez vous référer à ce site pour obtenir les instructions d'installation et d'utilisation. Le contenu du fichier RAK831_reset.c peut ressembler à ce qui suit :
#include
#include
#define GPIO_RESET_PIN 0 // voir le mapping wiringPi!
int main() {
wiringPiSetup();
pinMode(GPIO_RESET_PIN, OUTPUT);
digitalWrite(GPIO_RESET_PIN, HIGH);
sleep(5);
digitalWrite(GPIO_RESET_PIN, LOW);
return;
}
L'utilisateur doit appeler cet outil une fois après chaque démarrage afin de mettre l'IC concentrateur dans un état propre.
gcc -Wall -o blink blink.c -lwiringPi
sudo ./blink
Enregistrer la Passerelle sur le Réseau TTN :
Pour que vos nœuds envoient des données vers le cloud, TheThingsNetwork fournit un service cloud pour parser et stocker les données envoyées par les nœuds LoRa via une passerelle LoRa.
Lire Plus de Détails : Premiers pas avec la passerelle LoRa RAK 831 et RPi3
Processus de fabrication
- Surveiller efficacement les températures de salle avec Raspberry Pi et Nagios
- Centre Énergie Domestique : Surveillance panneaux solaires PV, thermiques et températures pièces avec Raspberry Pi et Moteino
- Intégration de données de capteurs sur Raspberry Pi : Guide pratique complet
- Construire un contrôleur domotique 433 MHz avec Sensorflare et Raspberry Pi
- Suivi de visage Pan/Tilt temps réel sur Raspberry Pi – Guide pratique
- Construire un système aéroponique automatisé avec Raspberry Pi et capteur d'humidité
- Intégrer le radar pulsé Acconeer A111 à un Raspberry Pi : Guide pratique
- Démarrage avec TJBot : Construire, Configurer et Contrôler par la Voix Votre Propre Robot IA
- NanoPi K1 Plus à 35 $ : Un SBC de Type Raspberry Pi avec 2 Go RAM, CPU Allwinner H5, HDMI, Gigabit Ethernet — Idéal pour Bornes, Centres Média et Projets DIY