ESP32 Tutorial 43/55 - IoT Internet-Wetterstation | SunFounder's ESP32 IoT-Lernkit

ESP32 Tutorial 43/55 - IoT Internet-Wetterstation | SunFounder's ESP32 IoT-Lernkit

In diesem Tutorial werden wir eine internetverbundene Wetterstation mit dem ESP32 und seinem Kamerazusatz von SunFounder aufbauen. Dieses Projekt ermöglicht es dem ESP32, Echtzeit-Wetterdaten, einschließlich Temperatur und Luftfeuchtigkeit, abzurufen und auf einem LCD-Bildschirm anzuzeigen. Diese Anwendung zeigt nicht nur die Fähigkeiten des ESP32, sondern demonstriert auch, wie man Daten von einer externen API abruft und analysiert.

Während wir durch das Tutorial fortschreiten, werden wir die Komponenten verkabeln, den Code konfigurieren und sicherstellen, dass alles nahtlos zusammenarbeitet. Das Endergebnis wird eine voll funktionsfähige Wetterstation sein, die ihre Messwerte alle 10 Sekunden aktualisiert und eine klare und prägnante Anzeige der aktuellen Wetterbedingungen bietet (im Video bei 00:30).

Hardware erklärt

Die Hauptkomponenten, die in diesem Projekt verwendet werden, umfassen den ESP32-Mikrocontroller, ein LCD-Display und die erforderliche Verkabelung. Der ESP32 ist mit integriertem Wi-Fi und Bluetooth ausgestattet, was ihm ermöglicht, sich mit dem Internet zu verbinden und Daten abzurufen. Das LCD-Display zeigt die aktuellen Wetterinformationen, einschließlich Temperatur und Luftfeuchtigkeit.

Das LCD, das wir verwenden, ist ein 16x2-Zeichen-Display, was bedeutet, dass es zwei Zeilen mit je 16 Zeichen anzeigen kann. Dies wird für unsere Wetterinformationsausgabe ausreichend sein. Der ESP32 wird über I2C mit dem LCD kommunizieren, was die Verkabelung vereinfacht, da nur zwei Datenleitungen verwendet werden.

Datenblattdetails

HerstellerEspressif
TeilenummerESP32-WROOM-32
Logik/IO-Spannung3,3 V
Versorgungsspannung3,0-3,6 V
Ausgangsstrom (pro Kanal)12 mA max
Spitzenstrom (pro Kanal)40 mA
PWM-Frequenzrichtlinien1 kHz
Eingangslogik-Schwellenwerte0,3 V (niedrig), 0,7 V (hoch)
Spannungsabfall / RDS(on)/ Sättigung0,5 V
Thermische Grenzen-40 bis 85 °C
PaketQFN48
Notizen / VariantenEnthält mehrere Varianten für verschiedene Anwendungen

  • Stellen Sie sicher, dass der ESP32 mit einer stabilen 3,3 V Stromversorgung betrieben wird.
  • Verwenden Sie einen gemeinsamen Nenner für alle Komponenten, um Kommunikationsprobleme zu vermeiden.
  • Überprüfen Sie die I2C-Adresse des LCD mit einem I2C-Scanner.
  • Überwachen Sie den Wi-Fi-Verbindungsstatus, um Unterbrechungen beim Abrufen von Daten zu vermeiden.
  • Behandeln Sie JSON-Parsing-Fehler für Robustheit bei der Datenabfrage.

Verdrahtungsanleitungen

esp32-43-weather_station-wiring

Um die Komponenten zu verkabeln, beginnen Sie mit dem Anschluss des LCD an den ESP32. Das LCD verwendet die I2C-Schnittstelle, also verbinden Sie den SDA-Pin des LCD mit GPIO21 des ESP32 und den SCL-Pin mit GPIO22. Stellen Sie sicher, dass Sie die Strom- und Masse-Pins des LCD mit den 5V- und GND-Pins des ESP32 verbinden.

Stellen Sie als Nächstes sicher, dass der ESP32 korrekt mit der enthaltenen Lithiumbatterie oder einer USB-Verbindung mit Strom versorgt wird. Die Batterie bietet Portabilität, während die USB-Verbindung zum Programmieren und Debuggen nützlich ist. Überprüfen Sie schließlich, ob alle Verbindungen sicher sind, um Probleme mit loser Verkabelung zu vermeiden, die die Funktionalität stören könnten.

Codebeispiele und Anleitung

In der Einrichtungsphase unseres Programms initialisieren wir die serielle Kommunikation und verbinden uns mit dem Wi-Fi-Netzwerk unter Verwendung der bereitgestellten SSID und des Passworts. Der folgende Codeausschnitt behandelt die Wi-Fi-Verbindung:

WiFi.begin(ssid, password);
while(WiFi.status() != WL_CONNECTED) {
  delay(500);
  Serial.print(".");
}
Serial.println("Connected to WiFi network with IP Address: ");
Serial.println(WiFi.localIP());

Dieser Code stellt sicher, dass sich der ESP32 mit dem angegebenen Wi-Fi-Netzwerk verbindet, bevor mit dem Abrufen von Daten fortgefahren wird. Wenn die Verbindung fehlschlägt, wird kontinuierlich versucht, die Verbindung wiederherzustellen.

Als Nächstes müssen wir eine HTTP GET-Anfrage senden, um Wetterdaten abzurufen. Dies wird mit dem folgenden Codeausschnitt erreicht:

String serverPath = "http://api.openweathermap.org/data/2.5/weather?q=" + city + "," + countryCode + "&units=metric" + "&APPID=" + openWeatherMapApiKey;
jsonBuffer = httpGETRequest(serverPath.c_str());

Hier erstellen wir die URL für die API-Anfrage, die die Stadt, den Ländercode und unseren API-Schlüssel enthält. DerhttpGETRequestDie Funktion wird dann aufgerufen, um die Wetterdaten abzurufen.

Schließlich analysieren wir die JSON-Antwort und zeigen die relevanten Daten auf dem LCD an:

lcd.clear(); 
lcd.setCursor(0, 0); 
lcd.print(time);
lcd.print(" ");        
lcd.print(myObject["weather"][0]["main"]);             
lcd.setCursor(0, 1);
lcd.print("T:");    
lcd.print(myObject["main"]["temp"]); 
lcd.print("\xDF");  // "°" char
lcd.print("C ");    
lcd.print("H:");    
lcd.print(myObject["main"]["humidity"]);  
lcd.print("%");

Dieser Codeabschnitt aktualisiert das LCD-Display mit der aktuellen Uhrzeit, den Wetterbedingungen, der Temperatur und der Luftfeuchtigkeit. Er löscht das vorherige Display und setzt den Cursor an die entsprechenden Positionen für jede Zeile.

Demonstration / Was zu erwarten ist

Nach erfolgreichem Anschließen und Programmieren verbindet sich Ihre Wetterstation mit dem WLAN und beginnt, alle 10 Sekunden Wetterdaten abzurufen. Die aktuelle Temperatur, Luftfeuchtigkeit und Wetterbedingungen werden auf dem LCD-Bildschirm angezeigt. Wenn das ESP32 nicht mit dem WLAN verbinden kann, wird eine Fehlermeldung im seriellen Monitor ausgegeben.

Achten Sie auf die API-Aufrufbeschränkungen, um zu vermeiden, dass Sie vom OpenWeatherMap-Dienst blockiert werden. Wenn Sie auf Probleme mit der Datenabruf stoßen, überprüfen Sie Ihren API-Schlüssel und stellen Sie sicher, dass Ihr Stadt- und Ländercode korrekt angegeben ist (im Video um 15:45).

Video-Zeitstempel

  • 00:00 Start
  • 2:00 Einführung in das Projekt
  • 5:04 OpenWeather-Konto
  • 6:11 Verdrahtung
  • 8:05 Arduino-Code erklärt
  • 14:13 JASON Elemente im Code
  • 20:23 Auswahl des ESP32-Boards und des COM-Ports in der Arduino IDE
  • 22:05 Demonstration der Wetterstation auf LCD1602
  • 23:45 Demonstration der Wetterstation auf LCD2004

Bilder

esp32-43-weather_station-main
esp32-43-weather_station-main
esp32-43-weather_station-wiring
esp32-43-weather_station-wiring
844-ESP32 Tutorial 43/55- Arduino code for IoT Internet Weather Station
Sprache: C++
Kopiert!

Ressourcen & Referenzen

Dateien📁

Keine Dateien verfügbar.