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
-
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.
-
Sí, pero demasiado complicado para una tarea tan simple
Actualización siguiendo el 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 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.
-
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.
-
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
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?
0 votos
Sí y no (si quieres ser pedante: no. De lo contrario, sí). Utilizo un contactor magnético con terminales NC/NO/Common para mayor flexibilidad (encuentro muy útil tener los 3 estados porque puedo ser perezoso y prescindir de resistencias de pull up o pull down).
0 votos
Genial, esta es una buena forma de hacerlo, ya que no desperdicia corriente. Lo pregunto, porque tu consumo promedio parece bastante alto (1200 mAh / 2 días = ~25mA promedio). O tu hijo abre esa puerta cientos de veces al día, o tu dispositivo no entra en modo de reposo de inmediato, o tu consumo en modo de reposo es alarmantemente alto. El error de hardware cuesta solo 1mA, e incluso el LED no era más de 1-2mA, ya que utilizan LED bastante eficientes. Algo más está raro.
1 votos
¿Por qué usar energía de la batería en primer lugar?
0 votos
@anrieff: Eso fue antes de que yo quitara el indicador de encendido led (un led rojo que siempre estaba encendido independientemente del estado del microcontrolador). ¡Al quitarlo, aumentó mucho la autonomía! ¡Buen pregunta skillz! la razón es: ¡lo puse en la puerta de su habitación en el exterior donde no había enchufes eléctricos cercanos! También evita que mi hijo juegue con la Thing.
0 votos
Sí, estoy hablando del mismo led rojo, tengo la misma placa. Lo estaba removiendo por razones similares, pero descubrí que solo ahorraba 1-2 mA. Esto es poco en comparación con el promedio de 25mA, así que también me sorprende que haya aumentado la autonomía de manera notable. ¿Es posible que no hayas cargado correctamente la batería antes de la primera ejecución?
0 votos
No, las baterías estaban bien...quizás el hecho de jugar con el DTS haya ahorrado un par de mA aquí y allá. Haré una medición y te avisaré. Para que quede constancia, casi nunca estoy en ''sueño profundo'', mi estado de reposo es principalmente con el DTS activado.