Configura un RTC (Reloj Tiempo Real) en tu Raspberry Pi

RTC IRP102

Configura un RTC (Reloj Tiempo Real) en tu Raspberry Pi

14 Febrero, 2016 DIY, Raspberry Pi 0

Raspberry PI no incorpora un reloj en tiempo real por lo que para mantener la hora actualizada requiere tener conexión a internet. Esto es un problema cuando queremos hacer un proyecto off-line y necesitamos la fecha y la hora o recuperarla si en alguna ocasión la raspberry pi sufre un corte de corriente.

Para ello existen multitud de integrados que con ayuda de una pila o supercap nos permiten mantener la fecha y la hora. Los más usados son el DS1307 y el DS3231, ambos de Dallas.

En este tutorial nos centraremos en otro integrado, muy similar al DS1307 y más económico. Se trata del MCP7940N de Microchip. Este integrado está incorporado en la HAT Board IRP-102.

Aunque es muy parecido al DS1307, hay alguna pequeña diferencia para hacerlo funcionar con la Raspberry PI. Este tutorial se ha realizado con Raspbian como sistema operativo. A continuación indicamos los pasos a seguir:

1. Actualización de sistema

El primer paso es asegurarnos de que nuestro Raspbian está completamente actualizado. Para ello, desde la línea de comandos ejecutamos:


2. Habilitamos el I2C

Para asegurarnos que el bus I2C está activo y activarlo en caso contrario, accedemos al asistente de configuración:

RTC Config 1

RTC Config 1

Accedemos a la opción 9: Advanced options. En el siguiente menú elegimos la opción A7: I2C.

RTC Config 2

RTC Config 2

Al acceder nos preguntará si queremos que cargue por defecto los módulos del I2C. Elegimos SI.

RTC Config 3

RTC Config 3

Ya podemos salir de raspi-config. En el próximo arranque los módulos de i2c cargarán por defecto.

3. Instalamos i2c-tools

Se trata de un paquete de utilidades para manejo del bus I2C.

Cuando termine la instalación ejecutamos:

Este comando escanea todos los dispositivos conectados al bus I2C. El segundo parámetro representa el identificador del bus, debemos utilizar el 1 para Raspberry PI B+, B(rev 2), A+, para las antiguas modelo B (rev 1) utilizaremos el 0. Obtendremos algo así:

En nuestro caso nos fijaremos que aparezca el dispositivo 6F. Esto quiere decir que el RTC ha sido correctamente detectado.

4. Configurando el RTC hardware

Lo primero que debemos hacer es sustituir el fichero /etc/init.d/hwclock.sh con este. Este fichero ya incluye las modificaciones necesarias.
O simplemente ejecuta

en la consola y continua en saltando al paso “5. Carga de módulos durante el arranque”.
Si lo prefieres, puedes realizar tu mismo los cambios necesarios en /etc/init.d/hwclock.sh para inicializar el dispositivo i2c del reloj.
Crear la función de inicialización del RTC, en las primeras lineas del fichero, justo debajo de la línea que contiene “unset TZ”:

Llama a la función creada desde la sección “start”. Para ser mas específicos, inserta la llamada “init_rtc_device” justo después del fragmento siguiente, localizado en la función “hwclocksh()”:

También tenemos que comentar o eliminar la comprobación del “udev” porque nuestro RTC no puede ser manejado por éste.

Ahora guarda el fichero.

5. Carga de módulos durante el arranque

Editamos el fichero rc.local

y añadimos las siguientes líneas justo antes del exit 0

Salimos del editor guardando los cambios.

6. Habilitar hwclock y deshabilitar fake-clock

Actualizamos el HW Clock real y eliminamos el “fake”

Ahora que el hardware clock real está instalado, eliminamos el paquete que contienen el fake-clock y su cron

Ahora reinicia el sistema

y comprueba después si /dev/rtc0 está presente y si el comando “sudo hwclock -r” devuelve correctamente la fecha contenida en el RTC.
También comprueba eue todo es correcto ejecutando el comando i2cdetect -y 1 y obteniendo:

Los caracteres UU indican que el dispositivo que ocupa dicha dirección está en uso.

7. Establecer la hora en el RTC

Para establecer la hora en el chip de reloj podemos hacerlo de dos maneras, manualmente o traspasando la hora del sistema en caso de que la rasberry pi tenga fecha y hora valida. Esto lo podemos comprobar con el comando date:

en este caso con el siguiente comando establecemos el RTC con la hora del sistema.

Si no tenemos hora correcta en el sistema tendremos que ajustar manualmente el RTC de esta manera:

Para ver la fecha y hora almacenada en el RTC usaremos:

obteniendo:

Para establecer la fecha y la hora del sistema a partir de la mantenida en el RTC utilizaremos el comando:

 
 

About the author

IngeniApp:

0 Comentarios

Would you like to share your thoughts?

Your email address will not be published. Required fields are marked *

Deja un comentario

Uso de cookies

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies, pinche el enlace para mayor información.plugin cookies

ACEPTAR
Aviso de cookies