So erstellen Sie die Arduino Infinity Clock mit RTC -Modul

So erstellen Sie die Arduino Infinity Clock mit RTC -Modul

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:

    • Die Arduino -Uhr ist mit einem prozentualen Fehler von 0 ungenau.5-1%.
    • Die Arduino -Uhr wird automatisch zurückgesetzt, sobald die Karte zurückgesetzt wird.
    • Arduino -Uhren haben keine Stromversorgung, wenn Arduino an Strom verliert. Setzen Sie die Uhr automatisch zurück.

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:

    1. Offen Ide
    2. Gehe zu Bibliotheksabschnitt
    3. Suchen "RTCLIB"
    4. Installiere das DS3231_RTC Und RTCLIB von Adafruit.

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:

    • Kann an der 5 -V -Gleichstromversorgung arbeiten
    • Quadratwellenleistung, die programmiert werden kann
    • Stromausfallerkennung
    • Verbrauch viel weniger Strom (500 mA)
    • 56-Byte nichtflüchtiger Ram
    • Batteriesicherung

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.