INHOUDSOPGAWE:
Video: Stel die DS3231 RTC (Real Time Clock) akkuraat, vinnig en outomaties in met behulp van Java (+-1s): 3 stappe
2024 Outeur: John Day | [email protected]. Laas verander: 2024-01-30 07:25
Hierdie instruksies gaan u wys hoe u die tyd op 'n DS3231 Real Time Clock kan stel met 'n Arduino en 'n klein Java -toepassing wat die seriële verbinding van die Arduino gebruik.
Die basiese logika van hierdie program:
1. Die Arduino stuur 'n reeks versoek.
2. Die Java -program kyk watter dag/maand/… die arduino aangevra het en stuur die relevante data terug.
3. Nadat al die nodige inligting versamel is, stoor die arduino die data in die DS3231.
Die DS3231 RTC -module
Die DS3231 RTC -module is 'n relatief goedkoop RTC -module met 'n hoë akkuraatheid. ('n paar minute per jaar)
Daar is verskillende variëteite waarvan die basiese funksionaliteit dieselfde is, met slegs geringe verskille.
Hier kan u 'n gedetailleerde vergelyking vind: DS323x Vergelyking | maximintegrated.com
Koop DS3231: DS3231 | ebay.com
Gegevensblad: DS3231 Gegevensblad | maximintegrated.com
Gegevensblad: DS1307 Gegevensblad | maximintegrated.com
Onderdele benodig
1x Arduino (Nano, Uno, MEGA, ens.)
4x Jumper drade
1x DS3231 -module (DS1307 -module)
Stap 1: Bedrading
Bedraad die DS3231 soos in die prent hierbo getoon. U kan dit natuurlik doen sonder die gebruik van 'n broodbord, maar dit sal 'n bietjie morsiger wees. Ek het 'n Arduino Nano vir demonstrasie gebruik, maar 'n Uno of 'n MEGA behoort ook te werk. (Ander kan ook werk, maar ek is te lui om te bevestig)
- Arduino -> DS3231
- A4 -> SCL
- A5 -> SDA
- 5V -> VCC
- GND -> GND
Stap 2: Die Arduino -kode
Laai die.ino -lêer van onder af en laai dit op na u Arduino (in my geval 'n Nano).
Die skets benodig die volgende biblioteke om korrek te werk:
github.com/PaulStoffregen/Time
github.com/JChristensen/DS3232RTC
U kan hier 'n handleiding vind om die kode na u arduino op te laai (arduino.cc).
Verifieer in die Arduino IDE dat die kode korrek ingedien is. (Oplaai klaar)
U Arduino is nou gereed om tydinligting te ontvang
Laai die kode hier af: DS3231TimeSync.zip (mediafire.com)
Laai die bron hier af: DS3231TimeSyncSRC.zip (mediafire.com)
GitHub -bewaarplek: DS3213 RTC Time Sync (github.com)
Bitbucket -bewaarplek: DS3231 RTC Time Sync (bitbucket.com)
Stap 3: Die Java -toepassing
1. Begin "DS3231Sync.jar" wat voorheen afgelaai is deur dubbel te klik
2. 'n Klein dialoog word oopgemaak waarin u gevra word na die poort van u arduino
As u onseker is oor die poort wat u arduino gebruik, kyk dan na die Arduino IDE regs onder.
(Sien prente hierbo)
3. 'n Ander dialoog sal oopmaak en u vra vir 'n tydsone -verrekening
Die offset is relatief tot die plaaslike tyd van u rekenaar. Voer +00: 00 in om die RTC op u plaaslike tyd in te stel.
Dit is van kritieke belang dat u die tydsone -offset in 'n spesifieke formaat betree!
Die algemene formaat is +hh: mm of -hh: mm. Sluit altyd voorste nulle in!
(Byvoorbeeld: -03: 00; -06: 00; +09: 00; +02: 30)
4. Die Java -toepassing stel 'n klein venster oop met konsole -uitset
Hou bevestigingsboodskappe dop soos: "Tyd vasgestel"
As die tydsbepalingsproses voltooi is, sal die kode elke 5 sekondes die huidige tyd op die DS3231 druk. U kan bevestig dat die tyd korrek ingestel is.
As u na ongeveer 20's geen uitset kry nie, druk die reset -knoppie op u arduino en wag weer.
As dit nog steeds nie werk nie, verifieer die skets op die Arduino en/of laai dit weer op. (Belangrik: sluit die poort in die Java -toepassing voordat u dit na die Arduino laai; anders blokkeer dit die reekspoort!) Stel dan die verbinding in die Java -program terug.
(Die Java -program gebruik LocalDateTime om die huidige datum te kry.)
Die tyd is nou vasgestel. Hê pret
Moet u probleme ondervind om die tyd vas te stel, lewer 'n opmerking hieronder en deel u log.txt (in dieselfde gids as die pot) met my. Baie dankie!