Communication avec des modules LoraE5

Le module LoraE5

LoraE5 Le module LoRa-E5 est basé sur la puce STM32WLE5JC de STMicroelectronics couplé à un module LoRa SX126X pour prendre en charge les modes FSK et LoRa.

Il supporte une large plage de températures de fonctionnement allant de -40°C à +85°C.
Le module LoRa-E5 intègre un micrologiciel de commande AT qui prend en charge les protocoles LoRaWAN de classes A/B/C et couvre un large plan de fréquences.

Les commandes AT du module sont des instructions qui permettent de configurer et de contrôler le module via une connexion série.

Branchement

On le branche comme cela :

Image non disponible
STM32WB55 LoraE5
GND GND
3.3V 3.3V
A0 TX
A1 RX

Il va falloir ouvrir une deuxième com série sur la carte STM32WB55, la première étant la com avec le pc, on va utiliser la librairie "SoftwareSerial" pour la com entre la carte STM32WB55 et le module LoraE5.

Programme pour tester les commandes AT

Voici le programme pour tester les commande AT Commande_AT_LoraE5.ino :

Les commandes AT

Vous pouvez consulter le site du fabricant pour plus d'infos

Voici quelque commandes utiles pour du P2P (entre module sans passerelle) pour tester les commande AT :

Les Commandes AT du module LoraE5
Commande Infos
Commande Infos
AT Utiliser pour tester si la connexion du module est OK.
Le module répond : +AT: OK
AT+VER Demande la version du firmware.
Le module répond : +VER: 4.0.11.
AT+TEMP Demande la température détectée (précision d'environ +/-5°C dans le pire des cas).
Le module répond : +TEMP: 25.8.
AT+VDD Demande la tension d'alimentation.
Le module répond : +VDD: 3.26V.
AT+RTC Demande le temps du modem LoRaWAN. Lorsque le modem est sous tension, il démarre toujours à partir de 2000-01-01 00:00:00.
Le module répond : +RTC: 2000-01-01 01:20:22.
AT+RTC=FULL Demande le temps complet du modem LoRaWAN. date heure, timezone, timestamp, temps en seconde depuis la mise sous tension.
Le module répond : +RTC: 2000-01-01 01:21:22 UTC+01:00, 630721295, 1282.
AT+RTC="2024-01-30 11:49:11" Change le temps du module.
Le module répond : +RTC: 2024-01-30 11:49:11
AT+RTC=ZONE Demande le fuseau horaire.
Le module répond : +RTC: ZONE, +00:00
AT+RTC=ZONE, "+01:00" Pour configurer la fuseau horaire.
Le module répond : +RTC: ZONE, +01:00
AT+WDT Demande l'état du chien de garde, il est activé par défaut, ceci améliorera la stabilité du module, en particulier dans des conditions électromagnétiques sévères.
Une fois le WDT activé, le courant de veille sera augmenté d'environ 0,7 uA. .
Le module répond : +WDT: ON
AT+CH=NUM Demande les canaux actuellement activées.
Le module répond : +CH: NUM, 1-2
AT+CH=2, OFF Demande de désactivé le canal 2.
Le module répond : +CH: CH2 off
AT+CH=2, ON Demande d'activé le canal 2.
Le module répond : +CH: CH2 on
AT+LOG=DEBUG Demande d'activé le journal, il est destinée au débogage de l'utilisateur, le modem AT renvoie un supplément d'infos.
Plusieurs mode debug : DEBUG/INFO/WARN/ERROR/FATAL/PANIC/QUIET Le journal est désactivé par défaut (QUIET).
Le module répond : +LOG: DEBUG
AT+LOG=QUIET Demande de désactivé le journal.
Le module répond : +LOG: QUIET
AT+MODE? Demande dans quel mode on est. (LWABP par défaut, LWOTAA ou TEST)
Le module répond : +MODE: LWABP

Les codes erreurs

Voici les codes erreur du module :

Codes erreur du LoraE5
Code erreur Infos
Code erreur Infos
-1 Les paramètres ne sont pas valides
-10 Commande inconnue
-11 Le format de la commande est incorrect
-12 La commande n’est pas disponible dans le mode courant (vérifiez avec «AT+MODE»)
-20 Trop de paramètres. Jusqu’à 15 paramètres max
-21 La longueur de la commande est trop longue (supérieure à 528 octets)
-22 Délai d’expiration du symbole de fin de réception, la commande doit se terminer par (\n)
-23 Caractère non valide reçu
-24 Comme -21, -22 ou -23
Image non disponible

Le mode TEST

Le module LoraE5 à plusieurs modes de fonctionnement,LWABP, LWOTAA ou TEST .
Par défaut, LWABP est activé, toutes les commandes de test sont indisponibles, il renverra une erreur (- 12) s’il reçoit une commande de test en mode non-test.

Le mode qui nous intéresse est le mode TEST, c'est dans ce mode que l'on va configurer nos modules LoraE5

Le mode TEST
Commande Infos
Commande Infos
AT+MODE=TEST Demande de passer en mode TEST.
Le module répond : +MODE: TEST
AT+TEST=? Demande si on est en mode TEST et retourne la config RF. Le module répond :
+TEST: STOP
+TEST: RFCFG F:868000000, SF7, BW125K, TXPR:8, RXPR:8, POW:14dBm, CRC:ON, IQ:OFF, NET:OFF
AT+TEST=RFCFG,866,SF12,125,12,15,14,ON,OFF,OFF Demande de modification de la config RF. Le module répond :
+TEST: RFCFG F:866000000, SF12, BW125K, TXPR:12, RXPR:15, POW:14dBm, CRC:ON, IQ:OFF, NET:OFF

La réponse est sous forme +TEST: RFCFG F,SF,BW,TXPR,RXPR,POW,CRC,IQ,NET

Le mode TEST en émission

Voila, maintenant, pour configurer les modules en mode TEST, on lance ces commandes :

  1. AT Pour vérifier si le module est prêt
  2. AT+MODE=TEST Pour passer en mode TEST
  3. AT+TEST=RFCFG,866,SF12,125,12,15,14,ON,OFF,OFF Pour configurer la RF (adapter les paramètres selon vos souhait)
  4. A partir de là Le module est prêt à emmètre, le message sera envoyer sous forme hexadécimale (par défaut), on peut le modifier mais quoi qu'il en soit la réception sera en hexadécimale, même si on envoie en string.

Pour envoyer un message, on lance cette commande : AT+TEST=TXLRSTR, "Salut"

Le module répond :

+TEST: TXLRSTR "Salut"
+TEST: TX DONE

Le mode TEST en réception

Si on veut que le module soit en mode réception on ajoute une commande :

  1. AT Pour vérifier si le module est prêt
  2. AT+MODE=TEST Pour passer en mode TEST
  3. AT+TEST=RFCFG,866,SF12,125,12,15,14,ON,OFF,OFF Pour configurer la RF (adapter les paramètres selon vos souhait)
  4. AT+TEST=RXLRPKT Pour passer en mode réception

Exemple émission réception en mode TEST

En vert, les commande pour passer en mode test et émission par défaut, en orange celle pour passer en mode réception

Donc la carte connectée au terminal 1 est en mode émission, et celle connectée au terminal 2 est en mode réception

Image non disponible

On envoie un message par la carte connectée au terminal 1 "Salut" (5 caractères), et on reçoit 5 caractères mais codé en hexadécimale sur la carte connectée au terminal 2.

Image non disponible

Il faudra ajouter une fonction pour décoder ce message en hexadécimale vers de l'ASCII dans un programme

La gestion de l’énergie

Le module LoraE5 à 2 modes de sommeil, un léger, et un dit profond

SLEEP MODE (léger) du LoraE5
Commande Infos
AT+LOWPOWER Dors (léger), réveille par UART TX
AT+LOWPOWER=1000 Dors (léger), 1000ms et se réveille

Le niveau de la broche UART RX doit rester inchangé, tout signal sur UART RX sortira également le module du mode LOWPOWER.

Le temps de veille peut aller de 100 ms à 129600000 ms (36 heures).

SLEEP MODE (profond) du LoraE5
Commande Infos
AT+LOWPOWER=AUTOON La commande AT+LOWPOWER=AUTOON est utilisée pour activer le mode extrêmement basse consommation.
le modem passe en mode veille prolongée, il n’y a pas de réception de commandes.
FFFFFFFFAT+LOWPOWER=AUTOOFF Pour envoyer une commande au module en veille profonde, au moins quatre 0xFF doivent être ajoutés au début de chaque commande AT.
Cette commande sors le module de la veille profonde

Si le terminal série écrit en python vous intéresse il est disponible sur github.

Voilà, il n'y a plus qu'a utiliser ces commandes dans un programme ...

Communication entre 2 cartes STM32WB55 avec des modules LoraE5

Une partie émetteur et une partie récepteur

Pour la partie émetteur

On utilise la librairie SoftwareSerial pour ouvrir une 2ème com série. on utilise les boutons de la STM32WB55 pour envoyer des instructions à la partie récepteur, le LoraE5 est connecté comme suit :


STM32 LoraE5
GND GND
3.3V VCC
A0 TX
A1 RX
émetteur

Voici le Programme pour la partie émetteur STM32WB55_LoraE5_Emetteur_OLED.ino :

Pour la partie Récepteur

On utilise la librairie SoftwareSerial pour ouvrir une 2ème com série. le LoraE5 et l'écran OLED 128x64 I2C sont connecté comme suit :


STM32 LoraE5
GND GND
3.3V VCC
A0 TX
A1 RX
STM32 OLED
GND GND
3.3V VCC
A4 SDA
A5 SCL

récepteur

Voici le Programme pour la partie récepteur STM32WB55_LoraE5_Recepteur_OLED.ino, il y a un deuxième fichier logo.c à copier à coté

Voici le fichier logo.c à copier à coté du programme STM32WB55_LoraE5_Recepteur_OLED.ino :

Résultat

Dans les com série, voici ce que cela donne au démarrage des modules :

ex_prog1

Si le programme que j'utilise comme moniteur série vous intéresse, il est disponible ici

Voici ce que cela donne lorsqu'on appuie sur un bouton de la carte STM32WB55:

ex_prog1

Si on appuie sur le bouton SW1

Si on appuie sur le bouton SW2

Si on appuie sur le bouton SW3

sw1.png
sw2.png
sw3.png