Sommario:
Video: Impostazione dell'RTC (Real Time Clock) DS3231 in modo accurato, veloce e automatizzato utilizzando Java (+-1s): 3 passaggi
2024 Autore: John Day | [email protected]. Ultima modifica: 2024-01-30 10:02
Questo Instructable ti mostrerà come impostare l'ora su un orologio in tempo reale DS3231 utilizzando un Arduino e una piccola applicazione Java che utilizza la connessione seriale di Arduino.
La logica di base di questo programma:
1. L'Arduino invia una richiesta seriale.
2. Il programma Java cerca quale giorno/mese/… l'arduino ha richiesto e restituisce i dati rilevanti.
3. Dopo che tutte le informazioni necessarie sono state raccolte, arduino memorizza i dati nel DS3231.
Il modulo RTC DS3231
Il modulo RTC DS3231 è un modulo RTC relativamente economico con un'elevata precisione. (pochi minuti all'anno)
Esistono diverse varietà la cui funzionalità di base è la stessa con solo piccole differenze.
Il confronto dettagliato può essere trovato qui: Confronto DS323x | maximintegrated.com
Acquista DS3231:DS3231 | ebay.com
Scheda tecnica:DS3231 Scheda tecnica | maximintegrated.com
Scheda tecnica:DS1307 Scheda tecnica | maximintegrated.com
Parti necessarie
1x Arduino (Nano, Uno, MEGA, ecc.)
4x cavi per ponticelli
1x modulo DS3231 (modulo DS1307)
Passaggio 1: cablaggio
Cablare il DS3231 come mostrato nell'immagine sopra. Ovviamente puoi farlo senza l'uso di una breadboard, ma sarà un po' più disordinato. Ho usato un Arduino Nano per la dimostrazione, ma dovrebbe funzionare anche uno Uno o un MEGA. (Anche altri potrebbero funzionare, ma sono troppo pigro per confermare)
- Arduino -> DS3231
- A4 -> SCL
- A5 ->SDA
- 5V -> VCC
- GND -> GND
Passaggio 2: il codice Arduino
Scarica il file.ino dal basso e caricalo sul tuo Arduino (nel mio caso un Nano).
Lo sketch necessita delle seguenti librerie installate per funzionare correttamente:
github.com/PaulStoffregen/Time
github.com/JChristensen/DS3232RTC
Un tutorial su come caricare il codice sul tuo arduino può essere trovato qui (arduino.cc).
Nell'IDE Arduino verifica che il codice sia stato inviato correttamente. (Caricamento completato)
Il tuo Arduino è ora pronto per ricevere informazioni sull'ora
Scarica il codice qui: DS3231TimeSync.zip (mediafire.com)
Scarica la fonte qui: DS3231TimeSyncSRC.zip (mediafire.com)
Repository GitHub: DS3213 RTC Time Sync (github.com)
Archivio Bitbucket: DS3231 RTC Time Sync (bitbucket.com)
Passaggio 3: l'applicazione Java
1. Eseguire "DS3231Sync.jar" scaricato in precedenza facendo doppio clic su di esso
2. Si aprirà una piccola finestra di dialogo che ti chiederà la porta del tuo arduino
Se non sei sicuro della porta utilizzata dal tuo arduino, dai un'occhiata nell'IDE di Arduino in basso a destra.
(Vedi immagini sopra)
3. Si aprirà un'altra finestra di dialogo che ti chiederà un offset del fuso orario
L'offset è relativo all'ora locale del computer. Per impostare l'RTC sulla tua ora locale, inserisci +00:00.
È fondamentale inserire l'offset del fuso orario in un formato specifico!
Il formato generale è +hh:mm o -hh:mm. Includi sempre gli zeri iniziali!
(Es.: -03:00; -06:00; +09:00; +02:30)
4. L'applicazione Java avvierà una piccola finestra con l'output della console
Tieni d'occhio i messaggi di conferma come: "Tempo impostato terminato"
Al termine del processo di impostazione dell'ora, il codice stamperà l'ora corrente sul DS3231 ogni 5 secondi. È possibile confermare che l'ora è impostata correttamente.
Se non ottieni alcun output dopo ~ 20 secondi, premi il pulsante di ripristino sul tuo arduino e attendi di nuovo.
Se ancora non funziona, verifica lo sketch su Arduino e/o caricalo di nuovo. (Importante: chiudere la porta nell'applicazione Java prima di caricare su Arduino, altrimenti bloccherà la porta seriale!) Quindi ripristinare la connessione nel programma Java.
(Il programma Java utilizza LocalDateTime per ottenere la data corrente.)
L'ora è ora impostata. Divertiti
Se hai problemi irrisolvibili nell'impostazione dell'ora, commenta qui sotto e condividi il tuo log.txt (nella stessa cartella del jar) con me. Molte grazie!