Digitální zrcadlo

V rámci workshopu "Paralelná Polis a Tom Pástor: Digitálne zrkadlo", kterého jsem se zúčastnil na Mini Maker Faire Bratislava 2019, jsem si vyrobil malé digitální zrcadlo, jehož základem je 3,5" TFT LCD displej a Raspberry Pi Zero. Jelikož jsme ale dostali operační systém i s veškerým nastavením "ready to go" na paměťové kartě, rozhodl jsem se celý systém upravit. V základní "demo" verzi totiž zrcadlo zobrazovalo datum, čas, počasí (pravděpodobně to v Bratislavě) a kurz Bitcoinu. Popravdě jsem ani příliš nepátral, jak je zrcadlo naprogramované a rovnou se pustil do nového systému "od píky".

Konstrukce zrcadla

Základem zrcadla je fotorámeček IKEA s roměry 13*18 cm, který naleznete pod názvem RIBBA. Tento konkrétní rámeček je použit především proto, že je "hlubší" než standardní rámečky, a proto se za něj elektronika dobře schová. Přiložená pasparta nebude potřeba.

Dále je potřeba polopropustná zrcadlová folie, kterou je možné lehce najít na internetu. Bohužel zatím nemám vlastní zkušenost s jejím nákupem, takže nemohu konkrétního prodejce doporučit.

V rámci Workshopu jsme také měli k dispozici tužku, odlamovací nůž, řezací podložku, kovové pravítko, gumový váleček a plastovou stěrku.

Všechny díly pro výrobu chytrého zrcadla
Nástroje pro výrobu chytrého zrcadla

Prvním krokem při výrobě zrcadla bylo udělat v zadní desce rámečku otvor pro displej. K tomu byl použit odlamovací nůž a kovové pravítko. Otvor jsme si podle rozměru displeje načrtli do levého horního rohu rámečku (při pohledu zezadu) a následně pomocí nože a kovového pravítka několika tahy odřízli. Před tím ale bylo nutné "vyloupnout" kus plíšku, který v rámečku slouží k zavěšení na háček.

Použit je 3,5" displej Waveshare pro Raspberry Pi. K tomuto displeji je poskytována rozsáhlá technická podpora, vč. možnosti stáhnout si instalaci Raspbianu s předinstalovanými ovladači. K tomu se ale dostaneme ještě později.

RPi LCD 3.5 inch
RPi LCD 3.5 inch + IKEA rámeček

Když byl otvor pro displej hotový, vrhli jsme se na lepení polopropustné zrcadlové folie na plexisklo, které je součásti fotorámečku. Před lepením bylo třeba ze zrcadlové folie odstranit krycí folii, pod kterou se nachází lepicí plocha. To  může být docela náročné, proto je možné pomoci si nožem. Následně jsme odstranili ochrannou folii i z jedné strany plexiskla a obě tyto odhalené plochy postříkali jarovou vodou. Díky tomu se folie hned nepřichytí na plexisklo a postupným vytlačováním jarové vody dosáhneme aplikaci bez bublinek. Na plexisklo jsme nyní umístili folii, kterou bylo možné přesně usadit právě díky jarové vodě. Když byla pozice ideální, začali jsme gumovým válečkem postupně vytlačovat vodu z meziprostoru mezí plexisklem a folií. Následovalo ještě finální vytlačení pomocí plastové stěrky. Jsem přesvědčen, že gumový váleček je jen pro ulehčení práce a v domácích podmínkách by bylo možné celý tento proces vytlačování vody realizovat pouze pomocí stěrky nebo třeba platební karty.

Polopropustná zrcadlová folie
Polopropustná zrcadlová folie

Po vytlačení všech bublin jsme folii a plexisklo osušili a pomocí nože odřezali všechny přesahy folie. Z takto připraveného polopropustného zrcadlového plexiskla jsme odstranili druhou krycí folii a touto stranou plexisklo umístili do rámečku. Ve výsledku tedy při pohledu zpředu máme nejprve plexisklo a teprve na něm zezadu nalepenou poloptropustnou zrcadlovou folii. To z toho důvodu, abychom si například při úklidu folii nepoškrábali.

Instalace displeje a Raspberry Pi Zero

Následně jsme do rámečku vložili zadní díl s vyříznutým otvorem a displej, který jsme na spodní a v mém případě jedné boční hraně polepili černou elektrikářskou páskou, aby nám tudy neprosvítalo světlo z podsvícení displeje. Ze zbytku desky po otvoru na displej jsme odřízli tenké proužky, které jsme využili k zaklínění zadního dílu na boku a spodku rámečku tak, aby se nám zadní díl, který má menší vůli, nemohl pohybovat. Vložený displej jsme pak ještě ze dvou stran přelepili černou elektrikářskou páskou, aby tudy nepronikalo světlo zezadu rámečku skrz mezeru mezi displejem a zadním dílem. Displej byl nyní zafixován pomocí plastových úhelníků a vrutů na svém místě. Posledním krokem bylo zasunutí Raspberry Pi Zero do displeje a připojení USB kabelem do adaptéru.

Raspberry Pi Zero - Chytré zrcadlo
Chytré zrcadlo - Paralelná Polis

Nový operační systém

Jakožto Raspberry neznalý jsem se snažil najít nějaký detailní postup, jakým dostat na displej zrcadla to, co potřebuji. Vzal jsem prázdnou 16 GB microSD kartu a začal pátrat. Prvním krokem bylo nahrát "čistý" Raspbian. Jak už jsem napsal, výrobce displeje nabízí rozsáhlou podporu pro své produkty, kde je možné nalézt i právě instalaci Raspbianu s předinstalovaným ovladačem na použitý displej. Pro nahrání systému na kartu jsme použil Win32DiskImager.

Po spuštění Raspberry bez problémů naběhl operační systém a bylo možné aplikovat příkazy pro rotaci displeje do polohy, jaké potřebujeme. Pro svou novou konfiguraci jsem se rozhodl, že zrcadlo budu provozovat na šířku s displejem v levém horním rohu (při pohledu zpředu). Podrobný popis příkazů najdete také na stránce podpory displeje. Pro nastavení jsem použil externí klávesnici a myš, ale je možné použít i dotykovou plochu displeje. Dále bylo nutné připojit Raspberry k Wi-Fi síti.

Magic Mirror

Asi nejznámější open source projekt pro digitální zrcadla je Magic Mirror. Na webu se ovšem můžete dočíst, že je určený pouze pro Raspberry Pi 2 a 3. Jiné nejsou oficiálně podporovány a je třeba pátrat ve fórech. Podařilo se mi tedy po nějaké době najít jednoduchý postup pro instalaci na Raspberry Pi Zero. Nakonec tedy stačilo do příkazového řádku vložit instalační skript:

bash -c "$(curl -sL https://raw.githubusercontent.com/ac2799/MagicMirror/master/installers/raspberry.sh)"

Pak už jen následovala instalace, kdy bylo třeba tu a tam něco potvrdit. Raspberry Pi Zero není zrovna nejvýkonnější, a protože jsem neměl čas u instalace celou dobu sedět a potvrdit, když je něco třeba, zabrala mi instalace skoro celý den. Po instalaci a rebootu již naběhne na displej přímo Magic Mirror. Ale v tento okamžik byl "předkonfigurovaný" a "nedokonfigurovaný" pro funkce, které jsem chtěl využívat. V prvé řadě předinstalované jsou moduly pro: hodiny, kalendář, aktuální počasí, předpověď počasí, novinky, komplimenty (ano, někdo si potrpí na to, aby mu aspoň zrcadlo sklánělo poklony), "Hello World" (podle všeho jen zobrazí předdefinovaný text) a "Alert" (u toho jsem po funkci ani nepátral). Vzhledem k velikosti displeje se ale zobrazila pouze hromada textů a obrázků přes sebe a nebyla zde žádná užitečná informace čitelná.

Úprava config.js

Nastavení funkce Magic Mirror se provádí pomocí konfiguračního souboru

/home/pi/MagicMirror/config/config.js

Podrobný popis konfigurace naleznete zde. Před úpravami jsem si originál konfiguračního souboru zazálohoval, a poté se již pustil do práce. V prvé řadě jsem odstranil všechny nepotřebné moduly a ponechal pouze čas, aktuální počasí a předpověď počasí a u všech modulů nastavil pozici na "top_left". Aby zrcadlo zobrazovalo informace o počasí bylo nutné se zaregistrovat na webu OpenWeather, kde ihned po registraci máte k dispozici "API key", který je třeba zkopírovat do konfiguračního souboru. Také je nutné najít ID polohy, jejíž počasí chcete zobrazovat. K tomu slouží seznam, který je ke stažení zde.

Chytré zrcadlo - Magic Mirror