LoRa, LoRaWAN .. Quésako ?

LoRa, LoRaWAN .. Quésako ?

Pour transmettre en sans-fil il existe beaucoup de techniques qui jouent sur des facteurs comme la fréquence, la puissance, etc. Pour transmettre plus ou moins loin, plus ou moins vite, dans tel ou tel milieu ...
Lora a été imaginé, par une société française, pour permettre une transmission longue portée (plusieurs kilomètres) avec le moins d'énergie possible. Le débit est très faible, on parle d'octets par transmission.

La transmission LoRa est donc destinée à des appareils alimentés par piles qui souhaitent transmettre de petites sommes d'informations ... Mais pas que.

LoRa vient donc en complément d'autres réseaux, dans un projet IoT il est à envisager dans les conditions décrites précédemment. Mais nous le verrons plus tard il existe plusieurs classes de capteur et certaines sont pour des capteurs "alimentés".

LoRa

C'est la partie "radio", comment le signal est transmis et à quelle vitesse. En France nous utilisons la bande 868Mhz qui est une bande libre :

Le “portail bandes libres” | Arcep

La technologie est à étalement de spectre, lors d'une transmission la fréquence de transmission va varier dans le spectre de façon linéaire, hormis le fait que ce soit facile d'implémentation et donc peu coûteux, cette technique offre une excellente résistance aux perturbations. Il existe plusieurs "facteurs d'étalement" (Spreading Factor) de SF7 (le plus rapide, avec une portée moindre) à SF12 (le plus lent, avec une portée élevée).

LoRaWAN

LoRaWAN ajoute le contrôle d'accès à une transmission LoRa. Le protocole n'est pas symétrique, il y a une notion de nœuds et de passerelles, de messages montants (uplink : nœud -> passerelle) et descendant (downlink : passerelle -> nœuds).
Les passerelles envoient leurs trafics à un réseau. Celui-ci gère la réception des données, enlève les paquets reçus en double ou plus (plusieurs passerelles peuvent recevoir le même message), gère les downlinks, etc... Il existe plusieurs réseaux LoRaWAN, dont des commerciaux comme Orange et Objenious (Bouygues Telecom) et des communautaires comme The Things Network.


LoRaWan définit 3 classes de nœuds :

Classe A

Le nœud de classe A a la maitrise de l'envoi de ses données, en général ce sont des capteurs à très faible consommation qui émettent à intervalle régulier ou sur déclenchement. Après leur envoi, il ouvre 2 fenêtres de réception dans l'attente d'un éventuel retour d'information du réseau. Si le réseau, ou nous voulons communiquer avec un capteur de classe A, nous sommes obligés d'attendre que le capteur envoi un paquet pour profiter de son "écoute".

Exemple : un capteur d'humidité dans un champ, une balance de ruche, un tracker GPS, ...

Classe B

Le nœud de classe B fonctionne comme le classe A à la différence que les fenêtres de réception seront plus nombreuses pour répondre à un besoin plus important d'échange. Forcément avec un coup en termes de consommation énergétique.

Exemple : un capteur de niveau d'eau couplé à une pompe.

Classe C

Le nœud de classe C est en écoute permanente du réseau, il ne s'agit donc plus ici de nœud à très basse consommation, mais des nœuds qui attendent un "ordre" via un downlink.

Exemple : un fil pilote de chauffage, un déclencheur de lumière urbain.


ADR : Adaptative Data Rate

est un mécanisme qui permet d'améliorer la transmission et son coût énergétique en proposant d'adapter le SF utilisé, la bande passante et la puissance.

Adaptive Data Rate
We are building a global open free crowdsourced long range low power IoT data network

Nous avons commencé par dire que LoRaWAN, c'est un mécanisme de contrôle d'accès. En effet pour rejoindre un réseau, un nœud doit s'y connecter, y être enregistré. À l'heure actuelle, OTAA est la procédure conseillée, elle permet lors de la connexion au réseau un échange de clés de session qui assureront ensuite un échange chiffré entre le nœud et le réseau.

OTAA

Pour connecter un nœud au réseau vous aurez besoin d'enregistrer un certain nombre de clés :

Dans votre firmware:

uint8_t devEui[] = { 0x22, 0x32, 0x33, 0x00, 0x00, 0x88, 0x88, 0x02 };
uint8_t appEui[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
uint8_t appKey[] = { 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x66, 0x01 };

Dans la console de votre gestionnaire de réseau (ici TTS)

Conclusion

LoRa pour transmettre, LoRaWAN pour contrôler, des nœuds de différentes classes suivant les usages, et un réseau (TTN) pour organiser les échanges .. Facile !