#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;
// 60 Sekunden Intervall, kann angepasst werden
int Intervall = 60000;
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);
}
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 nach 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: