Tyto hodiny reálného času založené na Arduinu jsou digitální hodiny pro zobrazení reálného času pomocí RTC IC DS1307, který pracuje na protokolu I2C. Hodiny reálného času znamenají, že běží i po výpadku napájení. Po opětovném připojení napájení se zobrazí skutečný čas bez ohledu na čas a dobu, po kterou byl ve vypnutém stavu. V tomto projektu budíku Arduino jsme použili LCD modul 16x2 k zobrazení času ve formátu „hodina, minuta, sekundy, datum, měsíc a rok“. Přidána je také možnost Budík a my můžeme nastavit čas budíku. Jakmile se čas alarmu uloží do interní EEPROM arduina, zůstane uložen i po resetu nebo výpadku elektřiny. Hodiny v reálném čase se běžně používají v našich počítačích, domech, kancelářích a elektronických zařízeních pro jejich aktualizaci v reálném čase.
Protokol I2C je metoda připojení dvou nebo více zařízení pomocí dvou vodičů k jednomu systému, a proto se tento protokol také nazývá dvouvodičový protokol. Lze jej použít ke komunikaci 127 zařízení s jedním zařízením nebo procesorem. Většina zařízení I2C běží na frekvenci 100 KHz.
Kroky pro zápis dat master na slave (režim příjmu slave)
- Odešle podmínku START otrokovi.
- Odešle slave adresu slave.
- Odešlete bit bit (0) slave.
- Bit ACK přijat od slave
- Odešle slovům adresu otrokovi.
- Bit ACK přijat od slave
- Odešle data otrokovi.
- Bit ACK přijat od slave.
- A poslední pošle podmínku STOP otrokovi.
Kroky pro čtení dat ze slave na master (režim přenosu slave)
- Odešle podmínku START otrokovi.
- Odešle slave adresu slave.
- Odeslat přečtený bit (1) podřízenému zařízení.
- Bit ACK přijat od slave
- Přijatá data od slave
- Bit ACK přijat od slave.
- Odešle podmínku STOP otrokovi.
K sestavení těchto digitálních hodin založených na RTC DS1307 IC jsme zde použili Arduino Pro Mini, ale můžete také použít jakýkoli jiný model Arduino, jako je Arduino Uno nebo Arduino Nano. Spolu s deskou Arduino, DS1307 RTC IC, jsme použili 16x2 LCD modul k zobrazení času a data, krystalový oscilátor, regulátor napětí 7805, bzučák a několik tranzistorů a rezistorů.
Schéma zapojení a popis
V tomto digitálním hodinovém obvodu založeném na Arduinu jsme použili tři hlavní komponenty, kterými jsou IC DS1307, Arduino Pro Mini Board a 16x2 LCD modul.
Zde se arduino používá ke čtení času z ds1307 a jeho zobrazení na 16x2 LCD. DS1307 odesílá čas a datum pomocí 2 řádků na arduino. Pro indikaci alarmu se také používá bzučák, který při aktivaci alarmu pípne. Níže je zobrazeno blokové schéma pro pochopení fungování těchto hodin reálného času.
Jak můžete vidět na schématu zapojení, čipové kolíky DS1307 SDA a SCL jsou připojeny k pinům arduino SDA a SCL s pull up rezistorem, který drží výchozí hodnotu HIGH na datových a hodinových linkách. 32.768KHz krystalový oscilátor je spojen s čipem DS1307 pro vytváření přesně 1 druhého zpoždění, a 3 V baterie je také připojen k čepu 3 rd (BAT) z DS1307, který udržuje čas běží po výpadku elektrické energie. 16x2 LCD je připojen k arduino ve 4bitovém režimu. Ovládací kolíky RS, RW a En jsou přímo připojeny k pinům arduino 2, GND a 3. A datový pin D0-D7 je připojen k 4, 5, 6, 7 arduina. Bzučák je spojen s pinem Arduino číslo 13 přes tranzistor NPN BC547, který má na své základně rezistor 1 k.
Tři tlačítka, konkrétně set, INC a Next, se používají k nastavení alarmu na piny 12, 11 a 10 arduina v aktivním nízkém režimu. Když stiskneme set, aktivuje se režim nastavení alarmu a nyní musíme nastavit alarm pomocí tlačítka INC a tlačítko Další se používá k přechodu na číslici. Kompletní nastavení prkénka těchto hodin reálného času s budíkem je zobrazeno na následujícím obrázku. Můžete si také prohlédnout podrobný návod k digitálnímu budíku s mikrokontrolérem AVR.
Popis programu
K programování těchto hodin reálného času jsme použili některé knihovny pro extrakci času a data z DS1307 a pro zobrazení na LCD, které jsou uvedeny níže:
A inicializace RTC, LCD a vstupního výstupu se provádí v nastavovací smyčce.
Zbytek věcí, jako je doba čtení, nastavení alarmu se provádí v sekci neplatné smyčky.