Acest ceas în timp real bazat pe Arduino este un ceas digital pentru afișarea în timp real folosind un IC RTC DS1307 care funcționează pe protocolul I2C. Ceasul în timp real înseamnă că funcționează chiar și după întreruperea alimentării. Când alimentarea este reconectată, afișează timpul real indiferent de timpul și durata în care a fost în starea oprită. În acest proiect de ceas cu alarmă Arduino, am folosit un modul LCD de 16x2 pentru a afișa ora în formatul „oră, minut, secunde, dată, lună și an”. Se adaugă și o opțiune de alarmă și putem seta ora de alarmă. Odată ce timpul de alarmă a fost salvat în EEPROM internă a arduino, acesta rămâne salvat chiar și după resetare sau întreruperea curentului electric. Ceasurile în timp real sunt utilizate în mod obișnuit în computerele, casele, birourile și dispozitivele noastre electronice pentru a le menține actualizate în timp real.
Protocolul I2C este o metodă de conectare a două sau mai multe dispozitive folosind două fire la un singur sistem și, prin urmare, acest protocol este numit și protocol cu două fire. Poate fi folosit pentru a comunica 127 de dispozitive către un singur dispozitiv sau procesor. Majoritatea dispozitivelor I2C rulează pe o frecvență de 100 KHz.
Pași pentru scrierea de date master to slave (modul de recepție slave)
- Trimite condiția START sclavului.
- Trimite adresa sclavului sclavului.
- Trimiteți bitul de scriere (0) către sclav.
- Bit ACK primit de la sclav
- Trimite cuvinte adresate sclavului.
- Bit ACK primit de la sclav
- Trimite date sclavului.
- Bit ACK primit de la sclav.
- Și ultima trimite starea STOP către sclav.
Pași pentru citirea datelor de la slave la master (modul de transmisie slave)
- Trimite condiția START sclavului.
- Trimite adresa sclavului sclavului.
- Trimiteți bitul de citire (1) către sclav.
- Bit ACK primit de la sclav
- Date primite de la sclav
- Bit ACK primit de la sclav.
- Trimite starea STOP sclavului.
Pentru a construi acest ceas digital bazat pe IC RTC DS1307 , am folosit aici Arduino Pro Mini, dar puteți utiliza și orice alt model Arduino, cum ar fi Arduino Uno sau Arduino Nano. Împreună cu placa Arduino, DS1307 RTC IC, am folosit modul LCD 16x2 pentru a afișa ora și data, un oscilator de cristal, regulator de tensiune 7805, un buzzer și puțini tranzistori și rezistențe.
Diagrama și descrierea circuitului
În acest circuit de ceas digital bazat pe Arduino, am folosit trei componente majore care sunt IC DS1307, Arduino Pro Mini Board și modulul LCD 16x2.
Aici arduino este utilizat pentru citirea timpului de la ds1307 și afișarea acestuia pe ecranul LCD 16x2. DS1307 trimite ora / data folosind 2 linii către arduino. Un semnal sonor este, de asemenea, utilizat pentru indicarea alarmei, care emite un sunet atunci când alarma este activată. O diagramă bloc este prezentată mai jos pentru a înțelege funcționarea acestui ceas în timp real.
După cum puteți vedea în schema de circuite, pinul SDA și SCL al cipului DS1307 sunt conectate la pinii arduino SDA și SCL cu rezistență pull-up care deține valoarea implicită HIGH la liniile de date și de ceas. 32.768KHz oscilator cristal este conectat cu DS1307 cip pentru a genera exact 1 secunda, iar o baterie de 3 volți este, de asemenea, conectat la pinul 3 rd (BAT) din DS1307 care menține timp de funcționare, după eșecul de energie electrică. LCD 16x2 este conectat cu arduino în modul 4 biți. Pinul de control RS, RW și En sunt conectate direct la pinul arduino 2, GND și 3. Și pinul de date D0-D7 este conectat la 4, 5, 6, 7 din arduino. Un buzzer este conectat cu pinul arduino numărul 13 printr-un tranzistor NPN BC547 având un rezistor de 1 k la baza sa.
Trei butoane și anume set, INC și Next sunt utilizate pentru setarea alarmei la pinul 12, 11 și 10 al arduino în modul activ activ. Când apăsăm set, se activează modul setare alarmă și acum trebuie să setăm alarma folosind butonul INC, iar butonul Următor este utilizat pentru trecerea la cifră. Configurarea completă a acestui ceas în timp real cu alarmă este prezentată în imaginea de mai jos. De asemenea, puteți verifica un tutorial detaliat despre ceasul cu alarmă digitală cu microcontroler AVR.
Descrierea programului
Pentru a programa acest ceas în timp real, am folosit câteva biblioteci pentru extragerea orei / datei din DS1307 și pentru afișarea pe LCD, care sunt date mai jos:
Iar inițializarea RTC, LCD și a ieșirii de intrare se efectuează în bucla de configurare.
Restul lucrurilor, cum ar fi timpul de citire, setarea alarmei se efectuează în secțiunea buclă nulă.