Po čase opět přinášíme článek od našeho čtenáře, pana Miroslava Tesaře. V předchozích článcích jsme tu měli časomíru, klávesnici nebo sudoku s Arduinem. Dnes se podíváme na Arduino projekt, který má využití snad na každé škole. Projekt „Digitálny zvonček riadený dátami pomocou SD karty“ (už vás postupně ladím na slovenštinu) je pěkným příkladem propojení dovedností programování a konstrukce elektronických obvodů. Principy popsané v projektu se dají využít dobře i v dalších projektech. Tak se na to pojďme podívat, co se dá vytvořit třeba jen Arduino NANO!
V mnohých školských zariadeniach sa ešte aj v dnešnej dobe zvoní na vyučovacie hodiny pomocou hodín s kyvadlom. Časy pre zvonenie sa na týchto mechanických hodinách nastavujú pomocou kolíčkov. Ich prestavenie na iný vyzváňací čas býva nočnou morou a v praxi nerealizovateľné v krátkom čase. Presnosť týchto hodín je daná dobou, kedy boli uvedené do prevádzky.
Dnes je iná doba, digitalizujeme a „Arduinujeme“. A tak prišiel rad aj na túto raritu. A ako inak, než použitím mojich obľúbených súčiastok – Arduino NANO 328P, modul RTC DS3231, obvody 75HC595 a 74HC148D. A k nim modul SD karty a 7-segmentovky.
Hlavným kritériom nových digitálnych školských hodín bola vyššia presnosť daná RTC modulom, použitím stávajúcich elektrických rozvodov zvončekov a jednoduchá zmena vyzváňacích časov, čo zabezpečia dáta na SD karte. Arduino NANO je môj obľúbený modul, je lacný, malý a poskytuje dostatok programovej a dátovej pamäti na takéto aplikácie. Tak do toho!
Obvodové riešenie
Modul zvonenia je ovládaný piatimi tlačidlami pre nastavenie času a voľby súboru (funkcie budú vysvetlené detailne neskôr) a šiestym tlačidlom pre zhasnutie displeja. Vstupné piny Arduina sú citlivé na zákmity kontaktov, bez ich ošetrenia by zariadenie nešlo spoľahlivo ovládať. K tomu spoľahlivo postačí RC obvod ako je uvedený na obrázku.
Daň, za ktorú platíme pri použití Arduina NANO je pomerne malý počet pinov. Šesť tlačidiel potrebuje 6 pinov a ich detekcia v programe by bola neefektívna. Preto som použil s výhodou obvod 74HC148D. Na vstupy sú privedené výstupy z tlačidiel a výstupy z obvodu sú privedené do Arduina. Funkcia obvodu je, že pri stlačení tlačidla (logická nula) sa zvyšné vstupy zablokujú. Vyšle sa signál GS a kód stlačené klávesy. Ten neskôr detekujeme v programe.
Dôležitou súčasťou je modul SD karty. Na SD karte je možné uložiť desať rôznych zvoniacich režimov (dané jednomiestnym postfixom). Tento počet prevyšuje potreby školského zvonenia. Softvérové ovládanie sa deje cez vstupy MISO, MOSI, SCK a CS.
Riadenie času je pomocou shield-u RTC s obvodom DS3231. Tu by som chcel upozorniť, že sa predávajú obdobné shield-y s obvodom DS1302, ktorý nie je tak presný. Preto ho neodporúčam. Obvod vysiela nepretržitý signál 32kHz, ktorý využijeme na vytvorenie signálov potrebných pre funkciu hodín. Pomocou zberníc SCL a SDA čítame/ukladáme informácie z/do obvodu.
Digitálny školský zvonček nevydáva zvoniaci signál, či melódiu, čo by principiálne nebol problém, ale využíva pôvodné školské rozvody pre zvončeky (70V rozvod). Preto ako výstup dostatočne postačí relé. Tu je treba upozorniť na použitie diódy v závernom smeru pripojenú paralelne k budiacej cievke. Indukčná záťaž by mohla spätne zaťažovať pin Arduina a dokonca ho aj zničiť. Taktiež upozorňujem na vhodnosť použitia varistoru, ktorý chráni kontakty relé.
Použitie tejto koncepcie s výstupným relé môže byť výhodné pre iné aplikácie ako len pre školský zvonček. Je možné nájsť niekoľko aplikácií s časovým ovládaním, kde by sa dal využiť tento projekt.
Pre zobrazenie času a súboru sú použité 7-segmentové displeje, dva pre hodiny, dva pre minúty a jeden pre postfix vybratého súboru. Ďalej sa zobrazuje deň v týždni, takže je možné podmieniť zapnutie relé nielen podľa času, ale aj podľa dňa v týždni.
Riadenie segmentov je realizované pomocou obvodov 74HC595. Obvod umožňuje sériový vstup dát a ich paralelný výstup pomocou záchytného registra. Zobrazované symboly sú statické bez nepríjemného preblikávania.
Na ovládanie všetkých 7-segmentových displejov postačia iba 4 piny Arduina. Činnosť obvodu som popisoval v minulom článku. Je treba dôrazne pripomenúť, že zbernica na ovládanie posuvných registrov je náchylná na presluchy. Použitím „káblikov“ na prepojenie obvodov s veľkou pravdepodobnosťou povedie k veľkému sklamaniu. Zbernicu buď vytvorte na DPS, alebo pomocou tienených káblov.
Posledným použitým obvodom je stabilizátor napätia. Nepoužil som štandardný parametrický stabilizátor 7805, ktorý dosť hreje, ale použil som s výhodou modul LM2596s DC-DC. Akceptované vstupné napätie je max 28V, napätie výstupu je možné nastaviť trimrom. Maximálny odber prúdu z tohto obvodu je 3A.
Ovládanie digitálneho zvončeka
Vyvolanie nastavenia času a postfixu súboru sa deje pomocou tlačidla M – Mód. Jeho stlačením začne blikať postfixové číslo, pomocou ktorého sa vyberá súbor ZvoncekX.txt, kde X je postfix zobrazený na displeji. Šípkami Hore/Dole nastavujeme nové číslo postfixu.
Pomocou tlačidiel Vľavo/Vpravo prechádzame postupne na minúty, hodiny a deň v týždni. Ak ich hodnoty chceme zmeniť, tak použijeme šípky Hore/Dole. Opätovným stlačením tlačidla M aktualizujeme zmenené údaje a vrátime sa k normálnej prevádzke. Šípky Hore/Dole majú ešte jednu funkciu – pokiaľ predtým nebolo stlačené tlačidlo M, tak šípkou hore vyvoláme zapnutie relé, šípkou Dole zapnutie ukončíme. Tým môžeme spínať relé „mimo poradia“ v ľubovoľnej dĺžke zopnutia.
Tlačidlo D – Displej slúži na zhasnutie 7-segmentových displejov a diód okrem sekundoviek. Nie vždy je príjemné, keď displej svieti, keď to nie je potrebné. Opätovným stlačením sa displej znova rozsvieti. Táto funkcia nemá žiadny vplyv na funkciu zariadenia.
Zvoniaci program
Zvoniaci program je realizovaný v súboroch na SD karte. Súbory musia mať pevný názov Zvoncek, ku ktorému sa pridá číslo postfixu. Prípona súboru je .txt. Povolené názvy súboru sú teda Zvoncek0.txt až Zvoncek9.txt (názov je možné zmeniť v konštantách programu, nepoužívajte však diakritiku). Súbory je nutné editovať v Poznámkovom bloku (WordPadu,….), v žiadnom prípade nie v editoroch Word a jemu podobných.
Súbor má pevný formát:
HH:MM tab C tab Po tab Ut tab St tab Sv tab Pi tab So tab Ne Enter
Kde:
HH – hodiny dvojmiestne, napr. 07, 11, 21,…
MM – minúty dvojmiestne, napr. 00, 55,…
C – čas zvonenie v sekundách (celé číslo, nie desatinné)
Po..Ne – údaj 1 alebo 0. Ak je na dané pozícii 1, zvonček bude zvoniť v daný čas a deň v týždni
Záznam môže vyzerať napr. takto:
07:05 5 1 1 1 1 1 0 0
07:50 3 1 1 1 1 1 0 0
08:00 5 1 1 1 1 1 0 0
…………..
Softvér neobsahuje syntaktický analyzátor záznamov v súboru, preto je nevyhnutné dodržať predpísanú štruktúru záznamu! Časy v zázname musia byť zoradené vzostupne!
Ak v zázname daný čas a daný deň v týždni súhlasí s aktuálnym časom na displeji, zapne sa relé a rozsvieti sa dióda Zvonček na dobu stanovenou časom C.
V priebehu dňa je možné aktualizovať čas a ľubovoľne meniť postfix v názvu súboru, nakoľko sa vždy znovu reštartuje vybraný súbor a čítanie záznamu sa zastaví na najbližšom čase zvonenia. Ak zvolíme postfix súboru, ktorý neexistuje, pri ukončení voľby tlačidlom M sa na displeji zobrazí kód chyby.