Denne Arduino-baserte sanntidsklokken er en digital klokke som viser sanntid ved hjelp av en RTC IC DS1307 som fungerer på I2C-protokollen. Sanntidsklokke betyr at den går selv etter strømbrudd. Når strømmen kobles til igjen, viser den sanntid uansett tid og varighet den var i av-tilstand. I dette Arduino vekkerklokke-prosjektet har vi brukt en 16x2 LCD-modul til å vise tiden i - "time, minutt, sekunder, dato, måned og år" -format. Et alarmalternativ er også lagt til, og vi kan stille inn alarmtiden. Når alarmtiden er lagret i intern EEPROM i arduino, forblir den lagret selv etter tilbakestilling eller strømbrudd. Sanntidsklokker brukes ofte i datamaskiner, hus, kontorer og elektronikkutstyr for å holde dem oppdatert i sanntid.
I2C-protokollen er en metode for å koble to eller flere enheter ved hjelp av to ledninger til et enkelt system, og så kalles denne protokollen også som to-tråds protokoll. Den kan brukes til å kommunisere 127 enheter til en enkelt enhet eller prosessor. De fleste I2C-enheter kjører på 100 KHz frekvens.
Fremgangsmåte for dataskriving master to slave (slave mottaksmodus)
- Sender START-tilstand til slave.
- Sender slave-adresse til slave.
- Send skrivebit (0) til slave.
- Mottatt ACK-bit fra slave
- Sender ordadresse til slave.
- Mottatt ACK-bit fra slave
- Sender data til slave.
- Mottatt ACK-bit fra slave.
- Og sist sender STOP-tilstand til slave.
Fremgangsmåte for dataavlesning fra slave til master (slaveoverføringsmodus)
- Sender START-tilstand til slave.
- Sender slave-adresse til slave.
- Send lesebit (1) til slave.
- Mottatt ACK-bit fra slave
- Mottatt data fra slave
- Mottatt ACK-bit fra slave.
- Sender STOP-tilstand til slave.
For å bygge denne RTC DS1307 IC- baserte digitale klokken har vi brukt Arduino Pro Mini, men du kan også bruke hvilken som helst annen Arduino-modell som Arduino Uno eller Arduino Nano. Sammen med Arduino-kortet, DS1307 RTC IC, har vi brukt 16x2 LCD-modul for å vise tid og dato, en krystallosciallator, 7805 spenningsregulator, en summer og få transistorer og motstander.
Kretsdiagram og beskrivelse
I denne Arduino-baserte digitale klokkekretsen har vi brukt tre hovedkomponenter som er IC DS1307, Arduino Pro Mini Board og 16x2 LCD-modul.
Her brukes arduino til lesetid fra ds1307 og vise den på 16x2 LCD. DS1307 sender tid / dato ved hjelp av to linjer til arduino. En summer brukes også til alarmindikasjon, som piper når alarmen aktiveres. Et blokkdiagram er vist nedenfor for å forstå hvordan denne sanntidsklokken fungerer.
Som du kan se i kretsskjemaet, er DS1307 chip pin SDA og SCL koblet til arduino pins SDA og SCL med pull up motstand som har standardverdien HIGH på data og klokkelinjer. 32.768KHz krystalloscillator er koblet til DS1307-brikke for å generere nøyaktig 1 sekunders forsinkelse, og et 3 volt batteri er også koblet til pin 3 rd (BAT) av DS1307 som holder tiden i gang etter strømbrudd. 16x2 LCD er koblet til arduino i 4-biters modus. Kontrollpinne RS, RW og En er direkte koblet til arduino pin 2, GND og 3. Og datapinne D0-D7 er koblet til 4, 5, 6, 7 av arduino. En summer er koblet til arduino pin nummer 13 gjennom en NPN BC547 transistor som har en 1 k motstand i basen.
Tre knapper, nemlig sett, INC og Neste, brukes til å stille alarm til pin 12, 11 og 10 i arduino i aktiv lavmodus. Når vi trykker på sett, aktiveres alarminnstillingsmodus, og nå må vi stille alarm ved å bruke INC-knappen og Neste-knappen brukes til å flytte til siffer. Det komplette brødbrettoppsettet til denne sanntidsklokken med alarm vises i bildet nedenfor. Du kan også sjekke en detaljert opplæring om digital vekkerklokke med AVR-mikrokontroller.
Programbeskrivelse
For å programmere denne sanntidsklokken har vi brukt noen biblioteker for å trekke ut tid / dato fra DS1307 og for visning på LCD, som er gitt nedenfor:
Og initialisering av RTC, LCD og inngangsutgang utføres i oppsettløkke.
Resten av ting som lesetid, innstilling av alarm utføres i delen om ugyldig sløyfe.