Werbung

Es ist nicht so einfach, Zeit für Arduino-Projekte zu behalten, wie Sie vielleicht denken: Sobald die Computerverbindung nicht mehr besteht, wird Ihr nicht mit Strom versorgtes Arduino einfach nicht mehr ausgeführt, einschließlich des internen Tickers.

Um Ihr Arduino mit der Welt um es herum synchron zu halten, benötigen Sie ein sogenanntes "Echtzeituhr-Modul". So verwenden Sie eine.

Was bringt eine Echtzeituhr (RTC)?

Ihr Computer synchronisiert höchstwahrscheinlich seine Zeit mit dem Internet, verfügt jedoch über eine interne Uhr, die auch ohne Internetverbindung oder ausgeschalteter Stromversorgung weiterläuft. Wenn Sie ein an einen Computer angeschlossenes Arduino verwenden, hat es Zugriff auf die genaue Uhrzeit, die von Ihrer Systemuhr bereitgestellt wird. Das ist ziemlich nützlich, aber die meisten Arduino-Projekte sind so konzipiert, dass sie nicht an einem Computer verwendet werden können Jedes Mal, wenn die Stromversorgung getrennt oder der Arduino neu gestartet wird, hat er absolut keine Ahnung, wann es ist. Die interne Uhr wird zurückgesetzt und zählt beim nächsten Einschalten wieder von Null.

instagram viewer

Wenn Ihr Projekt etwas damit zu tun hat, Zeit zu brauchen - wie z Nachtlicht und Sonnenaufgang Wecker Arduino Nachtlicht- und Sonnenaufgang-AlarmprojektHeute stellen wir einen Sonnenaufgangswecker her, der Sie sanft und langsam weckt, ohne auf eine anstößige Geräuschmaschine zurückzugreifen. Weiterlesen - Dies wird eindeutig ein Problem sein. In diesem Projekt haben wir das Problem umgangen, indem wir die Zeit jede Nacht manuell auf einen ziemlich groben Wert eingestellt haben Weg - der Benutzer drückte die Reset-Taste kurz vor dem Schlafengehen und gab eine manuelle Zeit an synchronisieren Dies ist eindeutig keine ideale Langzeitlösung.

Ein RTC-Modul ist eine zusätzliche Schaltung, für die eine kleine Knopfzellenbatterie erforderlich ist, die auch dann die Zeit zählt, wenn Ihr Arduino ausgeschaltet ist. Nach dem einmaligen Einstellen bleibt diese Zeit für die Lebensdauer der Batterie erhalten, normalerweise ein gutes Jahr oder so.

TinyRTC

Das beliebteste RTC für Arduino heißt TinyRTC und kann für ungefähr gekauft werden $ 5- $ 10 bei eBay. Sie müssen höchstwahrscheinlich Ihre eigene Batterie (es ist illegal, diese an viele Orte nach Übersee zu versenden) und einige Header (die Stifte, die in die Löcher passen, die Sie selbst einlöten müssen) bereitstellen.

Dies ist das Modul, das ich habe:

RTC-Modul

Es hat sogar einen eingebauten Temperatursensor, obwohl der Akku länger hält, wenn Sie ihn nicht verwenden.

Die Anzahl der Löcher in diesem Ding sieht ziemlich beängstigend aus, aber Sie brauchen nur vier davon; GND, VCC, SCL und SDA - Sie können die entsprechenden Pins auf beiden Seiten des RTC-Moduls verwenden. Sie sprechen mit der Uhr mit I2C-ProtokollDies bedeutet, dass nur zwei Pins verwendet werden - einer für die „Uhr“ (eine serielle Kommunikationsdatenuhr, die nichts mit Zeit zu tun hat) und einer für die Daten. Sie verketten sogar bis zu 121 I2C-Geräte an denselben zwei Pins - sehen Sie sich das an diese Adafruit Seite Für eine Auswahl anderer I2C-Geräte können Sie hinzufügen, denn es gibt viele!

Anfangen

Schließen Sie Ihr TinyRTC-Modul gemäß der folgenden Abbildung an - die rosa DS-Leitung wird nicht benötigt, da dies für den Temperatursensor gilt.

Verdrahtung

Laden Sie als nächstes die Zeit und DS1307RTC Bibliotheken und platzieren Sie die resultierenden Ordner in Ihrem /libraries Mappe.

Beenden Sie die Arduino-Umgebung und starten Sie sie neu, um sie in die Bibliotheken und Beispiele zu laden.
ds1307rtc-Beispielmenü

Im DS1307RTC-Menü finden Sie zwei Beispiele: Hochladen und Ausführen des Zeit einstellen Beispiel zuerst - Dadurch wird die RTC auf die richtige Zeit eingestellt. Der eigentliche Code ist es nicht wert, ins Detail zu gehen. Sie müssen nur wissen, dass Sie ihn einmal ausführen müssen, um die anfängliche Zeitsynchronisation durchzuführen.

Schauen Sie sich als nächstes die Beispielverwendung mit an ReadTest.


#umfassen 
#umfassen 
#umfassen  void setup () {Serial.begin (9600); while (! Serial); // warte auf serielle Verzögerung (200); Serial.println ("DS1307RTC Read Test"); Serial.println (""); } void loop () {tmElements_t tm; if (RTC.read (tm)) {Serial.print ("Ok, Time ="); print2digits (tm. Stunde); Serial.write (':'); print2digits (tm. Minute); Serial.write (':'); print2digits (tm. Zweite); Serial.print (", Datum (D / M / Y) ="); Serial.print (tm. Tag); Serial.write ('/'); Serial.print (tm. Monat); Serial.write ('/'); Serial.print (tmYearToCalendar (tm. Jahr)); Serial.println (); } else {if (RTC.chipPresent ()) {Serial.println ("Der DS1307 wird gestoppt. Bitte führen Sie die SetTime aus "); Serial.println ("Beispiel zum Initialisieren der Uhrzeit und zum Starten der Ausführung."); Serial.println (); } else {Serial.println ("DS1307 Lesefehler! Bitte überprüfen Sie die Schaltung. "); Serial.println (); } delay (9000); } delay (1000); } void print2digits (int number) {if (number> = 0 && number <10) {Serial.write ('0'); } Serial.print (Nummer); }

Beachten Sie, dass wir auch den Kern aufgenommen haben Wire.h Bibliothek - Dies kommt mit Arduino und wird für die Kommunikation über I2C verwendet. Laden Sie den Code hoch, öffnen Sie die serielle Konsole mit 9600 Baud und beobachten Sie, wie Ihr Arduino jede Sekunde die aktuelle Zeit ausgibt. Wunderbar!

Der wichtigste Code im Beispiel ist das Erstellen eines tmElements_t tm - Dies ein Struktur dass wir mit der aktuellen Zeit füllen; und der RTC.read (tm) Die Funktion, die die aktuelle Zeit vom RTC-Modul erhält, fügt sie in unsere ein tm Struktur und gibt true zurück, wenn alles gut gelaufen ist. Fügen Sie Ihren Debug- oder Logikcode in diese "if" -Anweisung ein, z. B. indem Sie die Zeit ausdrucken oder darauf reagieren.

Jetzt, da Sie wissen, wie Sie mit Arduino die richtige Zeit finden, können Sie versuchen, das Sonnenaufgang-Alarmprojekt neu zu schreiben oder eine LED-Wortuhr zu erstellen - die Möglichkeiten sind endlos! Was wirst du machen?

Bildnachweis: Snootlab Über Flickr

James hat einen BSc in künstlicher Intelligenz und ist CompTIA A + und Network + zertifiziert. Er ist der Hauptentwickler von MakeUseOf und verbringt seine Freizeit mit VR-Paintball und Brettspielen. Er baut seit seiner Kindheit PCs.