Ez az Arduino alapú valós idejű óra egy digitális óra, amely valós idejű megjelenítésre szolgál az I2C protokollon működő RTC IC DS1307 segítségével. A valós idejű óra azt jelenti, hogy áramkimaradás után is működik. A tápellátás újbóli bekapcsolásakor a valós idejét nem befolyásolja a kikapcsolt állapot és időtartam. Ebben az Arduino ébresztőóra projektben egy 16x2 LCD modult használtunk az idő megjelenítésére - "óra, perc, másodperc, dátum, hónap és év" formátumban. Riasztási lehetőség is hozzáadódik, és beállíthatjuk a riasztás idejét. Miután a riasztási idő megtakarult az arduino belső EEPROM-jában, visszaállítva vagy áramkimaradás után is megmarad. A valós idejű órákat gyakran használják számítógépeinkben, házainkban, irodáinkban és elektronikai készülékeinkben, hogy valós időben frissítsék őket.
Az I2C protokoll két vagy több eszköz két vezeték használatával történő összekapcsolása egyetlen rendszerrel, ezért ezt a protokollt két vezetékes protokollnak is nevezik. Használható 127 eszköz egyetlen eszközzel vagy processzorral történő kommunikációjára. Az I2C eszközök többsége 100Khz frekvencián működik.
Az adatíró master-szolga lépései (szolga vételi mód)
- START feltételt küld a rabszolgának.
- Rabszolga címet küld rabszolgának.
- Írási bit (0) küldése a rabszolgának.
- ACK bitet kapott a rabszolgától
- Címszavakat küld a rabszolgának.
- ACK bitet kapott a rabszolgától
- Adatokat küld rabszolgának.
- ACK bitet kapott a rabszolgától.
- És az utolsó STOP feltételt küld a rabszolgának.
Az adatok leolvasása a slave-től masterig (slave-továbbítási mód)
- START feltételt küld a rabszolgának.
- Rabszolga címet küld rabszolgának.
- Küldje el az olvasóbitet (1) a rabszolgának.
- ACK bitet kapott a rabszolgától
- Adatokat kapott a rabszolgától
- ACK bitet kapott a rabszolgától.
- STOP feltételt küld a rabszolgának.
Ennek az RTC DS1307 IC alapú digitális órának a felépítéséhez itt Arduino Pro Mini-t használtunk, de bármilyen más Arduino modellt is használhat, például Arduino Uno vagy Arduino Nano. Az Arduino táblával, a DS1307 RTC IC-vel együtt 16x2 LCD modult használtunk az idő és a dátum kijelzésére, egy kristályos oszcialátort, 7805 feszültségszabályozót, egy hangjelzőt és néhány tranzisztort és ellenállást.
Áramkör diagram és leírás
Ebben az Arduino alapú digitális óra áramkörben három fő összetevőt használtunk, amelyek az IC DS1307, az Arduino Pro Mini Board és a 16x2 LCD modul.
Az arduino itt használható a ds1307 olvasási idejére, és megjeleníti azt 16x2 LCD-n. A DS1307 2 sort használva elküldi az időt / dátumot az arduino-nak. A riasztás jelzésére egy hangjelzőt is használnak, amely hangjelzést ad a riasztás aktiválásakor. Az alábbiakban egy blokkdiagram látható, hogy megértsük a valós idejű óra működését.
Amint az az áramköri ábrán látható, a DS1307 SDA és az SCL chip tű az SDA és az SCL arduino csapokhoz van felhúzva, ellenállása pedig HIGH alapértelmezett. 32.768KHz kristály oszcillátor van csatlakoztatva DS1307 chip generáló pontos 1 másodperc késleltetés, és egy 3 voltos akkumulátor is csatlakoztatva van a 3 csap rd (BAT) a DS1307, amely megtartja idő után futó áramszünet. A 16x2 LCD 4-bites módban csatlakozik az arduino-hoz. Az RS, RW és En vezérlőcsap közvetlenül csatlakozik az arduino 2, GND és 3 tűhöz. A D0-D7 adatcsatlakozó pedig az arduino 4, 5, 6, 7 csatlakozóihoz van csatlakoztatva. Egy hangjelző kapcsolódik a 13-as arduino tűhöz egy NPN BC547 tranzisztoron keresztül, amelynek alján 1 k ellenállás van.
Három gomb, nevezetesen a set, az INC és a Next a riasztás beállítására szolgál az arduino 12., 11. és 10. tűjére aktív alacsony üzemmódban. Amikor megnyomjuk a set gombot, aktiválódik a riasztás beállítása mód, és most az INC gombbal kell beállítanunk a riasztást, és a Next gombbal számjegyre léphetünk. Ennek a valós idejű, riasztóval ellátott órának a teljes panellapjának beállítása az alábbi képen látható. Az AVR mikrokontrollerrel ellenőrizheti a digitális ébresztőóra részletes bemutatóját is.
A program leírása
Ennek a valós idejű órának a programozásához néhány könyvtárat használtunk az idő / dátum DS1307-ből történő kinyerésére és az LCD-n való megjelenítésre, amelyek az alábbiak:
Az RTC, az LCD és a bemeneti kimenet inicializálása a beállítási ciklusban történik.
A többi dolog, például az olvasási idő, a riasztás beállítása az üreges szakaszban történik.