Šis „Arduino“ pagrįstas realaus laiko laikrodis yra skaitmeninis laikrodis, rodantis realųjį laiką naudojant „ RTC IC DS1307“, kuris veikia pagal „I2C“ protokolą. Realaus laiko laikrodis reiškia, kad jis veikia net ir nutrūkus elektros tiekimui. Kai maitinimas vėl prijungiamas, jis rodo realųjį laiką, neatsižvelgdamas į laiką ir trukmę, kai jis buvo išjungtas. Šiame „ Arduino“ žadintuvo projekte mes naudojome 16x2 LCD modulį, kad laikas būtų rodomas „valanda, minutė, sekundės, data, mėnuo ir metai“ formatu. Taip pat pridedama aliarmo parinktis ir mes galime nustatyti žadintuvo laiką. Kai aliarmo laikas išsaugotas vidiniame „Arduino“ EEPROM, jis išlieka išsaugotas net ir iš naujo nustatius ar sugedus elektrai. Realaus laiko laikrodžiai dažniausiai naudojami mūsų kompiuteriuose, namuose, biuruose ir elektronikos prietaisuose, kad jie būtų atnaujinami realiuoju laiku.
„I2C“ protokolas yra būdas sujungti du ar daugiau įrenginių, naudojant du laidus, į vieną sistemą, todėl šis protokolas taip pat vadinamas dviejų laidų protokolu. Jis gali būti naudojamas 127 įrenginiams perduoti į vieną įrenginį ar procesorių. Dauguma „I2C“ įrenginių veikia 100 kHz dažniu.
Duomenų rašymo pagrindinio vergo veiksmai (vergo priėmimo režimas)
- Siunčia vergui START sąlygą.
- Siunčia vergo adresą vergui.
- Siųsti rašymo bitą (0) vergui.
- Gavote ACK bitą iš vergo
- Siunčia žodžius adresą vergui.
- Gavote ACK bitą iš vergo
- Siunčia duomenis vergui.
- Gavote ACK bitą iš vergo.
- Ir paskutinis siunčia STOP sąlygą vergui.
Duomenų skaitymo nuo vergo iki pagrindinio veiksmai (vergo perdavimo režimas)
- Siunčia vergui START sąlygą.
- Siunčia vergo adresą vergui.
- Siųsti skaitytą bitą (1) vergui.
- Gavote ACK bitą iš vergo
- Gavo duomenis iš vergo
- Gavote ACK bitą iš vergo.
- Siunčia vergui STOP sąlygą.
Norėdami sukurti šį „RTC DS1307 IC“ pagrindu veikiantį skaitmeninį laikrodį, čia naudojome „Arduino Pro Mini“, tačiau taip pat galite naudoti bet kurį kitą „Arduino“ modelį, pvz., „Arduino Uno“ ar „Arduino Nano“. Kartu su „Arduino“ plokšte, „DS1307 RTC IC“, naudojome 16x2 LCD modulį, rodantį laiką ir datą, kristalinį osialialiatorių, 7805 įtampos reguliatorių, garsinį signalą ir keletą tranzistorių bei rezistorių.
Grandinės schema ir aprašymas
Šioje „Arduino“ pagrindu veikiančioje skaitmeninio laikrodžio grandinėje mes panaudojome tris pagrindinius komponentus, kurie yra „IC DS1307“, „Arduino Pro Mini Board“ ir 16x2 LCD modulis.
Čia „arduino“ naudojamas skaitymo laikui nuo ds1307 ir rodyti jį 16x2 LCD ekrane. DS1307 siunčia laiką / datą naudodamas 2 eilutes „arduino“. Aliarmo indikacijai taip pat naudojamas garsinis signalas, kuris pypteli įsijungus aliarmui. Blokinė schema parodyta žemiau, kad suprastumėte šio realaus laiko laikrodžio veikimą.
Kaip matote grandinės schemoje, DS1307 mikroschemos kaiščiai SDA ir SCL yra prijungti prie „Arduino“ kaiščių SDA ir SCL su pakeliamąja rezistoriumi, kuris duomenų ir laikrodžio linijose laiko numatytąją reikšmę HIGH. 32,768KHz kristalinis osciliatorius yra prijungtas prie „DS1307“ lusto, kad generuotų tikslią 1 sekundės vėlavimą, o 3 voltų baterija taip pat prijungta prie DS1307 3 - ojo kaiščio (GPGB), kuris palaiko laiką po elektros energijos gedimo. 16x2 skystųjų kristalų ekranas yra sujungtas su „arduino“ 4 bitų režimu. Valdymo kaištis RS, RW ir En yra tiesiogiai prijungtas prie „arduino“ 2, GND ir 3 kontaktų. O duomenų kaištis D0-D7 yra prijungtas prie 4, 5, 6, 7 arduino. Per „NPN BC547“ tranzistorių, kurio pagrinde yra 1 k rezistorius, su „arduino“ smeigtuku yra sujungtas signalas.
Trys mygtukai, ty „set“, „INC“ ir „Next“, yra naudojami nustatant žadintuvą 12, 11 ir 10 „arduino“ kaiščiams aktyviu žemo režimo režimu. Kai paspaudžiame „Set“, įsijungia žadintuvo nustatymo režimas ir dabar turime nustatyti žadintuvą naudodami INC mygtuką, o mygtukas „Next“ naudojamas pereinant prie skaitmens. Visiškas šio realaus laiko laikrodžio nustatymas su signalizacija parodytas žemiau esančiame paveikslėlyje. Taip pat galite patikrinti išsamią skaitmeninio žadintuvo su AVR mikrovaldikliu instrukciją.
Programos aprašymas
Norėdami programuoti šį realaus laiko laikrodį, mes naudojome kai kurias bibliotekas, kad gautume laiką / datą iš DS1307 ir rodytume LCD, kurie pateikiami žemiau:
RTC, LCD ir įvesties išvesties inicializavimas atliekamas sąrankos cikle.
Kiti dalykai, tokie kaip skaitymo laikas, žadintuvo nustatymas atliekamas tuštumos ciklo skyriuje.