Turinys:

Tikslus, greitas ir automatinis DS3231 RTC (realiojo laiko laikrodžio) nustatymas naudojant „Java“(+-1 s): 3 žingsniai
Tikslus, greitas ir automatinis DS3231 RTC (realiojo laiko laikrodžio) nustatymas naudojant „Java“(+-1 s): 3 žingsniai

Video: Tikslus, greitas ir automatinis DS3231 RTC (realiojo laiko laikrodžio) nustatymas naudojant „Java“(+-1 s): 3 žingsniai

Video: Tikslus, greitas ir automatinis DS3231 RTC (realiojo laiko laikrodžio) nustatymas naudojant „Java“(+-1 s): 3 žingsniai
Video: Kaip teisingai pririšti kabliuką prie valo? Automatinis kabliukų surišėjas. 2024, Liepa
Anonim
Tikslus, greitas ir automatinis DS3231 RTC (realiojo laiko laikrodžio) nustatymas naudojant „Java“(+-1s)
Tikslus, greitas ir automatinis DS3231 RTC (realiojo laiko laikrodžio) nustatymas naudojant „Java“(+-1s)

Š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

Laidai
Laidai

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

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

„Java“programa
„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ū!