mylms

... web o elektronice


Arduino hodiny s maticovým displejem

Tak jsem se pustil opět do nějakého Arduino bastlení. I když nerad vyrábím věci, které lze běžně koupit…sešlo se mi tu pár maticových displejů, RTC modul a nějaký to Arduino. Stačilo přidat kus jeklu, pár řádků programu a mám hodiny s maticovým displejem.

Původní myšlenka byla vyrobit jednoduché hodiny, které mají svítící displej. Žádné píčoviny, které by v noci působily rušivě – stačí blikání dvojtečky jako signalizace chodu. Pro mě není ani potřeba bateriové napájení, nebo desítky různých funkcí. Prostě jenom kostka, která bude zobrazovat čas v tmavé místnosti.

arduino-matrix-clock-1



Hodiny jsou velmi jednoduché. Zobrazovací část je založena na čtyřech maticových displejích 8*8 bodů s řadičem MAX7219. Z Číny jde objednat přímo modul se čtyřmi displeji na jedné desce. Dále obvod obsahuje modul reálného času DS3231, klon Arduino Nano a dvě tlačítka. Celek je napájen 5V adaptérem.

Konstrukce je vyrobena z jeklu 50×30 mm s vyfrézovaným otvorem pro displej. V něm je kvůli zvýšení kontrastu vloženo červené plexi. Vzadu jsou otvory na pověšení a nahoře dvě dírky s mikrospínači pro ovládání např. párátkem.

arduino-matrix-clock-2

Jednotlivé komponenty

 

arduino-matrix-clock-4

Základová barva

 

arduino-matrix-clock-7

Matná černá. Vzadu jsou otvory pro zavěšení, nahoře pro nastavení

 

Kvůli úspoře místa (maximální šířka všeho cca 25 mm) jsem musel displeje připájet na desku přímo. Vypájel jsem tedy dutinkové lišty a displeje do desky zapájel.

 

arduino-matrix-clock-3

Úspora místa je znatelná

 

Na horní straně jsou na univerzálním tišťáku dva mikrospínače. Oba připojují piny Arduina na GND. V procesoru je nastaven interní pull-up. Nejsou tedy potřeba žádné dodatečné součástky.

 

arduino-matrix-clock-5

 

Na zadní straně je vše propojeno. 5 V je přivedeno na všechny komponenty. Protože už používám stabilizovaný 5V zdroj, není přívod přiveden na pin VIN Arduina, ale přes diodu 1N4148 přímo na pin 5V. Kdyby bylo napájení přivedeno na vstup VIN byl by stabilizátor na desce zatěžován velkým procházejícím proudem pro LED displej.

 

arduino-matrix-clock-9

Schéma zapojení

 

Zapojení pinů Arduina:

  • D2 – tlačítko 1 (připojuje GND, nastaven internal_pullup)
  • D3 – tlačítko 2 (připojuje GND, nastaven internal_pullup)
  • D4 – matrix display, pin DIN
  • D5 – matrix display, pin CLK
  • D6 – matrix display, pin CS
  • A4 – RTC modul, pin SDA
  • A5 – RTC modul, pin SCL
  • GND – společné pro všechny moduly
  • 5V – společné přes všechny moduly, přívod přes 1N4148 (na fotce není)

 

arduino-matrix-clock-6

 

Program si můžete stáhnout zde, na mém GitHubu: https://github.com/…Matrix-Clock 

Program hodin je poměrně jednoduchý. Používám knihovnu LedControl na ovládání maticových displejů a knihovnu Wire pro komunikaci přes I2C. Na začátku programu jsou nadefinované jednotlivé znaky (část tisknutelné ASCII tabulky). Ve funkci si poté zvolím na jakém displeji se má jaký znak zobrazit. Lze si zvolit offset (posun znaku doleva/doprava). Lze samozřejmě rozsvítit/zhasnout jakýkoliv pixel. Čtení aktuálního času volám cca jednou za 500 ms. Zároveň v tomto čase blikám s dvojtečkou – dvojtečka se tedy rozsvítí cca jednou za sekundu.

Nastavit hodiny lze stejně jako u docházkového systému přes sériovou linku - odesláním vždy dvou znaků – první znak je parametr, který se bude nastavovat a druhý parametr je hodnota. Parametry jsou jednoduše znaky „A“ až „G“, kde A je rok, G je den v týdnu. Hodnota je zakódována jako tisknutelný znak ASCII. Mezera (kód 32) je číslo 0, vykřičník (kód 33) je číslo 1, atd. Odesláním znaků „B&“ dojde k nastavení měsíce na 6, tedy červen. K nastavení lze tedy použít buď sériový terminál spolu s ASCII tabulkou, nebo si vytvořit jednoduchý program. Nastavení hodin je signalizováno krátkým probliknutím pixelů na dolní straně displeje.

Druhou možností je nastavení hodin pomocí dvou tlačítek na vrchní straně. Stisknutím obou tlačítek zároveň se hodiny přepnou do režimu nastavení. Levým tlačítkem se přepíná parametr, který se mění, pravým tlačítkem se parametr zvyšuje. Po nastavení všech údajů se hodiny tlačítkem přepnou do režimu zobrazení aktuálního času. Momentálně lze v menu měnit pouze čas (hodiny a minuty) a intenzitu osvětlení displeje. Ale není problém jednoduše přidat další funkce.

arduino-matrix-clock-8

 

Protože je USB konektor jednoduše přístupný z pravé strany hodin, lze jakoukoliv funkcionalitu (měření teploty, automatický přechod z letního času na zimní, apod.) dodělat.

 



Napsal Petan před šesti dny v kategorii Elektronika. Připojeno 0 komentářů.
Přečteno 66x.

Na programy zde poskytované není žádná záruka na funkčnost (viz licence). Jednotlivé články, stejně jako celý obsah stránek není návodem a slouží pouze k studijním účelům. Zapojení výše mají pouze informativní charakter! Vždy se řiďte originálním návodem k použití! Na elektrickém (vyhrazeném) zařízení smí pracovat pouze osoba s příslušnou kvalifikací dle vyhlášky 50/78 Sb! Vše tedy děláte na vlastní nebezpečí! Autor stránek nebere žádnou zodpovědnost za případné újmy na zdraví, životě, majetku a jiné!

I když jsou články psány s co největší pečlivostí, mohou obsahovat chyby. Vše tedy bez záruky!

Jakékoliv části webu je zakázáno bez svolení autora a uvedení zdroje publikovat! Některé části článků mohou obsahovat texty, případně obrázky ze stránek Wikipedia a Wikimedia Commons. Tyto části jsou dostupné pod původní licencí Creative Commons.



Doposud nebyl připojen žádný komentář. Buďte první!

Připojte váš komentář!

Hvězdičkou jsou označena povinná pole.
E-mailovou adresu k příspěvku přidávat nemusíte. Autor stránek odpovídá vždy do komentáře, ne na přiložený mail!.
Kvůli zachování kompletnosti komentáře budou vložené odkazy na obrázky vloženy do komentáře přímo jako obrázek. Původní soubor bude zkopírován na tuto stránku.