Passerelle DIY avec Raspberry et carte d'extension Dragino Lorawan

Il y a quelques mois, j'avais installé une gateway Lorawan Dragino LG308 dans dans les combles de ma maison .


Mais ce modèle n'etait pas prévu pour supporter des conditions extrêmes (chaud, le froid, la poussière, humidité), et elle a fini par me lâcher au bout de deux ans de service.

Après démontage de la passerelle, j'ai remarqué la présence d'un module Lorawan,  qui par chance est compatible Raspberry (On retrouve d'ailleurs ce module sur le site Dragino) :

Cool, je vais donc recycler ce module Lorawan Dragino sur un RPI3B pour  me fabriquer une nouvelle gateway Lorawan "maison".

Quelques photos du matériel:

  • La gateway LG308 HS avec la carte "fille" Lorawan (en haut)
  • Le Rasbperry RPI3b qui être utilisé avec la carte Lorawan

Et voila le RPI avec la carte Lorawan  de la gateway Dragino:
Ca s'assemble correctement:  

Installation Linux

A présent, il faut installer un OS Linux sur une carte SD pour pouvoir utiliser le Raspberry:

On télécharge l'image officielle Raspberry Pi OS version Lite, car nous avons simplement besoin d'un Linux "de base"
Plus d'infos ici : https://www.raspberrypi.org/software/operating-systems/

$ cd ~/tmp
$ wget https://downloads.raspberrypi.org/raspios_lite_armhf/images/raspios_lite_armhf-2021-03-25/2021-03-04-raspios-buster-armhf-lite.zip
$ unzip 2021-03-04-raspios-buster-armhf-lite.zip
Récupération de l'image Raspberry OS Lite (attention aux version qui ont pu changer)

L'étape suivante consiste a copier l'image du système (.img) sur la carte SD:

Attention de bien choisir le block device correspondant à carte SD et pas le disque dur de votre système principal ! (paramtre "of=xxxxxx")

$ sudo dd if=2021-03-04-raspios-buster-armhf-lite.img of=/dev/mmcblk0 bs=1M
$ sudo sync 

Démarrage du RPI : Au boot, l'interface réseau utilisera DHCP pour la configuration IP, mais le serveur SSH n'est pas démarré par défaut.

Pour changer ce comportement et activer le SSH, il faut monter la partition /mnt de la carte SD et de créer un fichier vide nommé 'ssh' a la racine.

Bien utile quand on a pas d'écran et de clavier, ou qu'on est un peu présse!

Vous pouvez à présent démarrer le RPI avec la carte SD et vous connecter en SSH
(login: pi, password: raspberry).

Utiliser "sudo su -" pour passer root

  • Activation de l'interface spi avec "raspi-config"

La carte Lorawan utilise le bus SPI pour communiquer avec le RPI.
Il faut donc activer cette interface avec l'outil raspi-config:

Utilisation de l'outil raspi-config pour activer le SPI
  • En résumé

On a installé une version Lite de Raspberry Pi OS sur une carte SD, forcé le démarrage du serveur SSH, activé l'interface SPI.

On peut passer à la suite...

Installation du packet forwarder

Le "packet forwarder" sert à communiquer avec la carte Lorawan (chipset Lora SX1301 + GPS), et les transmettre aux serveurs IoT Lorawan.

On retrouve ici une vue d'ensemble de l'architecture cible :

Image Originale (c) Dragino

Nous devons donc installer ce composant logiciel (packet_forwarder), pour que les packets Lorawan soient traités par le RPI :

  • Téléchargement et installation du Lora packet forwarder
$ wget http://www.dragino.com/downloads/downloads/LoRa_Gateway/PG1301/software/lorapktfwd.deb
$ sudo dpkg -i lorapktfwd.deb
  • Configuration

Editer le fichier /etc/lora-gateway/local_conf.json et adapter la configuration:

{
    "gateway_conf": {
        "gateway_ID": "b827abcde123ffff",
        "server_address": "192.168.1.251",
        "gps_tty_path": "/dev/ttyAMA0",
    }
}

 - server_address

Adresse IP de votre serveur Lorawan (chirpstack local ou TTN)
J'ai utilisé 192.168.1.251, car j'ai installé un serveur ChirpStack dans mon réseau privé.

 - gateway_ID

Il est conseillé de générer la gateway_ID a partir de l'adresse MAC de l'interface réseau, et en y ajoutant ffff à la fin. exemple:

$ ip link show eth0 | grep link  | awk '{print $2"ffff"}' | sed 's/://g'
$ b827abcfe123ffff

Vous pouvez a présent redémarrer le processus "lorapktfw" :

$ root@raspberrypi:~# systemctl enable lorapktfw
$ root@raspberrypi:~# systemctl start lorapktfw
$ root@raspberrypi:~# journalctl -fu lorapktfwd
-- Logs begin at Thu 2021-03-04 23:04:24 GMT. --
Apr 20 21:49:33 raspberrypi lora_pkt_fwd[1560]: REPORT~ # TX errors: 0
Apr 20 21:49:33 raspberrypi lora_pkt_fwd[1560]: REPORT~ # BEACON queued: 0
Apr 20 21:49:33 raspberrypi lora_pkt_fwd[1560]: REPORT~ # BEACON sent so far: 0
Apr 20 21:49:33 raspberrypi lora_pkt_fwd[1560]: REPORT~ # BEACON rejected: 0
Apr 20 21:49:33 raspberrypi lora_pkt_fwd[1560]: REPORT~ ### [PPS] ###
Apr 20 21:49:33 raspberrypi lora_pkt_fwd[1560]: REPORT~ # SX1301 time (PPS): 362436013
Apr 20 21:49:34 raspberrypi systemd[1]: lorapktfwd.service: Succeeded.
Apr 20 21:49:34 raspberrypi systemd[1]: Stopped packet forwarder.
Apr 20 21:50:27 raspberrypi systemd[1]: Starting packet forwarder...
Apr 20 21:50:32 raspberrypi systemd[1]: Started packet forwarder.

Les logs indiquent que le service lora_pkg_fwd a bien démarré !


Bravo! vous devriez voir votre gateway en status "activé" dans votre serveur Lorawan IOT ( TTN ou Chirpstack local)

References

Lora-net/packet_forwarder
A LoRa packet forwarder is a program running on the host of a LoRa gateway that forwards RF packets receive by the concentrator to a server through a IP/UDP link, and emits RF packets that are sent...
Dragino :: Open Source WiFi, Linux Appliance
Provide LoRaWAN End Node, LoRaWAN Gateway, NB-IoT Sensors
10 channels - LoRaWAN GPS Concentrator for Raspberry Pi
LoRa
Buy a Raspberry Pi 3 Model B+ – Raspberry Pi
1.4GHz 64-bit quad-core processor, dual-band wireless LAN, Bluetooth 4.2/BLE, faster Ethernet, and Power-over-Ethernet support (with separate PoE HAT)