Estrategias de activación del microcontrolador (ESP8266)

6

En el trabajo, tenemos un detector de puerta magnético a batería que envía una señal a nuestro sistema de alarma cada vez que abrimos una puerta. La vida útil de la batería es de casi un año.

Intenté replicar ese sistema en casa. Construí un circuito realmente simple alrededor de la esp8266 Thing . Es un simple detector de puertas que funciona con baterías que suena en mi teléfono cada vez que mi hijo abre la puerta cuando está tratando de quedarse dormido.

La rutina del código es bastante simple: tras la activación, los esp ping una IP específica y luego pasan a la suspensión profunda. El despertar se realiza a través del pin DTR. Cuando la puerta está cerrada mantengo la línea DTR arriba. Una vez que se abre la puerta, se libera la línea DTR y el programa se ejecuta una vez y se pone en suspensión. Cerrar la puerta restablece la línea DTR y está lista para otro ciclo.

También quité el indicador LED de encendido para aumentar la vida útil de la batería. Mi sistema funciona bien al final del día. Pero, la vida útil de la batería es algo limitada (antes de que retirara el LED, pasaron un par de días. Ahora dura más, pero no noté la nueva vida útil de la batería). La batería es de 1200 mAh recargable LiPo. Siguiendo con ese proyecto, tengo un par de preguntas:

  1. ¿Es esta la forma correcta de hacer tal cosa?
  2. ¿Hay una manera más estándar de la industria? (con el esp8266 o cualquier microcontrolador en general).
  3. ¿Alguna otra sugerencia de administración de energía que pueda ser útil conocer?
pregunta Simon Marcoux

1 respuesta

1

anrieff tiene razón, el consumo de energía sigue siendo alto. Algunas cosas para mirar:

¿La interrupción DTR realmente se activa por el borde o la cosa se despierta muchas veces mientras DTR está baja?

Parece que el mayor consumo se produce al despertar, es posible que se produzca un retraso para desactivar la detección de apertura de la puerta durante un tiempo específico después de la última. No creo que se necesite una alarma cada 5 segundos.

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

  • Quite la batería y mida el voltaje, mejor con un voltímetro de mayor precisión.
  • Conecte el voltímetro a la potencia Thing
  • Conecte la batería y anote el voltaje en varias etapas hasta que esté en suspensión profunda. También puede ver cuánto tiempo se tarda en ir a un sueño profundo.
  • saque la batería y cárguela con una resistencia de varios valores hasta que obtenga los valores del paso anterior
  • A partir de los valores de resistencia puede obtener el consumo actual.

No es muy preciso, pero puede obtener una pista de dónde se usa su batería y si el consumo está en el rango que espera.

Actualizar porque no respondí a las preguntas 1 y 2

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

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

Actualización después del 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 de apertura de puerta inalámbrico profesional. Respuesta = no, consejo amistoso, no mires una tienda de juguetes como Sparkfun para tales cosas. Ni sus productos ni sus tutoriales tienen nada que ver con el desarrollo de productos profesionales confiables.

  1. Sí, consulte aquí un artículo

  2. Respondido arriba

Editar para agregar algunas estrategias más:

Si el interruptor cerrado es lo suficientemente largo, encienda su tarjeta a través del interruptor, en el encendido, envíe el ping y vaya a la suspensión profunda.

Si el sueño profundo sigue consumiendo mucho o el evento es muy corto, entonces use un hardware monoestable activado por el interruptor para obtener un tiempo de encendido fijo para la Cosa.

También puede establecer en el hardware una "ventana muerta" donde el interruptor se ignora después de un disparador para evitar múltiples eventos en un corto tiempo.

El uso de interrupciones es una buena manera, es difícil ver que el pin que estás usando tiene algo que ver con el reinicio del hardware, el reinicio largo no es bueno, ya que muchos dispositivos siguen consumiendo mucho mientras se mantienen en reinicio.

Aún así, para productos de alta confiabilidad, no puede usar solo la activación en caso de interrupción. En algún momento, un fallo de EM podría llevar al microcontrolador a un estado en el que deshabilitar las interrupciones o ignorarlas. Desde este punto, su dispositivo está muerto y solo un restablecimiento de hardware puede ayudar.

Para eso se inventó el watchdog, si no toma medidas para reiniciar el watchdog con el software, él activará / reiniciará el dispositivo después de un tiempo específico. El tiempo generalmente se establece en la memoria flash y se protege de errores de software y fallas de EM. De esa manera, incluso algo salió mal, siempre puede hacer que su programa se ejecute nuevamente y, eventualmente, informar del error y actuar.

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

Ir más allá de su proyecto si el sensor no es tan amigable como un interruptor de la puerta y requiere energía para sí mismo, puede establecer una interrupción del temporizador para despertarse, alimentar el sensor y obtener los datos, o usar un pulso de hardware Generador que alimenta ambos de vez en cuando. Aquí es donde un buen dispositivo le permitirá jugar con el reloj del sistema para minimizar el consumo de energía cuando no se necesita potencia de procesamiento. No es el caso de la cosa.

    
respondido por el Dorian

Lea otras preguntas en las etiquetas