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
-
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.
-
Sí, pero complicado para una tarea tan simple
Actualización después del comentario
- 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.
-
Sí, consulte aquí un artículo
-
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.