Středoškolská technika 2014 Setkání a prezentace prací středoškolských studentů na ČVUT
IR Remote Dálkové ovládání dataprojektoru
Vladislav Mlejnecký
Střední odborná škola a Střední odborné učiliště Nymburk V Kolonii 1804
Obsah Úvod................................................................................................................................ 2 Návrh a výroba prototypu .............................................................................................. 2 Finální verze .................................................................................................................... 4 Návrh schéma a DPS ................................................................................................... 4 Domácí výroba DPS..................................................................................................... 6 Osazení a mechanická konstrukce.............................................................................. 6 Popis firmwaru ........................................................................................................... 7 Popis funkce................................................................................................................ 7 Závěr ............................................................................................................................... 8
1
Úvod Dále popsané dálkové ovládání projektoru BENQ vzniklo jako náhrada původního originálního ovladače (obr. 1), který by mohl být ve třídě poškozen, nebo i odcizen. Navíc opakované zamykání originálního ovladače do skříně vyučující otravuje a zdržuje. Zrodil se tedy nápad na vytvoření, malého levného dálkového ovladače, který by se nechal umístit třeba i prakticky na klíče. Jelikož naše škola postupně plánuje vybavit dataprojektory veškeré učebny, rozhodl jsem se vytvořit dálkové ovládání, které bude později rozšířitelné obr. 1 Originální dálkové ovládání o další kódy a stane se tak univerzálním. Bylo zjištěno, že v naprosté většině případů stačí k ovládání projektoru pouze tlačítko ON/OFF, málokterý vyučující využívá všechny možnosti dataprojektoru. Tato skutečnost výrazně zjednodušuje celou konstrukci dálkového ovladače, neboť stačí pouze jedno tlačítko.
Návrh a výroba prototypu Již od prvotní úvahy nad tímto dálkovým ovladačem jsem si byl jistý, že jej založím na mikroprocesoru (respektive mikrokontroléru) architektury AVR, od firmy Atmel. Právě osmibitové mikroprocesory této architektury mi připadají pro podobné projekty nejlepší volbou ať už z pohledu ceny, dostupnosti, tak i z pohledu vybavenosti samotného mikroprocesoru. Obecně tyto mikroprocesory nesou ve výbavě 10b AD převodník o několika kanálech, jednu a více jednotek čítačů a časovačů s možností generovat PWM různých frekvencí, EEPROM paměť pro data, FLASH paměť pro program od 0,5 až po několik kilobyte a podporu spousty druhů sběrnic. Novější řada ATxmega má dokonce mnohé další vylepšení, ovšem s dostupností je to horší. Když byl prvotní náčrt hotov, pustil jsem se do samotné realizace prototypu. obr. 2 Čtečka IR kódu Ze všeho nejdříve bylo potřeba zjistit si podrobnosti o vysílaném kódu pro zapínání a vypínání projektoru. Pro jeho zjištění byl sestaven jednoduchý obvod s fototranzistorem IRE5 a tvarovačem 74HC00 (na obr. 2), který 2
je napájen pěti volty. Na výstupní konektor čtečky bylo možno přímo zapojit jeden z vstupů 16ti kanálového logického analyzátoru OMEGA od firmy ASIX (obr. 3). Záznam IR kódu při stisku tlačítka ON OFF pořízený logickým analyzátorem OMEGA je uveden na obr. 4. Z naměřených dat obr. 4 Logický analyzátor OMEGA vyplynulo, že se zřejmě jedná o rozšířenou verzi protokolu NEC, ačkoliv pokud se tlačítko drží delší dobu a mělo by dojít k vyslání opakovacího pulzu, tak se místo něj odešle celý kód znova. Dataprojektor tedy není schopen rozpoznat dva stisky tlačítka za sebou od přerušení paprsku. Výrobce dataprojektoru si zřejmě ulehčil práci případně je to nějaká starší verze, ovšem pro mě to nic moc neznamenalo, vygenerovat takovýto signál není pro mikroprocesor AVR žádný problém. Informace je namodulována na nosné frekvenci 38kHz a pro kódování bitů je použita pulzně poziční modulace. Pulz je stejně vždy dlouhý a sice 560µs. Hodnota bitu je definována mezi začátky dvou takovýchto pulzů. Logické 1 odpovídá doba 2,25ms, kdežto pro logickou 0 je to 1,125ms. Protokol se dělí na tři části, první je inicializační pulz, který je 9ms dlouhý a po něm se počká přesně 4,5ms. Další částí je adresová část, která je dva bajty dlouhá, první se odesílá nejméně platný bit, dříve byla adresní část pouze jeden bajt a druhý bajt byl negovaný pro kontrolu správnosti adresy. Po odeslání adresy zbývají už jen dva bajty pro data, respektive příkaz, zde zůstal princip s jedním negovaným bajtem pro kontrolu. Nejdříve
obr. 3 Zobrazení naměřených dat v SW OMEGA Logic Analyzer firmy ASIX
3
se tedy odešle příkaz tak jak je, a pak se odešle znovu ale znegovaný. Tím je celé odesílání dokončeno, a po 46ms se začne vysílat znova, pokud by to byl platný protokol NEC, mělo by dojít pouze k odeslání opakovací zprávy. Jak jsem ale již nastínil, ovladač posílá znovu celý kód. Pro prototyp byl vybrán mikroprocesor Attiny85-20PU a to jednoduše proto, že byl zrovna doma obr. 5 Prototyp v šuplíku, první experimentální zapojení dálkového ovladače je na obr. 5. Tato testovací verze byla zhotovena na kousku univerzálního plošného spoje a ze součástek které jsem různě doma našel, experimentováním jsem přišel na vhodnou hodnotu odporu pro LED diodu a pustil jsem se do programování firmwaru.
Firmware byl naprogramován, pro jednoduchost a přehlednost v programovacím jazyku C. Již od začátku jsem se snažil o co nejuniverzálnější firmware, proto jsem si nejprve naprogramoval pár jednoduchých funkcí, které mají za úkol inicializovat MCU a čítač, odeslat log. 1, odeslat log. 0, odeslat inicializační pulz a podobně. V případě že se bude v pozdější době přidávat další ovládaný dataprojektor, stačí připsat pár řádků, pokud se dataprojektor změní úplně, stačí provést pouze drobné úpravy.
Finální verze Pro finální verzi byl vybrán mikroprocesor ATtiny13A-SU a to především pro svoji nízkou cenu. Pro můj účel je tato verze vybavena více než dostatečně, nabízí FLASH paměť pro program o velikosti 1kB, která je programovatelná v aplikaci pomocí SPI rozhraní což je velké plus, neboť tato verze je v SMD pouzdře. Dále ATtiny13A-SU nabídne 64B EEPROM paměti pro data, 64B paměti RAM, jeden 8b čítač, 10b AD převodník o čtyřech kanálech a vestavěným oscilátorem. Tento mikroprocesor má taktéž velmi nízkou spotřebu a široký rozsah napájecího napětí od 1.8V až do 5.5V.
Návrh schéma a DPS Schéma a návrh desky plošného spoje byl vytvořen pomocí programu EAGLE, konkrétně verze 5 pro Linux. Schéma je velice jednoduché a je podřízené myšlence jednoduchého, levného, snadno vyrobitelného ovladače. Schéma samotné je na obr. 6, obrazec plošného spoje pak na obr. 7.
4
obr. 6 Schéma dálkového ovladače
Pro napájení jsem vybral baterii typu CR2032, která má napětí 3V. Konektor JP1 slouží pro programování mikroprocesoru, rezistor R1 je tzv. pull-up odpor který drží signál #reset v log. 1. Odpor R2 je omezovací odpor pro led diodu LED1, prochází jí proud zhruba 60mA, je to sice trošku více než doporučují datasheety k diodě i datasheety k mikroprocesoru, každopádně vše funguje správně a trošku silnější paprsek neuškodí. Kondenzátor C1 slouží jako blokovací kondenzátor. Tlačítkem S1 se spíná napájení celého obvodu. Plošný spoj je jednostranný pouze s jednou propojkou, dal by se navrhnout i lepší bez žádných propojek, ovšem z důvodů časové tísně jsem volil raději rychlejší a jednodušší možnost. Zpočátku byl docela problém umístit tlačítko tak, aby sedělo k tlačítku do krabičky, kterou jsem zamýšlel použít. Nakonec jsem musel volit menší tlačítko namísto toho, které jsem měl již připravené. Kvůli bateriovému držáku se tam větší tlačítko prostě nevešlo. Jak se později ukázalo, nedopatřením jsem dal LED diodu na špatnou stranu plošného spoje, respektive tlačítko mělo být orientováno na druhou stranu. Toto jsem zjistil, až když jsem vyřezával obr. 7 Návrh plošného spoje krabičku, proto nezbylo nic jiného než LED diodu umístit na krátké drátky a v krabičce dát na druhou stranu, aby tlačítko bylo tam, kde by mělo být. 5
Domácí výroba DPS Plošný spoj jsem si vyleptal doma sám, a to hlavně protože jsem chtěl ušetřit, kusová výroba plošného spoje na zakázku není nejlevnější záležitost. Navržený plošný spoj z programu EAGLE jsem převedl do formátu PDF a zanesl jej do místní tiskárny nechat vytisknout na fólii. Doma jsem našel starý odstřižek jednostranného cuprextitu a nalakoval pomocí světlo-citlivého laku. Když dělám obr. 8 Domácí leptání DPS plošné spoje pro svoje účely, tak jako osvitovou jednotku používám úspornou žárovku, výsledná kvalita není nic moc, ovšem pro moje účely bohatě postačuje. Nyní byla situace ale jiná, jednak byl na DPS jeden integrovaný obvod SMD a jednak jsem taky chtěl mít plošný spoj hezky čistý, nepodleptaný a nedovyřezávaný. Dohodl jsem se tedy s mistrem odborného výcviku, zdali bych si nemohl DPS osvítit a vyvolat. Mistr souhlasil a propůjčil mi velkou osvitovou jednotku vyrobenou ze rtuťové 250W výbojky. Když jsem plošný spoj osvítil, vyvolal jsem je hnedka na místě ve vývojce, postupně se přede mnou začal objevovat krásně přenesený obrazec DPS. Vyvolaný plošný spoj jsem donesl domů, kde jsem jej vyleptal v chloridu železitém (obr. 8), a po malé chvilce bylo hotovo. Plošný spoj jsem ostřihl, zapiloval na rozměr a vyvrtal všechny otvory pro součástky. Následně jsem jej ještě opatřil ochranným pájitelným lakem. Vyleptaný plošný spoj je na obr. 9. obr. 9 Vyleptaný plošný spoj
Osazení a mechanická konstrukce Vzhledem k malému počtu součástek nebyl s osazením žádný problém a zhruba za dvacet minut bylo vše hotovo. Hned jsem se pustil do vyřezání krabičky, byl potřeba pouze vyvrtat otvor pro LED diodu. Malou vrtačkou jsem opatrně vyvrtal otvor o průměru 4mm do 6
boku krabičky, a opatrně jehlovými pilníky jsem dopiloval tak, aby LED dioda držela dostatečně pevně. V tuhle chvíli se ukázalo, že tlačítko je na špatné straně, a tudíž jsem LED diodu musel dát na krátké drátky, jinak bych musel otvor pro ni vrtat v místě kde je krabička zavěsitelná na klíče a byla by škoda, kdyby tato možnost nezůstala zachována. Fotografie vnitřku dálkového ovladače je na obr. 10. Při dokončování jsem si obr. 10 Vnitřek dálkového ovladače všiml, že horní kontakt bateriového držáku vyčuhuje mírně z krabičky, a tudíž nejde docvaknout. Nedalo se dělat nic jiného, než jej mírně zohýbat tak, aby se tam vešel. Tím byla mechanická a elektronická část projektu hotová a já se mohl už jenom přesunout k počítači a dokončit firmware.
Popis firmwaru Firmware byl pro jednoduchost a přehlednost napsán v programovacím jazyku C. Z 1kB paměti mikroprocesoru zůstalo zhruba 750B volných pro budoucí rozšíření a modifikace. Použil jsem úplně stejný firmware jako u prototypu, který jsem jen drobně upravil pro použití s jiným typem mikroprocesoru. Mikroprocesor je taktovaný interním oscilátorem o frekvenci 4,8MHz. Pro generování nosné frekvence paprsku, tedy 38kHz, jsem užil 8b čítač v CTC módu, v tomto módu zvládne tento čítač generovat širokou škálu frekvencí díky vestavěným děličkám. Pro generování jednotlivých bitů kódu se pouze připojuje k čítači či odpojuje od čítače a nastavuje do log. 1 výstup, na kterém je katodou připojená LED dioda. Zpoždění mezi jednotlivými bity, je zajištěno programově, pomocí knihovny delay.h, která tvoří zpoždění pomocí „prázdných smyček“. Ve zdrojovém kódu je tak funkce pro odeslání log. 0, odeslání log. 1 a inicializačního pulzu. Celé toto řešení firmwaru zaručuje jeho univerzálnost, neboť přidání dalších kódů pro další projektory je jen otázkou chvilky a pár řádků navíc.
Popis funkce Po stisku tlačítka se připojí baterie k obvodu, mikroprocesor se nastartuje po krátké chvilce, která je určena pro ustálení napětí. Ihned po spuštění programu v mikroprocesoru se začne vysílat inicializační pulz a následně poté 4 bajty kódu. Po odeslání celého kódu mikroprocesor počká přesně 46 milisekund a celá procedura odesílání se provádí znovu. Takto je dokonale imitován originální dálkový ovladač a projektor se bez problémů zapne či vypne.
7
Závěr Celá konstrukce je kompaktní, jednoduchá, levná a univerzální. Na obrázcích 11 a 12 můžete vidět fotky hotového ovladače, na obr. 11 je kompletní ovladač kompletní a na obr. 12 je se sundaným krytem. Univerzálnost mé konstrukce spočívá v tom, že pouhou drobnou změnou ve firmware je možné vysílat obr. 11 Kompletní dálkový ovladač jakýkoliv jiný kód, či případně vysílat kódů víc, klidně i o různých nosných frekvencích a různých protokolech. Není tedy problém, aby učitel měl tento dálkový ovladač na klíčích a pohodlně zapnul dataprojektor v učebně bez dlouhého hledání originálního dálkového ovladače ve skříni či případně shánění originálního dálkového ovladače po kolezích, kterým učebna normálně patří, pokud bude učitel učit v jiné učebně, než obvykle učí. Výroba tohoto dálkového ovladače není ani nijak náročná, lze ji bez problémů zvládnout v domácích podmínkách. Jedinou záludností může být připájení SMD integrovaného obvodu, s troškou cviku a za použití mikropájky se to ale dá zvládnout v dobré kvalitě. Nic tedy nebrání tomu vyrobit dálkový ovladač i ve větším množství pro více vyučujících, kdyby byl z jejich strany o ovladač zájem.
obr. 12 Otevřený dálkový ovladač
8