===== 1. Servidor Web de humedad y temperatura ===== 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. ==== Materiales ==== * ESP8266-12E NodeMCU * Sensor DHT11 ==== Esquema ==== {{ :electronica:esp8266:nodemcudht11_bb.png?nolink&600 |}} En el esquema la patilla RSV a la que está conectado el sensor, es en la versión v3 del modeMCU la salida VU que corresponde con una salida a 5V del propio puerto usb ==== Código ==== // 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 "); } Una vez que hemos comprobado por el serial que funciona correctamente, vamos a modificar el programa para obtener los datos desde el navegador // 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\r\n"; s += "\r\n\r\n"; // refresca automáticamente la página cada 5s s += "

Medida de Temperatura y Humedad

"; s += "Humedad=" + String(h) + "%
"; s += "Temperatura="+ String(t)+"*C
"; s += "\n"; client.print(s); }
==== Referencias ==== * http://www.instructables.com/id/Midiendo-temperatura-con-ESP8266-y-DHT11/?ALLSTEPS * http://www.instructables.com/id/Autonomous-Weather-Station-With-ESP8266/?ALLSTEPS * http://arduinoamuete.blogspot.com.es/2015/12/creando-un-servidor-web.html