¿Cuál es la mejor manera de detectar el parpadeo de LED externo con ESP8266 manteniendo el consumo de energía del circuito muy bajo?

Tengo un led externo (el color es rojo) que parpadea con frecuencia variable. Necesito monitorear esos destellos, calcular cuántos destellos de led hay en un minuto y registrarlos.

Hice un primer intento con un Arduino + fotorresistor + LM358 como comparador (para obtener la señal de ENCENDIDO/APAGADO del fotorresistor) y funciona.

esquemático

simular este circuito : esquema creado con CircuitLab

Los uso porque tengo esos componentes disponibles para hacer una prueba, pero ahora necesito crear un circuito muy pequeño con muy bajo consumo de energía y conexión inalámbrica.

Especificaciones:

  • microcontrolador: ESP8266-01
  • VDD: 3,3 V (batería tipo moneda)
  • frecuencia led hasta (alrededor de) 5Hz

¿Qué pasa con el circuito del sensor de luz? ¿Cuál es la mejor manera de simplificarlo y mantener el consumo muy bajo?

NOTA: No puedo abrir/modificar el dispositivo que necesito monitorear. La única forma de monitorear su actividad es a través de leds de actividad.

Esto huele mucho a un problema XY, ¿qué estás tratando de resolver realmente? Nunca he visto una aplicación en la que monitorear un LED parpadeante fuera la solución adecuada.
¿Qué tal si reemplazamos el LED por un optoacoplador, ya que incluye un LED en su interior?
Tengo un medidor de electricidad que parpadea un LED una vez por consumo de alrededor (supongo) 10k Joules. El conteo de destellos pretende ser una forma sin contacto de leer el consumo de electricidad, incluso hay un hueco alrededor de las áreas de LED diseñado para sostener un optodetector complementario. Me pondré a ello en algún momento! ¿Cuánto duran los flashes? Una buena manera de ahorrar energía es dormir la mayor parte del tiempo. ¿Hay tiempo para encender el detector de luz, estabilizarlo, volver a dormir el 90 % del tiempo, todo dentro de la duración de un destello? No puede abrir un medidor para meterse con el LED.
Es similar a lo que dice Neil_UK: No puedo desarmar, modificar, etc. el dispositivo* que necesito monitorear. La única forma es monitorear su actividad a través de la lectura de la actividad del led. La frecuencia del Led no es muy alta, hasta unos 5Hz ().
La frecuencia del LED es de aproximadamente 5 Hz, pero ¿qué pasa con el ciclo de trabajo? Quiero decir, ¿está encendido durante 10 ms y apagado durante 200 ms, o es 50%-50%?
La frecuencia no es fija. Es variable: según mi medida con el circuito de Arduino, la frecuencia nunca supera los 5 Hz, pero puede ser inferior (< 0,5 Hz también). Nunca analizo el ciclo de trabajo porque pensé que no tiene sentido en este contexto.
Mantenga activo el circuito de detección de luz hasta que se detecte la luz. Una vez que la luz esté apagada, PASO 1: vaya a dormir por MINIMUM_NO_LED_DURATION. PASO 2 comience a buscar LED por menos de MINIMUM_LED_ON_DURATION duración. ir al paso 1.
@PlasmaHH, ¿alguna vez trabajó en el negocio de medidores de kWh? ;) (muchos aparatos de monitoreo LED parpadeantes allí)
@PkP: aquellos con los que he trabajado tenían un LED IR que transmitía datos constantemente
El ciclo de trabajo de @Noisemaker es relevante, ya que, si usa un fototransistor y está conduciendo la mayor parte del tiempo (porque el LED está encendido), significa que el pullup desperdiciará energía la mayor parte del tiempo (R1 en el esquema de pjc50). Este será probablemente su drenaje principal, además del propio ESP8266.
@Noisemaker entonces, si desea reducir este desperdicio de energía, podría, por ejemplo, conectar el extremo superior del pullup a un GPIO, para que no active el pullup permanentemente, sino solo cuando lo verifique (regularmente). Si vale la pena (o si está completamente diseñado en exceso) depende del ciclo de trabajo de su LED.
Con el circuito arduino utilicé la interrupción en el pin donde se ha conectado el sensor. Así que mi idea fue usar el mismo enfoque con ESP8266 (debería ser posible). Entonces, el estado de suspensión será el siguiente paso, ahora necesito saber la mejor manera de generar una señal BAJA/ALTA cuando el LED está APAGADO/ENCENDIDO respectivamente. Esto activará la interrupción. ¿El uso de una resistencia pullup de alto valor debería reducir el consumo de energía lo suficiente?
El uso de un pullup más alto reducirá el consumo de energía, pero tendrá un tiempo de respuesta más lento. Y si lo configura demasiado alto, la fuga puede volverse significativa y el nivel alto será demasiado bajo para ser reconocido correctamente. Ahora, si será "suficiente" es una cuestión de compromiso y depende de muchos factores que desconozco (ciclo de trabajo del LED, corriente de espera ESP8266, corriente de transmisión ESP8266, tiempos de transmisión, vida útil esperada, etc.) ).
Estoy pensando en un fotodiodo: en polarización inversa, deja que la corriente fluya solo cuando la luz está encendida, ¿verdad? Así que no se desperdicia energía cuando el LED está apagado.
Encontré un fotodiodo IR en mi caja de componentes electrónicos y lo probé: funciona muy bien detectando la luz LED roja, pero es demasiado sensible a las fuentes IR externas (como otras luces en el entorno alrededor del circuito).

Respuestas (1)

He tenido éxito con https://github.com/dkroeske/emon-server :

ingrese la descripción de la imagen aquí

Sin embargo, lo estoy usando con un Pi que está cableado para alimentación y Ethernet. Nunca me he molestado en medir su consumo de energía, pero si usa un CMOS 555 y se deshace del LED de diagnóstico, debería ser bastante bajo.

Tendrá serios problemas para ejecutar un ESP8266 con celdas de moneda. La potencia de transmisión puede ser de varios cientos de miliamperios.

¡tienes razón! No cuidé la potencia de transmisión (envía datos cada 10 minutos). ¿Cambiar a una batería de iones de litio de 3,7 V con regulador de voltaje debería funcionar?
Si, eso suena bien. No estoy lo suficientemente familiarizado con el modelo de programación del ESP para saber cómo maneja el sueño, pero para obtener la mejor duración de la batería, debe estar dormido y sin wifi tanto como sea posible. Si no es muy bueno para dormir, puede valer la pena agregar un pequeño microcontrolador solo para hacer el conteo y el control de energía para el ESP.