NodeMCU en español
NodeMCU - Juan Antonio Villalpando
-- Tutorial de NodeMCU en español --
Volver al índice del tutorial NodeMCU
____________________________
64.- NodeMCU, sensor de temperatura y humedad. Web Server. WiFi.
- Tenemos nuestro NodeMCU y un sensor de temperatura y humedad DHT11.
- Convertimos al NodeMCU en un Servidor Web en nuestra red doméstica WiFi, creamos una página web en ese servidor.
- Los usuarios que se conecten por WiFi a esa red y escriban la dirección web del Servidor Web NodeMCU, verán una página web con información de temperatura y humedad.
___________________________________________________
1.- Conexionado del NodeMCU y la pantalla LCD.
- Realizamos esta conexión.
- Fíjate, los datos están conectados al terminal D5 del NodeMCU, que se corresponde en el código al terminal 14 del ESP8266.
- Si conectamos el NodeMCU por USB al ordenador, tendremos en el terminal VV, una tensión de 5V, que son los que necesita el módulo DHT11.
___________________________________________________
2.- Librerías.
- Es muy importante buscar y encontrar las librerías apropiadas ya que de ellas resultará el funcionamiento o no del montaje.
- Aquí he puesto las librería que he utilizado con el IDE 1.8.2 de Arduino. Además de las librerías del DHT11, Adafruit_Unified_Sensor y ESP8288, he puesto otras dos Blynk y Liquid_Crystal_LCD que también son interesante tenerlas.
Varias_libraries.zip
___________________________________________________
3.- Código para crear un servidor web con el NodeMCU y enviar información de temperatura y humedad obtenidas con el sensor DHT11.
Código NodeMCU_wifi_temperatura.ino |
// Adaptado y modificado por Juan A. Villalpando.
// KIO4.com
// Convierte al NodeMCU en un Servidor Web y capta temperatura y humedad.
// Presenta temperatura y humedad a clientes WiFi.
#include <ESP8266WiFi.h>
#include <DHT.h> // Necesita las librerías DHT y Adafruit_Unified_Sensor
#define DHTTYPE DHT11
// Configuración de tu red.
const char* ssid = "Tu_nombre_de_red_wifi";
const char* password = "La_clave_de_tu_red_wifi";
// Servidor Web, puerto 80
WiFiServer server(80);
// DHT Sensor
const int DHTPin = 14; // Es el terminal D5 del NodeMCU
DHT dht(DHTPin, DHTTYPE);
// Variables de tipo char.
static char char_temperatura[7];
static char char_humedad[7];
static char char_indice_calor[7];
void setup() {
// Consulta el Serial Monitor para ver
// la IP asignada y las conexiones.
Serial.begin(115200);
delay(50);
dht.begin();
// Conexión WiFi
Serial.println();
Serial.print("Conectando con ");
Serial.println(ssid);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.println("WiFi conectada.");
// Arranque del Servidor Web
server.begin();
Serial.println("Servidor Web funcionando. Espera para ver tu IP...");
delay(10000);
// IP obtenida.
Serial.println(WiFi.localIP());
}
void loop() {
// Escucha a los nuevos clientes que quieren conectar con Servidor Web.
WiFiClient client = server.available();
if (client) {
Serial.println("Nuevo cliente.");
boolean blank_line = true;
while (client.connected()) {
if (client.available()) {
char c = client.read();
if (c == '\n' && blank_line) {
// LECTURA DE TEMPERATURA Y HUMEDAD
float temperatura = dht.readTemperature();
float humedad = dht.readHumidity();
// Consulta si hay fallo y vuelve a leer si lo hay.
if (isnan(humedad) || isnan(temperatura)) {
Serial.println("Error en la lectura del sensor DHT.");
strcpy(char_temperatura,"Error en el sensor de temperatura");
strcpy(char_humedad,"Error en el sensor de humedad.");
}
else{
// Convierte float a String para presentarlos en la web.
float indice_calor = dht.computeHeatIndex(temperatura, humedad, false);
dtostrf(indice_calor, 6, 2, char_indice_calor);
dtostrf(humedad, 6, 2, char_humedad);
dtostrf(temperatura, 6, 2, char_temperatura);
// Información de Temperatura y Humedad en el Serial Monitor.
Serial.print("Humedad: ");
Serial.print(humedad);
Serial.print(" %\t Temperatura: ");
Serial.print(temperatura);
Serial.print(" *C\t Índice de calor: ");
Serial.print(indice_calor);
Serial.print(" *C ");
}
// CREACIÓN DE LA PÁGINA WEB.
client.println("HTTP/1.1 200 OK");
client.println("Content-Type: text/html");
client.println("Connection: close");
client.println();
client.println("<!DOCTYPE HTML>");
client.println("<html>");
client.println("<head><meta charset=utf-8></head>");
client.println("<body><font face='Arial'><h1>ESP8266 - Temperatura y Humedad</h1>");
client.println("<h2><font color='#009900'>KIO4.COM - Juan A. Villalpando</font></h2><h3>Temperatura: ");
client.println(char_temperatura);
client.println("°C</h3><h3>Índice de calor: ");
client.println(char_indice_calor);
client.println("°C</h3><h3>Humedad: ");
client.println(char_humedad);
client.println("%</h3><h3></font>");
client.println("</body></html>");
break;
}
if (c == '\n') {
// Lectura de nueva línea.
blank_line = true;
}
else if (c != '\r') {
// Fin de caracter de esa línea.
blank_line = false;
}
}
}
// Cerrar la conexión con ese cliente.
delay(1);
client.stop();
Serial.println("Cliente desconectado.");
}
}
|
___________________________________________________
4.- En el Serial Monitor obtenemos la IP asignada y las conexiones de los clientes.
- Debemos ir al Serial Monitor para ver la IP que le ha asignado nuestro Router al NodeMCU.
___________________________________________________
5.- ¿Podría funcionar en internet?
- Sí, para ello debes entrar en la configuración de tu Router con nombre y contraseña y asignar el puerto del NodeMCU a su IP.
________________________________
|