ESP32 Wetterstation? So baust du dir eine

In diesem Beitrag zeigen wir dir, wie du dir mit dem ESP32 deine eigene Wetterstation baust!

Kompakte Wetterstationen haben längst auch in privaten Haushalten Einzug gefunden. Und das kommt nicht von ungefähr: Denn die Temperatur, die Luftfeuchtigkeit und den Luftdruck messen zu können, ist mit großem Nutzen verbunden. So erleichtert die Kenntnis hinsichtlich des aktuellen Wetters nicht nur die Planung des Alltags. Die Messung der Luftfeuchtigkeit kann beispielsweise auch nützliche Informationen liefern, die die eigenen vier Wände betreffen. Liegt die Luftfeuchtigkeit nämlich bei mehr als 60 Prozent, besteht die erhöhte Gefahr, dass sich an den Wänden Schimmel bildet. Der Luftdruck kann wiederum Aufschluss über bevorstehende Wetterveränderungen geben. Du siehst: Eine Wetterstation bringt verschiedene Vorteile mit sich. Umso praktischer ist es, dass du ein solches Gerät nicht für teures Geld zu kaufen brauchst, sondern mithilfe weniger Software- und Hardware-Komponenten ganz leicht selbst herstellen kannst. Wie du hierbei am besten vorgehst, zeigen wir dir im Folgenden.

Das brauchst du, um deine eigene ESP32 Wetterstation zu bauen:

WARENKORB

Alle für dieses Projekt notwendigen Artikel landen mit einem Klick auf den Button direkt in deinem Warenkorb, sofern sie in unserem Shop verfügbar sind. Kontrolliere daher deinen Warenkorb genau!

Tutorial: Schritt für Schritt zur eigenen ESP32 Wetterstation

Die Pins verbindest du folgendermaßen miteinander:


#include <WiFi.h>
#include <WebServer.h>
#include <Wire.h>
#include <Adafruit_Sensor.h>
#include <Adafruit_BME280.h>

#define SEALEVELPRESSURE_HPA (1013.25)

Adafruit_BME280 bme;

float temperature, humidity, pressure, altitude;

//Geben Sie hier Ihre WLAN ssid und passwort ein

const char* ssid = "****";  
const char* password = "****";  

WebServer server(80);             
 
void setup() 
{
  Serial.begin(115200);
  delay(100);
  
  bme.begin(0x76);   

  Serial.println("Verbinden mit ");
  Serial.println(ssid);

  //Verbindung herstellen
  WiFi.begin(ssid, password);

  //WIFI prüfen 
  while (WiFi.status() != WL_CONNECTED) {
  delay(1000);
  Serial.print(".");
}

 
  Serial.println("");
  Serial.println("WiFi verbunden..!");
  Serial.print("IP= ");  Serial.println(WiFi.localIP());


  server.on("/", OnConnect);                 
  server.onNotFound(NotFound);

  server.begin();
  Serial.println("Start");
  

}

//////////////////////////// Hauptprogramm 

void loop() {
  server.handleClient();
}

void OnConnect() {
  temperature = bme.readTemperature();
  humidity = bme.readHumidity();
  pressure = bme.readPressure() / 100.0F;
  altitude = bme.readAltitude(SEALEVELPRESSURE_HPA);
  server.send(200, "text/html", SendHTML(temperature,humidity,pressure,altitude)); 
}

void NotFound(){
  server.send(404, "text/plain", "Not found");
}


//////////////////////////// HTML Benutzeroberfläche 

String SendHTML(float temperature,float humidity,float pressure,float altitude)    //Send temperature , humidity , pressure und altitude 

{
  
  String str = "<!DOCTYPE html> <html>\n";
  str +="<head><meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0, user-scalable=no\">\n";
  str +="<meta http-equiv=\"refresh\" content=\"2\">\n"; //Automatische Seitenaktualisierung
  str +="<title>ESP32 Wetterstation</title>\n";
  str +="<style>html { font-family: Helvetica; display: inline-block; margin: 0px auto; text-align: center;}\n";
  str +="h1 {color: #0000FF;}\n"; //
  str +="body{margin-top: 50px;} h1 {color: #0000FF;margin: 50px auto 30px;}\n";
  str +="p {font-size: 24px;color: #444444;margin-bottom: 10px;}\n";
  str +="</style>\n";
  str +="</head>\n";
  str +="<body>\n";
  str +="<div id=\"webpage\">\n";
  str +="<h1>BME280 Wetterstation</h1>\n";
  str +="<p>Temperature: ";
  str +=temperature;
  str +="°C</p>";
  str +="<p>Humidity: ";
  str +=humidity;
  str +="%</p>";
  str +="<p>Pressure: ";
  str +=pressure;
  str +="hPa</p>";
  str +="<p>Altitude: ";
  str +=altitude;
  str +="m</p>";  
  str +="</div>\n";
  str +="</body>\n";
  str +="</html>\n";
  
  return str;
}

Um den Code hochzuladen musst du zunächst das ESP32-Board mit deinem Computer verbinden und dann in der Arduino IDE dein Board auswählen („ESP32 Dev Module“ oder „DOITESP32 DEVKIT V1“):

Im nächsten Schritt musst du den Port auswählen, mit dem du deinen ESP32 mit deinem Computer verbunden hast. Unter Windows kannst du den richtigen Port auch über den Geräte-Manager unter dem Punkt Anschlüsse (COM & LTP) finden.

Unter Linux kannst du den Port mit Hilfe des Terminals und der folgenden Befehle finden:

ls /dev/ttyUSB*
# oder
ls /dev/ttyACM*

Nun gilt es, den Code für deine ESP32 Wetterstation zu laden: Dies wird durch Drücken des Buttons „Hochladen“ – rechts oben in der Ecke – veranlasst.

Mögliche Fehler

Wenn du den Sketch genannten Code auf deinen ESP32 laden möchtest und die Fehlermeldung

“A fatal error occurred: Failed to connect to ESP32: Timed
out… Connecting…“.

erhälst, bedeutet dies, dass dein Arduino nicht im flashing/uploading Modus ist. Wenn du in der Arduino IDE das richtige Board und den richtigen Anschluss ausgewählt hast, musst du den “Boot” Button am ESP32 gedrückt halten um das Problem zu lösen.

Das Interface.

Geschafft! Deine ESP32 Wetterstation ist einsatzbereit

Glückwunsch, deine eigene ESP32 Wetterstation ist nun funktionsfähig! Tipp: Platziere deine neue Konstruktion am besten nicht in der Nähe von Heizungsrohren oder an Orten, die übermäßig viel direkte Sonneneinstrahlung abbekommen. Dies könnte nämlich die Temperaturmessung verfälschen. Eine Wand an der Nordseite deiner Wohnung eignet sich hingegen bestens als Standort.

Wir wünschen dir viel Spaß mit deiner Wetterstation und hoffen dir noch viele weitere Inspirationen für künftige Projekte lieferen zu können.

Solltest du Fragen zu diesem Projekt haben, kannst du diese gerne mit Hilfe der Kommentarfunktion an uns richten.

Euer BerryBase-Team!

Falls dich Projekte mit der Arduino IDE interessieren, schaue dir hier auch unsere weiteren Tutorials an.

Die mobile Version verlassen