Wie und warum man Arduino eine Echtzeituhr hinzufügt?

Wie und warum man Arduino eine Echtzeituhr hinzufügt?

Die Zeit bei Arduino-Projekten zu behalten ist nicht so einfach, wie Sie vielleicht denken: Sobald die Computerverbindung nicht vorhanden ist, hört Ihr Arduino ohne Stromversorgung einfach auf zu laufen, einschließlich seines internen Tickers.





So finden Sie Ihre Telefonnummer

Um Ihr Arduino mit der Welt synchron zu halten, benötigen Sie ein sogenanntes 'Echtzeituhrmodul'. So verwenden Sie einen.





Was ist der Sinn einer Echtzeituhr (RTC)?

Ihr Computer synchronisiert höchstwahrscheinlich seine Zeit mit dem Internet, aber er hat immer noch eine interne Uhr, die auch ohne Internetverbindung oder ausgeschaltetem Strom weiterläuft. Wenn Sie ein Arduino verwenden, das an einen Computer angeschlossen ist, hat es Zugriff auf die genaue Zeit, die von Ihrer Systemuhr bereitgestellt wird. Das ist ziemlich nützlich, aber die meisten Arduino-Projekte sind so konzipiert, dass sie außerhalb eines Computers verwendet werden. Zu diesem Zeitpunkt hat es jedes Mal, wenn der Strom getrennt oder der Arduino neu gestartet wird, absolut keine Ahnung, wie spät es ist. Die interne Uhr wird zurückgesetzt und beginnt beim nächsten Einschalten wieder von Null zu zählen.





Wenn Ihr Projekt etwas damit zu tun hat, die Zeit zu benötigen - wie mein Nachtlicht und mein Sonnenaufgangswecker - wird dies eindeutig ein Problem sein. In diesem Projekt haben wir das Problem umgangen, indem wir die Zeit jede Nacht auf ziemlich grobe Weise manuell eingestellt haben - der Benutzer drückte kurz vor dem Zubettgehen die Reset-Taste, um eine manuelle Zeitsynchronisierung zu ermöglichen. Das ist natürlich keine ideale Langzeitlösung.

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



TinyRTC

Die beliebteste RTC für Arduino heißt TinyRTC und kann bei eBay für etwa 5 bis 10 US-Dollar gekauft werden. Sie müssen höchstwahrscheinlich Ihre eigene Batterie mitbringen (es ist illegal, diese an viele Orte zu versenden) und einige Stiftleisten (die Stifte, die in die Löcher stecken, die Sie selbst einlöten müssen).

Dieses Modul habe ich:





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

Die Anzahl der Löcher an 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. Du sprichst mit der Uhr mit I2C-Protokoll , was bedeutet, dass nur zwei Pins verwendet werden - einer für die 'Uhr' (eine serielle Kommunikationsdatenuhr, die nichts mit der Zeit zu tun hat) und einer für die Daten. Tatsächlich verketten Sie sogar bis zu 121 I2C-Geräte an denselben zwei Pins - check out diese Adafruit-Seite für eine Auswahl weiterer I2C-Geräte könntest du hinzufügen, denn es gibt viele!





Einstieg

Schließen Sie Ihr TinyRTC-Modul gemäß dem Diagramm unten an - die rosa DS-Leitung wird nicht benötigt, da sie für den Temperatursensor ist.

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

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

Im DS1307RTC-Menü finden Sie zwei Beispiele: Hochladen und Ausführen des Zeit einstellen Beispiel zuerst - dies stellt die RTC auf die richtige Zeit ein. Es lohnt sich nicht, auf den eigentlichen Code einzugehen, wissen Sie nur, dass Sie ihn einmal ausführen müssen, um die anfängliche Zeitsynchronisierung durchzuführen.

Betrachten Sie als Nächstes die Beispielverwendung mit ReadTest .

So verwenden Sie Pip Install unter Windows

#include
#include
#include
void setup() {
Serial.begin(9600);
while (!Serial) ; // wait for serial
delay(200);
Serial.println('DS1307RTC Read Test');
Serial.println('-------------------');
}
void loop() {
tmElements_t tm;
if (RTC.read(tm)) {
Serial.print('Ok, Time = ');
print2digits(tm.Hour);
Serial.write(':');
print2digits(tm.Minute);
Serial.write(':');
print2digits(tm.Second);
Serial.print(', Date (D/M/Y) = ');
Serial.print(tm.Day);
Serial.write('/');
Serial.print(tm.Month);
Serial.write('/');
Serial.print(tmYearToCalendar(tm.Year));
Serial.println();
} else {
if (RTC.chipPresent()) {
Serial.println('The DS1307 is stopped. Please run the SetTime');
Serial.println('example to initialize the time and begin running.');
Serial.println();
} else {
Serial.println('DS1307 read error! Please check the circuitry.');
Serial.println();
}
delay(9000);
}
delay(1000);
}
void print2digits(int number) {
if (number >= 0 && number <10) {
Serial.write('0');
}
Serial.print(number);
}

Beachten Sie, dass wir auch den Kern enthalten haben Wire.h Bibliothek - diese wird mit Arduino geliefert und wird für die Kommunikation über I2C verwendet. Laden Sie den Code hoch, öffnen Sie die serielle Konsole bei 9600 Baud und sehen Sie zu, wie Ihr Arduino jede Sekunde die aktuelle Uhrzeit ausgibt. Fabelhaft!

Der wichtigste Code im Beispiel ist das Erstellen von a tmElements_t tm - Dies ein Struktur dass wir mit der aktuellen Zeit füllen; und der RTC.read(tm) Funktion, die die aktuelle Uhrzeit vom RTC-Modul holt, legt sie in unser 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. um die Zeit auszudrucken oder darauf zu reagieren.

Wie erstelle ich eine Facebook-Fotocollage?

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

Bildnachweise: Snootlab Über Flickr

Teilen Teilen Tweet Email So ändern Sie das Aussehen und Verhalten Ihres Windows 10-Desktops

Möchten Sie wissen, wie Sie Windows 10 besser aussehen lassen können? Verwenden Sie diese einfachen Anpassungen, um Windows 10 zu Ihrem eigenen zu machen.

Weiter lesen
Verwandte Themen
  • Heimwerken
  • Arduino
Über den Autor James Bruce(707 veröffentlichte Artikel)

James hat einen BSc in Künstlicher Intelligenz und ist CompTIA A+ und Network+ zertifiziert. Wenn er nicht als Hardware-Review-Editor beschäftigt ist, genießt er LEGO, VR und Brettspiele. Bevor er zu MakeUseOf kam, war er Lichttechniker, Englischlehrer und Rechenzentrumsingenieur.

Mehr von James Bruce

Abonniere unseren Newsletter

Abonnieren Sie unseren Newsletter für technische Tipps, Rezensionen, kostenlose E-Books und exklusive Angebote!

Klicken Sie hier, um sich zu abonnieren