Turinys:
Video: Tikslus, greitas ir automatinis DS3231 RTC (realiojo laiko laikrodžio) nustatymas naudojant „Java“(+-1 s): 3 žingsniai
2024 Autorius: John Day | [email protected]. Paskutinį kartą keistas: 2024-01-30 10:46
Ši instrukcija parodys, kaip nustatyti laiką DS3231 realiojo laiko laikrodyje naudojant „Arduino“ir mažą „Java“programą, naudojančią serijinį „Arduino“ryšį.
Pagrindinė šios programos logika:
1. „Arduino“siunčia serijinę užklausą.
2. „Java“programa žiūri, kokią dieną/mėnesį/… arduino paprašė ir atsiunčia svarbius duomenis.
3. Surinkus visą reikalingą informaciją, arduino saugo duomenis DS3231.
DS3231 RTC modulis
DS3231 RTC modulis yra palyginti pigus RTC modulis su dideliu tikslumu. (kelios minutės per metus)
Yra įvairių veislių, kurių pagrindinės funkcijos yra tos pačios, tik su nedideliais skirtumais.
Išsamų palyginimą rasite čia: DS323x palyginimas | maximintegrated.com
Pirkti DS3231: DS3231 | ebay.com
Duomenų lapas: DS3231 duomenų lapas | maximintegrated.com
Duomenų lapas: DS1307 duomenų lapas | maximintegrated.com
Reikalingos dalys
1x „Arduino“(„Nano“, „Uno“, MEGA ir kt.)
4x jungiamieji laidai
1x DS3231 modulis (DS1307 modulis)
1 žingsnis: laidų prijungimas
Prijunkite DS3231, kaip parodyta aukščiau esančiame paveikslėlyje. Žinoma, galite tai padaryti nenaudodami duonos lentos, tačiau tai bus šiek tiek nepatogiau. Demonstracijai naudojau „Arduino Nano“, tačiau taip pat turėtų veikti „Uno“arba „MEGA“. (Kiti taip pat gali dirbti, bet aš tingiu patvirtinti)
- „Arduino“-> DS3231
- A4 -> SCL
- A5 -> SDA
- 5V -> VCC
- GND -> GND
2 žingsnis: „Arduino“kodas
Atsisiųskite.ino failą iš apačios ir įkelkite jį į „Arduino“(mano atveju - „Nano“).
Kad eskizas veiktų tinkamai, reikia įdiegti šias bibliotekas:
github.com/PaulStoffregen/Time
github.com/JChristensen/DS3232RTC
Pamoką, kaip įkelti kodą į savo arduino, rasite čia (arduino.cc).
„Arduino IDE“patikrinkite, ar kodas buvo pateiktas teisingai. (Įkėlimas baigtas)
Dabar jūsų „Arduino“yra pasirengęs priimti informaciją apie laiką
Atsisiųskite kodą čia: DS3231TimeSync.zip (mediafire.com)
Atsisiųskite šaltinį čia: DS3231TimeSyncSRC.zip (mediafire.com)
„GitHub“saugykla: DS3213 RTC laiko sinchronizavimas (github.com)
„Bitbucket“saugykla: DS3231 RTC Time Sync (bitbucket.com)
3 žingsnis: „Java“programa
1. Paleiskite anksčiau atsisiųstą „DS3231Sync.jar“dukart spustelėdami
2. Atsidarys mažas dialogo langas, kuriame bus prašoma įvesti jūsų arduino prievadą
Jei nesate tikri dėl savo arduino naudojamo uosto, pažiūrėkite į „Arduino IDE“apačioje dešinėje.
(Žiūrėkite aukščiau esančius vaizdus)
3. Atsidarys kitas dialogo langas ir paprašys jūsų laiko juostos poslinkio
Poslinkis yra susijęs su jūsų kompiuterio vietiniu laiku. Norėdami nustatyti RTC vietinį laiką, tiesiog įveskite +00: 00.
Labai svarbu įvesti laiko juostos poslinkį tam tikru formatu!
Bendras formatas yra +hh: mm arba -hh: mm. Visada įtraukite pirmuosius nulius!
(Pvz.: -03: 00; -06: 00; +09: 00; +02: 30)
4. „Java“programa paleis nedidelį langą su konsolės išvestimi
Stebėkite tokius patvirtinimo pranešimus kaip: „Laikas nustatytas“
Kai laiko nustatymo procesas bus baigtas, kodas kas 5 sekundes išspausdins dabartinį laiką DS3231. Galite patvirtinti, kad laikas nustatytas teisingai.
Jei po ~ 20s negausite jokios išvesties, paspauskite „arduino“nustatymo iš naujo mygtuką ir palaukite dar kartą.
Jei jis vis tiek neveikia, patikrinkite eskizą „Arduino“ir (arba) įkelkite jį dar kartą. (Svarbu: prieš įkeldami į „Arduino“uždarykite „Java“programos prievadą; Priešingu atveju jis užblokuos nuoseklųjį prievadą!) Tada iš naujo nustatykite ryšį „Java“programoje.
(„Java“programa naudoja „LocalDateTime“, kad gautų dabartinę datą.)
Dabar nustatytas laikas. Pasilinksmink
Jei turite kokių nors neišsprendžiamų problemų nustatydami laiką, pakomentuokite žemiau ir pasidalykite su manimi savo log.txt (tame pačiame aplanke kaip stiklainis). Labai ačiū!