Reloj alarma con Arduino

Ya vimos cómo usar un módulo RTC con Arduino, exactamente el reloj DS1307, ahora veremos en este artículo como usarlo en una aplicación más práctica y útil. Es algo muy sencillo y muy interesante, una alarma con Arduino que nos permitirá en una fecha y hora establecida encender, apagar, indicar…, cualquier cosa que nuestra imaginación nos permita. Esta alarma se podrá repetir cada día, hora, minuto y segundo por si necesitamos realizar algún proceso de manera periódico.

El programa, dispone también de un temporizador para resetear la alarma, de esta manera podremos establecer un inicio y un fin de un evento.

Para poder seguir este artículo le recomendamos que vea antes Reloj RTC I2C con Arduino, artículo en el que se explica el funcionamiento básico del módulo RTC que usaremos.

rtc alarma 01
Módulo Tiny RTC I2C.

rtc alarma 02
Esquema eléctrico Arduino Mega.

rtc alarma 03
Esquema gráfico Arduino Mega.

Código reloj alarma con Arduino

Descripción del código reloj alarma con Arduino

Existen dos grupos de variables que el usuario deberá modificar según sus necesidades. Las variables xxx_alarm son empleadas para especificar en qué fecha y hora debe activarse la alarma, mientras que las variables booleanas all_xxx indican si es indiferente alguno de los datos de fecha o tiempo. Es decir, imaginemos que seconds_alarm= 0 y all_xxx = true excepto all_seconds= false. Con esta configuración, la alarma se activará cuando el reloj esté en 0 segundos, para todos los minutos, horas, días de la semana, días, meses y años.

Un segundo ejemplo seria, hour_alarm=12, weekday_alarm=1 y all_xxx = true excepto all_weekday = false, all_hour = false. De esta manera, la alarma se activará todos los lunes a las 12 horas.

La comprobación de la fecha se hace de manera escalonada mediante el anidado de sentencias if, desde años hasta segundos, de tal forma que si la fecha /tiempo actual no cumple con un parámetro de la fecha/tiempo configurada para activar la alarma, el programa no seguirá comprobando el siguiente. Por ejemplo, tenemos configurada la alarma para el 2014-07-20 12:00, y la fecha actual es 2014-07-10 16:00, el programa comprueba que año y mes son iguales, pero el día no, este ya no seguirá con la comprobación.

Una variable importante que debemos configurar es alarm_duration , con esta variable podremos configurar durante cuánto tiempo (en segundos) estará activa la alarma antes de que se resetee. Hay que tener cuidado de que su valor no sea superior al tiempo que hay entre una alarma y otra, por lo contrario, la alarma estaría siempre activa.

now.unixtime()
Esta función devuelve la fecha actual en segundos.

Si cargamos el código anterior en nuestro Arduino, veremos que cada vez que el reloj pasa por 0 segundos se activa la alarma (LED integrado en la placa), y transcurridos 10 segundo se resetea.

rtc alarma 04
Puerto serie.

rtc alarma 05
Resultado final.

Deja un comentario