5 Schritt:Schritt 1: Hürden und Lösungen Schritt 2: Das Programm Schritt 3: Verbinden Sie mit Hilfe eines Thingspeak ESP8266 WiFi-Modul Schritt 4: Ein Bonus Schritt 5: Mehr auf der ESP8266

    Ich schrieb diesen instructable weil Thingspeak -nevermind, wie einfach einzurichten Up- hat ein paar Hürden, die ich lief in, und dass, wie aus Reaktionen, andere Menschen mit als auch zu kämpfen. Dinge, die Sie benötigen: Arduino WS5100 EthernetShield Thingspeak Konto Sensoren (wie DHT11 und BMP180) Internetverbindung Für die WiFi: ESP8266 WiFi-Modul Ich wollte, um etwas Wetterdaten mit meinem Arduino sammeln und so schön, dass Graphen zur Verfügung, auf einer Webseite, so konnte ich auch aus der Ferne zu überwachen Ich konnte ofcourse gerade einen Arduino nutzen als Webserver, aber wenn Sie etwas anderes als auf eine Webseite zu senden Zahlen zu tun wollen, wird die Arduino bald über genügend Arbeitsspeicher ausgeführt. Es gibt Dienste, verdauen können und Ihre Daten zu veröffentlichen: Pachube, später Xively ist ein bekanntes, aber noch sie eine Warteliste für ihre kostenlose Konten haben. Ehrlich gesagt, habe ich eine Pachube Konto, das Xively Account wurde, aber eben nie keine Ergebnisse auf sie. Im moment gibt es nur wenige Alternativen für Xively: http://2lemetry.com http://exosite.com https://www.carriots.com https://www.grovestreams.com https://thingspeak.com http://openenergymonitor.org Ich hob 'Thingspeak' Da die Registrierung und die Schaffung eines Kanals usw. ist ganz einfach und gut erklärt werde ich nicht zu sehr ins Detail zu gehen, dass der. Im Grunde, nachdem Sie sich anmelden, die Sie erstellen einen Kanal, dem Sie Felder hinzufügen, wo später Sensoren ihre Daten zu senden. Unter dem Reiter API erhalten Sie eine API, die Sie später in Ihrem Programm kannst. Ich beschreibe eine simpel Verbindung mit einem Ethernet-Kabel und eine Verbindung über WiFiStep 1: Hürden und Lösungen Hurdle 1 Jetzt, wo ein Programm zu finden? ein funktionierendes Beispiel wäre schön, richtig? In der rechten oberen Ecke befindet sich eine Schaltfläche "Support", die zu "Tutorials" gehen wird. Unter "Tutorials" finden Sie: "Verwenden eines Arduino + Ethernet-Schild, eine ThingSpeak Senderaktualisierung" Hört sich gut an, so dass Sie in Ihre IDE downloaden Sie das Programm, fügen Sie die API -Taste und kompilieren Sie es. Darn .... es tut zu kompilieren, können Sie versuchen, es zu beheben (und das ist durchaus möglich), bis zu einem Punkt kommen, du hast keine Ahnung, was erforderlich sind. Offenbar das Programm immer noch erwartet, dass alle, die 022 oder 023 IDE verwenden. Es gibt einen Link zu einer Github Seite aber das wird Programm zu twittern geben ua und das ist nicht, was Sie wollen, zumindest nicht für jetzt. Lösung Sie krank ein besseres Programm, um von hier starten: https: //github.com/iobridge/ThingSpeak-Arduino-Exa ... Das Programm nimmt eine Lesung aus dem A0-Port und sendet diese auf "Field1" im Datenstrom Ok, so versuchen Sie, dass, einen variablen Widerstand hängen Sie wie ein LDR oder NTC an Port A0, fügen Sie Ihre API im Programm und führen Sie es. Das funktioniert gut, aber ich habe den Ball hielt nur einen Wert aus einem Analog-Anschluss lesen wollen, hatte ich eine DHT11 Feuchtigkeit und Temperatursensor sowie ein BMP180 Pressure & Temperatursensor. Ich dachte, es sollte nicht allzu schwierig sein. Hurdle 2 Ich fügte hinzu, die notwendigen Bibliotheken, um die Thingspeak, fügte die Objekte und lesen Sie die Sensoren in eine Variable. Die Sensoren haben jedoch schwimmt als Ergebnis und Thinspeak möchte, dass Sie Zeichenfolgen zu senden. Bei den meisten Variablen ist es ziemlich leicht, sie in einen String mit der einfachen 'string' Funktion drehen, aber es ist nicht, dass für die Schwimmer einfach. Mit Schwimmern Sie die "dtostrf" -Befehl (die ich schätze, steht für "Double-to-String-Funktion" zu nutzen Der Versuch, Informationen zu dieser Funktion im Internet finden Sie führte mich schnell in endlosen Diskussionen über "wie blöd" war und die Leute Fragen wurden oft gesagt: "Warum würden Sie brauchen, dass Serial.print wird, dass für Sie tun" Ja, stimmt, aber Ich will nicht zu drucken, ich brauche es, weil Thingspeak will. Lösung Um die dtostrf Befehl zur Einrichtung einer Pufferraum, wo der String gespeichert werden müssen, zu verwenden. Das geht so: char t_buffer [10]; <br> t = (ReadSensor); <br> String temp = dtostrf (t, 0,5, t_buffer); Daß bufferspace ist wichtig. Ich hatte es die Arbeit mit "7" oder "5", aber als ich soeben einen zweiten Sensor, die diese Funktion benötigt, würde meine Datenstrom oder abstürzen und ich habe die verrücktesten Ergebnisse. Ich dachte auch, dass ich die gleiche bufferspace Wechsel für jeden Sensor zu verwenden, aber das auch nicht wirklich zu arbeiten, so jetzt habe ich eine bufferspace für jeden Sensor. Nun bin ich kein Riss in C, vielleicht gibt es einen besseren Weg, dies zu tun, wenn mir so würde ich lieben, sie zu hören, aber das funktionierte für mich. Hurdle3 Einmal hatte ich die Zeichenfolge-Konvertierungen, konnte ich die Daten in dem Datenstrom hinzuzufügen. Die Thingspeak Beispielprogramm zeigt, dass für nur ein Feld, aber es wird deutlich, ziemlich schnell, dass Sie die Zeichenfolgen hinzuzufügen, und werfen in der richtigen Menge an plussesand Et-Zeichen haben. Lösung Also für sagen wir 4 verschiedenen Bereichen wird es wie folgt aus: updateThingSpeak ("field1 =" + Temp + "& Feld2 =" + feuchten + "& field3 =" + pres + "& field4 =" + temp2); Schritt 2: Das Programm Im Folgenden finden Sie den vollständigen Code finden. Nur ein paar Anmerkungen: Die BMP180 ist eine aktualisierte Version des BMP085. Die BMP085 Bibliotheken sind mit dem BMP180 kompatibel. Adafruit hat 2 Versionen des libray. Ich entschied mich für die Version 1, wie ich fand es einfacher, mit zu arbeiten. Version 2 erfordert auch die Installation der 'Sensor' Bibliothek. In dem Code präsentiere ich auch einen zusätzlichen float: 'm'. das gibt dem Druck in "mmHg", wie ich havent benutzte es für jetzt gibt es keine String-Konvertierung noch, und es ist nicht auf dem Datenstrom hinzugefügt, aber das Hinzufügen es sollte jetzt so einfach wie 1 + 1 / * Arduino -> ThingSpeak Kanal über Ethernet Der Kunde Skizze ThingSpeak für die Arduino und Ethernet ausgelegt. Diese Skizze aktualisiert einen Kanal Feed mit ein Analogeingang liest über die ThingSpeak API (http://community.thingspeak.com/documentation/) mit HTTP POST. Das Arduino verwendet DHCP und DNS für eine einfachere Netzwerkeinrichtung. Die Skizze enthält auch einen Watchdog / Reset-Funktion, um sicherzustellen, dass die Arduino bleibt verbunden und / oder wiedererlangt Konnektivität nach einem Netzwerkausfall. Verwenden Sie den Serial Monitor auf der Arduino IDE die ausführliche Netzrück sehen und ThingSpeak Verbindungsstatus. Erste Schritte mit ThingSpeak: * Anmeldung für New User Account - <a href="https://www.thingspeak.com/users/new" rel="nofollow"> https://www.thingspeak.com/users/new </a> * Geben Sie eine MAC-Adresse in dieser Skizze unter "Lokale Netzwerkeinstellungen" * Legen Sie einen neuen Kanal, indem Sie Kanäle und erstellen Sie dann Neuer Kanal * Geben Sie die Schreib-API Key in dieser Skizze unter "ThingSpeak Einstellungen" Arduino Anforderungen: * Arduino mit Ethernet-Schild oder Arduino Ethernet * Arduino 1,0 IDE Netzwerkanforderungen: * Ethernet-Anschluss am Router * DHCP am Router aktiviert * Eindeutige MAC-Adresse für Arduino Erstellt: 17. Oktober 2011 von Hans Scharler (http://www.iamshadowlord.com) Zusätzliche Credits: Beispiel Skizzen aus Arduino-Team, Ethernet von Adrian McEwen Hinzugefügt DHT11 / BMP180 zeigten dtostrf Funktion durch diy_bloke 22/11/2014 * / #include <SPI.h> #include <Ethernet.h> #include <dht11.h> #include <Wire.h> #include <Adafruit_BMP085.h> // Dies ist die Version 1 Bibliothek #define DHT11PIN 4 // Die Temperatur / Feuchte-Sensor Adafruit_BMP085 bmp; DHT11 DHT11; // Lokale Netzwerkeinstellungen Byte-mac [] = {0xD4, 0x28, 0xB2, 0xFF, 0xA0, 0xA1}; // Muss eindeutig im lokalen Netzwerk sein // ThingSpeak Einstellungen char thingSpeakAddress [] = "api.thingspeak.com"; String writeAPIKey = "REPLACE_THIS_BY_YOUR_API_BUT_KEEP_THE_QUOTES"; const int updateThingSpeakInterval = 16 * 1000; // Zeitintervall in Millisekunden, um zu aktualisieren ThingSpeak (Anzahl der Sekunden * 1000 = Intervall) // Variable einrichten Lang lastConnectionTime = 0; boolean lastConnected = false; int failedCounter = 0; // Initialize Arduino Ethernet Client EthernetClient Client; Leere setup () { // Für die Fehlersuche starten Serien auf der Serial Monitor Serial.begin (9600); // Ethernet auf Arduino starten startEthernet (); } Leere Schleife () { // Lesen Wert von Analogeingang Pin 0 String analogPin0 = String (analogRead (A0), DEC); // Aktualisieren Response to Serial Monitor if (client.available ()) { char c = client.read (); Serial.print (c); } // ------ -------- DHT11 int chk = DHT11.read (DHT11PIN); char t_buffer [10]; char h_buffer [10]; Schwimmer t = (DHT11.temperature); String temp = dtostrf (t, 0,5, t_buffer); //Serial.print(temp); //Serial.print (""); float h = (DHT11.humidity); String feuchten = dtostrf (h, 0,5, h_buffer); //Serial.println(humid); // ----- ----------- BMP180 bmp.begin (); float p = (bmp.readPressure () / 100,0); // dies ist für Druck in Hektopascal float m = (bmp.readPressure () / 133,3); // dies ist für Druck in mmHg float t2 = (bmp.readTemperature ()); char P_Puffer [15]; char t2_buffer [10]; String pres = dtostrf (p, 0,5, P_Puffer); String temp2 = dtostrf (t2,0,5, t2_buffer); Serial.println (pres); //} // ---------------- // Von ThingSpeak Trennen if (! client.connected () && lastConnected) { Serial.println ("... getrennt"); Serial.println (); client.stop (); } // Aktualisieren ThingSpeak if (! client.connected () && (millis () - lastConnectionTime> updateThingSpeakInterval)) { updateThingSpeak ("field1 =" + Temp + "& Feld2 =" + feuchten + "& field3 =" + pres + "& field4 =" + temp2); } // Prüfen, ob Arduino Ethernet muss neu gestartet werden if (failedCounter> 3) {startEthernet ();} lastConnected = client.connected (); } Leere updateThingSpeak (String tsData) { if (client.connect (thingSpeakAddress, 80)) { client.print ("POST / update HTTP / 1.1 \ n"); client.print ("Host: api.thingspeak.com \ n"); client.print ("Connection: close \ n"); client.print ("X-THINGSPEAKAPIKEY:" + writeAPIKey + "\ n"); client.print ("Content-Type: application / x-www-form-urlencoded \ n"); client.print ("Content-Length:"); client.print (tsData.length ()); client.print ("\ n \ n"); client.print (tsData); lastConnectionTime = millis (); if (client.connected ()) { Serial.println ("Verbinden mit ThingSpeak ..."); Serial.println (); failedCounter = 0; } sonst { failedCounter ++; Serial.println ("Verbindung zum ThingSpeak fehlgeschlagen (" + String (failedCounter, DEC) + ")"); Serial.println (); } } sonst { failedCounter ++; Serial.println ("Verbindung zum fehlgeschlagen ThingSpeak (" + String (failedCounter, DEC) + ")"); Serial.println (); lastConnectionTime = millis (); } } nichtig startEthernet () { client.stop (); Serial.println ("Anschließen Arduino zu vernetzen ..."); Serial.println (); Verzögerung (1000); // Verbindung zum Netzwerk amd eine IP-Adresse über DHCP if (Ethernet.begin (Mac) == 0) { Serial.println ("DHCP fehlgeschlagen, Reset Arduino noch einmal zu versuchen"); Serial.println (); } sonst { Serial.println ("Arduino mit dem Netzwerk mit DHCP"); Serial.println (); } Verzögerung (1000); } Schritt 3: Verbinden Sie mit Hilfe eines Thingspeak ESP8266 WiFi-Modul Der bisherige präsentiert Internet-Verbindung wurde über ein Kabel. Allerdings gibt es eine billige WiFi-Modul, das zur Verfügung, um auf die Arduino befestigen ist: Das ESP 8266. Die ESP8266 ist eine billige WiFi-Modul. Bedenken Sie, dass es braucht, 3,3 Volt. Einige Modelle jedoch Anspruch auf 5 Volt tolerant. I 2 zugegeben Schaltungen, die als Spannungswandler verwendet werden könnten. Die ESP8266 wirklich braucht einen eigenen 3,3-V-Quelle wie die aktuelle, die aus dem Arduino nur nicht es schneiden. Es gibt jede Menge Informationen, wie Sie das Modul zu verbinden, möchte ich auf die Software zu konzentrieren, um eine Verbindung herzustellen Thingspeak Die SoftSerial Bibliothek wird für die Fehlersuche gegeben. es ist nicht wirklich notwendig, wenn die progrem funktioniert. Das gleiche gilt für alle print-Anweisungen an die serielle Schnittstelle Software Ich benutze 3 Analogwerte anstatt ein Beispiel mit dem BMP108 und DHT11 wie erfordert Bibliotheken, so dass die Umsetzung der theESP8266 ist leichter zu verfolgen. Sobald Sie, dass, ist es leicht, andere Sensoren zu implementieren. So stellen Sie sicher, dass Sie alle Ausgaben werden zu einem String Im Folgenden ein Programm zur Verbindung 3 analoge Sensoren, um über eine ESP8266 Modul Thingspeak: // <a Href="https://nurdspace.nl/ESP8266" rel="nofollow"> https://nurdspace.nl/ESP8266 </a> //http://www.instructables.com/id/Using-the-ESP8266-module/ //https://www.zybuluo.com/kfihihc/note/31135 //http://tminusarduino.blogspot.nl/2014/09/experimenting-with-esp8266-5-wifi-module.html //http://www.cse.dmu.ac.uk/~sexton/ESP8266/ //https://github.com/aabella/ESP8266-Arduino-library/blob/master/ESP8266abella/ESP8266aabella.h //http://contractorwolf.com/esp8266-wifi-arduino-micro/ // ************************************************ ********** #include <SoftwareSerial.h> int sensor_temp = A0; int value_temp; int sensor_light = A1; int value_light; int sensor_humid = A2; int value_humid; #define DEBUG FALSE // auskommentieren, um Debug-Mitteil entfernen // * - Hardware-Serien #define _baudrate 9600 // * - Software Serien // #define _rxpin 2 #define _txpin 3 SoftwareSerial debug (_rxpin, _txpin); // RX, TX // * - IoT Informationen #define SSID "[YOURSSID]" #define PASS "[IhrKennwort]" #define IP "184.106.153.149" // ThingSpeak IP-Adresse: 184.106.153.149 // GET / aktualisieren key = [THINGSPEAK_KEY] & field1 = [Daten 1] & Feld2 = [Daten 2] ...?; String GET = "GET / aktualisieren key = [ThingSpeak_ (Write) API_KEY]?"; Leere Setup () { Serial.begin (_baudrate); debug.begin (_baudrate); sendDebug ("AT"); Verzögerung (5000); if (Serial.find ("OK")) { debug.println ("erhalten: OK \ nData zum Senden bereit!"); connectWiFi (); } } Leere Schleife () { value_temp = analogRead (sensor_temp); value_light = analogRead (sensor_light); value_humid = analogRead (sensor_humid); String temp = String (value_temp); // einen String drehen Integer Schnurlicht = String (value_light); // einen String drehen Integer String feuchten = String (value_humid); // einen String drehen Integer updateTS (Temperatur, Licht, Feuchtigkeit); Verzögerung (3000); // } // ----- Aktualisieren die Thingspeak String mit 3-Werte Leere updateTS (String T, String L, String H) { // ESP8266 Client- String cmd = "AT + CIPSTART = \" TCP \ ", \" "; // Setup TCP-Verbindung cmd + = IP; cmd + = "\", 80 "; sendDebug (cmd); Verzögerung (2000); if (Serial.find ("Error")) { Debug.Print ("empfangen: Fehler \ nExit1"); zurück; } cmd = GET + "& field1 =" + T + "& Feld2 =" + L + "& field3 =" + H + "\ r \ n"; Serial.print ("AT + CIPSEND ="); Serial.println (cmd.length ()); if (Serial.find (">")) { Debug.Print (">"); Debug.Print (cmd); Serial.print (cmd); } sonst { sendDebug ("AT + CIPCLOSE"); // Nähe TCP-Verbindung } if (Serial.find ("OK")) { debug.println ("erhalten: OK"); } sonst { debug.println ("empfangen: Fehler \ nExit2"); } } nichtig sendDebug (String cmd) { Debug.Print ("senden:"); debug.println (cmd); Serial.println (cmd); } boolean connectWiFi () { Serial.println ("AT + CWMODE = 1"); // WiFi STA-Modus - wenn "3" ist es sowohl Client und AP Verzögerung (2000); // Connect mit AT + CWJAP = "SSID" Router "Passwort"; // Prüfen, ob mit AT + CWJAP angeschlossen? String cmd = "AT + CWJAP = \" "; // Registriert accespoint cmd + = SSID; cmd + = "\", \ ""; cmd + = PASS; cmd + = "\" "; sendDebug (cmd); Verzögerung (5000); if (Serial.find ("OK")) { debug.println ("erhalten: OK"); return true; } sonst { debug.println ("empfangen: Error"); return false; } cmd = "AT + CIPMUX = 0"; // Setze Einzelverbindung sendDebug (cmd); if (Serial.find ("Error")) { Debug.Print ("empfangen: Error"); return false; } } NOTIZ In der neuesten Version der Firmware ESP8266 AT + CIOBAUD wird nicht mehr unterstützt und meldet Fehler. Der Ersatz-Befehl AT + IPR. Sehen Sie hier für weitere Details: - www.esp8266.com/viewtopic.php?f=13&t=718Step 4: einen Bonus Falls Sie wollen nicht Thingspeak verwenden, aber wollen einfach nur Ihren eigenen Webserver: mit diesem Programm: / * * DHT11 Sensor an Pin 2 <a href="http://arduino-info.wikispaces.com/ethernet-temp-humidity" rel="nofollow"> http: //arduino-info.wikispaces.com/ethernet-temp -...> Basierend auf Code von David A. Mellis & Tom Igoe Von diy_bloke angepasst * Bmp180sensor auf A4 / A5 * / / * ----- (Import benötigten Bibliotheken) ----- * / #include <SPI.h> #include <Ethernet.h> #include <dht11.h> #include <Wire.h> // # include <Adafruit_Sensor.h> // # include <Adafruit_BMP085_U.h> #include <Adafruit_BMP085.h> / * ----- (Deklarieren von Konstanten und Pin-Nummern) ----- * / #define DHT11PIN 2 // Die Temperatur / Feuchte-Sensor // Geben Sie eine MAC-Adresse und IP-Adresse für Ihren Controller unten. // Die IP-Adresse wird in Abhängigkeit von Ihrem lokalen Netzwerk: Byte-mac [] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED}; / * ----- (Declare-Objekte) ----- * / IPAddress ip (192,168,1, 177); // Der Ethernet-Server-Bibliothek initialisieren // Mit der IP-Adresse und Port Sie verwenden möchten, // (Port 80 ist standardmäßig für HTTP): EthernetServer-Server (80); // Adafruit_BMP085_Unified bmp = Adafruit_BMP085_Unified (10085); Adafruit_BMP085 bmp; DHT11 DHT11; // Der Sensor Object / * ----- (Variablen deklarieren) ----- * / Leere setup () / ****** SETUP: läuft einmal ****** / { // Öffnen der seriellen Kommunikation und warten Port zu öffnen: Serial.begin (9600); while (! Serial) { ; // Warten, für die serielle Schnittstelle zu verbinden. Leonardo brauchte nur } // Starten Sie die Ethernet-Verbindung und den Server: Ethernet.begin (mac, ip); server.begin (); Serial.print (F ("Server ist")); Serial.println (Ethernet.localIP ()); } // - (Ende Setup) --- Leere Schleife () / * ---- (LOOP: LÄUFT immer und immer wieder) ---- * / { // Hört für eingehende Clients EthernetClient client = server.available (); if (Client) { Serial.println (F ("neuer Kunde")); // Eine HTTP-Anforderung endet mit einer Leerzeile boolean currentLineIsBlank = true; while (client.connected ()) { if (client.available ()) { char c = client.read (); Serial.write (c); //, Wenn Sie auf das Ende der Zeile bekommen haben (erhielt einen Zeilenumbruch // Zeichen) und die Zeile leer ist, die HTTP-Anforderung beendet ist, // So dass Sie eine Antwort senden if (c == '\ n' && currentLineIsBlank) { // Einen Standard http-Antwort-Header zu senden client.println ("HTTP / 1.1 200 OK"); client.println ("Content-Type: text / html"); client.println ("Connnection: close"); client.println (); client.println ("<! DOCTYPE HTML>"); client.println ("<html>"); // Fügen Sie ein Meta-Refresh-Tag, so dass der Browser zieht wieder alle 5 Sekunden: client.println ("<meta http-equiv = \" aktualisieren \ "content = \" 5 \ ">"); client.println ("<head>"); client.println ("<title>"); client.println (F ("My Home Environment")); client.println ("</ title>"); client.println ("</ head>"); client.println ("<body>"); client.print (F ("<h3> My Home Environment </ h3>")); //client.println ("<br />"); / * ---- (Get Sensormessung, berechnen und ausdrucken) ----------------- * / int chk = DHT11.read (DHT11PIN); Serial.print (F ("Sensor lesen:")); Schalter (chk) { Bei 0: Serial.println (F ("OK")); Unterbrechung; Bei -1: Serial.println (F ("Prüfsummenfehler")); Unterbrechung; Bei -2: Serial.println (F ("Time out error")); Unterbrechung; Standard: Serial.println (F ("Unbekannter Fehler")); Unterbrechung; } / * Holen Sie sich einen neuen Sensor (BMP085) Veranstaltung * / // Sensors_event_t Ereignis; // Bmp.getEvent (& event); // -------------- client.print (F ("<table style =" border: 1px solid black; background-color: white; ">")); client.print (F ("<tr> <td>")); client.print ("<font color =" red "> Temperatur </ font> (° C):"); client.print (F ("</ td> <td align =" richtigen ">")); client.println ((float) DHT11.temperature, 1); client.println (F ("<br />")); client.print (F ("</ td> </ tr>")); client.print (F ("<tr> <td>")); client.print ("<b> Temperatur </ b> (° F):"); client.print (F ("</ td> <td align =" richtigen ">")); client.println (Fahrenheit (DHT11.temperature), 1); client.println ("<br />"); client.print (F ("</ td> </ tr>")); client.print (F ("<tr> <td>")); client.print ("<font color =" Blue "> Luftfeuchtigkeit </ font> (%):"); client.print (F ("</ td> <td align =" richtigen ">")); client.println ((float) DHT11.humidity, 0); client.println ("<br />"); client.print (F ("</ td> </ tr>")); client.print (F ("<tr> <td>")); / * client.print ("<b> Temperatur </ b> (K):"); client.println (Kelvin (DHT11.temperature), 1); client.println ("<br />"); * / client.print ("<i> Taupunkt </ i> (° C):"); client.print (F ("</ td> <td align =" richtigen ">")); client.println (Taupunkt (DHT11.temperature, DHT11.humidity)); client.println ("<br />"); client.print (F ("</ td> </ tr>")); client.print (F ("<tr> <td>")); client.print ("<i> Dew PointFast </ i> (° C):"); client.print (F ("</ td> <td align =" richtigen ">")); client.println (dewPointFast (DHT11.temperature, DHT11.humidity)); client.println ("<br />"); client.print (F ("</ td> </ tr>")); client.print (F ("<tr> <td>")); if (! bmp.begin ()) { client.print ("geen Sensor"); } sonst { client.print ("Druck (hPa):"); client.print (F ("</ td> <td align =" richtigen ">")); client.println (bmp.readPressure () / 100,0); client.print (F ("</ td> </ tr>")); client.print (F ("<tr> <td>")); client.print ("Druck (mmHg):"); client.print (F ("</ td> <td align =" richtigen ">")); client.println (bmp.readPressure () / 133,3); client.print (F ("</ td> </ tr>")); client.print (F ("<tr> <td>")); client.println ("Temperatur (° C):"); client.print (F ("</ td> <td align =" richtigen ">")); client.print (bmp.readTemperature ()); client.println ("<br />"); } client.print (F ("</ td> </ tr>")); client.print (F ("</ table>")); / * Anzeige der Ergebnisse (Luftdruck ist Maßnahme in hPa) * / / * Anzeige Luftdruck in hPa * / / * Client.print ("Druck:"); client.println (event.pressure); client.println ("hPa"); client.println ("<br />"); * / / * -------- (End Sensor lesen) -------------------------------- * / client.println ("</ body>"); client.println ("</ html>"); Unterbrechung; } if (c == '\ n') { // Sie beginnen eine neue Linie sind currentLineIsBlank = true; } else if (c! = '\ r') { // Sie ein Zeichen in der aktuellen Zeile bekommen haben currentLineIsBlank = false; } } } // Den Webbrowser Zeit, um die Daten zu empfangen geben Verzögerung (1); // Schließen Sie die Verbindung: client.stop (); Serial.println (F ("Client disonnected")); } } // END-Schleife / * ----- (Declare Benutzer geschriebenen Funktionen) ----- * / // // Celsius in Fahrenheit Konvertierung Doppel Fahrenheit (Doppel Celsius) { Rück 1,8 * C + 32; } // Celsius Kelvin Umwandlung Doppel Kelvin (Doppel Celsius) { Rück Celsius + 273,15; } // Taupunkt Funktion NOAA // Referenz: <a href="http://wahiduddin.net/calc/density_algorithms.htm" rel="nofollow"> http: //arduino-info.wikispaces.com/ethernet-temp -...> Doppel Taupunkt (Doppel Celsius, Doppel Luftfeuchtigkeit) { Doppel A0 = 373,15 / (273,15 + Celsius); Doppel SUM = -7,90298 * (A0-1); SUM + = 5,02808 * log10 (A0); SUM + = -1.3816e-7 * (pow (10, (11,344 * (1-1 / A0))) - 1); SUM + = 8.1328e-3 * (pow (10, (- 3,49149 * (A0-1))) - 1); SUM + = log10 (1013,246); Doppel VP = pow (10, SUM-3) * Luftfeuchte; Doppel-T = log (VP / 0,61078); // Var Temp zurück (241,88 * T) / (17,558-T); } // Delta max = 0,6544 wrt Taupunkt () // 5x schneller als Taupunkt () // Referenz: <a href="http://en.wikipedia.org/wiki/Dew_point" rel="nofollow"> http: //arduino-info.wikispaces.com/ethernet-temp -...> Doppel dewPointFast (Doppel Celsius, Doppel Luftfeuchtigkeit) { Doppel a = 17,271; Doppel b = 237,7; Doppel temp = (a * Celsius) / (b + C) + log (Feuchte / 100); Doppel Td = (b * temp) / (a ​​- temp); Rück Td; } /* ( DAS ENDE ) */ Schritt 5: Mehr auf der ESP8266 Die ESP8266 kann als Standalone-Gerät IoT verwendet werden, ohne einem Arduino. Es kann von der Arduino IDE programmiert werden, wenn Sie die richtige Karte installiert. Lesen Sie http: //makezine.com/2015/04/01/installing-building ... für weitere Informationen$(function() {$("a.lightbox").lightBox();});

    Seiten: