Arduino DS3231


El modulo reloj de tiempo real ds3132 es el mas preciso en el mercado a bajo costo y fácil de usar con arduino

oscar Escrito por oscar 29 July 2019 11867 1

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, encontrará 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 proposito.

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 DS3231 raspberry pi
Modulo DS3231 raspberry pi
Conexión modulo raspberry pi
Conexión modulo raspberry pi
Foto DS3231
Foto DS3231

Modulo genérico

Conexión DS3231
Conexión DS3231

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.

DS3231 funcionamiento
DS3231 funcionamiento

Comentario

Debe aceptar antes de enviar
casique
casique

29 October 2021 23:10

falta la temperatura, ¿como la sacamos?