⭐⭐ Fortgeschrittener Anfänger
⏱️ 20 Minuten
Mini-Wetterstation
Du baust eine Mini-Wetterstation. Der DHT11 misst die Temperatur und die Luftfeuchtigkeit. Das OLED-Display zeigt sie an.
🧰 Was brauchst du?
🗺️ Schaltplan
Folge den Drähten vom Arduino zu jedem Teil. Die Farben der Drähte darfst du selbst wählen.
| Von | Nach |
|---|---|
Arduino UNO · D2 |
Temperatursensor DHT11 · DAT |
Arduino UNO · 5V |
Temperatursensor DHT11 · VCC |
Arduino UNO · GND |
Temperatursensor DHT11 · GND |
Arduino UNO · A4 |
OLED-Display 0,91" · SDA |
Arduino UNO · A5 |
OLED-Display 0,91" · SCL |
Arduino UNO · 5V |
OLED-Display 0,91" · VCC |
Arduino UNO · GND |
OLED-Display 0,91" · GND |
🛠️ So baust du es
- Schließe den DHT11 an: DAT an pin 2, VCC an 5V und GND an GND.
- Schließe das OLED-Display an: SDA an A4, SCL an A5, VCC an 5V und GND an GND.
- Tipp: Zwei Teile brauchen 5V und GND. Nutze die + und − Streifen deines breadboard.
💻 Der Code
// Mini-Wetterstation
// Der DHT11 misst die Temperatur und die Luftfeuchtigkeit. Das OLED-Display zeigt sie an.
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include <DHT.h>
const int DHT_PIN = 2; // DAT des DHT11 sitzt auf pin 2
DHT dht(DHT_PIN, DHT11);
Adafruit_SSD1306 display(128, 32, &Wire, -1); // OLED mit 128 x 32 Pixeln (SDA = A4, SCL = A5)
void setup() {
Serial.begin(9600);
dht.begin();
if (!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) { // 0x3C ist die Adresse des Displays
Serial.println(F("Display nicht gefunden. Prüfe die Drähte von SDA und SCL."));
while (true); // Stopp: Ohne Display geht es nicht
}
display.setTextColor(SSD1306_WHITE);
}
void loop() {
float temperatur = dht.readTemperature(); // In Grad Celsius
float feuchte = dht.readHumidity(); // In Prozent
display.clearDisplay();
display.setTextSize(2);
display.setCursor(0, 0);
if (isnan(temperatur) || isnan(feuchte)) { // Klappt das Messen nicht?
display.setTextSize(1);
display.print(F("Kein DHT11 gefunden"));
} else {
display.print(temperatur, 1);
display.print((char)247); // Das Grad-Zeichen
display.println(F("C"));
display.print(feuchte, 0);
display.print(F("% Feu."));
Serial.print(F("Temperatur: "));
Serial.print(temperatur);
Serial.print(F(" C Feuchte: "));
Serial.print(feuchte);
Serial.println(F(" %"));
}
display.display(); // Erst jetzt kommt alles wirklich auf das Display
delay(2000); // Der DHT11 kann nur alle 2 Sekunden messen
}
🧠 Was macht der Code?
- Der DHT11 sitzt an pin 2. Mit
readTemperature()undreadHumidity()lesen wir die Werte. - Das OLED-Display spricht über SDA (A4) und SCL (A5). Mit
print()schreiben wir Text auf das Display. - Alle 2 Sekunden kommt eine neue Messung. Klappt das Messen nicht? Dann siehst du eine Meldung.
🎯 Probier mal …
- Zeige auch die Temperatur in Fahrenheit
- Lass eine LED leuchten, wenn es wärmer als 25 Grad ist
- Merke dir die höchste Temperatur von heute und zeige sie auch an
🚀 Baue dieses Projekt mit Codey: Öffne codey.online/de/starter-kits/uno/projects/weather-station und klicke auf BAU DAS. Dann sind der Code und der Schaltplan sofort bereit.
Codey Online ist ein Produkt von OTRONIC