Cuprins:

Setarea DS3231 RTC (ceas în timp real) cu precizie, rapiditate și automatizare folosind Java (+ -1s): 3 pași
Setarea DS3231 RTC (ceas în timp real) cu precizie, rapiditate și automatizare folosind Java (+ -1s): 3 pași

Video: Setarea DS3231 RTC (ceas în timp real) cu precizie, rapiditate și automatizare folosind Java (+ -1s): 3 pași

Video: Setarea DS3231 RTC (ceas în timp real) cu precizie, rapiditate și automatizare folosind Java (+ -1s): 3 pași
Video: Controler automat Start-Stop cu ceas în timp real DS3231 2024, Iulie
Anonim
Setarea DS3231 RTC (ceas în timp real) cu precizie, rapiditate și automatizare folosind Java (+ -1s)
Setarea DS3231 RTC (ceas în timp real) cu precizie, rapiditate și automatizare folosind Java (+ -1s)

Acest instructabil vă va arăta cum să setați ora pe un ceas DS3231 în timp real folosind un Arduino și o mică aplicație Java care utilizează conexiunea serială a Arduino.

Logica de bază a acestui program:

1. Arduino trimite o cerere în serie.

2. Programul Java arată ce zi / lună / … arduino a solicitat și trimite datele relevante înapoi.

3. După ce toate informațiile necesare sunt colectate, arduino stochează datele în DS3231.

Modulul DS3231 RTC

Modulul RTC DS3231 este un modul RTC relativ ieftin, cu o precizie ridicată. (câteva minute pe an)

Există diferite soiuri a căror funcționalitate de bază este aceeași, cu diferențe minore.

O comparație detaliată poate fi găsită aici: DS323x Comparison | maximintegrated.com

Cumpărați DS3231: DS3231 | ebay.com

Foaie de date: DS3231 Foaie de date | maximintegrated.com

Foaie de date: DS1307 Foaie de date | maximintegrated.com

Piese necesare

1x Arduino (Nano, Uno, MEGA etc.)

4x fire jumper

1x modul DS3231 (modul DS1307)

Pasul 1: Cablare

Cablare
Cablare

Conectați DS3231 așa cum se arată în imaginea de mai sus. Bineînțeles că o puteți face fără utilizarea unei plăci de calcul, dar va fi puțin mai dezordonată. Am folosit un Arduino Nano pentru demonstrație, dar un Uno sau un MEGA ar trebui să funcționeze la fel. (Ar putea funcționa și alții, dar îmi este lene să confirm)

  • Arduino -> DS3231
  • A4 -> SCL
  • A5 -> SDA
  • 5V -> VCC
  • GND -> GND

Pasul 2: Codul Arduino

Codul Arduino
Codul Arduino

Descărcați fișierul.ino de mai jos și încărcați-l pe Arduino (în cazul meu un Nano).

Schița are nevoie de următoarele biblioteci instalate pentru a funcționa corect:

github.com/PaulStoffregen/Time

github.com/JChristensen/DS3232RTC

Un tutorial despre cum să încărcați codul pe arduino poate fi găsit aici (arduino.cc).

În IDE-ul Arduino verificați dacă codul a fost trimis corect. (Încărcare finalizată)

Arduino dvs. este acum gata să primească informații despre timp

Descărcați codul aici: DS3231TimeSync.zip (mediafire.com)

Descărcați sursa aici: DS3231TimeSyncSRC.zip (mediafire.com)

Depozit GitHub: DS3213 RTC Time Sync (github.com)

Depozit Bitbucket: DS3231 RTC Time Sync (bitbucket.com)

Pasul 3: Aplicația Java

Aplicația Java
Aplicația Java

1. Rulați „DS3231Sync.jar” descărcat înainte făcând dublu clic pe el

2. Se va deschide un mic dialog care vă va cere portul arduino-ului dvs

Dacă nu sunteți sigur cu privire la portul folosit de arduino, aruncați o privire în ID-ul Arduino din dreapta jos.

(Vezi imaginile de mai sus)

3. Se va deschide o altă fereastră de dialog și vă va solicita o compensare a fusului orar

Decalajul este relativ la ora locală a computerului. Pentru a seta RTC la ora locală, introduceți doar +00: 00.

Este esențial să introduceți compensarea fusului orar într-un format specific!

Formatul general este + hh: mm sau -hh: mm. Includeți întotdeauna zerouri în frunte!

(De exemplu: -03: 00; -06: 00; +09: 00; +02: 30)

4. Aplicația Java va lansa o fereastră mică cu ieșire consolă

Fii atent la mesajele de confirmare precum: „Timpul a fost terminat”

La finalizarea procesului de setare a timpului, codul va imprima ora curentă pe DS3231 la fiecare 5 secunde. Puteți confirma că ora este setată corect.

Dacă nu obțineți nicio ieșire după aproximativ 20 de ani, apăsați butonul de resetare pe arduino și așteptați din nou.

Dacă tot nu funcționează, verificați schița pe Arduino și / sau încărcați-o din nou. (Important: Închideți portul în aplicația Java înainte de a încărca pe Arduino; altfel va bloca portul serial!) Apoi resetați conexiunea în programul Java.

(Programul Java folosește LocalDateTime pentru a obține data curentă.)

Ora este stabilită. A se distra

Știți că aveți probleme de nerezolvat la setarea orei, vă rugăm să comentați mai jos și să partajați cu mine log.txt (în același folder cu borcanul). Mulțumesc mult!