Blog
ESP32 + LoRa : nœud capteur sans fil à longue portée
Le problème
Le Wi-Fi marche très bien — jusqu’à ce qu’il faille mettre un capteur dans votre jardin à 200 mètres. Ou dans une ferme de l’autre côté de la vallée. Ou dans un entrepôt métallique. Le Wi-Fi meurt à 50 mètres. Le Bluetooth à 10.
LoRa change tout. Avec le module LoRa E32 (915MHz, 1W), vous pouvez envoyer des données capteur jusqu’à 8 kilomètres — sans antenne relais, sans Wi-Fi, sans frais mensuels.
Ce que vous allez construire
Un nœud capteur LoRa sur batterie qui :
- Lit la température et l’humidité
- Transmet les données en LoRa vers un récepteur
- Entre en deep sleep pendant 10 minutes entre deux mesures (la batterie tient des mois)
Difficulté : Débutant | Temps : 45 minutes | Coût : ~40 $ de pièces
Matériel requis (liste de pièces)
| Pièce | Modèle | Qté | Prix | Acheter |
|---|---|---|---|---|
| Microcontrôleur (émetteur) | ESP32 DevKitC V4 | 1 | $13.49 | Voir le produit |
| Microcontrôleur (récepteur) | ESP32-C3 SuperMini | 1 | $7.49 | Voir le produit |
| Module LoRa | E32-915T30D (915MHz) | 2 | $11.99 ea | Voir le produit |
| Capteur température/humidité | DHT22 | 1 | $5.24 | Voir le produit |
| Alimentation batterie | 18650 Battery Shield | 1 | $11.99 | Voir le produit |
| Breadboard | 830-point | 1 | $4.49 | Voir le produit |
| Fils de liaison | M-M 40pcs | 1 | $2.99 | Voir le produit |
Avertissement fréquence : les modules E32 existent en versions 433MHz, 868MHz et 915MHz. Ils NE PEUVENT PAS communiquer entre eux. Vérifiez que les deux modules sont à la MÊME fréquence. Les États-Unis utilisent le 915MHz.
Étape 1 : câblage (nœud émetteur)
Le module LoRa E32 utilise la série UART — bien plus simple que les modules LoRa SPI. Aucune bibliothèque complexe nécessaire !
| Broche E32 LoRa | Broche ESP32 | Remarque |
|---|---|---|
| VCC | 5V | Alimentation (vérifiez la fiche de votre module) |
| GND | GND | Masse |
| RXD | GPIO 17 (TX2) | E32 RX ← ESP32 TX |
| TXD | GPIO 16 (RX2) | E32 TX → ESP32 RX |
| M0 | GND | Réglé en mode transmission |
| M1 | GND | Réglé en mode transmission |
| DHT22 DATA | GPIO 13 | Données du capteur |
Croisement TX↔RX : l’UART, c’est comme un appel téléphonique — votre bouche (TX) se connecte à l’oreille de l’autre (RX). Croisez toujours : TXD du module → RX2 de l’ESP32, RXD du module → TX2 de l’ESP32.
Étape 2 : code de l’émetteur
Envoyez ce code sur l’ESP32 émetteur (celui avec le capteur DHT22) :
#include <HardwareSerial.h>
#include "DHT.h"
HardwareSerial LoRaSerial(2); // ESP32 Serial2 (GPIO 16, 17)
#define DHTPIN 13
#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE);
// Deep sleep: 10 minutes between readings
#define uS_TO_S_FACTOR 1000000ULL
#define TIME_TO_SLEEP 600
void setup() {
Serial.begin(115200);
Serial.println("sensbench LoRa Sensor Node");
LoRaSerial.begin(9600);
dht.begin();
delay(2000);
float h = dht.readHumidity();
float t = dht.readTemperature();
if (isnan(h) || isnan(t)) {
Serial.println("Sensor read failed!");
} else {
String data = "T:" + String(t, 1) + "C H:" + String(h, 1) + "%";
Serial.println("Sending: " + data);
LoRaSerial.println(data);
}
Serial.println("Deep sleeping for 10 minutes...");
Serial.flush();
esp_sleep_enable_timer_wakeup(TIME_TO_SLEEP * uS_TO_S_FACTOR);
esp_deep_sleep_start();
}
void loop() {
// Not reached after deep sleep
}
Étape 3 : code du récepteur
Envoyez ce code sur l’ESP32 récepteur (branché à votre ordinateur) :
#include <HardwareSerial.h>
HardwareSerial LoRaSerial(2);
void setup() {
Serial.begin(115200);
Serial.println("sensbench LoRa Receiver");
LoRaSerial.begin(9600);
}
void loop() {
if (LoRaSerial.available()) {
String data = LoRaSerial.readString();
Serial.print("Received: ");
Serial.println(data);
}
}
Étape 4 : testez
- Alimentez le nœud émetteur avec le shield batterie 18650
- Branchez le récepteur à votre ordinateur et ouvrez le moniteur série (115200 bauds)
- Toutes les 10 minutes, température et humidité arrivent depuis jusqu’à 8 km
Pourquoi ça marche si bien
- Deep sleep : l’ESP32 ne consomme que 10µA en deep sleep. Avec une batterie 18650 de 2000mAh, le nœud capteur peut fonctionner plus de 3 mois sur une seule charge.
- LoRa en UART : contrairement au LoRa SPI (SX1276), le module E32 utilise une simple communication série. Pas de bibliothèque complexe, pas de câblage SPI compliqué, pas de registres de configuration.
- Puissance 1W (30dBm) : l’E32-915T30D est la version haute puissance. Les modules standard émettent à 20dBm (100mW). Celui-ci émet à 30dBm (1000mW) — 10 fois la puissance, 3 fois la portée.
Aller plus loin
- Ajouter d’autres nœuds capteur : chaque nœud envoie ses données à un rythme différent pour éviter les collisions
- Relayer vers le cloud : connectez l’ESP32 récepteur au Wi-Fi et relayez les données LoRa vers MQTT
- Énergie solaire : ajoutez un petit panneau solaire au shield batterie 18650 pour un déploiement permanent
- Construire un maillage : plusieurs nœuds récepteurs peuvent relayer les données sur des distances encore plus grandes