¿Cómo despertar ESP8266 con cambio de luz?

Quiero enviar información al servidor cuando la luz cambia (se enciende o se apaga). Por ahora, tengo una fotorresistencia conectada al pin ADC de ESP8266. Estoy midiendo voltaje y envio informacion a un servidor cuando cambia mucho. ESP permanece siempre encendido.

Aquí está mi circuito actual:

ingrese la descripción de la imagen aquí

Sin embargo, me gustaría hacerlo de una manera ligeramente más eficiente energéticamente.

El sensor se usará en un baño, por lo que la luz generalmente está apagada.

¿Quizás podría hacer que ESP8266 se despierte de alguna manera mediante una fotorresistencia y luego enviar una solicitud al servidor y esperar a que la luz se apague nuevamente y luego enviar la segunda solicitud e ingresar al modo de suspensión profunda? ¿O tal vez hay una mejor manera?

Estoy buscando ayuda para crear un circuito. ¿Qué debo usar? ¿Cómo debería ser el circuito?

¿Cuánto más eficiente energéticamente estás buscando? ¿Cuál es la carga actual de su circuito?
Solo un poco. Bueno, simplemente no quiero que mi ESP8266 esté encendido todo el tiempo. Si pudiera pasar al modo de suspensión profunda, aumentaría mucho su tiempo de vida con una sola batería, ¿no es así? Mi dispositivo actualmente funciona durante aproximadamente 2 semanas con 2x AA.
¿Está utilizando los modos de suspensión ya disponibles con temporizadores internos? Sin embargo, ¿cuál es el consumo actual real?
@Passerby Actualmente no estoy usando ningún modo de suspensión. Lo siento, no puedo medir el consumo de corriente preciso ahora (pero probablemente sea alrededor de 40 mA). Por favor, vea mi pregunta actualizada.

Respuestas (3)

La funcionalidad de sueño profundo del ESP8266 se administra vinculando el pin 16 al pin RESET y cuando llama a la función de sueño profundo, pasa la cantidad de microsegundos que desea dormir. Luego, el microcontrolador establece el pin 16 alto y se va a dormir. Después de la cantidad de tiempo especificada, el pin 16 baja y hace que el ESP8266 se reinicie. Consulte el pdf de "soluciones de bajo consumo" de Espressif para conocer los detalles de la API, incluidas algunas notas de aplicación.

Entonces, su plan de conectarse al pin 16 no funcionará exactamente. Necesita un circuito que detecte que el pin 16 es alto y luego genera un pulso bajo en RST cuando su condición se dispara. Sin conocer más detalles sobre su circuito y la condición de activación exacta, es difícil proporcionar una respuesta detallada.

Actualicé mi pregunta. Por favor echa un vistazo.

¡Ingrese al sueño profundo sin conectar GPIO16 y RESET conduce a un sueño profundo sin fin a menos que reinicie con un circuito externo!

Eso es lo que tienes que hacer. Conecte su fotorresistencia a un amplificador diferencial con monoflop en serie para garantizar pulsos limpios en el pin de reinicio o use un mcu de potencia ultrabaja para hacerlo. Entonces, cada vez que la luz cambia, el amplificador diferencial detecta la pendiente alta y activa el Monoflop.

Leer el Pin 16 no es imprescindible, puede usar un tiempo de espera en monoflop, pero agregar un AND-Gate tampoco es realmente difícil de hacer.

Simplemente puede poner el esp en modo de suspensión ligera y vincular un pin gpio como una interrupción para despertarlo. Haga que su fotorresistencia despierte el esp cada vez que se encienda la luz, luego envíelo al servidor. Eso debería ahorrar mucha energía.

Ver Esp8266