In den modernen elektronischen Welt -Timing -Schaltkreisen sind sehr wichtig. Gleiches gilt für Arduino, Arduino hat eine eingebaute Timeruhr, die auf ungefähr 49 Tage zählt, aber danach wird es zurückgesetzt. Zweitens ist die Arduino -interne Uhr nicht 100% genau; Es gibt immer einen bestimmten Prozentsatz der Zeitverzögerung zwischen der Arduino -Uhr und einer externen Uhr. Wenn man also eine genaue Uhr mit Arduino erstellen möchte, müssen wir uns auf ein externes Modul verlassen, das als RTC (Echtzeituhr) bekannt ist, namens RTC (Echtzeit). Lassen Sie uns sehen, wie Sie dieses RTC -Modul mit Arduino anstellen und eine genaue digitale Uhr erstellen.
RTC -Modul mit Arduino
Manchmal benötigen die Arbeit an Arduino -Projekten eine genaue Zeituhr, um Arduino funktionieren zu lassen und spezielle Anweisungen und Befehle zu einer bestimmten Zeit auszuführen. Arduino hat eine eingebaute Uhr, aber wir können uns jedoch nicht darauf verlassen, dass sie zwei Gründe folgen:
In Anbetracht der oben genannten Gründe bevorzugen Benutzer eine externe Hardware-Uhr oder ein RTC. Ein sehr günstiges und super genaues Modul ist also DS1307, der weit verbreitet ist. Mal sehen, wie man diesen RTC mit Arduino verbindet.
Setup RTC -Modul Arduino Library Setup
Zum Schnittstellen von Arduino mit dem RTC -Modul müssen wir einige erforderliche Bibliotheken installieren, mit denen Daten aus dem RTC. Befolgen Sie die Schritte zur Installation von RTC -Bibliotheken:
DS1307 RTC -Modul
Das DS1307 RTC -Modul basiert auf dem winzigen Clock -Chip DS1307, das auch das I2C -Kommunikationsprotokoll unterstützt. Auf der Rückseite des RTC -Moduls haben wir eine Lithiumzellbatterie. Dieses Modul kann genaue Informationen von Sekunden, Minuten, Stunden, Tag, Datum, Monat und Jahr liefern. Es hat auch die Fähigkeit der automatischen Zeitanpassung für 31 Tage im Monat sowie die Fehlerunterstützung für Schaltjahre. Die Uhr kann entweder in 12 Stunden oder 24 Stunden Taktzeit betrieben werden.
Einige Haupthighlights dieses RTC -Moduls:
RTC -Modul
Pin -Name | Beschreibung |
Scl | Takt -Eingangspin für I2C -Kommunikationsschnittstellen |
SDA | Dateneingangsausgabe für die serielle I2C -Kommunikation |
VCC | Power Pin -Bereich von 3.3 V bis 5 V |
GND | GND Pin |
Ds | Verwendung für den Eingang des Temperatursensors |
Sqw | Dieser Stift kann vier Quadratwellen mit Frequenz 1 Hz, 4kHz, 8kHz oder 32 kHz erzeugen |
SCHLÄGER | PIN für die Batteriesicherung, wenn die Hauptversorgung unterbrochen wird |
Schaltplan
Schließen Sie die Arduino -Karte mit dem RTC -Modul an, wie in Diagramm unten gezeigt. Hier werden A4- und A5 -Stifte von Arduino für die I2C -Kommunikation mit RTC -Modulen verwendet, während 5 V und GND -Stifte dem RTC.
DS 1307 RTC Pin | Arduino Pin |
Vin | 5v |
GND | GND |
SDA | A4 |
Scl | A5 |
Code
#enthalten
#enthalten
RTC_DS3231 real_time_clock;
Char -Zeit [32]; /*Char Array ist definiert*/
void setup ()
Serie.Beginnen Sie (9600); /*Serielle Kommunikation beginnt*/
Kabel.Start(); /*Bibliotheksdatei, um mit der Kommunikation zu beginnen*/
Echtzeituhr.Start();
Echtzeituhr.ordnen (datetime (f (__ date __), f (__ time__)));
/*Echtzeituhr.einstellen (DateTime (2022, 09, 26, 1, 58, 0))*/
Hohlraumschleife ()
DateTime Now = real_time_clock.Jetzt();
Sprintf (Zeit, "%02d:%02d:%02d%02d/%02d/%02d", jetzt, jetzt.Hour (), jetzt.Minute (), jetzt.zweite (), jetzt.Tag (), jetzt.Monat (), jetzt.Jahr());
Serie.print (f ("Datum/Uhrzeit:")); /*Dadurch wird Datum und Uhrzeit ausgedruckt*/
Serie.println (Zeit);
Verzögerung (1000); /*Verzögerung von 1 Sek.*/
Zu Beginn des Code haben wir zuerst eingeschlossen Kabel.H & RTCLIB Für die Kommunikation mit Geräten. Wir haben dann ein RTCLIB -Objekt mit dem Namen erstellt Echtzeituhr. Als nächstes haben wir ein Char -Array definiert Zeit von Länge 32, die Datums- und Uhrzeitinformationen speichern.
In der Setup- und Loop -Funktion haben wir den folgenden Befehl verwendet, um sicherzustellen, dass die I2C -Kommunikation zwischen Arduino- und RTC -Modulen festgelegt ist.
Kabel.Start Und Echtzeituhr.Start wird sicherstellen und nach RTC -Verbindung suchen.
anpassen() ist eine überlastete Funktion, die Datum und Uhrzeit festlegt.
Datetime (f (__ date__), f (__ time__))
Diese Funktion setzt das Datum und die Uhrzeit, zu der Skizze zusammengestellt wurde.
Der Jetzt() Funktionen Rückgabedatum und Uhrzeit, und sein Wert speichert Variable "Zeit".
Nächste Stunde, Minute, Zweite, Tag, Monat, Jahr berechnen das genaue Datum und drucken Sie es auf dem Seriennachmonitor mit einer Verzögerung von 1 Sekunden lang aus.
Hardware
Ausgang
Der Serienmonitor drucken die Uhrzeit und das Datum, zu dem Code in die Arduino -Board hochgeladen wird.
Abschluss
Arduino selbst hat einige Funktionen im Zusammenhang mit der Zeit wie Millis (), micros (). Diese Funktionen geben jedoch keine genaue Zeit. Es besteht immer die Möglichkeit, dass einige Millisekunden verzögert werden. Um dies bei der Verwendung von Arduino RTC -externen Modulen zu vermeiden. Diese Module wie DS1307 geben uns genau Zeit mit einer Batteriesicherung, die viele Jahre dauern kann. Diese Anleitung befasst sich mit der Schnittstelle dieser RTC -Module mit einem Arduino -Board.