Tämä Arduino-pohjainen reaaliaikainen kello on digitaalinen kello, joka näyttää reaaliaikaisen I2C-protokollalla toimivan RTC IC DS1307: n avulla. Reaaliaikainen kello tarkoittaa, että se toimii myös sähkökatkon jälkeen. Kun virta kytketään uudelleen, se näyttää reaaliaikaa riippumatta ajasta ja kestosta, jonka se oli pois päältä -tilassa. Tässä Arduino-herätyskelloprojektissa olemme käyttäneet 16x2 LCD-moduulia näyttämään ajan muodossa "tunti, minuutti, sekunti, päivämäärä, kuukausi ja vuosi". Hälytysvaihtoehto lisätään myös, ja voimme asettaa hälytysajan. Kun hälytysaika on tallentunut arduinon sisäiseen EEPROM-muistiin, se säilyy tallennettuna myös kuittauksen tai sähkökatkon jälkeen. Reaaliaikaisia kelloja käytetään yleisesti tietokoneissamme, taloissa, toimistoissa ja elektroniikkalaitteissa pitämään ne ajan tasalla reaaliajassa.
I2C-protokolla on tapa yhdistää kaksi tai useampia laitteita kahdella johtimella yhteen järjestelmään, joten tätä protokollaa kutsutaan myös kaksilankaiseksi protokollaksi. Sitä voidaan käyttää 127 laitteen kommunikointiin yhteen laitteeseen tai prosessoriin. Suurin osa I2C-laitteista toimii 100 kHz: n taajuudella.
Vaiheet tiedon kirjoittamisen isännälle orjalle (orjan vastaanottotila)
- Lähettää START-ehdon orjalle.
- Lähettää orjaosoitteen orjalle.
- Lähetä kirjoitusbitti (0) orjalle.
- Vastaanotettu ACK-bitti orjalta
- Lähettää sanat osoitteen orjalle.
- Vastaanotettu ACK-bitti orjalta
- Lähettää tietoja orjalle.
- Vastaanotettu ACK-bitti orjalta.
- Ja viimeisin lähettää STOP-ehdon orjalle.
Vaiheet tietojen lukemiseen orjalta isännälle (orjan lähetystila)
- Lähettää START-ehdon orjalle.
- Lähettää orjaosoitteen orjalle.
- Lähetä luettu bitti (1) orjalle.
- Vastaanotettu ACK-bitti orjalta
- Vastaanotettu tietoja orjalta
- Vastaanotettu ACK-bitti orjalta.
- Lähettää STOP-ehdon orjalle.
Tämän RTC DS1307 IC -pohjaisen digitaalisen kellon rakentamiseen olemme käyttäneet täällä Arduino Pro Miniä, mutta voit käyttää myös mitä tahansa muuta Arduino-mallia, kuten Arduino Uno tai Arduino Nano. Arduino-kortin, DS1307 RTC IC: n, kanssa olemme käyttäneet 16x2 LCD-moduulia kellonajan ja päivämäärän näyttämiseen, kideoskiallaattoria, 7805-jännitesäätintä, summeria ja muutamia transistoreita ja vastuksia.
Piirikaavio ja kuvaus
Tässä Arduino-pohjaisessa digitaalikellopiirissä olemme käyttäneet kolmea pääkomponenttia, jotka ovat IC DS1307, Arduino Pro Mini Board ja 16x2 LCD-moduuli.
Täällä arduinoa käytetään ds1307: n lukuaikaan ja näytetään se 16x2 LCD: llä. DS1307 lähettää ajan / päivämäärän 2 rivillä arduinolle. Hälytyksen ilmaisemiseen käytetään myös summeria, joka antaa äänimerkin, kun hälytys aktivoidaan. Alla on lohkokaavio tämän reaaliaikakellon toiminnan ymmärtämiseksi.
Kuten piirikaaviosta näkyy, DS1307-sirutappi SDA ja SCL on kytketty arduino-nastoihin SDA ja SCL vetovastuksella, jolla on oletusarvo HIGH datalla ja kellolinjoilla. 32,768 kideoskillaattori on yhdistetty DS1307 siru tuottaa tarkan 1 sekunnin viive, ja 3 voltin akku on kytketty myös nasta 3 rd (BAT) ja DS1307, joka pitää kulua jälkeen sähköhäiriö. 16x2 LCD on liitetty arduinoon 4-bittisessä tilassa. Ohjaustapa RS, RW ja En on kytketty suoraan arduino-nastoihin 2, GND ja 3. Ja datanapa D0-D7 on kytketty arduinon 4, 5, 6, 7 liittimiin. Summeri on kytketty arduino-nastanumeroon 13 NPN BC547 -transistorin kautta, jonka pohjassa on 1 k: n vastus.
Kolme painiketta, nimittäin asetettu, INC ja Next käytetään hälytyksen asettamiseen arduinon nastoille 12, 11 ja 10 aktiivisessa matalassa tilassa. Kun painamme asetusta, hälytysasetustila aktivoituu ja nyt meidän on asetettava hälytys INC-painikkeella ja Seuraava-painiketta käytetään siirtymiseen numeroon. Tämän reaaliaikaisen hälytyksellä varustetun kellon täydellinen leikkuulauta-asetus näkyy kuvan alla. Voit myös tarkistaa yksityiskohtaisen opastuksen digitaalisesta herätyskellosta AVR-mikrokontrollerilla.
Ohjelman kuvaus
Tämän reaaliaikakellon ohjelmoimiseksi olemme käyttäneet joitain kirjastoja ajan / päivämäärän poimimiseksi DS1307: stä ja näyttämiseen LCD-näytöllä, jotka on annettu alla:
RTC: n, LCD: n ja tulolähdön alustaminen suoritetaan asetussilmukassa.
Muut asiat, kuten lukuaika, hälytyksen asettaminen suoritetaan tyhjäpiiriosassa.