Pojďme programovat elektroniku | Raspberry Pi

Pojďme programovat elektroniku: Proměníme Raspberry Pi Zero W v 5MPix fotoaparát

V dnešním pokračování našeho seriálu Pojďme programovat elektroniku opustíme svět nejdrobnějších čipů a elektrosoučástek a vyzkoušíme si práci s populárním mikropočítačem Raspberry Pi a kamerou.

Nepoužiji přitom běžnou USB webkameru, ale kameru pro dedikovaný konektor CSI (Camera Serial Input), který je nedílnou součástí každého Raspberry Pi a odlišuje jej od mnoha jeho klonů.

Díky nativní podpoře kamery se může Raspberry pochlubit hromadou knihoven pro snadnou práci s obrazem. Výkonnější verze Raspberry Pi si pak poradí i s etalonem počítačového zpracovávání vizuálních dat – knihovnou OpenCV (Open Source Computer Vision Library), takže s trochou píle a doslova na několika málo řádcích kódu postavíte třeba bezpečnostní Wi-Fi kameru, která v místnosti detekuje pohyb, zjistí, jestli se jedná o člověka, a výřez tváře vám pak pošle třeba na e-mail nebo jej porovná se svou databází známých osob.

01.JPG02.JPG03.JPG
04.JPG05.JPG06.JPG
Levná čínská kamera pro Raspberry Pi s FFC kabelem pro konektor CSI. Kabel pro malé Raspberry Pi Zero je o něco užší než pro to velké, nejsou tedy kompatibilní. Není ale třeba kupovat novou kameru. Stačí prohodit kabeláž, kterou na webu seženete za pár dolarů.

Tak daleko dnes ale nepůjdeme a vyzkoušíme si pouze skvělou knihovnu Picamera pro Python, která je ideálním vstupem do hrátek s CSI kamerou na Raspberry Pi. Kratičké ukázky kódu níže vás o tom zaručeně přesvědčí.

Nejprve ale budete potřebovat tu kameru. Nejlépe samozřejmě uděláte, pokud si koupíte oficiální Raspberry Pi Camera Module V2 s osmimegapixelovým snímačem Sony IMX219 a podpoříte tak i celý projekt. Na stranu druhou, není to zrovna nejlevnější záležitost – na českých e-shopech se cena pohybuje okolo tisícikoruny, a tak nejspíše nakonec skončíte na eBayi, kde najdete čínské klony první generace kamery s pětimegapixelovým snímačem OmniVision OV5647 za zlomek ceny. Já ji letos na jaře pořídil zhruba za dvě stovky. Tyto kamery nemusejí umět všechny funkce, ale jako základní snímače poslouží dobře.

Vedle standardních kamer na internetu najdete i verze s širokoúhlým rybím okem, noční IR kamery nebo třeba kamery s optickým zoomem.

Raspberry Pi Zero W

Kameru bez problému utáhne i nejnovější a nejúspornější verze Raspberry Pi Zero W, jejíž spotřeba v nečinnosti se pohybuje okolo 100 mA, s aktivní Wi-Fi poskočí na 170 mA a s připojenou a aktivní kamerou pak na 230 mA.

Jistě, oproti Arduinu, na které jsme v tomto seriálu zvyklí, se jedná o řád vyšší spotřebu, nicméně srovnávat Zero W s Arduinem je asi tak smysluplné, jako srovnávat s vaším domácím laptopem čínský superpočítačový cluster.

07.JPG08.JPG09.JPG
10.JPG11.JPG
Maličké Raspberry Pi Zero W s 802.11n Wi-Fi, 1GHz CPU a 512 MB RAM. Na textový Linux, internetovou komunikaci a nějaký ten webový server to bohatě stačí.

Suma sumárum, i při snímání obrazu webkamerou a zasílání snímků kamsi na server to není se spotřebou tak hrozivé, abychom nemohli uvažovat třeba o solárním napájení s baterií a provozu třeba kdesi v exteriéru, na zahradě aj.

12.JPG13.JPG14.JPG15.JPG
Během hrátek s kamerou poháněl malé RPi Zero W Li-Po modul s 3 800 mAh baterií – v podstatě vykuchaný battery pack s montážní přípravou pro velké Raspberry Pi.
60ebe590-6bd3-40a3-9a6c-3cd1b8b64124bf5f3422-f34c-4464-86f6-d338c8f1d10d
Pokud začnete bastlit, brzy zjistíte, že 3D tiskárna vlastně není vůbec špatný nápad, protože izolační páska má své estetické limity. V každém případě, vše je připraveno, takže hurá fotit.

Oživujeme kameru

No dobrá, dost bylo teoretické omáčky. Jdeme oživit kameru. Na micro SD jsem nahrál oficiální linuxovou distribuci Raspbian Jessie Lite, připojil se k Wi-Fi a povolil SSH. Raspberry je klasický linuxový počítač, takže k němu stačí přes USB připojit klávesnici, myš a pomocí HDMI monitor, nicméně díky tomu, že je veškerý systém na micro SD, můžete vše nastavit i tzv. headless způsobem. V podstatě na SD vytvoříte drobný soubor s konfigurací Wi-Fi, mikropočítač se podle něj po startu připojí, aktivuje SSH a následně jej smaže. Vy se pak skrze SSH připojíte výchozím účtem pi, který pak můžete změnit. Stejně jako konfiguraci Wi-Fi.

951636782
SSH spojení s RPi Zero W pomocí linuxového subsystému ve Windows 10

V dalším kroku musíme aktivovat samotné rozhraní CSI kamery. Slouží k tomu utilita raspi-config a její sekce 5. Interfacing Option, kde vedle kamery najdete i aktivaci dalších periferií, třeba sběrnic I2C a SPI, se kterými jsme se v našem seriálu už setkali.

71187120-47f9-4caf-88b0-06f62d5c4afe9d30e313-be03-4645-880b-92122ecc8a3a
Aktivace rozhraní kamery pomocí utility raspi-config

Po případném restartu by již měl být ovladač kamery korektně načtený a mohou s ním pracovat další programy včetně Pythonu a knihovny Picamera. Pokud by nebyla nainstalovaná, stačí stáhnout její balíček příkazy:

sudo apt-get update
sudo apt-get install python-picamera

Kamera je připravená k chodu. Jak napsat první jednoduchý program, který pořídí fotku, se dočtete v následující kapitole.

Témata článku: , , , , , , , , , , , , , , , , , , , , , , , , ,