Ovaj sat u stvarnom vremenu zasnovan na Arduinu digitalni je sat za prikaz stvarnog vremena pomoću RTC IC DS1307 koji radi na I2C protokolu. Sat u stvarnom vremenu znači da radi i nakon nestanka struje. Kad se napajanje ponovo poveže, prikazuje se u stvarnom vremenu bez obzira na vrijeme i trajanje kada je bilo isključeno. U ovom projektu budilice Arduino koristili smo LCD modul 16x2 za prikaz vremena u - "satu, minuti, sekundama, datumu, mjesecu i godini". Također je dodana opcija alarma i možemo postaviti vrijeme alarma. Jednom kada se alarm aktivira u internom EEPROM-u arduina, ostaje sačuvan čak i nakon resetiranja ili nestanka električne energije. Satovi u stvarnom vremenu obično se koriste u našim računalima, kućama, uredima i elektroničkim uređajima kako bi ih ažurirali u stvarnom vremenu.
I2C protokol je metoda povezivanja dva ili više uređaja koji koriste dvije žice na jedan sustav, pa se ovaj protokol naziva i dvožičnim protokolom. Može se koristiti za komunikaciju 127 uređaja s jednim uređajem ili procesorom. Većina I2C uređaja radi na frekvenciji od 100 Khz.
Koraci za master zapisivanje podataka u slave (način primanja slave)
- Šalje uvjet START u slave.
- Slave slave adresu slave.
- Pošaljite bit za pisanje (0) na slave.
- Primio je ACK bit od slave
- Pošalje riječi adresu robovu.
- Primio je ACK bit od slave
- Šalje podatke podređenom.
- Primio je ACK bit od slave.
- I posljednje šalje STOP uvjet slave.
Koraci za čitanje podataka s slave na master (način prijenosa slave)
- Šalje uvjet START u slave.
- Slave slave adresu slave.
- Pošaljite bit za čitanje (1) na slave.
- Primio je ACK bit od slave
- Primljeni podaci od slave
- Primio je ACK bit od slave.
- Šalje uvjet STOP podređenom.
Za izradu ovog digitalnog sata temeljenog na RTC DS1307 IC koristili smo ovdje Arduino Pro Mini, ali možete koristiti i bilo koji drugi Arduino model kao što je Arduino Uno ili Arduino Nano. Zajedno s Arduino pločom, DS1307 RTC IC, koristili smo 16x2 LCD modul za prikaz vremena i datuma, kristalni oscilator, regulator napona 7805, zujalicu i nekoliko tranzistora i otpornika.
Kružni dijagram i opis

U ovom krugu digitalnog sata temeljenog na Arduinu koristili smo tri glavne komponente, a to su IC DS1307, Arduino Pro Mini Board i LCD modul 16x2.
Ovdje se arduino koristi za čitanje vremena s ds1307 i prikaz na LCD zaslonu 16x2. DS1307 šalje vrijeme / datum pomoću dva retka na arduino. Zujalica se također koristi za indikaciju alarma, koja se oglašava kad je alarm aktiviran. Blok dijagram je prikazan dolje kako bi se razumjelo rad ovog sata u stvarnom vremenu.

Kao što možete vidjeti na shemi spojeva, DS1307 čip pin SDA i SCL povezani su na arduino pinove SDA i SCL povlačnim otpornikom koji zadržava zadanu vrijednost HIGH na podacima i linijama sata. 32.768KHz kristalni oscilator povezan sa čipom DS1307 za generiranje točnog 1 drugi kašnjenja i 3 V baterija je spojen na klin 3 rd (BAT) u vodi koja DS1307 vremena Napokon nakon nestanka električne energije. LCD 16x2 povezan je s arduinom u 4-bitnom načinu rada. Upravljački pin RS, RW i En izravno su povezani s arduino pinom 2, GND i 3. A podatkovni pin D0-D7 povezan je s 4, 5, 6, 7 arduina. Zujalica je povezana s arduino pinom broj 13 preko NPN BC547 tranzistora koji na svojoj bazi ima otpor 1 k.
Tri tipke, naime postavljene, INC i Next koriste se za postavljanje alarma na pin 12, 11 i 10 arduina u aktivnom niskom načinu rada. Kada pritisnemo set, aktivira se način postavljanja alarma i sada moramo postaviti alarm pomoću gumba INC, a gumb Next koristi se za pomicanje na znamenku. Kompletna postavka ploče ovog sata sa alarmom u stvarnom vremenu prikazana je na donjoj slici. Također možete provjeriti detaljan vodič o digitalnoj budilici s AVR mikrokontrolerom.

Opis programa
Za programiranje ovog sata u stvarnom vremenu koristili smo neke knjižnice za izdvajanje vremena / datuma iz DS1307 i za prikaz na LCD-u, koje su dane u nastavku:

A inicijalizacija RTC-a, LCD-a i ulaznog izlaza izvode se u petlji za podešavanje.

Ostatak stvari poput vremena čitanja, postavljanja alarma izvodi se u odjeljku praznine petlje.


