Inhaltsverzeichnis:

Genaue, schnelle und automatisierte Einstellung der DS3231 RTC (Real Time Clock) mit Java (+-1s) - Gunook
Genaue, schnelle und automatisierte Einstellung der DS3231 RTC (Real Time Clock) mit Java (+-1s) - Gunook

Video: Genaue, schnelle und automatisierte Einstellung der DS3231 RTC (Real Time Clock) mit Java (+-1s) - Gunook

Video: Genaue, schnelle und automatisierte Einstellung der DS3231 RTC (Real Time Clock) mit Java (+-1s) - Gunook
Video: Контроллер автоматического пуска-останова с часами реального времени DS3231 2024, Juli
Anonim
Genaue, schnelle und automatisierte Einstellung der DS3231 RTC (Real Time Clock) mit Java (+-1s)
Genaue, schnelle und automatisierte Einstellung der DS3231 RTC (Real Time Clock) mit Java (+-1s)

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

Verdrahtung
Verdrahtung

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

Der Arduino-Code
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

Die Java-Anwendung
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!