Pubblicato il

Come settare RTC Real Time Clock i2c sulla Raspberry Pi

Premessa:

Con questa guida andremo a illustrare i vari passaggi su come impostare e collegare un RTC (Real Time Clock) i2c alla Raspberry Pi.  Il modulo RTC permette di tenere in tempo reale l’ora e la data anche quando il Raspberry Pi è spento grazie alla sua coin cell (classica batteria bottone).

LISTA DEI MATERIALI:

 Procedimento:

Come prima cosa dovremo abilitare la comunicazione i2c dal kernel della Raspberry Pi per fare ciò dovremo entrare nelle impostazioni di configurazione:

sudo raspi-config

Una volta entrati dirigetevi Su Advanced option:

LearnRaspberryPiAdvancedOption

Poi abilitare la riga A7 riguardante il modulo kernel i2c

LearnRaspberryPiAdvancedOptionI2C

LearnRaspberryPiAdvancedOptionI2CY1

LearnRaspberryPiAdvancedOptionI2CY2

Una volta abilitato da kernel la comunicazione i2c sempre da raspi-config andremo a configurare il Time Zone per assicurarci di avere la data corretta in base alla località dove ci troviamo quindi:

sudo raspi-config
selezionare Internationalisation Option
Change Time Zone - Europe - Rome

Effettuiamo il Reboot del sistema

Come collegare Real Time Clock:

Potete usare questa guida con qualsiasi tipo di modulo o marca che utilizza l’integrato DS1307 quindi potete scegliere di utilizzare qualsiasi tipo di Real Time Clock.

VCC  = 5.0V pin Raspberry Pi
GND = GND pin Raspberry Pi
SDA  = SDA pin(3) Raspberry Pi
SCL   = SCL pin(5) Raspberry Pi

RaspberryPiDS1307

Poi per chi ha una Raspberry Pi 2 o B+ per testare il funzionamento del modulo usare il comando:

sudo i2cdetect -y 1

Mentre per chi ha versioni precedenti usare:

sudo i2cdetect -y 0

Dovresti vedere un ID = 68 che corrisponde al modulo RTC i2c

RaspberryPiAddr68

Configurare RTC:

Vediamo un po di istruzioni prima di realizzare il file eseguibile da boot.

sudo modprobe rtc-ds1307

Serve per caricare il modulo DS1307 i2c

Poi digitare il comando su per entrare come root ed inserire la riga sottostante in base alla versione di raspberry che si possiede.

echo ds1307 0x68 > /sys/class/i2c-adapter/i2c-1/new_device (Model B+ e Pi 2)
echo ds1307 0x68 > /sys/class/i2c-adapter/i2c-0/new_device (Versioni Precendenti Pi)

Una volta inserito riuscite dalla root con il comando exit

Ora se eseguite il processo sudo hwclock -r dovreste vedere la data e l’ora

RaspberryPiPrimoAvvioDataeOra

Se siete collegati via Ethernet o Wifi linux stesso dovrebbe avere la data corretta in “memoria” quindi con il comando:

sudo hwclock -w

Scriverete la data e ora corretta nel RTC presa dal Server tramite internet e se ridigitate il comando sudo hwclock -r vedrete la data inizializzata.

Avviare la data e l’ora Corretta anche dopo aver spento la Raspberry Pi:

Ci sono varie possibilità che possa andar via la corrente oppure che in un determinato istante non abbiamo più la connessione internet o semplicemente non ci troviamo coperti dalla Rete per ovviare a questo problema creeremo una sincronizzazione del tempo del server e quello del modulo RTC. Questa procedura è molto utile in tutti quegli automi dove la data e l’ora non possono essere un dato superfluo.

Vediamo come fare:

Da terminale:

sudo nano /etc/rc.local

E andiamo a inserire:

echo ds1307 0x68 > /sys/class/i2c-adapter/i2c-1/new_device 
sudo hwclock -s

Le due righe devono essere contenute nel file rc.local prima dell’istruzione exit 0.

NB:Se invece versione precedente Raspberry: echo ds1307 0x68 > /sys/class/i2c-adapter/i2c-0/new_device .

Ed infine:

 sudo nano /etc/modules

E aggiungiamo rtc-ds1307

Così:

raspberry_pi_addmoduleI2Crtc

Ora se la Raspberry Pi è spenta e a qualsiasi riavvio avrete sempre la data aggiornata a meno che togliete la batteria dal modulo 🙂

Buon Progetto.