ESP8266 y Arduino con sensor LM35 y servidor Web
Monitoreo de sensor LM35 y servidor web con modulo ESP8266 y Arduino
En este tutorial aprenderemos como usar y conectar el módulo ESP8266 con Arduino, y un sensor de temperatura LM35 creando una página web para visualizar los datos que nos manda el Arduino así quedaría al terminar:
Lo que necesitaremos es:
–Un sensor de temperatura L.M.35.
Lo primero es saber reconocer los pines de nuestro módulo ESP8266.
Aquí se observa una imagen:
Después de conocer un poco nuestro modulo lo siguiente es conectarlo al Arduino:
-El pin “URXD” este conectado al pin 2 de Arduino.
-El pin “UTXD” este conectado al pin 3 de Arduino.
-El pin “VCC” y “CH_PD” esten conectados al pin “3.3v” de Arduino (no es recomendable conectarlo a “5v” por qué podrían dañarse).
-El pin “GND” este conectado al pin “GND” de Arduino.
CONECTANDO LM35
Después conectamos nuestro sensor a nuestro Arduino de esta manera:
– pin 1 lo conectamos al pin “5v” de Arduino.
-pin 2 lo conectamos al pin “a0″ de Arduino.
-pin 3 lo conectamos al pin “GND” de Arduino.
aquí se observa una imagen de las conexiones:
Después de realizar las respectivas conexiones, pasamos a nuestro PC y abrimos un nuevo sketch de arduino, ahora copeamos y pegamos este código al programa de arduino:
[code language=»cpp»]
#include
SoftwareSerial BT1(3, 2); // RX | TX
char txt;
void setup()
{ Serial.begin(9600);
BT1.begin(115200);
}
void loop()
{if (Serial.available())
{txt = Serial.read();
BT1.print(txt);
}
if (BT1.available())
{txt = BT1.read();
Serial.print(txt);
}
}
[/code]
Después de pasar el código, conectamos y lo cargamos al arduino, luego abrimos el monitor serial y nos aseguramos que en la parte de abajo diga “Ambos NL & CR” y en los baudios”9600 baudios” hecho esto ahora cortamos y volvemos a conectar la alimentación del módulo WI-FI para reiniciarlo y después de unos momentos veremos algo como esto y un poco más abajo la palabra “ready”:
Si no apareciera volver a reiniciar el modulo . Si no se entendiera el mensaje verificar que los baudios del módulo ESP8266 sea “115200 baud” y si no bajar los baudios hasta ver algo legible.
CONFIGURANDO EL ESP8266
ahora cambiamos la configuración del modulo con el siguiente comando.
“AT+CIOBAUD=9600"
Después de hacer esto volver a cambiar los baudios de 115200 a 9600 en el codigo para estabilizar la comunicación con Arduino por que podría llegar a tener errores en la comunicación.
Cambiamos esta parte:
[code language=»cpp»]
void setup()
{ Serial.begin(9600);
BT1.begin(9600);
}
[/code]
Después comenzamos a configurar el modulo, ingresamos en el monitor serial la palabra “AT”.
Y recibiríamos un “OK”:
Después probamos este comando para ver en qué modo está configurado el modulo, nos respondería con un “+CWMODE: 3” y si no aparece el modo 3 utilizamos el comando AT “AT+CWMODE=3” :
CONECTANDO A UNA RED
Después pasamos a revisar nuestras redes WI-FI mediante el comando “AT+CWLAP” y nos mostraría algo como esto:
Ahora nos conectaremos a una red, en mi caso será “FAMILIA TORRES” y claro con su contraseña.
Mediante este comando AT+CWJAP=”FAMILIA TORRES”,”torres150”.
Después nos respondería con algo como esto:
Después vemos que dirección “IP” se nos asignó con el comando AT+CIFSR.
Y nuestra dirección será la segunda en aparecer (la dirección puede variar):
Tenemos que recordar esta IP o anotarla porque es la que ingresamos en nuestro navegador.
Ahora tenemos que habilitar las conexiones múltiples y habilitar un servidor momentáneo.
Mediante los comandos «AT+CIPMUX=1» y este otro «AT+CIPSERVER=1,80»:
Después ingresamos la dirección IP del módulo en nuestro navegador:
Ahora probaremos escribiendo un “/” después de la IP luego escriban lo que gusten y en el monitor serial aparecerá lo que escribieron en su navegador:
Ahora descargamos este condigo que aparece a continuacion este código en su arduino (sin desconectar el módulo wifi y recordando la IP sino tendrían que volver a configurar su módulo otra vez).
PROGRAMA EN ARDUINO
En el código esta agregado un poco de código html lo cual explicare un poco para que saber que hace cada línea en el código.
[code language=»cpp»]
#include <SoftwareSerial.h>
SoftwareSerial BT1(3, 2); // RX | TX
int n1;
float temp;
void setup()
{Serial.begin(9600);
BT1.begin(9600);
pinMode(8,OUTPUT);
pinMode(9,OUTPUT);
}
void loop()
{ while (BT1.available() >0 )
{char c = BT1.read();
if (c == 71)
{Serial.println("peticion web enviada");
delay(500);
servidor();
}
}
}
void escribir(String text)
{BT1.print("AT+CIPSEND=0,");
BT1.println(text.length());
if (BT1.find(">")) // Si se recibe el mensaje
{Serial.println(text);
BT1.println(text); //mandamos el mensaje por el wifi
delay(10);
while ( BT1.available() > 0 )
{if ( BT1.find("SEND OK") ) //buscamos "ok" y luego salimos
break;
}
}
}
void servidor(void)
{ escribir("<!DOCTYPE HTML>");
escribir("<html>"); //una pagina web necesita esto <HTML> y </HTML> es el inicio y fin del documento
escribir("<head><title>lm35 arduino esp8266 html</title>"); //nombre de la pestaña que llevara la pagina
escribir("<meta http-equiv=\"refresh\" content=\"5\"></head>"); //tiempo para refrescar la pagina web
escribir("<body><h1> <FONT SIZE=\"5\" COLOR=\"red\"> ejemplos </h1>"); //titulo del inicio de la pagina
escribir(" <BODY BGCOLOR=\"black\"> ");
temp = (5.0 * analogRead(0) * 100.0) / 1024;
escribir("<FONT FACE=\"Arial\" SIZE=\"5\" COLOR=\"blue\"> la temperatura es </FONT>"); //escribimos y cambiamos el tamaño, letra y color
escribir(String(temp)); //imprimimos la variable
escribir(" grados <br /><br />");
escribir("<DIV align=\"center\"><A HREF=\"http://www.hetpro.com\" target=\"_blank\">hetpro.com</a><BR></DIV>");
delay(1);
BT1.println("AT+CIPCLOSE=0");
//delay(500);
[/code]
Después de cargar el código en el Arduino abrimos en monitor serial e ingresamos la dirección IP y tendríamos una página como esta:















BUEN APORTE , UNA PREGUNTA TENDRAS EL FIRMWARE PARA CONFIGURAR EL ESP8266 . CON EL QUE TENGO NO RECONOCE EL PROCESO DEL LOS COMANDOS AT
No lo tengo a la mano, pero te paso un link donde tienes la info para hacer un update: http://www.instructables.com/id/Intro-Esp-8266-firmware-update/
UNA PREGUNTA MAS Y SI QUISIERA HACERLO CON UN DS18B20 QUE ES DIGITAL QUE PARTES CAMBIO EN EL CODIGO DEL LM35
Tendrías que revisar primero el funcionamiento del DS4/B20 ya que es otro sensor con otro protocolo distinto, seria tema para otro tutorial. Saludos.
te lo agradeceria mucho y gracias por responder , espero el ese tutorial , saludos
ya realize todos los pasos al pie de la letra ya tengo datos y respuesta solo que no me aparece la pagina tal cual esta en tu imagen solo me da los grados y los partes que estan entre comillas, pro la pantalla en fondo blanco
Saludos;
Excelente trabajo.
Este programa debe cargarse eligiendo el modulo Generic ESP8266 o se debe cargar el programa a la placa Arduino, en mi caso un arduino Nano. quedo atento.
Gracias
Hola buen dia, debe cargarse al Arduino el modulo solo ayuda a realizar la comunicacion, saludos.
hola muy buen trabajo me ayudo mucho.
quiero consultarte algo, tienes algún ejemplo de como enviar una cadena serial y visualizarlo en una pagina web?
Hola buen dia, gracias por sus comentarios de momento no tenemos disponible esa informacion, saludos
BUEN DIA, disculpa tengo un problema y es la siguiente:
AT+CIFSR
+CIFSR:APIP.!192.168.4.0″
+CIFSR:APN�C,»a2:20:`6:08:58:d7″
+CIFSR:T.Fa7
como puedes ver no recibo bien la segunda dirección, sabrías el motivo ?
Hola, se podría usar el mismo código con el sensor de temperatura ky-001?
Si, solo tienes que reajustar tus valores de la recta. Saludos.
Tengo el mismo error, supiste como resolverlo?
Después de cargar el código, abrir el monitor serial, desconectar y desconectar de la fuente de alimentación el modulo, no me carga nada en el monitor serias sabes a que se debe eso?