Arduino - DHT11 - OLED

In deze tutorial gaan we leren hoe u de temperatuur en luchtvochtigheid uitleest van het DHT11 module en dit weergeeft op een OLED display.

Hardware Benodigd

1×Arduino Uno R3
1×USB 2.0 kabel type A/B
1×SSD1306 I2C OLED-Display 128x64
1×SSD1306 I2C OLED-Display 128x32
1×DHT11 Temperatuur- en Luchtvochtigheid Sensor Module
1×Jumper draden
1×(Aanbevolen) Schroefklem Block Shield voor Arduino Uno
1×(Aanbevolen) Breadboard-Shield voor Arduino Uno
1×(Aanbevolen) Behuizing voor Arduino Uno
1×(Aanbevolen) Prototyping Basisplaat & Breadboard Kit voor Arduino Uno

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 display, DHT11 Temperatuur- en Luchtvochtigheid Sensor

Als u nog niet bekend bent met het OLED display en de DHT11 temperatuur- en luchtvochtigheidssensor (pinout, werking, programmeren ...), leer er meer over in de volgende tutorials:

Bedradingsschema

Arduino DHT11 module OLED Bedradingsschema

This image is created using Fritzing. Click to enlarge image

Arduino Code - DHT11 Sensor - OLED

/* * Deze Arduino code is ontwikkeld door newbiely.nl * Deze Arduino code wordt zonder enige beperking aan het publiek beschikbaar gesteld. * Voor volledige instructies en schema's, bezoek: * https://newbiely.nl/tutorials/arduino/arduino-dht11-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 DHT11_PIN 2 // pin connected to DHT11 sensor Adafruit_SSD1306 oled(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1); // create SSD1306 display object connected to I2C DHT dht11(DHT11_PIN, DHT11); 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 dht11.begin(); // initialize DHT11 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 = dht11.readHumidity(); // read humidity float tempC = dht11.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(); }

Snelle Stappen

  • Open de Arduino IDE op uw computer.
  • Navigeer naar het Libraries icoon in de linkerzijbalk van de Arduino IDE.
  • Zoek op “SSD1306”, en selecteer de SSD1306 bibliotheek van Adafruit
  • Klik op de Installeren knop om de bibliotheek te installeren.
Arduino OLED bibliotheek
  • Er wordt u gevraagd om ook enkele andere bibliotheekafhankelijkheden te installeren
  • Klik op Alles installeren om alle afhankelijkheden te installeren.
Arduino Adafruit GFX sensor bibliotheek
  • Zoek op “DHT”, en selecteer de DHT sensor bibliotheek van Adafruit
  • Klik op de Installeren knop om de bibliotheek te installeren.
Arduino DHT sensor bibliotheek
  • Er wordt u gevraagd om ook enkele andere bibliotheekafhankelijkheden te installeren
  • Klik op Alles installeren om alle afhankelijkheden te installeren.
Arduino Adafruit Unified sensor bibliotheek
  • Kopieer bovenstaande code en open deze in de Arduino IDE
  • Klik op de Uploaden knop in de Arduino IDE om de code naar uw Arduino te uploaden
  • Houd de sensor in warm en koud water, of houd de sensor vast met uw hand
  • Bekijk het resultaat op het OLED display en in de Seriële Monitor

※ Notiz:

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

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 helpt u het project stap voor stap te voltooien.

※ 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!