En esta práctica vamos a utilizar el ESP8266 para monitorizar via web la humedad y temperatura de un sensor DHT11. Posteriormente modificaremos el código para enviarlo a un servidor en la nube desde el que monitorizar desde cualquier punto.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
// Libreria para Sensores DHT #include "DHT.h" #define DHTPIN 4 // Pin del ESP8266 al que está conectado. El 4 corresponde al D2 del ESP8266 // Descomentar segun el tipo de sensor DHT usado #define DHTTYPE DHT11 // DHT 11 // Inicializa el sensor DHT dht(DHTPIN, DHTTYPE); // Configura Arduino void setup() { Serial.begin(115200); dht.begin(); } void loop() { // Espera tres segundos entre mediciones. Con 2s daba problemas de lectura delay(3000); // Obtiene la Humedad float h = dht.readHumidity(); // Obtiene la Temperatura en Celsius float t = dht.readTemperature(); // Control de errores, valida que se obtuvieron valores para los datos medidos if (isnan(h) || isnan(t)) { Serial.println( "Falla al leer el sensor DHT!" ); return ; } Serial.print( "Humedad: " ); Serial.print(h); Serial.print( " %\t" ); Serial.print( "Temperatura: " ); Serial.print(t); Serial.println( " *C " ); } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 |
// Librerias #include "ESP8266WiFi.h" #include "DHT.h" // WiFi p const char* ssid = "miwifi" ; const char* password = "mipassword" ; #define DHTPIN 4 // Pin del ESP8266 al que está conectado. El GPIO 4 corresponde al D2 del ESP8266-12E NodeMCU v3 // Descomentar segun el tipo de sensor DHT usado #define DHTTYPE DHT11 // DHT 11 WiFiServer server(80); // Inicializa el sensor DHT dht(DHTPIN, DHTTYPE); void setup() { Serial.begin(115200); dht.begin(); // Conectando a la WIFI Serial.println(); Serial.println(); Serial.print( "Conectando a " ); Serial.println(ssid); WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print( "." ); } // Iniciamos el servidor web server.begin(); Serial.println( "Servidor Iniciado" ); Serial.println( "" ); Serial.println( "Conectado a la WIFI" ); Serial.println( "dirección IP: " ); Serial.println(WiFi.localIP()); } void loop() { // Verifica si se ha conectado un cliente WiFiClient client = server.available(); if (!client) { return ; } // Espera tres segundos entre mediciones delay(3000); // Obtiene la Humedad float h = dht.readHumidity(); // Obtiene la Temperatura en Celsius float t = dht.readTemperature(); // Control de errores, valida que se obtuvieron valores para los datos medidos if (isnan(h) || isnan(t)) { Serial.println( "Falla al leer el sensor DHT!" ); client.print( "Falla al leer el sensor DHT" ); return ; } // Preparamos la respuesta String s = "HTTP/1.1 200 OK\r\nContent-Type: text/html\r\n\r\n<!DOCTYPE HTML>\r\n" ; s += "\r\n<html><head><meta http-equiv=\"refresh\" content=\"5\"></head><body>\r\n" ; // refresca automáticamente la página cada 5s s += "<h2>Medida de Temperatura y Humedad</h2>" ; s += "Humedad=" + String(h) + "%<br>" ; s += "Temperatura=" + String(t)+ "*C<br>" ; s += "</body></html>\n" ; client.print(s); } |