Spisu treści:
Wideo: Dokładne, szybkie i automatyczne ustawianie DS3231 RTC (zegar czasu rzeczywistego) za pomocą języka Java (+-1 s): 3 kroki
2024 Autor: John Day | [email protected]. Ostatnio zmodyfikowany: 2024-01-30 11:29
Ta instrukcja pokaże Ci, jak ustawić czas na zegarze czasu rzeczywistego DS3231 za pomocą Arduino i małej aplikacji Java, która korzysta z połączenia szeregowego Arduino.
Podstawowa logika tego programu:
1. Arduino wysyła żądanie szeregowe.
2. Program Java sprawdza, jakiego dnia/miesiąca/… zażądał arduino i odsyła odpowiednie dane.
3. Po zebraniu wszystkich potrzebnych informacji arduino przechowuje dane w DS3231.
Moduł RTC DS3231
Moduł DS3231 RTC jest stosunkowo tanim modułem RTC o wysokiej dokładności. (kilka minut w roku)
Istnieją różne odmiany, których podstawowa funkcjonalność jest taka sama, z niewielkimi różnicami.
Szczegółowe porównanie można znaleźć tutaj: DS323x Porównanie | maximintegrated.com
Kup DS3231:DS3231 | ebay.com
Arkusz danych: Arkusz danych DS3231 | maximintegrated.com
Arkusz danych: Arkusz danych DS1307 | maximintegrated.com
Potrzebne części
1x Arduino (Nano, Uno, MEGA itp.)
4x przewody połączeniowe
1x moduł DS3231 (moduł DS1307)
Krok 1: Okablowanie
Podłącz DS3231, jak pokazano na powyższym obrazku. Oczywiście możesz to zrobić bez użycia płytki do krojenia chleba, ale będzie to trochę bardziej bałagan. Użyłem Arduino Nano do demonstracji, ale Uno lub MEGA również powinny działać. (Inne też mogą działać, ale jestem zbyt leniwy, żeby potwierdzić)
- Arduino -> DS3231
- A4 -> SCL
- A5 -> SDA
- 5V -> VCC
- GND -> GND
Krok 2: Kod Arduino
Pobierz plik.ino od dołu i prześlij go do swojego Arduino (w moim przypadku Nano).
Szkic wymaga zainstalowania następujących bibliotek do poprawnego działania:
github.com/PaulStoffregen/Time
github.com/JChristensen/DS3232RTC
Samouczek dotyczący wgrywania kodu do arduino można znaleźć tutaj (arduino.cc).
W Arduino IDE sprawdź, czy kod został przesłany poprawnie. (Zakończono przesyłanie)
Twoje Arduino jest teraz gotowe do odbioru informacji o czasie
Pobierz kod tutaj: DS3231TimeSync.zip (mediafire.com)
Pobierz źródło tutaj: DS3231TimeSyncSRC.zip (mediafire.com)
Repozytorium GitHub: DS3213 RTC Time Sync (github.com)
Repozytorium Bitbucket: DS3231 RTC Time Sync (bitbucket.com)
Krok 3: Aplikacja Java
1. Uruchom pobrany wcześniej plik DS3231Sync.jar, klikając go dwukrotnie
2. Otworzy się małe okno dialogowe z pytaniem o port twojego arduino
Jeśli nie masz pewności co do portu używanego przez twoje arduino, spójrz na Arduino IDE w prawym dolnym rogu.
(Patrz zdjęcia powyżej)
3. Otworzy się kolejne okno dialogowe z prośbą o przesunięcie strefy czasowej
Przesunięcie odnosi się do czasu lokalnego komputera. Aby ustawić RTC na czas lokalny, wpisz +00:00.
Bardzo ważne jest, aby wprowadzić przesunięcie strefy czasowej w określonym formacie!
Ogólny format to +gg:mm lub -gg:mm. Zawsze uwzględniaj wiodące zera!
(Np.: -03:00; -06:00; +09:00; +02:30)
4. Aplikacja Java otworzy małe okno z wyjściem konsoli
Miej oko na komunikaty potwierdzające, takie jak: „Ustawiony czas zakończony”
Po zakończeniu procesu ustawiania czasu kod będzie drukował aktualny czas na DS3231 co 5 sekund. Możesz potwierdzić, że czas jest ustawiony poprawnie.
Jeśli nie otrzymasz żadnego wyjścia po ~20 sekundach, naciśnij przycisk resetowania na swoim arduino i poczekaj ponownie.
Jeśli nadal nie działa, sprawdź szkic na Arduino i/lub prześlij go ponownie. (Ważne: zamknij Port w aplikacji Java przed wgraniem do Arduino; w przeciwnym razie zablokuje port szeregowy!) Następnie zresetuj połączenie w programie Java.
(Program Java używa LocalDateTime do pobrania bieżącej daty).
Czas jest ustawiony. Baw się dobrze
Jeśli masz jakieś nierozwiązywalne problemy z ustawieniem czasu, proszę o komentarz poniżej i udostępnij mi swój log.txt (w tym samym folderze co słoik). Wielkie dzięki!