Inhaltsverzeichnis:
2025 Autor: John Day | [email protected]. Zuletzt bearbeitet: 2025-01-13 06:56
Dieses Instructable zeigt Ihnen, wie Sie die Zeit auf einer DS3231-Echtzeituhr mit einem Arduino und einer kleinen Java-Anwendung einstellen, die die serielle Verbindung des Arduino verwendet.
Die grundlegende Logik dieses Programms:
1. Der Arduino sendet eine serielle Anfrage.
2. Das Java-Programm sieht, welchen Tag/Monat/… das Arduino angefordert hat und sendet die relevanten Daten zurück.
3. Nachdem alle erforderlichen Informationen gesammelt wurden, speichert das Arduino die Daten im DS3231.
Das DS3231 RTC-Modul
Das DS3231 RTC-Modul ist ein relativ günstiges RTC-Modul mit hoher Genauigkeit. (ein paar Minuten im Jahr)
Es gibt verschiedene Varianten, deren Grundfunktionalität mit nur geringen Unterschieden gleich ist.
Detaillierten Vergleich finden Sie hier: DS323x Vergleich | maximintegriert.com
DS3231 kaufen:DS3231 | ebay.com
Datenblatt:DS3231 Datenblatt | maximintegrated.com
Datenblatt:DS1307 Datenblatt | maximintegriert.com
Benötigte Teile
1x Arduino (Nano, Uno, MEGA usw.)
4x Überbrückungsdrähte
1x DS3231-Modul (DS1307-Modul)
Schritt 1: Verkabelung
Verdrahten Sie den DS3231 wie im Bild oben gezeigt. Natürlich können Sie dies ohne die Verwendung eines Steckbretts tun, aber es wird etwas unordentlicher. Ich habe einen Arduino Nano zur Demonstration verwendet, aber ein Uno oder ein MEGA sollten auch funktionieren. (Andere könnten auch funktionieren, aber ich bin zu faul, um es zu bestätigen)
- Arduino -> DS3231
- A4 -> SCL
- A5 ->SDA
- 5V -> VCC
- GND -> GND
Schritt 2: Der Arduino-Code
Laden Sie die.ino-Datei von unten herunter und laden Sie sie auf Ihr Arduino (in meinem Fall ein Nano) hoch.
Der Sketch benötigt die folgenden installierten Bibliotheken, um korrekt zu funktionieren:
github.com/PaulStoffregen/Time
github.com/JChristensen/DS3232RTC
Ein Tutorial zum Hochladen von Code auf Ihr Arduino finden Sie hier (arduino.cc).
Überprüfen Sie in der Arduino IDE, ob der Code korrekt übermittelt wurde. (Fertig hochgeladen)
Ihr Arduino ist nun bereit, Zeitinformationen zu empfangen
Laden Sie den Code hier herunter: DS3231TimeSync.zip (mediafire.com)
Laden Sie die Quelle hier herunter: DS3231TimeSyncSRC.zip (mediafire.com)
GitHub-Repository: DS3213 RTC Time Sync (github.com)
Bitbucket-Repository: DS3231 RTC Time Sync (bitbucket.com)
Schritt 3: Die Java-Anwendung
1. Führen Sie die zuvor heruntergeladene "DS3231Sync.jar" aus, indem Sie darauf doppelklicken
2. Es öffnet sich ein kleiner Dialog, in dem Sie nach dem Port Ihres Arduino gefragt werden
Sollten Sie sich über den von Ihrem Arduino verwendeten Port unsicher sein, schauen Sie in der Arduino IDE unten rechts nach.
(Siehe Bilder oben)
3. Ein weiterer Dialog wird geöffnet und fragt nach einem Zeitzonen-Offset
Der Offset ist relativ zur lokalen Zeit Ihres Computers. Um die Echtzeituhr auf Ihre Ortszeit einzustellen, geben Sie einfach +00:00 ein.
Es ist wichtig, dass Sie den Zeitzonen-Offset in einem bestimmten Format eingeben!
Das allgemeine Format ist +hh:mm oder -hh:mm. Führen Sie immer führende Nullen ein!
(Bsp.: -03:00; -06:00; +09:00; +02:30)
4. Die Java-Anwendung startet ein kleines Fenster mit der Konsolenausgabe
Achten Sie auf Bestätigungsmeldungen wie: "Zeit eingestellt beendet"
Wenn der Zeiteinstellungsprozess abgeschlossen ist, druckt der Code alle 5 Sekunden die aktuelle Uhrzeit auf dem DS3231. Sie können überprüfen, ob die Uhrzeit richtig eingestellt ist.
Sollten Sie nach ~ 20s keine Ausgabe erhalten, drücken Sie die Reset-Taste auf Ihrem Arduino und warten Sie erneut.
Wenn es immer noch nicht funktioniert, überprüfen Sie die Skizze auf dem Arduino und / oder laden Sie sie erneut hoch. (Wichtig: Schließen Sie den Port in der Java-Anwendung vor dem Hochladen auf den Arduino; sonst wird die serielle Schnittstelle blockiert!) Anschließend setzen Sie die Verbindung im Java-Programm zurück.
(Das Java-Programm verwendet LocalDateTime, um das aktuelle Datum abzurufen.)
Die Uhrzeit ist jetzt eingestellt. Spaß haben
Sollten Sie unlösbare Probleme beim Einstellen der Uhrzeit haben, kommentieren Sie bitte unten und teilen Sie Ihre log.txt (im selben Ordner wie das jar) mit mir. Danke vielmals!