#include <Wire.h> // Laden der notwendigen libraries #include <SPI.h> #include <Ethernet.h> #include <LiquidCrystal_I2C.h> // Vorher hinzugefügte LiquidCrystal_I2C Bibliothek hochladen LiquidCrystal_I2C lcd(0x27, 20, 4); //Hier wird das Display benannt (Adresse/Zeichen pro Zeile/Anzahl Zeilen). In unserem Fall „lcd“. Die Adresse des I²C Displays kann je nach Modul variieren. #include "cactus_io_BME280_I2C.h" // erzeugt BME280 object BME280_I2C bme; // I2C using address 0x77 int p = 0; int h = 0; int t = 0; //SERVERDATEN byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; // MAC Adresse des Arduino Boards !WICHTIG! MAC Adresse darf nur einmal im Heimnetz vorkommen byte ip[] = { 192, 168, 178, 90 }; // IP Adresse des Arduino Boards !WICHTIG! // Die IP Adresse muss manuell im Netzwerk vergeben werden, http://192.168.178.90 byte gateway[] = { 192, 168,178, 1 }; // Gateway Fritzbox !WICHTIG! Auszulesen über Start -> "cmd" -> "ipconfig" -> Standardgateway byte subnet[] = { 255, 255, 255, 0 }; // Subnet Maske (optional) EthernetServer server(80); // Port Einstellung (Standard für HTML : 80) void setup() { // LCD ANFANG lcd.init(); //Im Setup wird der LCD gestartet lcd.backlight(); //Hintergrundbeleuchtung einschalten (0 schaltet die Beleuchtung aus). // LCD ENDE Serial.begin(28800); Serial.println("Bosch BME280 Pressure - Humidity - Temp Sensor | cactus.io"); if (!bme.begin()) { Serial.println("Could not find a valid BME280 sensor, check wiring!"); while (1); } bme.setTempCal(-1);// Temp was reading high so subtract 1 degree Serial.println("Pressure\tHumdity\t\tTemp\ttTemp"); Wire.begin(); // I2C als Master-BUS Ethernet.begin(mac, ip); // Ethernet initialisieren server.begin(); // Auf Clients warten } void loop() { float p = bme.getPressure_MB(); //Luftdruck auslesen float h = bme.getHumidity(); //Luftfeuchte auslesen float t = bme.getTemperature_C(); //Temperatur auslesen //Sensor bme.readSensor(); Serial.print(bme.getPressure_MB()); Serial.print(" mb\t"); // Luftdruckin millibar Serial.print(bme.getHumidity()); Serial.print(" %\t\t"); Serial.print(bme.getTemperature_C()); Serial.print(" *C\t"); Serial.print(bme.getTemperature_F()); Serial.println(" *F"); //anfang LCD lcd.setCursor(0,0); //Text soll beim ersten Zeichen in der ersten Reihe beginnen.. lcd.print(" "); lcd.print("UMWELTDATEN");//Luftdruck Anzeige lcd.print(" "); lcd.setCursor(0,1); //Genauso geht es bei den weiteren drei Zeilen weiter lcd.print("Luftdruck");//Luftfeuchte Anzeige lcd.print(" "); lcd.print(p); lcd.print(""); lcd.print("hPa"); lcd.setCursor(0,2); lcd.print("Luftfeuchte");//Temperatur Anzeige lcd.print(" "); lcd.print(h); lcd.print(" "); lcd.print("%"); lcd.setCursor(0,3); lcd.print("Temperatur");//Luftqualität lcd.print(" "); lcd.print(t); lcd.print(" "); lcd.print("*C"); //ende LCD // Add a 2 second delay. delay(2000); //just here to slow down the output. EthernetClient client = server.available(); //Prüfen, ob Client Seite aufruft if (client){ // Seitenaufruf durch User // Ausgabe String // Ausgabe in HTML server.print("HTTP/1.0 200 OK\r\nServer: arduino\r\nContent-Type: text/html\r\n\r\n"); server.print("<HTML><HEAD><TITLE>"); server.print("Wetterstation"); server.print("</TITLE>"); server.print("</HEAD><BODY>"); server.print("<center><font size=7><b>Wetter in Linz</b></font>"); server.print("<center><font size=5><b>Luftdruck </font>"); server.print(bme.getPressure_MB()); // Ausgabe der Luftdruck server.print("<font size=5> hPa. </font"); server.print("<br>"); server.print("<center><font size=5><b>Luffeuchte </font>"); server.print(bme.getHumidity()); // Ausgabe der Luftfeuchte server.print("<font size=5> % </font"); server.print("<br>"); server.print("<center><font size=5><b>Temperatur </font>"); server.print(bme.getTemperature_C()); server.print("<font size=5> *C</font"); delay(500); // Kurzer Delay, um Daten zu senden client.stop(); // Verbindung mit dem Client trennen } }