Uncategorized

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

  1. Alimentez le nœud émetteur avec le shield batterie 18650
  2. Branchez le récepteur à votre ordinateur et ouvrez le moniteur série (115200 bauds)
  3. 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

Leave a Reply

Your email address will not be published. Required fields are marked *