Spisu treści:

Dokładne, szybkie i automatyczne ustawianie DS3231 RTC (zegar czasu rzeczywistego) za pomocą języka Java (+-1 s): 3 kroki
Dokładne, szybkie i automatyczne ustawianie DS3231 RTC (zegar czasu rzeczywistego) za pomocą języka Java (+-1 s): 3 kroki

Wideo: Dokładne, szybkie i automatyczne ustawianie DS3231 RTC (zegar czasu rzeczywistego) za pomocą języka Java (+-1 s): 3 kroki

Wideo: Dokładne, szybkie i automatyczne ustawianie DS3231 RTC (zegar czasu rzeczywistego) za pomocą języka Java (+-1 s): 3 kroki
Wideo: Arduino 5: ZEGAR 2024, Lipiec
Anonim
Dokładne, szybkie i automatyczne ustawianie DS3231 RTC (zegar czasu rzeczywistego) za pomocą języka Java (+-1 s)
Dokładne, szybkie i automatyczne ustawianie DS3231 RTC (zegar czasu rzeczywistego) za pomocą języka Java (+-1 s)

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

Okablowanie
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

Kod Arduino
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

Aplikacja Java
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!