Arduino hodiny s maticovým displejem - mylms

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.

Od verze 1.1. je možné zvolit si z více fontů čísel a je možné u dojtečky nastavit skrytí, trvalé zobrazení a nebo blikání.

arduino-matrix-clock-8

 

 

arduino-matrix-clock-10

Různé fonty čísel

 

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

 



Napsal Petan před dvěma měsíci v kategorii Elektronika. Připojeno 3 komentáře.
Přečteno 566x.

Na programy zde poskytované není žádná záruka na funkčnost. 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.



1 | indra | před měsícem

can not set the matrix clock

thank you for your matrix clock project.I have done the assembly according to your schmetic. Thn loaded the sktech into arduino. on matrix its is showing 45: c5 only.I am trying to set the clock, but after setting hour and minute through the buttons than brightness, strt is coming out on display. and if i push the button again then 45:c5 is displaying on matrix led. nothing else, please help

  • Peťan: First send this sketch to your Arduino - maybe your RTC has different I2C address. I use 0x68.
    If you have good address, you should test only RTC clock with Arduino board. Use simple Arduino sketch for read time from RTC and send to serial port. I recomend this sketch. It's simmilar to my sketch...but it send data directly to serial port. Or, there are lots of examples on the internet. You can try that. Is it working? Is time right?
    If not, maybe your RTC module is dead (did you try to change battery?) - at last, try to change RTC module.
  • reagovat

    2 | Indra | před čtyřmi týdny

    INDIA

    Thank You Very Much. Lots of Thank. Your guidance have helped me out to make this clock. Its working now. Keep it up. Keep posting on your blog/ web site.
    Indra from India.

  • Peťan: I'm glad to hear your positive result. Where was the problem? Greatings to India :)
  • reagovat

    3 | Indra | před dvěma týdny | debendralaha@yahoo.com

    INDIA

    My RTC was faulty. I have installed new one and after finding out right 12 c address as you have instructed everything is now going smooth. Thank You again. Greetings to your country also.

  • Peťan: I have had the same problem in the past with the same module. It just always sent the same value. I replaced it and it works. It's the same problem like here. But I did not solve the problem replacing the battery.
    You can download a new version (v1.1.) of firmware for this clock. It's support more "fonts" and you can hide colon betwen hours and minutes.
  • reagovat

    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ý e-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.