
Das Programm misst die Temperatur mit einem DHT11/DHT22. Das aktuelle Datum und die aktuelle Zeit wird über WiFi ermittelt. Die Daten werden im Seriellen Monitor und im Browserbrowser dargestellt.
Die Hardware

Die Pinbelegung kann sich von der hier gezeigten unterscheiden. Achte auf die Beschriftung auf dem Modul!
Die Schaltung



Vorbereitung
Zunächst musst du über den Boardverwalter das Board installieren:

Wenn das Board angeschlossen ist, kann der USB-Anschluss ausgewählt werden. Der Name des Anschlusses unterschiedet sich je nach verwendetem Betriebssystem.


Wetterstation im Seriellen Monitor
Benötigte Bibliothek

Das Programm
Das Programm ermittelt die Messwerte für Temperatur und Luftfeuchtigkeit.
So sieht es aus:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 | #include “DHT.h” int Wartezeit = 5000; // Pin des Sensors int SENSOR_DHT = 7; // DHT11 #define SensorTyp DHT11 // DHT22 // #define SensorTyp DHT22 // Sensor einen Namen zuweisen DHT dht(SENSOR_DHT, SensorTyp); void setup() { Serial.begin(9600); while (!Serial); delay(1000); // Temperatursensor starten dht.begin(); Serial.println(); } void loop() { String Temperatur = String(dht.readTemperature()); Temperatur.replace(“.”, “,”); Serial.println(“Temperatur: ” + Temperatur + ” °C”); String Luftfeuchtigkeit = String(dht.readHumidity()); Luftfeuchtigkeit.replace(“.”, “,”); Serial.println(“Luftfeuchtigkeit: ” + Luftfeuchtigkeit + ” %”); Serial.println(); delay(Wartezeit); } |
Wetterstation im Browser anzeigen
Jetzt sollen die gemessenen Daten, Datum und Zeit in einem Browser angezeigt werden.
So sieht es aus:

Das Programm
Zusätzlich benötigte Bibliothek

Im Seriellen Monitor wird die verwendete IP-Adresse angezeigt. Diese Adresse musst du in einem Browser deiner Wahl eingeben.

Bibliotheken und Variable
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | #include “DHT.h” #include “WiFiS3.h” #include “NTP.h” // Pin des Sensors int SENSOR_DHT = 7; // DHT11 #define SensorTyp DHT11 // DHT22 // #define SensorTyp DHT22 // Sensor einen Namen zuweisen DHT dht(SENSOR_DHT, SensorTyp); // SSID und Passwort des Routers char Router[] = “Router_SSID”; char Passwort[] = “xxxxxxxx”; WiFiServer WiFiServer(80); WiFiClient WiFiClient; WiFiUDP wifiUdp; NTP ntp(wifiUdp); |
Der setup-Teil
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 | void setup() { Serial.begin(9600); while (!Serial); delay(1000); Serial.print(“Verbindung aufbauen mit ”); Serial.println(Router); WiFi.begin(Router, Passwort); while (WiFi.status() != WL_CONNECTED) { delay(200); Serial.print(“.”); } // Webserver starten WiFiServer.begin(); /* Zeitzone CEST: Central European Summertime Beginn europäische Sommerzeit letzter Sonntag im März 2 Uhr GMT + 2 Stunden */ ntp.ruleDST(“CEST”, Last, Sun, Mar, 2, 120); // CET: Central European Time // Beginn Normalzeit letzter Sonntag im Oktober 3 Uhr GMT + 1 Stunde ntp.ruleSTD(“CET”, Last, Sun, Oct, 3, 60); // ntp starten ntp.begin(); // Zeit holen ntp.update(); // Zeit mit formatedTime() anzeigen: // %d = Tag, %m = Monat, %Y = Jahr, %T = Zeit in Stunden, Minuten, Sekunden Serial.println(ntp.formattedTime(“%d.%m.%Y Uhrzeit: %T”)); dht.begin(); // IP des Arduinos anzeigen Serial.print(“IP Adresse Arduino DHCP: ”); Serial.println(WiFi.localIP()); } |
Der loop-Teil
Zeile 72:
| ° -> ° |
|---|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 | void loop() { WiFiClient = WiFiServer.available(); if (WiFiClient) { // Seite aufbauen wenn SeiteAufbauen true ist boolean SeiteAufbauen = true; while (WiFiClient.connected()) { if (WiFiClient.available()) { char Zeichen = WiFiClient.read(); if (Zeichen == ‘\n’ && SeiteAufbauen) { // HTTP-Anforderung senden WiFiClient.println(“HTTP/1.1 200 OK”); WiFiClient.println(“Content-Type: text/html”); // Leerzeile zwingend erforderlich WiFiClient.println(); /* HTML-Seite aufbauen die folgenden Anweisungen müssen mit print oder println gesendet werden println “verschönert” den Quelltext ” muss mit \” maskiert werden */ WiFiClient.println(“<!doctype html>”); WiFiClient.println(“<html>”); WiFiClient.println(“<body>”); // alle 60 Sekunden aktualisieren mit meta-Tag WiFiClient.println(“<meta http-equiv=\“refresh\” content=\“60\”>”); WiFiClient.println(“<h1> Temperatur und Luftfeuchtigkeit messen</h1>”); WiFiClient.println(“<hr />”); WiFiClient.print(“<h2>Letzte Messung: ”); // formatedTime() zeigt Wochentage in englischer Sprache // -> müssen einzeln abgefragt werden switch (ntp.weekDay()) { case 0: WiFiClient.print(“Sonntag”); break; case 1: WiFiClient.print(“Montag”); break; case 2: WiFiClient.print(“Dienstag”); break; case 3: WiFiClient.print(“Mittwoch”); break; case 4: WiFiClient.print(“Donnerstag”); break; case 5: WiFiClient.print(“Freitag”); break; case 6: WiFiClient.print(“Samstag”); break; } WiFiClient.print(“, ”); WiFiClient.print(ntp.formattedTime(“%d.%m.%Y Uhrzeit: %T”)); WiFiClient.println(“</h2>”); WiFiClient.println(“<hr />”); // Temperatur String Temperatur = String(dht.readTemperature()); Temperatur.replace(“.”, “,”); WiFiClient.print(“<b>Temperatur:</b>”); WiFiClient.println(Temperatur + ” °C”); WiFiClient.println(“<br>”); // Luftfeuchtigkeit String Luftfeuchtigkeit = String(dht.readHumidity()); Luftfeuchtigkeit.replace(“.”, “,”); WiFiClient.print(“<b>Luftfeuchtigkeit:</b>”); WiFiClient.println(Luftfeuchtigkeit + ” %”); WiFiClient.println(“<br>”); WiFiClient.println(“<hr>”); WiFiClient.println(“<form>”); // Button formatieren WiFiClient.print(“<input style=\“font-size:16pt; font-weight:bold;”); WiFiClient.print(“background-color:#55A96B;”); WiFiClient.print(“display:block; cursor:pointer;\“type=\“button\“”); WiFiClient.println(“ onClick =\“location.href=‘WiFi.localIP()’\” value=\“aktualisieren\”>”); WiFiClient.println(“</form>”); WiFiClient.println(“<hr />”); // IPs anzeigen WiFiClient.print(F(“<b>Eigene IP: ”)); WiFiClient.print(WiFiClient.remoteIP()); WiFiClient.print(F(“</b>”)); WiFiClient.print(F(“<br><b>IP Klient: ”)); WiFiClient.print(WiFi.localIP()); WiFiClient.print(F(“</b>”)); WiFiClient.println(“</b>”); WiFiClient.println(“</body>”); WiFiClient.print(“</html>”); // HTTP-Antwort endet mit neuer Zeile WiFiClient.println(); // Seite vollständig geladen -> loop verlassen break; } if (Zeichen == ‘\n’) SeiteAufbauen = true; else if (Zeichen != ‘\r’) SeiteAufbauen = false; } } delay(1); WiFiClient.stop(); } } |
Letzte Aktualisierung:






