Arduino (IoT): Simple Tutorial RTC: Parte I – Configurar con RTClib

Arduino Honduras Santiapps Marcio Valenzuela

Tutorial RTC: Parte I – Configurar con RTClib

Parece algo sencillo e inconsecuente pero muchas veces necesitaremos tomar el tiempo o ejecutar tareas basadas en el tiempo “real”.  Esto se refiere a la hora verdadera usada por la humanidad y no en base a un timer que iniciamos arbitrariamente hace tantos minutos o segundos.  Para esto usamos un modulo RTC.

Requisitos:

  1. Computadora (mac)
  2. Arduino UNO
  3. Modulo RTC DS1307
  4. Breadboard
  5. Arduino IDE (https://www.arduino.cc/en/Main/Software)

El modulo DS1307 RTC es este:

Arduino Tutorial Real Time Clock RTC DS1307 Santiapps Marcio Valenzuela
Arduino Tutorial Real Time Clock RTC DS1307

Este modulo debe ser programado para asignar la hora “real” humana.  Una vez se hace esto, mientras tenga la batería CR2032 que trae atras, el modulo mantendrá la hora.

Primero lo que vamos a hacer es configurar el RTC para que obtenga la hora correcta. En este caso obtendrá la hora de nuestra computadora.

Las conexiones son:

SDA(rtc) – Pin Analogo 4 Uno

SCL(rtc) – Pin Analogo 5 Uno

VCC(rtc) – 5V Uno

GND(rtc) – GND Uno

Al final debería verse así:

Arduino Tutorial Real Time Clock RTC Santiapps Marcio Valenzuela
Arduino Tutorial Real Time Clock RTC

El código:

// Fecha y hora para DS1307 RTC conectado via I2C & Wire lib
#include <Wire.h>
#include "RTClib.h"
#if defined(ARDUINO_ARCH_SAMD) // para la Zero
#define Serial SerialUSB
#endif
RTC_DS1307 rtc;
void setup () {
while (!Serial); // para Leonardo/Micro/Zero
Serial.begin(57600);
Wire.begin();
rtc.begin();
if (! rtc.isrunning()) {
Serial.println("RTC no esta configurada!");
rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
// O si prefiere configurar una hora y fecha específica:
// Enero 21, 2014 a 3am:
// rtc.adjust(DateTime(2014, 1, 21, 3, 0, 0));
}
}
void loop () {
DateTime now = rtc.now();
Serial.print(now.year(), DEC);
Serial.print('/');
Serial.print(now.month(), DEC);
Serial.print('/');
Serial.print(now.day(), DEC);
Serial.print(' ');
Serial.print(now.hour(), DEC);
Serial.print(':');
Serial.print(now.minute(), DEC);
Serial.print(':');
Serial.print(now.second(), DEC);
Serial.println();
Serial.print(" desde medianoche 1/1/1970 = ");
Serial.print(now.unixtime());
Serial.print("s = ");
Serial.print(now.unixtime() / 86400L);
Serial.println("d");
// calcular una ida 7 días y 30 segundos en el futuro
DateTime future (now.unixtime() + 7 * 86400L + 30);
Serial.print(" now + 7d + 30s: ");
Serial.print(future.year(), DEC);
Serial.print('/');
Serial.print(future.month(), DEC);
Serial.print('/');
Serial.print(future.day(), DEC);
Serial.print(' ');
Serial.print(future.hour(), DEC);
Serial.print(':');
Serial.print(future.minute(), DEC);
Serial.print(':');
Serial.print(future.second(), DEC);
Serial.println();
Serial.println();
delay(3000);
}

Ese proyecto se puede ver aquí:

Arduino Tutorial RTC Santiapps Marcio Valenzuela
Arduino Tutorial RTC

 

Para mayor información sobre este modulo, podemos estudiar esta referencia:

http://www.elecrow.com/wiki/index.php?title=Tiny_RTC

Veamos que utilidad le podemos dar a esto.  En la siguiente parte analizamos el uso de las alarmas!

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s