// Netzwerverbindung nach: https://gist.github.com/SergXIIIth/1628715 #include "DHT.h" #include <SPI.h> #include <Ethernet.h> #include <SoftwareSerial.h> // Verbindungsdaten für die Netzwerkkarte byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; // hat man mehr Arduinos im Netz: mac adresse verändern!!!! IPAddress ip(192,168,178,140); // IP-Adresse ändern!!!! byte gateway[] = { 192, 168, 178, 1 }; byte subnet[] = { 255, 255, 255, 0 }; // Verbindungsdaten des Servers: IPAddress server(136,243,78,203); // IP-Adresse von www.info-checker.de EthernetClient client; // Sachen für den CO2 - Sensor SoftwareSerial SerialCom (A2,A3); // für CO2-Sensor byte addArray[] = { 0xFF, 0x01, 0x86, 0x00, 0x00, 0x00, 0x00, 0x00, 0x79 }; // Befehl zur Abfrage des CO2 Sensors byte zeroArray[] = { 0xFF, 0x01, 0x87, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78}; // Befehl zum Reset des COS2 Sensors char dataValue[9]; String dataString = ""; long zeit; int i=0; // Sachen für den DHT - Sensor (Luftfeuchtigkeit und Temperatur #define DHTPIN 2 // Anschluss am digitalen PIN2 #define DHTTYPE DHT22 //DHT11, DHT21, DHT22 DHT dht(DHTPIN, DHTTYPE); static char t_str[15]; // zur Umwandlung der Messwerte von float to String static char h_str[15]; // zur Umwandlung der Messwerte von float to String // Sachen für den analogen Sensor int MessPin = A5; //analoger Eingang int Messwert = 0; void connect(){ float h = dht.readHumidity(); //Luftfeuchte auslesen float t = dht.readTemperature(); //Temperatur auslesen dtostrf(h,4, 2, h_str); // Wandelt den float Wert h in einen String h_str um. dtostrf(t,4, 2, t_str); // Wandelt den float Wert t in einen String t_str um. Messwert = analogRead(MessPin); // Analogen Port auslesen delay(1000); // Prüfen ob eine gültige Zahl zurückgegeben wird. Wenn NaN (not a number) zurückgegeben wird, dann Fehler ausgeben. if (isnan(t) || isnan(h)) { Serial.println("DHT22 konnte nicht ausgelesen werden"); } if (client.connect(server, 80)) { // Serial.println("Server verbunden."); // vergebe eine eindeutige Beschreibung für deine Messung String beschreibung="DEADBEEFED"; // beschreibe deine Eingänge String info="Analog_Luftfeuchtigkeit_Temperatur(DHT22)"; // url hier werden die Daten an das PHP-Script übergeben String url = "GET /raumklima/MesswertAbspeichern.php?beschreibung="+beschreibung+"&info="+info+"&wert1="+String(Messwert)+"&wert2="+h_str+"&wert3="+t_str+" HTTP/1.1"; client.println(url); client.println("Host: www.info-checker.de"); client.println("Connection: close"); // beendet die Verbindung client.println(); // Serial.println("ok"); // falls Verbindung geklappt hat. } else { Serial.println("connection failed"); } } void setup() { Serial.begin(9600); Serial.print("Setup LAN ... "); // give the Ethernet shield a second to initialize: delay(1000); Ethernet.begin(mac, ip); Serial.println("ok"); delay(1000); connect(); } void loop(){ // die folgenden Zeilen verursachen die Ausgabe der Serverantwort auf dem SeriellenMonitor // brauchen wir nur zur Fehlersuche bei Problemen // if (client.available()) { // char c = client.read(); // Serial.print(c); // } // if the server's disconnected, stop the client: if (!client.connected()) { Serial.println(); Serial.println("disconnecting."); client.stop(); delay(3000); connect(); } }
// Netzwerverbindung nach: https://gist.github.com/SergXIIIth/1628715 #include "DHT.h" #include <SPI.h> #include <Ethernet.h> #include <SoftwareSerial.h> // Sachen für den Feinstaubsensor #define LEN 9 unsigned char incomingByte = 0; unsigned char buf[LEN]; int PM2_5Val = 0; int PM10Val = 0; // Verbindungsdaten für die Netzwerkkarte byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; // hat man mehr Arduinos im Netz: mac adresse verändern!!!! IPAddress ip(192,168,178,140); // IP-Adresse ändern!!!! byte gateway[] = { 192, 168, 178, 1 }; byte subnet[] = { 255, 255, 255, 0 }; // Verbindungsdaten des Servers: IPAddress server(136,243,78,203); // IP-Adresse von www.info-checker.de EthernetClient client; // Sachen für den CO2 - Sensor SoftwareSerial SerialCom (A2,A3); // für CO2-Sensor byte addArray[] = { 0xFF, 0x01, 0x86, 0x00, 0x00, 0x00, 0x00, 0x00, 0x79 }; // Befehl zur Abfrage des CO2 Sensors byte zeroArray[] = { 0xFF, 0x01, 0x87, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78}; // Befehl zum Reset des COS2 Sensors char dataValue[9]; String dataString = ""; long zeit; int i=0; // Sachen für den DHT - Sensor (Luftfeuchtigkeit und Temperatur #define DHTPIN 2 // Anschluss am digitalen PIN2 #define DHTTYPE DHT22 //DHT11, DHT21, DHT22 DHT dht(DHTPIN, DHTTYPE); static char t_str[15]; // zur Umwandlung der Messwerte von float to String static char h_str[15]; // zur Umwandlung der Messwerte von float to String // Sachen für den analogen Sensor int MessPin = A5; //analoger Eingang int Messwert = 0; void connect(){ // zuerst den Feinstaubsensor auslesen int i; unsigned char checksum; // send data only when you receive data: if (Serial.available() > 0) { // read the incoming byte: incomingByte = Serial.read(); if (incomingByte == 0xAA) { Serial.readBytes((char *) buf, LEN); if ((buf[0] == 0xC0) && (buf[8] == 0xAB)) { for (i=1; i<=6; i++) { checksum = checksum + buf[i]; } if (checksum == buf[7]) { PM2_5Val=((buf[2]<<8) + buf[1])/10; PM10Val=((buf[4]<<8) + buf[3])/10; // Serial.print("PM2.5: "); // Serial.print(PM2_5Val); // Serial.println(" ug/m3"); // Serial.print("PM10 : "); // Serial.print(PM10Val); // Serial.println(" ug/m3"); // Serial.println(); } else { Serial.println("checksum Error"); } } else { Serial.println("frame error"); } } } // DHT 22 auslesen float h = dht.readHumidity(); //Luftfeuchte auslesen float t = dht.readTemperature(); //Temperatur auslesen dtostrf(h,4, 2, h_str); // Wandelt den float Wert h in einen String h_str um. dtostrf(t,4, 2, t_str); // Wandelt den float Wert t in einen String t_str um. Messwert = analogRead(MessPin); // Analogen Port auslesen delay(1000); // Prüfen ob eine gültige Zahl zurückgegeben wird. Wenn NaN (not a number) zurückgegeben wird, dann Fehler ausgeben. //if (isnan(t) || isnan(h)) //{ // Serial.println("DHT22 konnte nicht ausgelesen werden"); //} if (client.connect(server, 80)) { // Serial.println("Server verbunden."); // vergebe eine eindeutige Beschreibung für deine Messung String beschreibung="2018_12_12_Test1"; // beschreibe deine Eingänge String info="Analog_Luftfeuchtigkeit_Temperatur(DHT22)_PM2.5_PM10"; // url hier werden die Daten an das PHP-Script übergeben // hier die Variablen noch abändern, wahrscheinlich für den CO2-Wert und evtl. noch ein Wert String wert6 = ".."; String wert7 = ".."; String url = "GET /raumklima/MesswertAbspeichern.php?beschreibung="+beschreibung+"&info="+info+"&wert1="+String(Messwert)+"&wert2="+h_str+"&wert3="+t_str+"&wert4="+PM2_5Val+"&wert5="+PM10Val+"&wert6="+wert6+"&wert7="+wert7+" HTTP/1.1"; client.println(url); client.println("Host: www.info-checker.de"); client.println("Connection: close"); // beendet die Verbindung client.println(); // Serial.println("ok"); // falls Verbindung geklappt hat. } else { Serial.println("connection failed"); } } void setup() { Serial.begin(9600); Serial.print("Setup LAN ... "); // give the Ethernet shield a second to initialize: delay(1000); Ethernet.begin(mac, ip); Serial.println("ok"); delay(1000); connect(); } void loop(){ // die folgenden Zeilen verursachen die Ausgabe der Serverantwort auf dem SeriellenMonitor // brauchen wir nur zur Fehlersuche bei Problemen //if (client.available()) { // char c = client.read(); // Serial.print(c); // } // if the server's disconnected, stop the client: if (!client.connected()) { Serial.println(); Serial.println("disconnecting."); client.stop(); delay(180000); // 180 Sekunden connect(); } }
// Netzwerverbindung nach: https://gist.github.com/SergXIIIth/1628715 #include "DHT.h" #include <SPI.h> #include <Ethernet.h> #include <SoftwareSerial.h> // Sachen für den Feinstaubsensor #define LEN 9 unsigned char incomingByte = 0; unsigned char buf[LEN]; int PM2_5Val = 0; int PM10Val = 0; // Verbindungsdaten für die Netzwerkkarte byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; // hat man mehr Arduinos im Netz: mac adresse verändern!!!! IPAddress ip(192,168,178,140); // IP-Adresse ändern!!!! byte gateway[] = { 192, 168, 178, 1 }; byte subnet[] = { 255, 255, 255, 0 }; // Verbindungsdaten des Servers: IPAddress server(136,243,78,203); // IP-Adresse von www.info-checker.de EthernetClient client; // Sachen für den CO2 - Sensor SoftwareSerial SerialCom (A2,A3); // für CO2-Sensor byte addArray[] = { 0xFF, 0x01, 0x86, 0x00, 0x00, 0x00, 0x00, 0x00, 0x79 }; // Befehl zur Abfrage des CO2 Sensors byte zeroArray[] = { 0xFF, 0x01, 0x87, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78}; // Befehl zum Reset des COS2 Sensors char dataValue[9]; String dataString = ""; long zeit; int i=0; // Sachen für den DHT - Sensor (Luftfeuchtigkeit und Temperatur #define DHTPIN 7 // Anschluss am digitalen PIN2 #define DHTTYPE DHT22 //DHT11, DHT21, DHT22 DHT dht(DHTPIN, DHTTYPE); static char t_str[15]; // zur Umwandlung der Messwerte von float to String static char h_str[15]; // zur Umwandlung der Messwerte von float to String // Sachen für den analogen Sensor int MessPin = A0; //analoger Eingang int Messwert = 0; void connect(){ delay(1000); // zuerst den Feinstaubsensor auslesen int i; unsigned char checksum; // send data only when you receive data: if (Serial.available() > 0) { // read the incoming byte: incomingByte = Serial.read(); if (incomingByte == 0xAA) { Serial.readBytes((char *) buf, LEN); if ((buf[0] == 0xC0) && (buf[8] == 0xAB)) { for (i=1; i<=6; i++) { checksum = checksum + buf[i]; } if (checksum == buf[7]) { PM2_5Val=((buf[2]<<8) + buf[1])/10; PM10Val=((buf[4]<<8) + buf[3])/10; Serial.print("PM2.5: "); Serial.print(PM2_5Val); Serial.println(" ug/m3"); Serial.print("PM10 : "); Serial.print(PM10Val); Serial.println(" ug/m3"); Serial.println(); } else { Serial.println("checksum Error"); } } else { Serial.println("frame error"); } } } delay(1000); // DHT 22 auslesen float h = dht.readHumidity(); //Luftfeuchte auslesen float t = dht.readTemperature(); //Temperatur auslesen dtostrf(h,4, 2, h_str); // Wandelt den float Wert h in einen String h_str um. dtostrf(t,4, 2, t_str); // Wandelt den float Wert t in einen String t_str um. Serial.print(h_str); Serial.println(" %H20"); Serial.print(t_str); Serial.println(" °C"); // Prüfen ob eine gültige Zahl zurückgegeben wird. Wenn NaN (not a number) zurückgegeben wird, dann Fehler ausgeben. if (isnan(t) || isnan(h)) { Serial.println("DHT22 konnte nicht ausgelesen werden"); } // ANlog auslesen Messwert = analogRead(MessPin); // Analogen Port auslesen delay(1000); // CO2 auslesen SerialCom.write(addArray, 9); SerialCom.readBytes(dataValue, 9); int resHigh = (int) dataValue[2]; int resLow = (int) dataValue[3]; int pulse = (256*resHigh)+resLow; dataString = String(pulse); Serial.print(dataString); Serial.println(" CO2 ppm"); // delay(1000); if (client.connect(server, 80)) { Serial.println("Server verbunden."); // vergebe eine eindeutige Beschreibung für deine Messung String beschreibung="2018_12_29_Test1"; // beschreibe deine Eingänge String info="Analog_Luftfeuchtigkeit_Temperatur(DHT22)_PM2.5_PM10"; // url hier werden die Daten an das PHP-Script übergeben // hier die Variablen noch abändern, wahrscheinlich für den CO2-Wert und evtl. noch ein Wert String wert6 = dataString; String wert7 = ".."; String url = "GET /raumklima/MesswertAbspeichern.php?beschreibung="+beschreibung+"&info="+info+"&wert1="+String(Messwert)+"&wert2="+h_str+"&wert3="+t_str+"&wert4="+PM2_5Val+"&wert5="+PM10Val+"&wert6="+wert6+"&wert7="+wert7+" HTTP/1.1"; client.println(url); client.println("Host: www.info-checker.de"); client.println("Connection: close"); // beendet die Verbindung client.println(); Serial.println("Verbindung zum Server ok"); // falls Verbindung geklappt hat. } else { Serial.println("connection failed"); } } void setup() { Serial.begin(9600); Serial.print("Setup LAN ... "); // give the Ethernet shield a second to initialize: delay(1000); Ethernet.begin(mac, ip); Serial.println("Netzwerk ok"); delay(1000); SerialCom.begin(9600); delay(1000); connect(); } void loop(){ // die folgenden Zeilen verursachen die Ausgabe der Serverantwort auf dem SeriellenMonitor // brauchen wir nur zur Fehlersuche bei Problemen if (client.available()) { char c = client.read(); Serial.print(c); } // if the server's disconnected, stop the client: if (!client.connected()) { Serial.println(); Serial.println("disconnecting."); client.stop(); delay(120000); // 120 Sekunden connect(); } }
<?php $pdo = new PDO('mysql:host=localhost;dbname=**DB_Name*', '**Username**', '**Passwort***'); /* Verbindungsdaten Host: *** Datenbankname: *** User: *** Passwort: *** */ // GET Werte einlesen if(isset($_GET['wert1'])) {$wert1 = $_GET['wert1']; } else {$wert1 ="-------";} if(isset($_GET['wert2'])) {$wert2 = $_GET['wert2']; } else {$wert2 ="-------";} if(isset($_GET['wert3'])) {$wert3 = $_GET['wert3']; } else {$wert3 ="-------";} if(isset($_GET['wert4'])) {$wert4 = $_GET['wert4']; } else {$wert4 ="-------";} if(isset($_GET['wert5'])) {$wert5 = $_GET['wert5']; } else {$wert5 ="-------";} if(isset($_GET['wert6'])) {$wert6 = $_GET['wert6']; } else {$wert6 ="-------";} if(isset($_GET['wert7'])) {$wert7 = $_GET['wert7']; } else {$wert7 ="-------";} if(isset($_GET['beschreibung'])) {$beschreibung = $_GET['beschreibung']; } else {$beschreibung ="-------";} if(isset($_GET['info'])) {$info = $_GET['info']; } else {$info ="-------";} // Eintrag in die Datenbank // $sql ="INSERT INTO `1` (`id`, `wert1`, `wert2`, `wert3`, `wert4`, `wert5`, `wert6`, `wert7`, `beschreibung`, `info`, `zeit`) VALUES (NULL, '".$wert1."', '".$wert2."', '".$wert3."', '".$wert4."', '".$wert5."', '".$wert6."', '".$wert7."', '".$beschreibung."', '".$info."', CURRENT_TIMESTAMP);"; $pdo->query($sql); ?> <!DOCTYPE html> <html lang="de"> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1"> </head> <body> Werte in Datenbank eingetragen. </body> </html>
<?php $pdo = new PDO('mysql:host=localhost;dbname=***', '***', '***'); /* Verbindungsdaten Host: localhost:3306 Datenbankname: *** User: *** Passwort: *** */ // GET Werte einlesen if(isset($_GET['messung'])) {$beschreibung = $_GET['messung']; } else {$beschreibung ="";} ?> <!DOCTYPE html> <html lang="de"> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta http-equiv="expires" content="0"> <meta http-equiv="refresh" content="30"> <meta name="viewport" content="width=device-width, initial-scale=1"> <title>Raumklima</title> <link rel="stylesheet" type="text/css" href="css/bootstrap.min.css" /> <link rel="stylesheet" type="text/css" href="css/font-awesome.min.css" /> <script type="text/javascript" src="js/jquery-1.10.2.min.js"></script> <script type="text/javascript" src="js/bootstrap.min.js"></script> <script src='https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.2/MathJax.js?config=TeX-MML-AM_CHTML'></script> <style> <!--eigene Styles: besser in extra Datei / Hier nur zum Test--> h1 { background-color: green; color: white; } p { text-align: left; color: black; } body { background-color: #CCC; } .col-sm-8{ background-color: red; } a {text-decoration: none;} </style> </head> <body> <!-- Navigation --> <nav class="navbar navbar-inverse"> <div class="container-fluid"> <div class="navbar-header"> <button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#myNavbar"> <span class="icon-bar"></span> <span class="icon-bar"></span> <span class="icon-bar"></span> </button> <a class="navbar-brand zumachen" href="#">Raumklima</a> </div> <div class="collapse navbar-collapse" id="myNavbar"> <ul class="nav navbar-nav"> <li><a href="#" class="zumachen">Messwerte</a></li> <li class="dropdown"> <a class="dropdown-toggle" data-toggle="dropdown" href="#">Sensoren<span class="caret"></span></a> <ul class="dropdown-menu"> <li><a href="index.php#CO2" class="zumachen">CO2-Sensor</a></li> <li><a href="index.php#Luftfeuchtigekeit" class="zumachen">Luftfeuchtigkeit </a></li> <li><a href="index.php#Feinstaub" class="zumachen">Feinstaub</a></li> <li><a href="index.php#Temperatur" class="zumachen">Temperatur</a></li> </ul> </li> <li><a href="#netzwerk" class="zumachen">Netzwerktechnik</a></li> <li class="dropdown"> <a class="dropdown-toggle" data-toggle="dropdown" href="#">Internettechnik<span class="caret"></span></a> <ul class="dropdown-menu"> <li><a href="index.php#bootstrap" class="zumachen">HTML & Bootstrap</a></li> <li><a href="index.php#bootstrap" class="zumachen">SVG</a></li> <li><a href="index.php#javscript" class="zumachen">Javascript </a></li> <li><a href="index.php#php-mysql" class="zumachen">PHP und mySQL</a></li> </ul> </li> </ul> <ul class="nav navbar-nav navbar-right"> <li><a href="#" class="zumachen"><span class="glyphicon glyphicon-user"></span> Kontakt</a></li> <li><a href="#" class="zumachen"><span class="glyphicon glyphicon-log-in"></span> Login</a></li> </ul> </div> </div> </nav> <!-- START --> <div class="container"> <!--Überschrift: #Anker --> <h2>Messwerte:</h2> <!-- Beginn des Formulars --> <div class="col-xs-12 col-sm-6 col-md-6"> <form name="Messung" method="GET"> <div class="form-group"> <select class="form-control" id="messung" name ="messung"> <?php $sql ="SELECT DISTINCT `beschreibung` FROM `1` "; foreach ($pdo->query($sql) as $row) { echo"<option value=\"".$row['beschreibung']."\">".$row['beschreibung']."</option>"; } ?> </select> </div><!--Ende der FormGroup --> <!-- beide Buttons --> <button type="reset" class="btn col-4 btn-primary">Zurücksetzen</button> <button type="submit" class="btn col-4 btn-primary">Absenden</button> </form> </div> <!-- Ende des Formulars--> <?php // schon oben vorhanden : $pdo = new PDO('mysql:host=localhost;dbname=***', '***', '**'); if($beschreibung ==""){ $sql= "SELECT * FROM `1` ORDER BY `id` DESC LIMIT 1000"; } else { $sql= "SELECT * FROM `1` where `beschreibung`='".$beschreibung."' ORDER BY `id` DESC LIMIT 1000"; } echo "<table class=\"table table-striped table-bordered\">"; echo "<tr>"; echo " <th>id</th><th>Wert 1 </th><th> Wert 2 </th><th> Wert 3 </th><th> Wert 4 </th><th> Wert 5 </th><th> Wert 6 </th><th> Wert 7 </th><th> Beschreibung </th><th> Info</th><th> Zeit</th>"; echo "</tr>"; foreach ($pdo->query($sql) as $row) { echo "<tr>"; echo "<td>".$row['id']."</td><td>".$row['wert1']."</td><td>".$row['wert2']."</td><td>".$row['wert3']."</td><td>".$row['wert4']."</td><td>".$row['wert5']."</td><td>".$row['wert6']."</td><td>".$row['wert7']."</td><td>".$row['beschreibung']."</td><td>".$row['info']."</td><td>".$row['zeit']."</td>"; echo "</tr>"; } echo "</table>"; ?> </div> <!-- ende des Containers der Panel Group--> <style> .faqHeader { font-size: 27px; margin: 20px; } .panel-heading [data-toggle="collapse"]:after { font-family: 'Glyphicons Halflings'; content: "\e072"; /* "play" icon */ float: right; color: #F58723; font-size: 18px; line-height: 22px; /* rotate "play" icon from > (right arrow) to down arrow */ -webkit-transform: rotate(-90deg); -moz-transform: rotate(-90deg); -ms-transform: rotate(-90deg); -o-transform: rotate(-90deg); transform: rotate(-90deg); } .panel-heading [data-toggle="collapse"].collapsed:after { /* rotate "play" icon from > (right arrow) to ^ (up arrow) */ -webkit-transform: rotate(90deg); -moz-transform: rotate(90deg); -ms-transform: rotate(90deg); -o-transform: rotate(90deg); transform: rotate(90deg); color: #454444; } </style> <script> $('.zumachen' ).click(function() { $('#myNavbar').collapse('hide'); }); </script> </body></html>
Anleitung, wie man den CO2 - Sensor über UART anschließen kann:
/* Vorlage: Web client */ // und: http://domoticx.com/arduino-co2-sensor-mh-z14/ #include <SPI.h> #include <Ethernet.h> #include <SoftwareSerial.h> SoftwareSerial SerialCom (A2,A3); byte addArray[] = { 0xFF, 0x01, 0x86, 0x00, 0x00, 0x00, 0x00, 0x00, 0x79 }; // Befehl zur Abfrage des Sensors byte zeroArray[] = { 0xFF, 0x01, 0x87, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78}; // Befehl zum Reset des Sensors char dataValue[9]; String dataString = ""; long zeit; int i=0; byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; // hat man mehr Arduinos im Netz: mac adresse verändern //byte server[] = { 192, 168, 178, 34 }; // IP - Adresse des Servers char server[] = "www.roboter-im-unterricht.de"; // name address for Google (using DNS) IPAddress ip(192,168,178,100); // IP - Adresse des Arduino // wird nur benötigt, wenn DHCP nicht geht. byte gateway[] = { 192, 168, 178, 1 }; byte subnet[] = { 255, 255, 255, 0 }; EthernetClient client; void setup() { Serial.begin(9600); SerialCom.begin(9600); while (!Serial) { ; // wait for serial port to connect. Needed for Leonardo only } Serial.println("MH-Z14 C02 Sensor Test Code"); Serial.println("------------------------------------"); // start the Ethernet connection: if (Ethernet.begin(mac) == 0) { Serial.println("Failed to configure Ethernet using DHCP"); Ethernet.begin(mac, ip, gateway, subnet); Serial.println("connecting..."); } delay(1000); SerialCom.write(zeroArray, 9); delay(1000); } void loop(){ delay(60000); // Abfrage alle 60 Sekunden // CO2 Abfragen SerialCom.write(addArray, 9); SerialCom.readBytes(dataValue, 9); int resHigh = (int) dataValue[2]; int resLow = (int) dataValue[3]; int pulse = (256*resHigh)+resLow; zeit = millis(); // Zeit in Millisekunden nach Start Serial.println("Zeit: "+ String(zeit)+" Messwert: " +String(pulse)); if (client.connect(server, 80)) { Serial.println("Server verbunden."); String url = "GET /Projekt/MesswertAbspeichern.php?zeit="+String(zeit)+"&messwert="+String(pulse)+" HTTP/1.1"; client.println(url); client.println("Host: www.roboter-im-unterricht.de"); client.println("Connection: close"); client.println(); } else { Serial.println("Aufruf hat nicht geklappt."); } client.stop(); client.flush(); }
#include "DHT.h" #define DHTPIN 2 #define DHTTYPE DHT22 //DHT11, DHT21, DHT22 DHT dht(DHTPIN, DHTTYPE); void setup() { Serial.begin(9600); Serial.println("DHT22 - Test!"); dht.begin(); } void loop() { float h = dht.readHumidity(); //Luftfeuchte auslesen float t = dht.readTemperature(); //Temperatur auslesen delay(1000); // Prüfen ob eine gültige Zahl zurückgegeben wird. Wenn NaN (not a number) zurückgegeben wird, dann Fehler ausgeben. if (isnan(t) || isnan(h)) { Serial.println("DHT22 konnte nicht ausgelesen werden"); } else { Serial.print("Luftfeuchte: "); Serial.print(h); Serial.print(" %\t"); Serial.print("Temperatur: "); Serial.print(t); Serial.println(" C"); } }
http://opengeiger.de/Feinstaub/FeinstaubDatenLogger.pdf
Leider ist da ein kleiner Fehler im Script (siehe oben)
Wie die Abfrage (mit dem UART- Protokoll) funktioniert wird im Datenblatt des Sensors erklärt.
Über Sinn und Unsinn einen billigen Sensor zu verwenden hat sich das das Landesamt für Umwelt, Messungen und Naturschutz Baden-Württemberg Gedanken gemacht: Messungen mit dem Feinstaubsensor SDS011 Ein Vergleich mit einem eignungsgeprüften Feinstaubanalysator
Mit Hilfe von SVG kann man die Messwerte darstellen.
Ein Tutorial findet man unter https://www.w3schools.com/graphics/svg_intro.asp
oder bei http://thenewcode.com/1173/Web-Developer-Reading-List-SVG
<html> <head> </head> <body> <h2> Messwerte</h2> <img width="600" height="600" src="bild.svg"> </body> </html>
<?xml version="1.0"?> <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> <svg version="1.1" xmlns="http://www.w3.org/2000/svg"> <!-- horizontal --> <line x1="0" y1="0" x2="600" y2="0" style="stroke:black;stroke-width:2;" /> <line x1="0" y1="50" x2="600" y2="50" style="stroke:black;stroke-width:1;" /> <line x1="0" y1="100" x2="600" y2="100" style="stroke:black;stroke-width:2;" /> <line x1="0" y1="150" x2="600" y2="150" style="stroke:black;stroke-width:1;" /> <line x1="0" y1="200" x2="600" y2="200" style="stroke:black;stroke-width:2;" /> <line x1="0" y1="250" x2="600" y2="250" style="stroke:black;stroke-width:1;" /> <line x1="0" y1="300" x2="600" y2="300" style="stroke:black;stroke-width:2;" /> <line x1="0" y1="350" x2="600" y2="350" style="stroke:black;stroke-width:1;" /> <line x1="0" y1="400" x2="600" y2="400" style="stroke:black;stroke-width:2;" /> <line x1="0" y1="450" x2="600" y2="450" style="stroke:black;stroke-width:1;" /> <line x1="0" y1="500" x2="600" y2="500" style="stroke:black;stroke-width:2;" /> <line x1="0" y1="550" x2="600" y2="550" style="stroke:black;stroke-width:1;" /> <line x1="0" y1="600" x2="600" y2="600" style="stroke:black;stroke-width:1;" /> <!-- vertikal--> <line x1="0" y1="0" x2="0" y2="600" style="stroke:black;stroke-width:1;" /> <line x1="100" y1="0" x2="100" y2="600" style="stroke:black;stroke-width:1;" /> <line x1="200" y1="0" x2="200" y2="600" style="stroke:black;stroke-width:1;" /> <line x1="300" y1="0" x2="300" y2="600" style="stroke:black;stroke-width:1;" /> <line x1="400" y1="0" x2="400" y2="600" style="stroke:black;stroke-width:1;" /> <line x1="500" y1="0" x2="500" y2="600" style="stroke:black;stroke-width:1;" /> <line x1="600" y1="0" x2="600" y2="600" style="stroke:black;stroke-width:1;" /> <polyline points="0,0 10,10 20,40 30,50 40,62 50,70 60,80 400,500 450,10 600,600" style="stroke:black;stroke-width:3;fill:none" /> </svg>