En esta ocasión te vamos a enseñar como realizar la programación de eventos con arduino, o dicho de otra forma: como podemos programar el arduino para ejecutar determinadas funciones en una hora/fecha determinadas. La información de fecha / hora actual proviene de un circuito integrado RTC (Real Time Clock) DS1307. Un RTC está especialmente diseñado para mantener la información horaria, aún cuando nuestro arduino se encuentre sin alimentación. Esto es fantástico en aplicaciones del mundo real, donde no siempre se puede confiar en el suministro de energía eléctrica.

Imaginemos por un momento que deseamos encender una lampara con arduino a una hora determinada. ¿Como podemos decirle al arduino que deseamos hacer esto? ¿Como implementamos un programa genérico para realizar cualquier acción con nuestro arduino a una hora / fecha determinada? En este tutorial te explicamos como puedes hacer precisamente eso: Temporizar cualquier acción con arduino para que sea llevada a cabo según la programación de horario elegida.

En nuestra foto de portada vemos nuestro laboratorio de domótica con arduino, que estaremos usando durante este tutorial, en conjunto con un arduino UNO y el RTC DS1307.

Conexión y uso de un RTC con Arduino.

En otra entrada anterior hemos tratado ya como realizar la conexión del RTC DS1307 con Arduino, así como su funcionamiento básico. Vamos a colocar aquí la imagen de la conexión como referencia. Para saber como podemos leer y escribir el RTC, así como más detalles de su funcionamiento, recomendamos leer nuestro tutorial referente a este tema.

arduino_tinyrtc_diagrama_conexion

Una vez que tengamos nuestro arduino funcionando con el RTC, podemos seguir con el resto de este tutorial.

Librerías para Programación de Eventos con Arduino.

Como ya sabemos, la plataforma arduino tiene un buen número de librerías que nos facilitan bastante algunas tareas, pues la lógica ya ha sido implementada y solamente debemos conocer el API de dichas librerías para acceder a su funcionalidad. En este caso, estaremos trabajando con la librería de gestión de eventos y horarios conocida como “TimeAlarms”. Mediante esta librería podemos programar la ejecución de determinadas funciones en una fecha/hora específica. La librería “TimeAlarms” depende de la librería “Time” para conocer la fecha/hora actual, por lo que también debe ser instalada. A continuación dejamos los enlaces para descargar y aprender a instalar las librerías:

A continuación que hace cada una de las librerías:

  • Time: Funciona como un Reloj en tiempo real que lleva la cuenta del tiempo usando el CPU de arduino. Funciona llevando un conteo del número de segundos desde segundos transcurridos desde la medianoche UTC del 1 de enero de 1970 (timestamp de Unix). Este conteo se pierde al apagar el arduino.
  • TimeAlarms: Es la encargada de la programación de eventos utilizando la hora/fecha provista por la librería Time. Asocia las funciones de arduino a un evento que ocurre en una hora/fecha determinadas.
  • RTCLib: Se encarga de la comunicación con el RTC DS1307 o DS3231 para obtener el tiempo actual y mantener la precisión a largo plazo

Programa para temporizador con arduino

Con todo esto ya instalado en nuestro IDE podemos comenzar con nuestro primer sketch que permite realizar la programación de eventos con Arduino. En este programa buscamos hacer lo siguiente: Hacer que todos los días a las 14:00, 14:05, 14:10 se ejecute una función elegida por nosotros que imprime un texto al monitor serial de arduino. El código de nuestro sketch queda de la siguiente forma:

Este programa aún no utiliza la fecha / hora proveniente del RTC, en cambio configura una fecha/hora conveniente al arrancar el arduino, pero podemos configurar la librería Time para que haga uso del RTC de una manera muy sencilla. El siguiente programa que realizaremos pretende ser un ejemplo de una aplicación real con el RTC y la librería TimeAlarms.

Programación del horario de una lámpara con arduino

Ahora que ya conocemos el funcionamiento de la librería TimeAlarms vayamos con un ejemplo práctico de algo que se requiere de manera cotidiana: Prender una luz a una hora determinada y apagarla a otra. Usando nuestra librería de TimeAlarms creamos un par de funciones que se encargarán de apagar o encender la luz en el momento oportuno. En la parte de hardware utilizamos un módulo de relevador que controla la carga de corriente alterna. El montaje de nuestro circuito se observa de la siguiente forma:

Nosotros estamos utilizando nuestro kit de laboratorio para domótica, que está diseñado para simplificar en gran medida la parte de la conexión de dispositivos de corriente alterna. Nos ahorra tener que cablear la parte de alterna cada vez que deseamos experimentar, además de proveer aislamiento de la corriente alterna que pudiera ser peligrosa.El sketch completo que controla el encendido de una luz en el momento deseado es el siguiente:

 

Está de más decir que este sketch puede ampliarse para soportar incluso varios canales o patrones más complejos. Por ejemplo podemos conectar más relevadores para controlar otras cargas, por ejemplo bombas para realizar riego, motores que controlen persianas, sirenas de alarma, etc. Podemos ahora crear cualquier Programación de Eventos con Arduino según las necesidades de nuestra aplicación.

Conclusión.

La Programación de Eventos con Arduino es una de las tareas más básicas cuando deseamos llevar a cabo alguna automatización en el hogar, el trabajo o la industria. Con los ejemplos y librerías que mostramos en esta página, es posible crear un marco de trabajo que nos permita afrontar con mucha sencillez esta tarea. Además las liberías que hemos mostrado en esta página permiten obtener información de fecha/hora no solamente desde el RTC, sino desde otras fuentes también como un servidor NTP o un GPS, por lo que seguramente tienen cabida en muchísimas aplicaciones que requieren control de tiempo preciso a largo plazo.

Si requiere factura de su producto el pago se tiene que realizar a nuestra cuenta en Santander.