Tieto hodiny reálneho času založené na Arduine sú digitálne hodiny na zobrazenie reálneho času pomocou RTC IC DS1307, ktorý pracuje na protokole I2C. Hodiny reálneho času znamenajú, že fungujú aj po výpadku napájania. Po opätovnom pripojení napájania zobrazuje skutočný čas bez ohľadu na čas a trvanie, kedy bol vypnutý. V tomto projekte budíka Arduino sme použili modul LCD 16x2 na zobrazenie času vo formáte „hodina, minúta, sekundy, dátum, mesiac a rok“. Pridaná je aj možnosť Budík a my môžeme nastaviť čas budenia. Akonáhle sa čas alarmu uloží do internej EEPROM arduina, zostane uložený aj po resete alebo výpadku elektriny. Hodiny v reálnom čase sa bežne používajú v našich počítačoch, domoch, kanceláriách a elektronických zariadeniach na ich aktualizáciu v reálnom čase.
Protokol I2C je metóda na pripojenie dvoch alebo viacerých zariadení pomocou dvoch vodičov k jedinému systému, a preto sa tento protokol nazýva aj dvojvodičový protokol. Môže sa použiť na komunikáciu 127 zariadení s jedným zariadením alebo procesorom. Väčšina zariadení I2C pracuje na frekvencii 100 KHz.
Kroky pre zápis dát na master do slave (režim príjmu slave)
- Odošle podmienku START otrokovi.
- Pošle otrokársku adresu.
- Pošlite bit (0) na zápis do slave.
- Prijatý bit ACK od slave
- Pošle slová na adresu otrokovi.
- Prijatý bit ACK od slave
- Odošle údaje otrokovi.
- Prijatý bit ACK od slave.
- A posledný pošle podmienku STOP otrokovi.
Kroky na čítanie údajov z podradenej jednotky do hlavnej jednotky (režim vysielania podradenej jednotky)
- Odošle podmienku START otrokovi.
- Pošle otrokársku adresu.
- Pošlite načítaný bit (1) slave.
- Prijatý bit ACK od slave
- Prijaté údaje od podriadeného
- Prijatý bit ACK od slave.
- Odošle podmienku STOP otrokovi.
Na zostavenie týchto digitálnych hodín založených na RTC DS1307 IC sme tu použili Arduino Pro Mini, ale môžete tiež použiť akýkoľvek iný model Arduino, napríklad Arduino Uno alebo Arduino Nano. Spolu s doskou Arduino, DS1307 RTC IC, sme použili 16x2 LCD modul na zobrazenie času a dátumu, krištáľový oscilátor, regulátor napätia 7805, bzučiak a niekoľko tranzistorov a rezistorov.
Schéma zapojenia a opis
V tomto obvode digitálnych hodín založených na Arduine sme použili tri hlavné komponenty, ktorými sú IC DS1307, Arduino Pro Mini Board a 16x2 LCD modul.
Tu sa arduino používa na čítanie času z ds1307 a jeho zobrazenie na 16x2 LCD. DS1307 odosiela čas a dátum pomocou 2 riadkov na arduino. Na indikáciu alarmu sa používa aj bzučiak, ktorý pri aktivácii alarmu pípne. Ďalej je uvedený blokový diagram, ktorý slúži na pochopenie fungovania týchto hodín reálneho času.
Ako môžete vidieť na schéme zapojenia, čipové kolíky DS1307 SDA a SCL sú pripojené k pinom arduino SDA a SCL s vyťahovacím rezistorom, ktorý drží predvolenú hodnotu HIGH na dátových a hodinových linkách. 32.768KHz kryštálový oscilátor je spojený s čipom DS1307 pre vytváranie presne 1 druhého meškanie, a 3 V batérie je tiež pripojený k čapu 3 rd (BAT) z DS1307, ktorý udržuje čas beží po výpadku elektrickej energie. 16x2 LCD je pripojený k arduino v 4-bitovom režime. Ovládací pin RS, RW a En sú priamo spojené s arduino pinom 2, GND a 3. A dátový pin D0-D7 je pripojený k 4, 5, 6, 7 arduina. Bzučiak je spojený s pinom arduino číslo 13 cez tranzistor NPN BC547, ktorý má na svojej základni rezistor 1 k.
Tri tlačidlá, a to set, INC a Next, sa používajú na nastavenie alarmu na piny 12, 11 a 10 arduina v aktívnom nízkom režime. Keď stlačíme set, aktivuje sa režim nastavenia alarmu a teraz musíme nastaviť alarm pomocou tlačidla INC a tlačidlo Ďalej sa používa na prechod na číslicu. Kompletné nastavenie prevádzkového poľa týchto hodín reálneho času s budíkom je zobrazené na obrázku nižšie. Môžete si tiež pozrieť podrobný návod o digitálnom budíku s mikrokontrolérom AVR.
Popis programu
Na programovanie týchto hodín reálneho času sme použili niektoré knižnice na extrahovanie času a dátumu z DS1307 a na zobrazenie na LCD, ktoré sú uvedené nižšie:
A inicializácia RTC, LCD a vstupného výstupu sa vykonávajú v nastavovacej slučke.
Zvyšok, napríklad čas na čítanie, sa nastavenie alarmu vykonáva v časti neplatnej slučky.