INHALT
Das DS1307 und DS1302 Arduino ist ein Echtzeituhr RTC-Modul (Real Time Clock) mit ununterbrochener Lithiumbatterieversorgung. Schauen wir uns den Schaltplan des Moduls an den Arduino und das Programm an, das zum Einstellen des gewünschten Datums und der Uhrzeit verwendet werden kann. Wir beschreiben auch die Universalbibliothek iarduino_RTC.h, die mit den Modulen DS1302, DS1307 und RTC DS3231 arbeitet.
Bestandteile:
- Arduino Uno / Arduino Nano / Arduino Mega
- RTC DS1302, DS1307, DS3231
- LCD-Display mit I2C
- Dupont-Kabel
- Bibliothek iarduino_RTC.h und LiquidCrystal_I2C.h
Die Zeitorientierung ist nützlich, wenn Sie ein Gerät für die automatische Bewässerung von Pflanzen, das Einschalten des Lichts oder der Heizung nach einem strengen Zeitplan usw. erstellen. Der Arduino-Controller verfügt nicht über eine eingebaute Uhr. Wenn Sie also möchten, dass der Uno Aufgaben zu einer bestimmten Tageszeit ausführt, müssen Sie das DS1302-Uhrenmodul oder die nächstgelegenen Analoga im Projekt verwenden.
Echtzeituhr RTC-Modul Arduino pinout, datasheet
Merkmale des DS1302 RTC-Modul (datasheet)
- Versorgungsspannung: 2 – 5,5 V
- Stromaufnahme: 300 mA bei 2 V
- RST: Kontakt für Start/Ende der seriellen Kommunikation
- CLK: Kontakt für den Takt der seriellen Kommunikation
- DAT: Serieller Kommunikationskontakt
- Betriebstemperatur: -40℃ – +80℃
Merkmale des DS1307 RTC-Modul (datasheet)
- Versorgungsspannung: 4,5 – 5,5 V
- Stromverbrauch: 1.5mA
- Kommunikationsanschluss: I2C
- Maximale Übertragungsfrequenz: 100KHz
- Arbeitstemperatur: 0℃ – +70℃
Die Uhrenmodule DS1307 und DS3231 werden über das I2C-Protokoll mit dem Arduino-Board verbunden, wie ein I2C-LCD-Display. Der SDA-Pin ist mit Pin A4 und der SCL-Pin mit Pin A5 des Arduino Uno verbunden. Beim Anschluss dieser Module an das Arduino Mega sollten die Anschlüsse SDA (Pin 20) und SCL (Pin 21) verwendet werden. Dabei müssen Sie den Kommentar in der Zeile mit dem gewünschten Modul in der Skizze entfernen.
Wie man einen DS1302 RTC-Modul an Arduino anschließt
LCD 1602 i2c | Arduino Uno | Arduino Nano | Arduino Mega |
GND | GND | GND | GND |
VCC | 5V | 5V | 5V |
SDA | A4 | A4 | 20 |
SCL | A5 | A5 | 21 |
Der Chip hat einen geringen Stromverbrauch und ermöglicht eine Zeitzählung mit einer Genauigkeit von Sekunden. Der ds1302 wird über fünf Pins mit dem Arduino verbunden. Die Pins VCC und Gnd sind für die Stromversorgung des Moduls zuständig. Die Pins CLK, DAT und RESX sind mit den digitalen Pins verbunden. Sie können die beteiligten digitalen Pins im Sketch selbst bestimmen (im Beispiel werden die Pins 6, 7 und 8 verwendet).
Programm für DS1302 Echtzeituhr mit LCD-Display
#include "Wire.h" #include "LiquidCrystal_I2C.h" LiquidCrystal_I2C LCD(0x27,16,2); #include "iarduino_RTC.h" iarduino_RTC time (RTC_DS1302,7,5,6); // für Modul DS1302 // iarduino_RTC time (RTC_DS1307); // für Modul DS1307 i2C // iarduino_RTC time (RTC_DS3231); // für Modul DS3231 i2C void setup() { Serial.begin(9600); LCD.init(); LCD.backlight(); time.begin(); // 0 sec, 30 min, 18 hour, 2 date, january, 2022, wed time.settime(0, 30, 18, 2, 1, 22, 0); } void loop() { // wenn 1 Sekunde verstrichen ist zeigt die Uhrzeit an if (millis() % 1000 == 0) { Serial.println(time.gettime("d-m-Y, H:i:s, D")); LCD.setCursor(0,0); LCD.print(time.gettime("d M Y, D")); LCD.setCursor(4,1); LCD.print(time.gettime("H:i:s")); } }
- Mit dem Befehl time.settime(); können Sie das Datum und die Uhrzeit einstellen, die jede Sekunde auf dem Monitor des Arduino-IDE-Ports angezeigt werden sollen;
- Damit die Uhrzeit nicht bei jedem Neustart des Mikrocontrollers aktualisiert wird – setzen Sie einen Kommentar in die Zeile time.settime();
Wie man einen DS1307 RTC-Modul an Arduino anschließt
DS1307 i2c | Arduino Uno | Arduino Nano | Arduino Mega |
GND | GND | GND | GND |
VCC | 5V | 5V | 5V |
SDA | A4 | A4 | 20 |
SCL | A5 | A5 | 21 |
Beim Anschluss des DS3231 Echtzeituhr-Moduls wird der i2c-Bus verwendet – SDA (A4) und SCL (A5), Sie müssen nur angeben, welches Modul in der Skizze verwendet wird. Der Schaltplan des ds3231-Moduls zum Arduino unterscheidet sich nicht vom Schaltplan der ds1307-Echtzeituhr. Falls erforderlich, können Sie den i2c-Busscanner verwenden, um die vom Hersteller eingestellten Adressen der angeschlossenen Geräte zu sehen.
Programm für DS1307 Echtzeituhr mit LCD-Display
#include "Wire.h" #include "LiquidCrystal_I2C.h" LiquidCrystal_I2C LCD(0x27,16,2); #include "iarduino_RTC.h" // iarduino_RTC time (RTC_DS1302,7,5,6); // für Modul DS1302 iarduino_RTC time (RTC_DS1307); // für Modul DS1307 i2C // iarduino_RTC time (RTC_DS3231); // für Modul DS3231 i2C void setup() { Serial.begin(9600); LCD.init(); LCD.backlight(); time.begin(); // 0 sec, 30 min, 18 hour, 2 date, january, 2022, wed time.settime(0, 30, 18, 2, 1, 22, 0); } void loop() { // wenn 1 Sekunde verstrichen ist zeigt die Uhrzeit an if (millis() % 1000 == 0) { Serial.println(time.gettime("d-m-Y, H:i:s, D")); LCD.setCursor(0,0); LCD.print(time.gettime("d M Y, D")); LCD.setCursor(4,1); LCD.print(time.gettime("H:i:s")); } }
- Das Programm unterscheidet sich vom vorherigen in einer einzigen Zeile – ein anderer Modultyp wird im Kommentar geschlossen.
Beschreibung der Befehle der Bibliothek iarduino_RTC.h
begin(); // Starten des Moduls
settime(Sekunden, Minuten, Stunden, Tag, Monat, Jahr, Wochentag); // Angabe der Zeit
– Jahr wird ohne Jahrhundert angegeben, im Format 0-99
– Stunden werden im 24-Stunden-Format angegeben, von 0 bis 23
– der Wochentag wird als Zahl von 0-Sonntag, 6-Samstag angegeben
gettime(„Parameter String“);
– gettime(„d-m-Y, H:i:s, D“); antwortet mit der Zeichenkette „12-06-2020, 18:30:05, Fri“
– gettime(„H“); wird mit „18“ beantwortet.
Sie können verschiedene Informationen mit gettime erhalten:
s – Sekunden von 00 bis 59 (zweistellig)
i – Minuten von 00 bis 59 (zweistellig)
h – Stunden im 12-Stunden-Format von 01 bis 12 (zwei Ziffern)
H – Stunden im 24-Stunden-Format von 00 bis 23 (zwei Zeichen)
d – Tag des Monats 01 bis 31 (zwei Zeichen)
D – Wochentag von Mo bis So (drei Ziffern)
m – Monatsname von 01 bis 12 (zwei Zeichen)
M – Monatsname von Jan bis Dez (dreistellig)
Y – Jahresbezeichnung von 2000 bis 2099 (vier Ziffern)
y – Jahreszahl 00 bis 99 (zwei Zeichen)
blinktime(Parameter);
– Weist die Funktion gettime an, einen der Zeitparameter zu blinken
period(Minuten);
– legt den Zeitraum für den Aufruf des Moduls in Minuten fest (0 bis 255)
Schlussfolgerung. Sie können den Arduino 1602 und die DS1302 Display-Uhr um eine Temperaturanzeige und eine Weckerfunktion erweitern. Mit diesem Modul können Sie die Funktionen des Mikrocontrollers, die zu bestimmten Tageszeiten ausgeführt werden sollen, erheblich erweitern. Wenn Sie Fragen zum Bau einer Arduino-Uhr mit DS1302 und LCD-Display mit I2C haben – lassen Sie sie in den Kommentaren des Beitrags.
Hallo, was ist #include „iarduino_RTC.h“ für eine Bibliothek? Ich kann sie unter Bibliotheksverwalter nicht finden?!
Diese Leitung verbindet die Bibliothek mit dem Programm. Die Bibliothek iarduino_RTC.h muss zuerst in der Arduino IDE installiert werden, bevor der Sketch geladen wird. Der Download-Link befindet sich im Artikel.