Real Time Clock (DS3231)

Om de kosten laag te houden, bevat de Raspberry Pi (nog) geen Real Time Clock. In plaats daarvan wordt van de gebruiker verwacht dat de Pi verbonden is met WiFi of Ethernet en daarmee de tijd bijhoudt. Omdat we de Raspberry Pi ook zonder internet van de juiste tijd willen voorzien, moeten we een RTC klokmodule aansluiten. Ze zijn niet duur, vanaf een euro heb je ze al.

Er zijn veel verschillende RTC’s op de markt, de PCF8523 is goedkoop, DS1307 komt het meest voor en DS3231 is het meest precies. Ieder van hen zal het doen! In dit project bespreken we de installatie van de DS3231.

RTC DS3231 module plaatsen
1. Als je iets op de Raspberry Pi aansluit moet de Pi uit zijn. Dit is om beschadigingen te voorkomen.
2. Plaats de RTC module op headerpin 1, 3, 5, 7 en 9. De printplaat wijst naar de binnenkant van de Raspberry Pi.

I2C interface activeren
De module communiceert middels de I2C bus met de Raspberry Pi. Daarvoor moet de I2C bus op de Pi wel geactiveerd worden. Mocht de bus nog niet geactiveerd zijn, klik dan hier om te zien hoe je dit doet. Vergeet de Pi niet te rebooten na het activeren van de bus.

sudo reboot

We controleren of de module door het systeem herkend wordt met:

sudo i2cdetect -y 1

Een tabel verschijnt. Als het goed is zie je de RTC module op 68 (hex) staan.

Mocht je al eerder de installatie gedaan hebben, of heeft een ander I2C apparaat de locatie bezet, zie je op adres 68 “UU” staan, wat betekent “Zoeken is overgeslagen, omdat dit adres momenteel gebruikt wordt.“. Aangezien de kans erg klein is dat dit bij een schone installatie gebeurt, ga ik hier niet verder op in.

Kernel
Nu laden we de RTC-module in de kernel, het centrale deel van het besturingssysteem. Dit doen we met het commando:

sudo modprobe rtc-ds1307

Super-user privileges
Bij de volgende stap hebben we super-user privileges nodig. Geef in:

sudo bash

Je ziet dat de pi-user vervangen is door de root, de super-user.

Om de DS3231 aan te maken, zetten we ds1307 op adres 0x68:

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

Om de root te verlaten type je:

exit

HWClock
Nu controleren we de tijd van de module met:

sudo hwclock -r

Krijg je de melding: ‘hwclock: Cannot access the Hardware Clock via any known method‘. Dan is de RTC niet geconfigureerd. De Pi ziet ‘m niet.

Als het de eerste keer is dat de module gebruikt wordt, zal er waarschijnlijk een vreemde, onjuiste tijd te zien zijn. Zoals:

2000-01-01 01:04:19.202066 +01:00

Als je met het internet verbonden bent kun je de juiste tijd opvragen door het ingeven van:

date

Date geeft de tijd weer die de Raspberry Pi van het internet (NTP) ingelezen heeft. Om de juiste tijd in de module te zetten type je:

sudo hwclock -w

Om te controleren of de juiste tijd in de module staat type je opnieuw:

sudo hwclock -r

Als het goed is zie je nu de juiste tijd staan.

Module bestand
We moeten de module aan het module-bestand toevoegen met:

sudo nano /etc/modules/

Hierdoor wordt de module bij opstart geladen. Open het bestand met de editor:

nano /etc/modules

Ga helemaal naar beneden en zet de modulenaam erbij: rtc-ds1307, zie onderstaande afbeelding.

Sla vervolgens het bestand op met Ctrl-x en vervolgens ‘ja’ (Y).

Module opstarten bij boot
De module moet nog tijdens het opstarten van de Raspberry Pi opgestart worden. Hiervoor passen we het rc.local-bestand aan door in te geven.

sudo nano /etc/rc.local

Nano opent het bestand. Ga naar beneden en geef de volgende regels in:

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

Let erop dat de bestaande regel exit 0 de laatste regel is, dus onder de ingegeven tekst staat.

Sla vervolgens het bestand op met Ctrl-x en vervolgens ‘ja’ (Y).
Reboot de Raspberry Pi met:

sudo reboot

Controleer de werking
Controleer na de reboot de klok met:

date

Wil je beter testen of het gelukt is? Zet dan de Raspberry Pi uit, verwijder de netwerk kabel en zet de Raspberry Pi pas na een aantal uren, of een dag weer aan en vraag dan weer de tijd (date) op. Je kunt ook de tijd zien in de Raspbian desktop (startx).

Loopt de tijd een uur (of meer) achter of voor?
Controleer of de Raspberry Pi op de juiste tijdzone (‘Europe/Amsterdam’) staat.
Type: sudo raspi-config
Ga naar: Localisation options
Ga naar: Change Timezone
Kies: ‘Europe’ en vervolgens: ‘Amsterdam’, [OK] en [Finish].

Wat het systeem terug geeft ziet er als volgt uit:

Met dank aan Julian #OH8STN

Have A Nice Day!