¿Cómo podemos ayudarte?

Arduino DS3231

En este post aprenderá a usar el reloj de tiempo real DS3231, el cual permite almacenar y llevar la cuanta de la fecha y hora de manera automática sin que el circuito este con alimentación eléctrica. Adicionalmente veremos la librería que se encargara de realizar todo el trabajo, solo tendremos que llamar los datos y usarlos en donde los necesitemos.

Vídeo

A continuación encontrara el vídeo en donde se explica el funcionamiento del circuito.

Acerca del proyecto

En este post vamos a trabajar con el modulo DS3231, reloj de tiempo real, donde vamos a conocer su funcionamiento y como conectarlo al arduino, el modulo que se va a trabajar es el diseñado para la raspberry py, pero nos sirve para nuestro propocito.

Conocimiento previo

Para este proyecto recomiendo revisar los siguientes post para que tengas los conocimientos base para poder realizar el circuito.

Proyecto Descripción
Hoja de datos DS3231 Se encuentra las características, conexión y demás información del circuito integrado.

¿Que es el DS3231?

El DS3231 es un reloj I2C en tiempo real (RTC) extremadamente preciso y de bajo costo con un oscilador de cristal (TCXO) y cristal integrados compensados ​​por temperatura.

El RTC mantiene información sobre segundos, minutos, horas, día, fecha, mes y año. La fecha al final del mes se ajusta automáticamente a los meses con menos de 31 días, incluidas las correcciones del año bisiesto. El reloj funciona en formato de 24 horas o de 12 horas con un indicador AM / PM. Dos horas del día programables.

Para mas detalles del ds3231 como sus características o la definición de cada uno de los pines en la hoja de datos podrás encontrar mas información.

Materiales

A continuación dejo la lista de los materiales que se necesitan.

Material Cantidad Descripción
Arduino leonardo 1 Controlador del proyecto
Modulo ds3231 1 Reloj de tiempo real
Cables macho a macho 4 Cables para conectar el circuito

Conexión

Para esta practica trabajaremos con el modulo ds3231, el cual tiene todas las conexiones del chip integrada, solo debemos hacer la conexión del modulo I2C que son dos simples cables.

Modulo raspberry pi

DS3231 Arduino
Data SDA
Clock SCL
VCC 5V
GND GND

Modulo genérico

Librería

Para realizar el proyecto estamos usando la librería RTClib.h la cual contiene las funciones básicas y necesaria para poder almacenar y obtener la hora y la fecha. Para mas detalles del funcionamiento de la librería en este post esta que hace cada instrucción y como se utiliza.

Si necesitas descargar la librería este es el repositorio de adafruit donde esta el código.

Código

Para programas este reloj y como se menciona en este post es muy sencillo ya que la librería nos proporciona todas las funciones que necesitamos. A continuación se deja el código y se explica paso a paso que es lo que se hace en cada linea.

//Paso 1
#include <Wire.h>
#include "RTClib.h"

//Paso 2
RTC_DS3231 rtc;

void setup () {
    //Paso 3
    Serial.begin(9600);
    Wire.begin();
    rtc.begin();

    //Paso 4
    if (! rtc.begin()) {
        Serial.println("Couldn't find RTC");
        while (1);
    }

    //Paso 5
    if (rtc.lostPower()) {
        rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
        //rtc.adjust(DateTime(2015, 1, 1, 3, 0, 0));
    }
}

void loop () {
    //Paso 6
    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.println();
    delay(3000);
}
  1. Cargamos las librerías de RTClib.h la cual contiene la funcionalidad y las instrucciones del reloj, ademas cargamos Wire.h quien es la que permite hacer la comunicación con dispositivos I2C.
  2. Creamos una instancia del objeto de RTC_DS3231 a la cual llamaremos rtc.
  3. Inicializamos el reloj, la comunicación con wire y la terminal serial para visualizar los datos.
  4. Verificamos si el reloj esta conectado correctamente, de lo contrario mostramos un error en la terminal.
  5. Validamos con lostPower si el reloj tiene configurada las horas y fechas de lo contrario las configuramos con rtc.adjust().
  6. Con DateTime now = rtc.now() obtenemos el objeto con el cual podemos acceder a cada una de las funciones que nos retornara el dato que necesitemos, por ejemplo now.year(), now.hour() entre otros.
  7. Imprimimos por la terminal los valores para ver la hora y fecha.

Funcionamiento

Observemos la salida de la terminal serial en donde nos muestra la fecha y hora que tiene el reloj, mostrada en el formato que le indicamos.

Comentarios

Para dejar el comentario solo necesitamos tu correo que registraste en la pagina, pero si aun no te haz registrado se creara el usuario automaticamente.

Detalle contenido

base-arduino-ds3231
Generic placeholder image
Oscar Fernandez Alzate

29, Julio 2019

2313
Categorías
ARDUINO