meta data de esta página
  •  

Diferencias

Muestra las diferencias entre dos versiones de la página.

Enlace a la vista de comparación

Próxima revisión
Revisión previa
electronica:esp8266:webtemperatura [2016/08/29 23:33] – creado lcelectronica:esp8266:webtemperatura [2023/01/18 14:36] (actual) – editor externo 127.0.0.1
Línea 1: Línea 1:
-===== Servidor Web de humedad y temperatura =====+===== 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 |}} 
 +<note>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</note> 
 +==== Código ==== 
 +<sxh c> 
 +  
 +// 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 "); 
 +
 +</sxh> 
 +Una vez que hemos comprobado por el serial que funciona correctamente, vamos a modificar el programa para obtener los datos desde el navegador 
 + 
 +<sxh javascript> 
 +// 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); 
 + 
 +
 +</sxh> 
 + 
 +==== 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