Uncategorized

ESP32 MQTT : envoyez vos données au cloud en 30 minutes

Le problème

Vous avez monté une station météo ESP32. Température et humidité s’affichent parfaitement sur votre moniteur série. Mais voilà le problème — ces données restent prisonnières de votre ordinateur. Vous ne pouvez pas les consulter depuis votre téléphone. Vous ne pouvez pas les enregistrer. Vous ne pouvez pas déclencher d’automatisations.

MQTT règle ça. C’est le protocole de communication qui fait tourner la plupart des systèmes IoT dans le monde — des usines intelligentes aux installations Home Assistant.

Ce que vous allez construire

Un nœud capteur ESP32 qui :

  • Lit la température et l’humidité toutes les 30 secondes
  • Publie les données vers un broker MQTT cloud gratuit
  • Vous permet de tout surveiller depuis n’importe quel navigateur, où que vous soyez

Difficulté : Débutant  |  Temps : 30 minutes  |  Coût : ~23 $ de pièces

Matériel requis (liste de pièces)

Pièce Modèle Qté Prix Acheter
Microcontrôleur ESP32 DevKitC V4 1 $13.49 Voir le produit
Capteur température/humidité DHT22 1 $5.24 Voir le produit
Écran (facultatif) 0.96″ OLED SSD1306 1 $5.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

Étape 1 : le câblage

ESP32 ↔ DHT22

Broche DHT22 Broche ESP32 Remarque
VCC 3V3 Alimentation
GND GND Masse
DATA GPIO 13 Ligne de données

ESP32 ↔ OLED (facultatif)

Broche OLED Broche ESP32 Remarque
VCC 3V3 Alimentation
GND GND Masse
SDA GPIO 21 Données I2C
SCL GPIO 22 Horloge I2C

Étape 2 : installer les bibliothèques

Ouvrez l’IDE Arduino → Sketch → Inclure une bibliothèque → Gérer les bibliothèques puis installez :

  1. PubSubClient de Nick O’Leary (communication MQTT)
  2. DHT sensor library d’Adafruit (pilote DHT22)
  3. Adafruit SSD1306 (écran OLED, si vous l’utilisez)

Étape 3 : envoyer le code

#include <WiFi.h>
#include <PubSubClient.h>
#include "DHT.h"

// --- WiFi Settings ---
const char* ssid = "YOUR_WIFI_SSID";
const char* password = "YOUR_WIFI_PASSWORD";

// --- MQTT Settings ---
const char* mqtt_server = "broker.hivemq.com";
const int mqtt_port = 1883;
const char* temp_topic = "sensbench/home/temperature";
const char* hum_topic = "sensbench/home/humidity";

// --- Sensor Settings ---
#define DHTPIN 13
#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE);

// --- Globals ---
WiFiClient espClient;
PubSubClient client(espClient);

void setup_wifi() {
  delay(10);
  Serial.print("Connecting to ");
  Serial.println(ssid);
  WiFi.begin(ssid, password);
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  Serial.println("nWiFi connected! IP: ");
  Serial.println(WiFi.localIP());
}

void reconnect() {
  while (!client.connected()) {
    Serial.print("Connecting to MQTT...");
    String clientId = "sensbench-" + String(random(0xffff), HEX);
    if (client.connect(clientId.c_str())) {
      Serial.println("connected!");
    } else {
      Serial.print("failed, rc=");
      Serial.print(client.state());
      Serial.println(" retrying in 5s");
      delay(5000);
    }
  }
}

void setup() {
  Serial.begin(115200);
  dht.begin();
  setup_wifi();
  client.setServer(mqtt_server, mqtt_port);
}

void loop() {
  if (!client.connected()) reconnect();
  client.loop();

  float h = dht.readHumidity();
  float t = dht.readTemperature();

  if (isnan(h) || isnan(t)) {
    Serial.println("Sensor read failed!");
    return;
  }

  char tempStr[8], humStr[8];
  dtostrf(t, 4, 2, tempStr);
  dtostrf(h, 4, 2, humStr);

  client.publish(temp_topic, tempStr);
  client.publish(hum_topic, humStr);

  Serial.printf("Temp: %s°C  Humidity: %s%%n", tempStr, humStr);
  delay(30000);
}

Étape 4 : voir vos données dans le cloud

  1. Ouvrez https://www.hivemq.com/mqtt-web-client/ dans votre navigateur
  2. Cliquez sur Connect
  3. Dans Subscriptions, ajoutez le topic : sensbench/home/#
  4. Regardez votre ESP32 envoyer des données en temps réel toutes les 30 secondes

Et ensuite ?

Maintenant que vos données sont dans le cloud, vous pouvez :

  • Construire un tableau de bord avec Node-RED ou Home Assistant pour visualiser les données
  • Ajouter d’autres capteurs — BME280 pour la pression atmosphérique, humidité du sol pour les plantes
  • Déclencher des automatisations — « si température > 30°C, allumer le ventilateur »
  • Passer sur batterie — ajoutez le mode deep sleep pour des mois de fonctionnement

Leave a Reply

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