
Das Programm misst die Temperatur mit einem DHT11 oder DHT22. Das aktuelle Datum und die aktuelle Zeit wird über WiFi ermittelt. Temperatur, Luftfeuchtigkeit und Zeit werden auf einem LCD angezeigt.
Die Hardware

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

Das LCD wird über die Pins SDA und SCL verbunden. Im Programm wird das verwendete LCD (2‑zeilig oder 4‑zeilig) über seine Adresse definiert.
Diese kannst du mit dem folgenden ⇒Programm herausfinden:

⇒LCD

Die Helligkeit kann mit einem Potentiometer auf der Rückseite des LCDs eingestellt werden.
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.


Ansicht auf dem LCD

Der Schaltplan
Das Programm
Benötigte Bibliotheken
![]() | ![]() |
![]() | |
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 25 26 27 28 29 30 31 32 | #include “DHT.h” #include “WiFiS3.h” #include “NTP.h” #include “LCDIC2.h” LCDIC2 lcd(0x27, 20, 4); // 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”; WiFiUDP wifiUdp; NTP ntp(wifiUdp); // Zeit bis zur nächsten Messung static unsigned long GesicherteStartZeit = 0; unsigned long Startzeit; // alle 60 Sekunden aktualisieren, kann angepasst werden int Intervall = 60000; |
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 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 | void setup() { lcd.begin(); Serial.begin(9600); while (!Serial) { ; } delay(1000); // Verbindung aufbauen WiFi.begin(Router, Passwort); while(WiFi.status() != WL_CONNECTED) { delay(500); Serial.print(“.”); } Serial.print(“Verbindung aufbauen mit ”); Serial.println(Router); // IP des Servers/des verbundenen Computers anzeigen Serial.print(“Server: ”); Serial.println(WiFi.SSID()); // IP des Arduinos anzeigen Serial.print(“IP Adresse Arduino DHCP: ”); Serial.println(WiFi.localIP()); /* 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(); dht.begin(); // beim Start Daten ausgeben // Serieller Monitor String Temperatur = String(dht.readTemperature()); Temperatur.replace(“.”, “,”); Serial.print(“Temperatur:”); Serial.println(Temperatur + ” °C”); // Luftfeuchtigkeit String Luftfeuchtigkeit = String(dht.readHumidity()); Luftfeuchtigkeit.replace(“.”, “,”); Serial.print(“Luftfeuchtigkeit: ”); Serial.println(Luftfeuchtigkeit + ” %”); lcd.setCursor(0, 0); switch (ntp.weekDay()) { case 0: Serial.print(“Sonntag”); lcd.print(“Sonntag”); break; case 1: Serial.print(“Montag”); lcd.print(“Montag”); break; case 2: Serial.print(“Dienstag”); lcd.print(“Dienstag”); break; case 3: Serial.print(“Mittwoch”); lcd.print(“Mittwoch”); break; case 4: Serial.print(“Donnerstag”); lcd.print(“Donnerstag”); break; case 5: Serial.print(“Freitag”); lcd.print(“Freitag”); break; case 6: Serial.print(“Samstag”); lcd.print(“Samstag”); break; } Serial.print(“, ”); // 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”)); lcd.setCursor(0, 1); String Zeit = ntp.formattedTime(“%d.%m.%Y %T”); // String Zeit nch Minuten kürzen lcd.print(Zeit.substring(0, Zeit.indexOf(“:”) + 3)); lcd.setCursor(0, 2); lcd.print(Temperatur + ” \337C”); lcd.setCursor(0, 3); lcd.print(Luftfeuchtigkeit + ” %”); // Cursor “verstecken” lcd.setCursor(false); } |
Im Seriellen Monitor werden die verwendete IP-Adresse und die Messwerte für Temperatur und Luftfeuchtigkeit angezeigt.

Der loop-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 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 | void loop() { // Startzeit setzen Startzeit = millis(); // wenn das festgelegte Intervall erreicht ist if (Startzeit - GesicherteStartZeit > Intervall) { lcd.clear(); // Startzeit zurücksetzen GesicherteStartZeit = Startzeit; // Zeit holen ntp.update(); Serial.println(“Temperatur und Luftfeuchtigkeit messen”); Serial.println(“Letzte Messung: ”); // formatedTime() zeigt Wochentage in englischer Sprache // -> müssen einzeln abgefragt werden lcd.setCursor(0, 0); switch (ntp.weekDay()) { case 0: Serial.print(“Sonntag”); lcd.print(“Sonntag”); break; case 1: Serial.print(“Montag”); lcd.print(“Montag”); break; case 2: Serial.print(“Dienstag”); lcd.print(“Dienstag”); break; case 3: Serial.print(“Mittwoch”); lcd.print(“Mittwoch”); break; case 4: Serial.print(“Donnerstag”); lcd.print(“Donnerstag”); break; case 5: Serial.print(“Freitag”); lcd.print(“Freitag”); break; case 6: Serial.print(“Samstag”); lcd.print(“Samstag”); break; } Serial.print(“, ”); Serial.println(ntp.formattedTime(“%d.%m.%Y Uhrzeit: %T”)); // Temperatur String Temperatur = String(dht.readTemperature()); Temperatur.replace(“.”, “,”); Serial.print(“Temperatur:”); Serial.println(Temperatur + ” °C”); // Luftfeuchtigkeit String Luftfeuchtigkeit = String(dht.readHumidity()); Luftfeuchtigkeit.replace(“.”, “,”); Serial.print(“Luftfeuchtigkeit: ”); Serial.println(Luftfeuchtigkeit + ” %”); // Ausgabe LCD lcd.setCursor(0, 1); String Zeit = ntp.formattedTime(“%d.%m.%Y %T”); // String Zeit nch Minuten kürzen lcd.print(Zeit.substring(0, Zeit.indexOf(“:”) + 3)); lcd.setCursor(0, 2); lcd.print(Temperatur + ” \337C”); lcd.setCursor(0, 3); lcd.print(Luftfeuchtigkeit + ” %”); } } |
letzte Aktualisierung:









