6 votos

Estrategias de despertador del microcontrolador (ESP8266)

En el trabajo, tenemos un detector remoto de puerta magnética con batería que envía una señal a nuestro sistema de alarma cada vez que abrimos una puerta. La duración de la batería es casi un año.

Intenté replicar ese sistema en casa. Construí un circuito realmente simple alrededor del Esp8266 Thing. Es un detector de puerta alimentado por batería que envía una señal a mi teléfono celular cada vez que mi hijo abre su puerta cuando está tratando de quedarse dormido.

El código del programa es lo suficientemente simple: al activarse, el esp envía una señal a una IP específica y luego entra en modo de suspensión. La activación se realiza a través del pin DTR. Cuando se cierra la puerta, mantengo la línea DTR alta. Una vez que se abre la puerta, se libera la línea DTR y el programa se ejecuta una vez y entra en suspensión. Al cerrar la puerta, se restablece la línea DTR y está listo para otro ciclo.

También eliminé el indicador LED de encendido para aumentar la duración de la batería. Mi sistema funciona bien al final del día. Sin embargo, la duración de la batería es algo limitada (antes de quitar el LED duraba un par de días. Ahora, dura más, pero no anoté la nueva duración de la batería). La batería es una LiPo recargable de 1200 mAh. Siguiendo con ese proyecto, tengo un par de preguntas:

  1. ¿Es esta la forma adecuada de hacer algo así?
  2. ¿Hay una forma más estándar en la industria? (con el esp8266 o cualquier microcontrolador en general).
  3. ¿Alguna otra sugerencia de gestión de energía que pueda ser útil conocer?

0 votos

1) ¿Mediste el consumo de corriente en deep-sleep? 2) Creo que el ESP8266 Thing (y el ESP32 Thing relacionado) tenía un error de hardware en el que no activaban el pin /CS del chip de flash, y estaba consumiendo más del 50% de la energía en deep-sleep (~ 1mA)

0 votos

No medí la corriente porque no quería cortar los cables de mi batería y no tengo un adaptador en este momento para unir la batería y el dispositivo juntos. Sin embargo, intentaré encontrar una pieza para hacer la unión o simplemente llevar mi dispositivo al trabajo y encenderlo a través de una fuente de alimentación para medir la corriente en ambos estados solo para ver si se resolvió el error de hardware. Sin embargo, mi versión del dispositivo no tiene un chip FTDI integrado en la placa (es FTDI o cargador de batería).

0 votos

¿También cómo detectas el estado de la puerta? ¿Interruptor de láminas?

1voto

Mike Crittenden Puntos 2575

Anrieff tiene razón, el consumo de energía sigue siendo alto. Algunas cosas a tener en cuenta:

¿La interrupción DTR es realmente activada por flanco o el Thing se despierta muchas veces mientras DTR esté bajo?

Parece que el mayor consumo es al despertar, podrías hacer algún retraso para desactivar la detección de la apertura de la puerta durante un tiempo especificado después de la última. No creo que sea necesario una alarma cada 5 segundos.

Cómo averiguar el consumo de energía sin cortar cables:

  • Quita la batería y mide el voltaje, mejor con un voltímetro de mayor precisión.
  • Conecta el voltímetro al Thing.
  • Conecta la batería y anota el voltaje en varias etapas hasta el sueño profundo. También puedes ver cuánto tarda en llegar al sueño profundo.
  • Quita la batería y cárgala con un resistor de varios valores hasta obtener los valores en el paso anterior.
  • De los valores del resistor puedes obtener el consumo de corriente.

No es muy preciso pero puedes tener una idea de dónde se usa tu batería y si el consumo está en el rango que esperas.

Actualización porque no respondí a las preguntas 1 y 2

  1. En mi opinión no, pero el desarrollo rápido tiene un costo. Yo usaría algo más como un timbre inalámbrico para llevar la señal a un Thing alimentado por adaptador de pared.

  2. Sí, pero demasiado complicado para una tarea tan simple

Actualización siguiendo el comentario

  1. Depende del significado de "tal cosa"

1a. Tal cosa = solución rápida usando lo que tienes a mano. Respuesta = sí.

1b. Tal cosa = sensor profesional de apertura de puertas inalámbrico. Respuesta = no, Consejo amigable, no mires en una tienda de juguetes como Sparkfun para tales cosas. Ni sus productos ni tutoriales tienen nada que ver con el desarrollo de productos profesionales fiables.

  1. Sí, mira aquí un artículo sobre tecnologías inalámbricas de baja potencia utilizadas hoy, puedes encontrar enlaces a productos y placas de desarrollo y comparar los requisitos de energía para cada solución. Como ves, usar el AP casero es lo peor desde el punto de vista de la esperanza de vida.

  2. Respondido arriba

Editar para agregar algunas estrategias más:

Si el interruptor cerrado es lo suficientemente largo, alimenta tu placa a través del interruptor, al encender envía el ping y entra en el sueño profundo.

Si el sueño profundo sigue consumiendo demasiado o el evento es demasiado corto, entonces utiliza un monostable de hardware activado por el interruptor para obtener un tiempo de alimentación fijo para el Thing.

También puedes establecer en hardware una "ventana muerta" donde el interruptor sea ignorado después de un disparo para evitar múltiples eventos en un corto tiempo.

Usar interrupciones es una buena forma, aunque veo que el pin que estás utilizando tiene algo que ver con el reset de hardware, utilizar un reinicio largo no es bueno ya que muchos dispositivos siguen consumiendo mucho mientras se mantienen en reset.

Aún así, para productos de alta confiabilidad no puedes usar solo la activación por interrupción. En algún momento, una falla de EM podría poner al microcontrolador en un estado donde deshabilitar las interrupciones o ignorarlas. A partir de este punto, tu dispositivo está muerto y solo un reinicio de hardware puede ayudar.

Por eso se inventó el watchdog, si no tomas acción para reiniciar el watchdog por software, éste despertará/reiniciará el dispositivo después de un tiempo especificado. El tiempo suele estar configurado en la memoria flash y protegido de errores de software y fallas de EM. De esta manera, incluso si algo sale mal, siempre puedes hacer funcionar tu programa nuevamente y, eventualmente, informar el error y tomar una acción.

Siempre es buena práctica enviar una señal de "vivo" de vez en cuando por la misma razón.

Yendo más allá de tu proyecto, si el sensor no es tan amigable como un interruptor de puerta y requiere energía para sí mismo, entonces puedes configurar una interrupción por temporizador para despertar, alimentar el sensor y obtener los datos, o utilizar un generador de pulso de hardware que alimente ambos de vez en cuando. Aquí es donde un buen dispositivo te permitirá jugar con el reloj del sistema para minimizar el consumo de energía cuando no se necesita procesamiento. No es el caso del Thing.

0 votos

2. Estoy interesado en la versión complicada ya que el objetivo aquí es extraer conocimientos listos para el trabajo de ese proyecto. Para responder a tu pregunta sobre DTR. No, si DTR es bajo, el programa se ejecutará una vez y entrará en modo de suspensión profunda. Poner DTR alto paralizará completamente el microcontrolador hasta que se vuelva a bajar. Por lo tanto, no es activado por flanco. Como se mencionó anteriormente: el consumo se redujo significativamente cuando eliminé el LED de estado que siempre estaba encendido.

0 votos

@SimonMarcoux deberías hacer tu pregunta más legible en lugar de votar negativamente, cito "si tienes una buena manera de evitarlo ... puedes ignorar el resto de la pregunta", esto no muestra mucho interés profesional en la pregunta. Editaré mi respuesta en consecuencia.

0 votos

Independientemente del tipo de conexión inalámbrica, lo que más me interesa es cómo sueles controlar el sueño/despertar del microcontrolador a nivel industrial de calidad. Entiendo que otros protocolos de comunicación están diseñados para ser eficientes en energía. Un sí o un no no es de mucha ayuda en ese sentido. En cuanto a mi broma ridícula de papá: justo, la eliminaré.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X