ESP32 - DHT22 - Oled 0.96" - Afficher la température


Mesurer la température et l'humidité avec un ESP32 et un capteur DHT22 et afficher les données sur un écran Oled 0.96 pouces


Matériel utilisé:

  • ESP32-Wroom
  • Capteur DHT22 (ou DHT11)
  • Ecran Oled 0.96 pouces



temperature_esp32_dht_22

Capteur DHT22

dht22


Un capteur DHT22 (ou DHT11) pour mesure de la température et de l'humidité

Pinout:

  • Pin 1 = Vcc 
  • Pin 2 = Data
  • Pin 3 = NC
  • Pin 4 = GND

Alimentation:
  • Alimentation: 3,3 à 6 Vcc
  • Consommation maxi: 1,5 mA
  • Consommation au repos: 50 µA


Plage de mesure:

  • Température: -40 à +80 °C
  • Humidité: 0 à 100 % RH

Précision:

  • Température: ± 0,5 °C
  • Humidité: ± 2 % RH

  • Dimensions: 25 x 15 x 9 mm


Ecran Oled 0.96" - I2C

Oled0.96


Module afficheur monochrome OLED 0,96 '' 128 x 64 pixels, basé sur un circuit SSD1306

Ce module communique avec un microcontrôleur de type Arduino, Raspberry Pi, ESP32, ou compatible via le bus I2C.

  • SDA (Serial Data Line) : ligne de données bidirectionnelle, 
  • SCL (Serial Clock Line) : ligne d'horloge de synchronisation bidirectionnelle.


Pinout

  • Pin SCL   (Serial Clock Line)
  • Pin SDA  (Serial Data Line)
  • Pin Vcc
  • Pin GND

  • Alimentation: 3,3 ou 5 Vcc
  • Consommation: 25 mA
  • Interface: I2C
  • Ecran: OLED 0,96 "
  • Résolution: 128 x 64 pixels
  • Dimensions: 27 x 27 x 11 mm


ESP32-Wroom

esp32-wroom-PinOut


Pin I2C / Esp32

  • Pin 21 = SDA  (Serial Data Line)
  • Pin 22 = SCL   (Serial Clock Line)


Alimentation  / Esp32

  • Pin 3.3v
  • Pin GND





Câblage

cablage


Alimentation:

  • Vcc Oled et Vcc DHT22 sur +3.3v de l'ESP32
  • GND Oled et GND DHT22 sur GND de l'ESP32


Pin Data DHT22

  • Pin DATA sur D5 de l'ESP32   (ou une autre pin de votre choix - Mais modifier le code)


Pin I2C Oled 0.96"

  • Pin SDA Oled sur Pin 21 SDA de l'ESP32
  • Pin SCL Oled sur Pin 22 SCL de l'ESP32



Code *.ino 


Lien du code sur Wokwi


  • #include <Wire.h>    // Communication avec les périphériques I2C
  • #include <Adafruit_GFX.h>    // Fonction graphique pour Oled
  • #include <Adafruit_SSD1306.h>    // Driver pour ssd1306
  • #include <Adafruit_Sensor.h>    // Drivers pour capteurs Adafruit
  • #include <DHT.h>    // Capteur DHT11-22 - Température - Humidité

  • #define SCREEN_WIDTH 128   // OLED largeur en pixels
  • #define SCREEN_HEIGHT 64   // OLED hauteur en pixels

  • // Declaration SSD1306 Oled I2C (SDA, SCL pins)
  • Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1);    // SDA en D21 et SCL en D22

  • #define DHTPIN 5     // DHT22 en D5
  • //#define DHTTYPE    DHT11     // DHT 11
  • #define DHTTYPE    DHT22     // DHT 22 (AM2302)
  • //#define DHTTYPE    DHT21     // DHT 21 (AM2301)

  • DHT dht(DHTPIN, DHTTYPE);   // Configuration du DHTxx

  • void setup() {
  •   Serial.begin(115200);
  •   dht.begin();   // Activation du DHTxx
  •   if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {    // Detection d'erreur d'adresse Oled
  •     Serial.println(F("SSD1306 allocation failed"));
  •     for(;;);
  •   }
  •   delay(2000);
  •   display.clearDisplay();
  •   display.setTextColor(WHITE);  // Couleur du texte WHITE
  • }

  • void loop() {
  •   delay(5000);
  •   float t = dht.readTemperature();   // Lecture temperature
  •   float h = dht.readHumidity();  // Lecture humidité

  •   if (isnan(h) || isnan(t)) {
  •     Serial.println("Failed to read from DHT sensor!");   // Detection erreur du DHT
  •   }
  •   display.clearDisplay();    // Effacement Oled

  • // Affichage temperature
  •   display.setTextSize(1);    // Par defaut le texte est de taille normale - sans grossissement aucun
  •   display.setCursor(0,0);    // ligne colonne
  •   display.print("Temperature: ");
  •   display.setTextSize(2);    // Taille 2*1
  •   display.setCursor(0,10);
  •   display.print(t);
  •   display.print(" ");
  •   display.setTextSize(1);
  •   display.cp437(true);    // Driver cp437 pour ° Signe de temperature Celcius
  •   display.write(167);    // code ascii 167 = °
  •   display.setTextSize(2);
  •   display.print("C");

  •  // Affichage humidite
  •   display.setTextSize(1);  
  •   display.setCursor(0, 35);
  •   display.print("Humidite: ");
  •   display.setTextSize(2);
  •   display.setCursor(0, 45);
  •   display.print(h);
  •   display.print(" %");
  •   display.display();
  • }



Personnaliser

Google Analytics

Google Analytics est un service utilisé sur notre site Web qui permet de suivre, de signaler le trafic et de mesurer la manière dont les utilisateurs interagissent avec le contenu de notre site Web afin de l’améliorer et de fournir de meilleurs services.

Facebook

Notre site Web vous permet d’aimer ou de partager son contenu sur le réseau social Facebook. En l'utilisant, vous acceptez les règles de confidentialité de Facebook: https://www.facebook.com/policy/cookies/

Twitter

Les tweets intégrés et les services de partage de Twitter sont utilisés sur notre site Web. En activant et utilisant ceux-ci, vous acceptez la politique de confidentialité de Twitter: https://help.twitter.com/fr/rules-and-policies/twitter-cookies