Hier erfährst du, wie du ein sogenanntes RTC-Modul an den Arduino anschließt und damit eine echte Uhr programmieren kannst, die auch weiter läuft, wenn der Arduino aus ist. Der Arduino hat zwar selbst auch einen Timer und kennt den Befehl millis(), aber dieser gibt immer nur die Millisekunden seit dem letzten Einschalten zurück. Damit lässt sich zwar auch eine Uhr programmieren, aber die muss man jedes Mal neu stellen, wenn der Arduino zwischendurch ausgeschaltet war. Um dieses Problem zu lösen, haben die RTC-Module eine eigene Batterie, die wohl den meisten Platz auf der Platine verbraucht, wie man auf dem Bild gut sieht.
Anschließen am Arduino
Falls du mit einem Sensor-Shield arbeitest und ein entsprechendes RTC-Modul hast, musst du nur aufpassen, dass du einen I2C-Steckplatz wählst. Im Zweifelsfall erkennst du das daran, dass es neben den beiden Pins GND und VCC noch die Pins SDA und SCL gibt.
Wenn du mit einem Breadboard arbeitest oder das RTC-Modul direkt mit Kabeln an den Arduino anschließt, musst du natürlich auch die SDA- und SCL-Pins entsprechend verbinden. Dazu muss man wissen, welche das sind, denn das steht meist gar nicht auf dem Arduino drauf! Beim Arduino Uno muss SDA an den Analog Pin A4 angeschlossen werden und SCL an A5. Als Versorgungsspannung (VCC) akzeptiert die RTC sowohl 3,3V als auch 5V, und GND wird mit einem GND-Pin verbunden. Da kann man also nichts falsch machen.
RTC-Modul | Arduino Uno |
---|---|
GND | GND |
VCC | VCC (3,3V oder 5V) |
SDA | A4 |
SCL | A5 |
Installieren der Bibliothek
Für viele Module gibt es eigene Bibliotheken. Das sind einfach nur Sammlungen mit besonderen Befehlen für das entsprechende Modul. Viele Bibliotheken sind in der Arduino-Software schon enthalten, andere muss man nachinstallieren. Das ist aber sehr einfach. Gehe einfach im Menü „Werkzeuge“ auf den Punkt „Bibliotheken verwalten“. Gib in das Suchfeld „RTClib“. Es erscheinen vermutlich mehrere Treffer. Wähle wie im Bild die Bibliothek von Adafruit und drücke auf „Installieren“. Falls du gefragt wirst, ob weitere dazu benötigte Bibliotheken gleich mit installiert werden sollen, bestätige das!

Programmieren
Wenn du schon ein bisschen programmieren kannst, helfen dir vielleicht die Beispiele weiter, die sich jetzt direkt über die Arduino IDE öffnen lassen. Unter den Beispielen befindet sich jetzt ein eigenes Untermenü „RTClib“. Für den Arduino Uno musst du dort meist nur die Baud-Rate auf 9600 setzen.
Ansonsten empfehle ich dir folgenden kleinen Quelltext, der einfach nur Datum und Uhrzeit ausgibt.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
#include "RTClib.h" // Einbinden der Bibliothek in dieses Programm RTC_DS3231 rtc; // Mit rtc können wir jetzt unser Modul ansprechen void setup () { Serial.begin(9600); // Seriellen Monitor starten rtc.begin(); // Verbindung zur Uhr herstellen rtc.adjust(DateTime(2021, 1, 28, 21, 22, 0)); // Zeit einstellen } void loop () { DateTime now = rtc.now(); // Datum und Zeit abfragen Serial.print(now.day()); Serial.print('.'); Serial.print(now.month()); Serial.print('.'); Serial.print(now.year()); Serial.print(' '); Serial.print(now.hour()); Serial.print(':'); Serial.print(now.minute()); Serial.print(':'); Serial.print(now.second()); Serial.println(); delay(1000); } |
Die meisten Zeilen drehen sich um die Ausgabe im seriellen Monitor. Ganz oben wird die Bibliothek eingebunden, die du gerade installiert hast. Als nächstes wird ein Objekt namens rtc angelegt. So heißt jetzt quasi deine Uhr im Quelltext und diese Uhr hat bestimmte Funktionen. Mit rtc.begin() wird sie initialisiert. Starten muss man sie zwar nicht, sie läuft ja dauerhaft, aber ohne Initialisierung kann man sie nicht benutzen.
In Zeile 8 wird dann mit rtc.adjust(DateTime()) das Datum und die Uhrzeit gestellt. Die Zahlen bedeuten (Jahr, Monat, Tag, Stunden, Minuten, Sekunden). Das muss man natürlich nicht jedes mal machen. Für das erste Beispiel ist das aber schön einfach und du kannst es nach dem ersten Hochladen auf deinen Arduino einfach erst mal mittels // auskommentieren.
Weitere Tipps und Infos
Zum Experimentieren oder und sich inspirieren zu lassen empfehle ich dir wie gesagt die Beispiele. Wenn du genauer wissen möchtest, was sich hinter den Objekten rtc und now verbirgt, schau einmal in die Dokumentation. Unser rtc-Objekt gehört übrigens zur Klasse (Class) RTC_DS3231 und unser now-Objekt zur Klasse DateTime.
Schreibe eine Antwort