ESP8266 WiFi temp luftfuktighet övervakning web app med hjälp av Arduino IDE (5 / 7 steg)
Steg 5: kod
Jag skrev ett mycket grundläggande skript som kommer att läsa sensordata och visas i en webbläsare för att Visa sensor o/p på en webbsida.
#include < ESP8266WiFi.h >
#include < WiFiClient.h >
#include < ESP8266WebServer.h >
#include < ESP8266mDNS.h >
#include < Wire.h >
HIH6130 I2C adress är 0x27(39)
#define Addr 0x27
CONST char * ssid = "NETGEAR34";
CONST char * lösenord = "sillyviolet195";
ESP8266WebServer server (80).
////////////////////////////////////////////////////////////////
void handleRoot() {
char temp [400].
unsigned int data [4].
Wire.beginTransmission(Addr);
Välj dataregister
Wire.write(0x00);
Stoppa I2C sändningen
Wire.endTransmission(); < /p >< p > / / förfrågan 4 byte data
Wire.requestFrom (Addr, 4); < /p >< p > / / Läs 4 byte data
fuktighet msb, luftfuktighet lsb, temp msb, temp lsb
om (Wire.available() == 4)
{
data [0] = Wire.read();
data [1] = Wire.read();
data [2] = Wire.read();
data [3] = Wire.read();
} < /P >< p > / / konvertera data till 14-bitar
int fuktighet = (((0x3F & data [0]) * 256) + data[1]) * 100,0) / 16383.0;
int temp1 = ((data [2] * 256) + (data [3] & 0xFC)) / 4;
int cTemp = (temp1 / 16384.0) * 165.0-40,0;
int fTemp = cTemp * 1,8 + 32; < /p >< p > / / Output data till seriell monitor
Serial.Print ("relativ luftfuktighet:");
Serial.Print(humidity);
Serial.println ("% RH").
Serial.Print ("temperaturen i Celsius:");
Serial.Print(cTemp);
Serial.println ("C").
Serial.Print ("temperaturen i Fahrenheit:");
Serial.Print(fTemp);
Serial.println "F".
Delay(500); < /p >< p > snprintf (temp, 400, < /p >< p >"
\
\
\
< /p >< p > \
< /p >< p > \
< /p >< p > \
\
< /p >< h1 > väder övervakning med ESP8266 < / h1 >< p > \
< /p >< h1 > HIH6130 I2C sensor mini modul < / h1 >< p > \
< /p >< p > fTemp_cTemp_Humidity: % 02d: % 02d: % 02d < /p >< p > \
< /p >< p > \
< /p >< p > ", < /p >< p > fTemp, cTemp, luftfuktighet
);
Server.send (200, "text/html", temp);
}
/////////////////////////////////////////////////////////////////
void handleNotFound() {
Sträng meddelande = "Filen inte Found\n\n";
meddelande += "URI:";
meddelande += server.uri();
meddelande += "\nMethod:";
meddelande += (server.method() == HTTP_GET)? "FÅ": "POST";
meddelande += "\nArguments:";
meddelande += server.args();
meddelande += "\n"; < /p >< p > för (uint8_t jag = 0; jag < server.args(); i ++) {
meddelande += "" + server.argName (i) + ":" + server.arg (i) + "\n";
} < /p >< p > server.send (404, "text/plain", meddelande);
} < /p >< p > void setup (void) {
Wire.BEGIN(2,14);
Serial.BEGIN (115200);
WiFi.begin (ssid, lösenord);
Serial.println (""); < /p >< p > / / Wait för anslutning
medan (WiFi.status()! = WL_CONNECTED) {
fördröjning (500).
Serial.Print (".");
} < /P >< p > Serial.println ("");
Serial.Print ("ansluten till");
Serial.println (ssid);
Serial.Print ("IP-adress:");
Serial.println (WiFi.localIP()); < /p >< p > om (MDNS.begin ("esp8266")) {
Serial.println ("MDNS responder började");
} < /p >< p > server.on ("/", handleRoot); < /p >< p >
server.onNotFound (handleNotFound);
Server.BEGIN();
Serial.println ("HTTP server började");
} < /p >< p > ogiltig loop (void) {
server.handleClient();
} < /p >