Usa un RTC para activar un ESP8266

0

Estoy diseñando un reloj de alarma con un ESP8266 (Nodemcu) y un módulo RTC (DS3231). Mi sistema no tiene ninguna batería, será alimentado constantemente a través de USB. Me gustaría mantener mi ESP866 en sueño profundo y despertarlo a una hora específica gracias al RTC.

Primero creé una alarma de software con la biblioteca de TimeAlarms y funciona bien. Ahora estoy tratando de hacer lo mismo directamente con el hardware. Mi idea es que el RTC enviaría un impulso al ESP8266 a una hora específica establecida en una de las dos alarmas disponibles en el DS3231 que lo despertaría.

Estoy usando RCTlib.h, la biblioteca RTC de Adafruit que funciona perfectamente pero no hay ningún ejemplo de configuración de alarma.

¿Cómo uso un RTC para activar un ESP8266?

    
pregunta Alizée

2 respuestas

1

No estoy seguro de la lógica de su diseño.
Si su reloj de alarma no tiene batería, obviamente no funcionará si no está conectado a un puerto USB (ya sea una fuente de alimentación USB o un puerto de computadora). (Espero que en su diseño esté permitiendo el hecho de que la NodeMCU es solo de 3.3 V)

Así que, desenchufado, está APAGADO, enchufado ... ¿por qué el ESP8266 necesita dormir? ¿Qué ventaja obtiene si la MCU se pone en suspensión cuando hay energía disponible?

Para responder a su pregunta de manera más directa.
Si desea implementar uno de los modos de suspensión profunda, hay docenas de proyectos de código de ejemplo (Arduino y NodeMCU) en los que utiliza un temporizador interno (o una interrupción de cambio de pin) en la MCU para despertarse de la suspensión profunda después de un período de tiempo ( establecido por el MCU).
En su caso, simplemente puede hacer que la MCU encienda cada 55 segundos y comparar un valor de alarma guardado en la MCU con la hora RTC del DS3231. Si la hora no está cerca de la hora de la alarma (por más de 1 minuto), vuelva a activar el temporizador y vuelva a dormir. Puede dejar el DS3231 programado en una zona horaria de referencia fija en modo de 24 horas y hacer todo lo demás en la MCU.

Esto evita tener que cambiar (agregar a) el RTCLib para permitir configurar los registros de alarma en el DS 3231 externo. Hay poca diferencia entre usar SQW para activar un cambio de Pin para activar la MCU y usar un temporizador de MCU para despertar el MCU. Nota al margen: RTClib ya admite la configuración de SQW a 1 Hz, por lo que otra forma de implementar sería ingresar esto a un temporizador en la MCU y configurar un temporizador de activación / desactivación (número de segundos) como el alarma.

Si mantiene las alarmas en la MCU, tiene la posibilidad de crear alarmas de relación de zona horaria múltiples y complejas (12 / 24hr) y más fáciles (en términos de software) que si intenta programar solo las dos alarmas DS3231 registros

Si realmente desea escribir su propio código, use la biblioteca Wire directamente para tratar los registros de DS3231 y simplemente bifurque Adafruit libray , agregando su funcionalidad a la biblioteca.

    
respondido por el Jack Creasey
0

Supongo que usted tiene acceso al pin INT / SQW en su reloj de tiempo real. Este pin se puede configurar para que emita una señal alta cuando la hora RTC coincida con la hora establecida en algunos de los otros registros RTC. No puedo saber si esto está incluido en la Biblioteca de Adafruit, ya que todavía tengo algunos problemas para entender la C.

Es posible que necesite implementar esto sin una biblioteca (excluyendo la biblioteca Wire.h ). Este sitio web tiene una buena guía para establecer la hora en el RTC, por lo que debe comenzar a entender el I2C básico.

Esta es la hoja de datos del DS3231, por lo que puede ver qué registros necesita para enviar el Mensajes para programar el chip.

    
respondido por el user173724

Lea otras preguntas en las etiquetas