Le module 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 :

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 :
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 :
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 |
-23 | Caractère non valide reçu |
-24 | Comme -21, -22 ou -23 |

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
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
- F : (Frequence) C'est la fréquence du module loraE5, dépend de la région où il est utilisé.
Il peut fonctionner sur les bandes de fréquences EU 868 MHz et USA 915 MHz, qui sont compatibles avec le protocole LoRaWAN® - SF : (Spreading Factor) La différence entre les modes SF du module lorae5 est le nombre de bits codés par symbole LoRa®.
Le mode SF (Spreading Factor) détermine la durée, la sensibilité et la consommation d’énergie de la transmission LoRa®.
Plus le mode SF est élevé, plus la portée et la robustesse sont importantes, mais plus le débit et la capacité du réseau sont faibles.
Le module lorae5 permet de choisir le mode SF entre 7 et 12, avec une valeur par défaut de 7 - TXPR : (TX PReamble) C'est le nombre de symboles LoRa® envoyés avant le début du paquet de données, pour permettre au récepteur de se synchroniser avec l’émetteur. Il peut être réglé entre 5 et 65535, avec une valeur par défaut de 8.
- RXPR : (RX PReamble) C'est le nombre minimum de symboles LoRa® que le récepteur doit détecter pour commencer à recevoir le paquet de données.
Il peut être réglé entre 1 et 255, avec une valeur par défaut de 5. - BW : (BandWidth) La largeur de bande utilisée pour la modulation LoRa®. La largeur de bande est
la différence entre la fréquence la plus haute et la plus basse du signal.
Elle affecte le débit, la sensibilité et la résistance aux interférences de la transmission LoRa®.
Plus la largeur de bande est faible, plus le débit est faible, mais plus la sensibilité et la résistance aux interférences sont élevées.
Le module loraE5 permet de choisir la largeur de bande entre 62,5 kHz, 125 kHz, 250 kHz et 500 kHz, avec une valeur par défaut de 125 kHz - POW : (POWer) Détermine la puissance d’émission du signal LoRa®.
La puissance d’émission affecte la portée, la consommation d’énergie et la conformité aux réglementations de la transmission LoRa®.
Plus la puissance d’émission est élevée, plus la portée est importante, mais plus la consommation d’énergie et le risque d’interférences sont élevés.
Le module lorae5 permet de choisir la puissance d’émission entre -17 dBm et 22 dBm, avec une valeur par défaut de 14 dBm1 - CRC : (Cyclic Redundancy Check) Détermine si le contrôle de redondance cyclique est activé ou désactivé pour la transmission LoRa®.
Le contrôle de redondance cyclique est une méthode qui permet de détecter les erreurs de transmission en ajoutant un code à la fin du paquet de données.
Il augmente la fiabilité de la communication, mais réduit le débit utile.
Le module lorae5 permet d’activer ou de désactiver le crc, avec une valeur par défaut de ON - IQ : (Inversion IQ) Détermine si l’inversion IQ est activée ou désactivée pour la transmission LoRa®.
L’inversion IQ est une technique qui permet de réduire les interférences entre les canaux adjacents en inversant le spectre du signal.
Elle augmente la capacité du réseau, mais nécessite que l’émetteur et le récepteur utilisent le même réglage d’inversion IQ.
Le module lorae5 permet d’activer ou de désactiver l’inversion IQ, avec une valeur par défaut de OFF - NET : (NETwork) Cette commande permet de choisir un réseau public LoRaWAN ou un réseau privé.
Réglez ON sur choisissez le réseau public, réglez OFF pour choisir le réseau privé.
Le mode TEST en émission
Voila, maintenant, pour configurer les modules en mode TEST, on lance ces commandes :
- AT Pour vérifier si le module est prêt
- AT+MODE=TEST Pour passer en mode TEST
- AT+TEST=RFCFG,866,SF12,125,12,15,14,ON,OFF,OFF Pour configurer la RF (adapter les paramètres selon vos souhait)
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 :
- AT Pour vérifier si le module est prêt
- AT+MODE=TEST Pour passer en mode TEST
- AT+TEST=RFCFG,866,SF12,125,12,15,14,ON,OFF,OFF Pour configurer la RF (adapter les paramètres selon vos souhait)
- 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
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.
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
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).
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 |

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 |
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 :
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:
Si on appuie sur le bouton SW1
Si on appuie sur le bouton SW2
Si on appuie sur le bouton SW3


