ESP32 - DHT22 - OLED

Deze tutorial legt uit hoe u de temperatuur en luchtvochtigheid uitleest van de DHT22 module en deze weergeeft op een OLED scherm.

Hardware Benodigd

1×ESP32 ESP-WROOM-32 Ontwikkelingsmodule
1×USB Type-C Kabel
1×SSD1306 I2C OLED-Display 128x64
1×SSD1306 I2C OLED-Display 128x32
1×DHT22 Temperatuur en Luchtvochtigheid Sensor Module
1×Jumper Draden
1×(Aanbevolen) Schroefklem Uitbreidingsboard voor ESP32
1×(Aanbevolen) Breakout Expansion Board for ESP32
1×(Aanbevolen) Stromsplitter voor ESP32

Of u kunt de volgende kits kopen:

1×DIYables Sensorkit (30 sensoren/displays)
1×DIYables Sensorkit (18 sensoren/displays)
Openbaarmaking: Sommige van de links in deze sectie zijn Amazon-affiliate links. We kunnen een commissie ontvangen voor aankopen die via deze links worden gedaan, zonder extra kosten voor u. We waarderen uw steun.

Over OLED scherm en DHT22 Temperatuur- en Luchtvochtigheid Sensor

Als u niet bekend bent met OLED schermen en de DHT22 temperatuur- en luchtvochtigheidssensor (pinout, werking, programmeren, enz.), leer er meer over in de volgende tutorials:

Bedradingsschema

ESP32 DHT22 module OLED Bedradingsschema

This image is created using Fritzing. Click to enlarge image

ESP32 Code - DHT22 Sensor - OLED

/* * Deze ESP32 code is ontwikkeld door newbiely.nl * Deze ESP32 code wordt zonder enige beperking aan het publiek beschikbaar gesteld. * Voor volledige instructies en schema's, bezoek: * https://newbiely.nl/tutorials/esp32/esp32-dht22-oled */ #include <Wire.h> #include <Adafruit_GFX.h> #include <Adafruit_SSD1306.h> #include <DHT.h> #define SCREEN_WIDTH 128 // OLED display width, in pixels #define SCREEN_HEIGHT 64 // OLED display height, in pixels #define DHT22_PIN 2 // The ESP32 pin GPIO23 connected to DHT22 sensor Adafruit_SSD1306 oled(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1); // create SSD1306 display object connected to I2C DHT dht22(DHT22_PIN, DHT22); String temperature; String humidity; void setup() { Serial.begin(9600); // initialize OLED display with address 0x3C for 128x64 if (!oled.begin(SSD1306_SWITCHCAPVCC, 0x3C)) { Serial.println(F("SSD1306 allocation failed")); while (true); } delay(2000); // wait for initializing oled.clearDisplay(); // clear display oled.setTextSize(3); // text size oled.setTextColor(WHITE); // text color oled.setCursor(0, 10); // position to display dht22.begin(); // initialize DHT22 the temperature and humidity sensor temperature.reserve(10); // to avoid fragmenting memory when using String humidity.reserve(10); // to avoid fragmenting memory when using String } void loop() { float humi = dht22.readHumidity(); // read humidity float tempC = dht22.readTemperature(); // read temperature // check if any reads failed if (isnan(humi) || isnan(tempC)) { temperature = "Failed"; humidity = "Failed"; } else { temperature = String(tempC, 1); // one decimal places temperature += char (247); // degree character temperature += "C"; humidity = String(humi, 1); // one decimal places humidity += "%"; Serial.print(tempC); // print to Serial Monitor Serial.print("°C | " ); // print to Serial Monitor Serial.print(humi); // print to Serial Monitor Serial.println("%"); // print to Serial Monitor } oledDisplayCenter(temperature, humidity); // display temperature and humidity on OLED } void oledDisplayCenter(String temperature, String humidity) { int16_t x1; int16_t y1; uint16_t width_T; uint16_t height_T; uint16_t width_H; uint16_t height_H; oled.getTextBounds(temperature, 0, 0, &x1, &y1, &width_T, &height_T); oled.getTextBounds(temperature, 0, 0, &x1, &y1, &width_H, &height_H); // display on horizontal and vertical center oled.clearDisplay(); // clear display oled.setCursor((SCREEN_WIDTH - width_T) / 2, SCREEN_HEIGHT/2 - height_T - 5); oled.println(temperature); // text to display oled.setCursor((SCREEN_WIDTH - width_H) / 2, SCREEN_HEIGHT/2 + 5); oled.println(humidity); // text to display oled.display(); }

Snel stappenplan

  • Is het de eerste keer dat u ESP32 gebruikt? Bekijk dan hoe u de omgeving instelt voor ESP32 in Arduino IDE.
  • Maak de bedrading zoals te zien is in bovenstaand schema.
  • Verbind de ESP32 met uw pc via een micro USB kabel.
  • Open Arduino IDE op uw computer.
  • Selecteer het juiste ESP32 bord (bijv. ESP32 Dev Module) en de juiste COM-poort.
  • Klik op het icoon Libraries in de linkerzijbalk van Arduino IDE.
  • Zoek naar “SSD1306” en selecteer de SSD1306 bibliotheek van Adafruit.
  • Klik op Installeren om de bibliotheek te installeren.
ESP32 OLED bibliotheek
  • U krijgt een melding om aanvullende bibliotheken te installeren.
  • Klik op Alles installeren om alle afhankelijkheden te installeren.
ESP32 Adafruit GFX sensor bibliotheek
  • Zoek daarna op “DHT” en kies de DHT sensor bibliotheek van Adafruit.
  • Klik op Installeren om de bibliotheek te installeren.
ESP32 DHT sensor bibliotheek
  • U wordt gevraagd om overige afhankelijkheden te installeren.
  • Klik op Alles installeren om ook deze te installeren.
ESP32 Adafruit Unified sensor bibliotheek
  • Kopieer de bovenstaande code en open deze in Arduino IDE.
  • Klik op de Uploaden knop in Arduino IDE om de code naar de ESP32 te uploaden.
  • Houd de sensor in warm en koud water, of houd de sensor in uw hand.
  • Bekijk het resultaat op het OLED scherm en de Seriële Monitor.

※ Notiz:

De bovenstaande code centreert automatisch de tekst horizontaal en verticaal op het OLED scherm.

Video Tutorial

We overwegen het maken van videotutorials. Als u videotutorials belangrijk vindt, abonneer u dan op ons YouTube-kanaal om ons te motiveren de video's te maken.

Bekijk onze video-tutorial voor een visuele begeleiding bij dit project! De video biedt extra inzichten en stappen om u te helpen het maximale uit uw ESP32, DHT22 sensor en OLED display te halen.

※ ONZE BERICHTEN

  • U bent welkom om de link naar deze tutorial te delen. Gebruik onze inhoud echter niet op andere websites. We hebben veel moeite en tijd gestoken in het maken van de inhoud, respecteer alstublieft ons werk!