Ta ura za realni čas, ki temelji na Arduinu, je digitalna ura za prikaz realnega časa z uporabo RTC IC DS1307, ki deluje na protokolu I2C. Ura realnega časa pomeni, da deluje tudi po izpadu električne energije. Ko je napajanje ponovno priključeno, prikaže realni čas ne glede na čas in trajanje, ko je bil izklopljen. V tem projektu Arduino budilke smo uporabili LCD modul 16x2 za prikaz časa v obliki - "ura, minuta, sekunde, datum, mesec in leto". Dodana je tudi možnost alarma in nastavimo lahko čas alarma. Ko je čas alarma prihranjen v notranjem EEPROM-u arduina, ostane shranjen tudi po ponastavitvi ali izpadu električne energije. Ure v realnem času se pogosto uporabljajo v naših računalnikih, hišah, pisarnah in elektronskih napravah, da jih sproti posodabljamo.
I2C protokol je metoda za povezavo dveh ali več naprav, ki uporabljajo dve žici, v en sistem, zato se ta protokol imenuje tudi dvožični protokol. Uporablja se lahko za komunikacijo 127 naprav z eno samo napravo ali procesorjem. Večina naprav I2C deluje na frekvenci 100 kHz.
Koraki za zapisovanje podatkov master-slave (način sprejemanja slave-a)
- Pošlje pogoj START v pomožno enoto.
- Pošlje suženjski naslov suženjstvu.
- Pošlji bit za pisanje (0) pomožniku.
- Prejel je bit ACK od pomožnika
- Pošlje besed naslov sužnju.
- Prejel je bit ACK od pomožnika
- Pošlje podatke podrejenemu.
- Prejel je bit ACK od pomožnika.
- In nazadnje pogoj STOP pošlje pomožniku.
Koraki za branje podatkov od podrejenega do glavnega (način oddajanja podrejenega)
- Pošlje pogoj START v pomožno enoto.
- Pošlje suženjski naslov suženjstvu.
- Pošlji branje bita (1) pomožniku.
- Prejel je bit ACK od pomožnika
- Prejeti podatki od pomožnika
- Prejel je bit ACK od pomožnika.
- Pošlje pogoj STOP pomožnemu.
Za izdelavo te digitalne ure na osnovi RTC DS1307 IC smo tukaj uporabili Arduino Pro Mini, lahko pa uporabite tudi kateri koli drug model Arduino, kot sta Arduino Uno ali Arduino Nano. Skupaj z Arduino ploščo, DS1307 RTC IC, smo uporabili 16x2 LCD modul za prikaz ure in datuma, kristalni oscilator, 7805 regulator napetosti, brenčalo in nekaj tranzistorjev in uporov.
Shema vezja in opis
V tem vezju digitalne ure, ki temelji na Arduinu, smo uporabili tri glavne komponente, to so IC DS1307, Arduino Pro Mini Board in 16x2 LCD modul.
Tu se arduino uporablja za branje časa iz ds1307 in prikaz na LCD zaslonu 16x2. DS1307 pošlje čas / datum z dvema vrsticama na arduino. Za prikaz alarma se uporablja tudi zvočni signal, ki ob vklopu alarma zapiska. Blok diagram je prikazan spodaj, da bi razumel delovanje te ure v realnem času.
Kot lahko vidite na vezju, so čipi DSA307 čipa SDA in SCL povezani z arduino zatiči SDA in SCL z vlečnim uporom, ki ima privzeto vrednost HIGH na podatkovnih in urnih linijah. 32.768KHz kristalnega oscilatorja je povezan z DS1307 čip za generiranje točne 1 sekundno zakasnitev, in 3-voltni akumulator je povezan tudi zatič 3 rd (BAT) z DS1307 ki ohranja čas delovanja po izpadu električne energije. 16x2 LCD je povezan z arduino v 4-bitnem načinu. Krmilni zatiči RS, RW in En so neposredno povezani z arduino pin 2, GND in 3. In podatkovni pin D0-D7 je povezan s 4, 5, 6, 7 arduina. Zvočni signal je povezan z arduino zatičem številka 13 prek tranzistorja NPN BC547, ki ima v osnovi 1 k upor.
Trije gumbi, in sicer set, INC in Next, se uporabljajo za nastavitev alarma na pin 12, 11 in 10 arduina v aktivnem nizkem načinu. Ko pritisnemo set, se aktivira način nastavitve alarma in zdaj moramo nastaviti alarm z gumbom INC, gumb Next pa se uporablja za premik na številko. Popolna nastavitev te realnočasovne ure z alarmom je prikazana na spodnji sliki. Podrobno vadnico o digitalni budilki lahko preverite tudi z mikrokrmilnikom AVR.
Opis programa
Za programiranje te ure v realnem času smo uporabili nekaj knjižnic za pridobivanje časa / datuma iz DS1307 in za prikaz na LCD-ju, ki so podane spodaj:
Inicializacija RTC, LCD in vhodnega izhoda se izvede v nastavitveni zanki.
Preostanek stvari, kot je čas branja, nastavitev alarma, se izvede v odseku void loop.