ESP8266 WEMOS D1 Servidor se cuelga

Hola a todos!

El problema que tengo es que el servidor web que creo con esta placa basada en el ESP8266 se queda colgado.

Lo primero que quiero hacer es contaros todo el proyecto por dos motivos: el primero para compartir lo que he aprendido y lo segundo para que el que conozca el ESP8266 pueda intuir cuál es el porblema.

Bueno, mi proyecto es hacer una termostáto para la caldera de mi casa pero que pueda controlarla desde una página web, en principio desde mi intranet y más adelante desde internet para poder poner en marcha la calefacción antes de llegar a casa, conocer la temperatura…más adelante le añadiré cosas.

En un principio la idea era usar un arduino nano con un ESP8266-01e (se puede conseguir por 2€ más o menos).

El uso del ESP8266 me planteabla el problema del consumo pico. Para los que no conozcais los ESP8266 tienen un consumo bajo, pero tiene picos que no soporta la salida de 3,3v del arduino (el ESP8266 trabaja a 3,3v).

Entonces me decanté por una placa basada en el ESP8266 y se llama WEMOS D1.
Esta placa es similar fisicamente a un arduino UNO y se puede programar dede el IDE arduino.Sólo hay que añadir la placa al IDE arduino (hay manuales en internet, es muy sencillo). El cable para conectar es un micro-USB (lo digo por si alguien compra uno que lo tenga en cuenta).

La programación es casi como el arduino con alguna diferencia. Por ejemplo los pines son D0, D1, D2,…
Y solo tiene una entrada analógica.

Bueno, volviendo al meollo de la cuestión:necesito un servidor web, una sonda de temperatura para poder medir esta y un relé para cerrar los contactos de la caldera (para quien no conozca el tema, de la caldera salen dos cables (o hay una regleta de conexiones en la que conectamos dos cables) y el termostato funciona como un interruptor (cuando la temperatura de consigna es superiora a la ambiente se cierra el circuito, en caso contrario, se abre).
Entonces tenemos, por un lado una WEMOS D1 con wifi para conectar por wifi, como sonda de temperatura uso una "NTC 3950 de 10K " (hay programas de gestión de esta sonda para arduino que funcionan para la wemos ). Para esta sonda necesitamos una resistencia para hacer un divisor de tensión , yo he usado una de 10k pero hay que comprobar su valor y cambiarlo en la programación, así como el valor real de la NTC 3950 que suele variar algo de los 10K (según su tolerancia) y por último un relé de los mormales que se usan para arduino (de 5v DC).

Bueno, el tema de programación es sencillo, he aprovechado ejemplos que he localizado en la red para el servidor web, y para la toma de temperatura con la NTC.

Copiar aquí, pegar allá… y después de una pruebas y cambios, todo funcionando.

Bueno, todo no.

Os voy a explicar primero cómo lo conecté y el problema que me encontré…

La alimentación de la placa la realizo con una fuente de alimentación de 9v y 1A. Conetandola al jack hembra que tiene la placa (como el arduino uno).
La sonda NTC la conecto a la entrada analógica alimentandola con el pin de 3,3v (recordad que los pines trabajan a esa tensión.
El relé lo alimento con la salida 5,5v del WEMOS (solo va a consumir el relé y la NTC).
La excitación de la bobina del relé la conecté al pin D2…

Y no había manera de que cambiara el estado de la bobina (digo cambiar porque el estado normal de las bobinas de estos relés son ON y se ponen a OFF cuando activas la salida, al menos con un arduino). Pero por comodidad usaré el término “activar”.

Estuve haciendo pruebas porque pensé que los 3,3v de la salida del D2 no eran suficientes para activar la bobina.
Por esto cogí un mosfet 2N7000. El colector a la salida 5v del WEMOS, el emisor a la excitación de relé y la base al pin D2 del WEMOS (la escogida en el programa para activar el relé).

Ahora pensarás, claro, así sí…Pues no. >:(

Empecé a hacer pruebas y al final se me ocurrió conectar el colector a GND… y así sí funciona.

Bueno, llegados a este punto conecté el montaje a los cables del termostato de la caldera y con la pequeña página web (no creí conveniente hacer algo complejo aún) subo y bajo en un grado la temperatura de consigna (la que queremos que alcance la temperatura ambiente). Cuando la consigna es superior a la ambiente el relé cierra contactos poniendo en marcha la caldera y al revés.

El problema que tengo ahora es que cuando pasan unos 4 minutos y no realizo ningún cambio en la página, el servidor se queda colgado y es necesario conectar y desconectar la fuente de alimentación para resetear el aparato. Claro es un p…

En principio no he encontrado más problemas en el ESP8266 que lo que he ledio por ahí de alimentarlo (y me refiero a la placa ESP8266-01e) desde el arduino (que es lo que suele hacerse por lo que he leido por ahí) y al tener un pico que el arduino no puede suministrar, el ESP se bloquea. Pero claro, no es el caso por que lo alimento con una fuente de 1A…

Bueno, espero que os haya parecido interesante a los que lo habeís leiso y espero que alguien me pueda echar una mano.

Gracias.

Os adjunto el código (no me pegueís, falta depurar y demás, eso al acabar)

Lo siento, pero no puedo adjuntarlo como dictan las normas ya que me paso del número máximo de caracteres.

Codigo.txt (7.94 KB)