DS3231 RTC module aansluiten op een Raspberry Pi

Wanneer een Raspberry Pi is verbonden met een netwerk dan zal deze bij het opstarten de interne klok via het NTP (Network Time Protocol) synchroniseren met een tijd server op het internet.

Het kan natuurlijk voorkomen dat je een Raspberry Pi gaat inzetten die niet is altijd verbonden is met het internet. Op het moment dat een netwerkloze Raspberry Pi wordt herstart zal de tijd automatisch worden teruggezet naar de datum waarop het image dat je gebruikt is aangemaakt. Door het ontbreken van een netwerkverbinding kan de tijd niet worden gesynchroniseerd.

De oplossing voor dit probleem is een DS3231 RTC module (Real Time Clock) aansluiten op de Raspberry Pi. Dit is een zeer goedkope add-on module (vanaf € 1,00) die je op de GPIO pinnen van de Raspberry Pi kunt plaatsen. De module bevat een klok-chip en een batterij die de tijd laat doorlopen en kan via GPIO worden uitgelezen.

ds3231-rtc-module-rpi

Gebruikte componenten

DS3231 Real-Time Clock Module

Raspberry Pi Zero
Raspbian Jessie (2016-05-27 kernel 4.4.13)

I2C Activeren

Een DS3231 RTC board maakt in de meeste gevallen gebruik van het I2C protocol om te kunnen communiceren met de Raspberry Pi. Het mooie van I2C is dat meerdere apparaten/modules kunnen communiceren via de GPIO pinnen die worden gebruikt voor I2C.

Standaard is de I2C functionaliteit op de Raspberry Pi uitgeschakeld. Je kunt deze activeren met behulp van raspi-config.

sudo raspi-config

Selecteer de optie ‘Advanced Options’ ▸ ‘I2C’ en kies ‘YES’ om de I2C interface te activeren.

DS3231 RTC module aansluiten

Voordat je iets aansluit op de GPIO is het verstandig om de Raspberry Pi uit te schakelen. Dit kun je doen met behulp van het commando:

sudo shutdown -h 0

De Raspberry Pi zal direct beginnen met de shutdown, nadat de groene 5x met dezelfde interval heeft geknipperd kun je de netvoeding verwijderen en de RTC module aansluiten.

De RTC module plaats je linksonder op de GPIO interface (met GPIO interface naarboven), zie de foto.

ds3231-rtc-module-raspberry-pi

Nadat de RTC module is geplaatst gaan we de Raspberry Pi configureren zodat de module kan worden uitgelezen. Als eerste controleren we of de RTC module wordt gedetecteerd op de I2C interface.

i2cdetect -y 1

Na het uitvoeren van het commando krijg je een overzicht van de aangesloten I2C apparaten. In dit overzicht zal je de RTC module als ID #68 terugvinden.

i2cdetect-rtc

Mocht het i2cdetect commando niet werken ‘i2cdetect: command not found’, installeer dan eerst de I2C tools:

sudo apt-get install i2c-tools

RTC clock gebruiken

Om gebruik te kunnen maken van de RTC moeten we eerst de RTC module toevoegen aan de kernel. Dit doe je door de onderstaande vier commando’s uit te voeren:

sudo modprobe rtc-ds1307
sudo bash
echo ds1307 0x68 > /sys/class/i2c-adapter/i2c-1/new_device
exit

Hierna controleren we de tijd van de DS3231 RTC module:

sudo hwclock -r

Bij de eerste maal gebruik zal een datum in het bereik van 1 Januari 2000 worden weergegeven. We moeten dus de RTC module vertellen wat de huidige tijd en datum is. Dit gaat het eenvoudigste als de Raspberry Pi is verbonden met het netwerk, omdat dan automatisch de klok wordt goedgezet. De huidige tijd van de Raspberry Pi kun je bekijken met behulp van het commando date.

date

Is de Raspberry Pi niet verbonden met een netwerk gebruik dan het onderstaande commando om de tijd van de Raspberry Pi handmatig aan te passen. Bijvoorbeeld:

sudo date -s '2015-12-25 17:40:56'

Als de datum en tijd goed zijn ingesteld op de Raspberry Pi dan moeten we deze kopiëren naar de RTC module.

sudo hwclock -w

Controleer hierna of de tijd op RTC module correct is met:

sudo hwclock -r

Automatisch de klok aanpassen

Als laatste stap moeten we de Raspberry Pi vertellen dat iedere keer na een herstart de huidige tijd moet worden opgehaald bij de RTC module. Hiervoor moet we de RTC kernel module toevoegen aan /etc/modules

sudo nano /etc/modules

Voeg onderaan bestand toe:

rtc-ds1307

Bewaar de wijzigingen: ctrl+X, Y, enter

Hierna moeten we DS1307 activeren bij het opstarten, die doen we in het bestand /etc/rc.local

sudo nano /etc/rc.local

Voeg de onderstaande regels toe, voor de regel met ‘exit 0’

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

rtc-module-config

Bewaar de wijzigingen: ctrl+X, Y, enter

Werking testen

Sluit je Raspberry Pi af en verwijder de aanwezige ethernet kabel of wifi dongle. Start hierna de Raspberry Pi opnieuw op. Tijdens het opstarten wordt de tijd van de RTC module gekopieerd naar de interne klok van de Raspberry Pi. Je kunt dit controleren door het date commando te gebruiken.

date

De huidige datum en tijd zal nu worden weergegeven.

4 gedachten over “DS3231 RTC module aansluiten op een Raspberry Pi”

Plaats een reactie