Wetterstation mit Arduino & ThingSpeak IoT (DHT11 + ESP8266)
Komponenten
| Bauteil | Menge |
|---|---|
| Arduino UNO | 1 |
| ESP8266 ESP-01 (WiFi) | 1 |
| DHT11 Temperatur- & Feuchtesensor (3 Pins) | 1 |
| Steckbrett | 1 |
| Jumper-Kabel | 1 Satz |
| Breadboard-Netzteil 5 V / 3,3 V | 1 |
Software & Dienste
- ThingSpeak API (kostenloser Kanal)
- Arduino IDE
- Windows 10 (Entwicklung)
Projektbeschreibung
Einsteigerfreundliches IoT-Projekt: Ein DHT11 misst Temperatur & Luftfeuchte, der Arduino liest die Werte, sendet sie per AT-Befehlen über den ESP8266 an ThingSpeak. Dort werden sie grafisch dargestellt (15 s Aktualisierungsintervall).
Verdrahtung
| ESP-01 Pin | Verbindung |
|---|---|
| VCC | 3,3 V (Breadboard-Netzteil) |
| GND | GND |
| CH_PD | 3,3 V |
| RESET | 3,3 V |
| TX | Arduino Pin 2 (SoftwareSerial RX) |
| RX | Arduino Pin 3 (SoftwareSerial TX) – ggf. Spannungsteiler! |
| DHT11 Pin | Verbindung |
|---|---|
| VCC | 5 V |
| OUT | Arduino A0 |
| GND | GND |
Wichtig: ESP8266 braucht eigene 3,3 V Quelle (Peak-Strom > Arduino 3,3 V Pin). Breadboard-Netzteil auf 3,3 V jumpern.
ThingSpeak einrichten
- Auf thingspeak.com registrieren.
- Neuen Channel anlegen: Field 1 = Temperature, Field 2 = Humidity.
- Write API Key notieren (wird im Code benötigt).
Arduino IDE Bibliotheken
SoftwareSerial(built-in)- Adafruit Unified Sensor: GitHub → ZIP installieren.
- DHT Sensor Library: GitHub → ZIP installieren.
Code (Kernausschnitte)
String myAPIkey = "DEIN_WRITE_API_KEY";
#include <SoftwareSerial.h>
#include <DHT.h>
SoftwareSerial ESP8266(2, 3); // RX, TX
#define DHTTYPE DHT11
#define DHTPIN A0
DHT dht(DHTPIN, DHTTYPE, 11);
float humidity, temp_f;
long writingTimer = 17; // Sekunden
long startTime = 0;
void setup() {
Serial.begin(9600);
ESP8266.begin(9600);
dht.begin();
startTime = millis();
ESP8266.println("AT+RST");
delay(2000);
// WLAN verbinden
while(!connected) {
ESP8266.print("AT+CWJAP=\"SSID\",\"PASSWORT\"\r\n");
// ... auf "WIFI CONNECTED" warten
}
}
void loop() {
if (millis() - startTime > writingTimer * 1000) {
readSensors();
writeThingSpeak();
startTime = millis();
}
}
void readSensors() {
temp_f = dht.readTemperature();
humidity = dht.readHumidity();
}
void writeThingSpeak() {
ESP8266.flush();
String cmd = "AT+CIPSTART=\"TCP\",\"184.106.153.149\",80"; // api.thingspeak.com
ESP8266.println(cmd);
if(ESP8266.find("Error")) return;
String getStr = "GET /update?api_key=" + myAPIkey;
getStr += "&field1=" + String(temp_f);
getStr += "&field2=" + String(humidity);
getStr += "\r\n\r\n";
ESP8266.print("AT+CIPSEND=" + String(getStr.length()));
if(ESP8266.find(">")) {
ESP8266.print(getStr);
// Antwort lesen ...
} else {
ESP8266.println("AT+CIPCLOSE");
}
}
Vollständiger Code: GitHub
Ergebnis
ThingSpeak-Channel zeigt zwei Diagramme (Temperatur, Luftfeuchte) mit 15-Sekunden-Intervall.
Herstellungsprozess
- Outdoor-Wetterstation mit Raspberry Pi 2 & ADS-WS1 bauen
- Raspberry Pi Wetterstation bauen, die tägliche Wetterdaten per E-Mail sendet
- Fortgeschrittene Wetterstation v2.0: Echtzeit Temperatur, Druck, Feuchte & Höhe Monitoring
- Arduino Digitaler Würfel: LCD-Würfel mit Zufallszahlen (1–6)
- Arduino Iron Man bauen: Komponenten, Sensoren & Schritt-für-Schritt-Anleitung
- Find Me: Smarter Gegenstands-Finder mit Arduino und Bluetooth
- Funktionaler 3D-gedruckter Roboterarm mit Arduino – Schritt-für-Schritt-Anleitung
- DIY Arduino Luftbefeuchter-Steuerung mit Relais – Sichere Hochspannungs-Installation
- Tragbare Arduino-Wetterstation für 10$ bauen (Nano, DHT22, BMP180 & LCD)
- eDOT: Präzise Arduino-Uhr & Wetterstation mit IR-Fernbedienung