Jeden z mých přátel mě požádal, jestli bych mu na 3D tiskárně nevytiskl krabičku pro jeho Raspberry Pi 3, které chtěl použít jako multimediální centrum (Linux KODI). Samozřejmě, že jsem neotálel a krabičku vytiskl, protože jsem už dlouho nic netiskl a potřeboval jsem uspokojit svoje 3D tiskařské libido 🙂
A když jsem sledoval, jak jde tiskárně práce hezky od ruky…nebo vlastně od trysky, uvědomil jsem si, že jsem trochu zaspal dobu. S Arduinem si pohrávám už docela dlouho, ale Raspberry Pi jsem zatím držel v ruce jen jednou první verzi a to ještě sotva na pár minut.

Konstrukce

Začal jsem přemýšlet, kde bych pro něj našel uplatnění. První myšlenka padla na distribuci linuxu RetroPie, která Raspítko s gamepadem promění v herní konzoli, na které jdou mimo jiné hrát i staré herní pecky, které jsme jako děti hráli na pouti na automatech. Při objednávání Rasberry jsem ale narazil na příslušenství, kde mě zaujal modul kamery (Camera V2.1). Vzhledem k tomu, že v síti používáme dvě IP kamery Axis 211M jako veřejné webkamery, které pamatují ještě Šemíka jako hříbě, rozhodl jsem se, že postavím IP kameru, která by tyto staré webky mohla nahradit.

Raspberry Pi 3 a modul kamery jako základ pro IP kameru

Raspberry Pi 3 (s přidaným chladičem čipu) a modul kamery jako základ pro IP kameru

Původně jsem uvažoval, že koupím nějaký hotový kryt pro CCTV kameru a Raspítko i s modulem umístím dovnitř, ale nakonec jsem se rozhodl, že pro případ nezdaru nebudu projekt zbytečně prodražovat 🙂 a kryt kamery vyrobím z běžně dostupného materiálu. Jako základ mi posloužil kousek plastové odpadní trubky o vnějším průměru 75mm, který jsem seřízl pod úhlem tak, abych docílil tvaru “kšiltu”, který bude stínit a chránit sklo kamery před nepřízní počasí. Pro zaslepení druhého konce trubky jsem použil víčko na tento rozměr. Bohužel už nejdou koupit klasické PVC trubky, které se daly teplem velice snadno tvarovat a vyrobit si tak hrdlo na míru. Dnes jsou trubky z jiného materiálu a na jednom konci opatřeny už z výroby hrdlem a gumovým těsněním. Toto hrdlo se mi ale moc nelíbilo, kamera by nevypadala moc dobře, takže jsem ho uřízl a po delším zápasu s horkovzdušnou pistolí se mi podařilo konec nahřát tak, aby šlo víčko vsunout.

Hlavní stavební kameny IP kamery

Hlavní stavební kameny IP kamery

Ještě jsem si uvědomil, že budu potřebovat sklíčko, které ochrání kameru před nepřízní počasí. Napadlo mě použít náhradní čiré sklo do svařečských brýlí k autogenu (cena cca 13Kč/kus), ale u nás v obchodě zrovna neměli, takže jsem si sklíčko s o něco větším průměrem vykousal doma sám, z nějakého střepu, pomocí diamantu na řezání skla a kleští 🙂
Pro uložení elektroniky v trubce jsem si vymodeloval a na 3D tiskárně vytiskl speciální držák, který zároveň plní funkci předního krytu, do kterého jsem silikonem přilepil zmiňované sklíčko. Celá tato konstrukce tvoří jakousi kartuš, která se vsune do trubky a zespodu zajistí jedním samořezným šroubem skrz stěnu. Trubku jsem na této straně na opačném konci provrtal a opatřil průchodkou na kabel.

Detail předního krytu

Detail předního krytu, vytisknutého na 3D tiskárně

Další věcí, kterou jsem řešil, bylo napájení. Raspberry Pi umí jen 5V a já chci kameru napájet přes UTP kabel pasivním PoE. Pro případ, že bych použil delší kabel, tak alespoň 15V, abych měl nějakou rezervu na ztráty v kabelu. Toto jsem nakonec vyřešil pomocí pasivního PoE adaptéru, kterému jsem ustřihl DC Jack a vodiče připájel na vstup miniaturního DC-DC měniče MINI360 (ebay cca 25Kč/kus). Na měniči jsem trimrem nastavil výstup na 5,1V a trimr zakápnul tavným lepidlem. K výstupu jsem připájel dva vodiče s konektorem, kterým kameru napájím přes napájecí piny na GPIO portu Raspítka. Celý měnič jsem pak zafouknul do smrštitelné bužírky.

Napájení PoE s DC-DC měničem MINI360

Napájení PoE s DC-DC měničem MINI360

Poslední co zbývalo, bylo potřeba vymyslet nějaké vhodné uchycení kamery, aby bylo možné kameru nasměrovat do libovolné polohy. Dva dny jsem přemýšlel a přehraboval třmeny, které mám v práci ze starých wifi antén, že bych některé z nich použil k uchycení. Nakonec jsem se rozhodl, že když budu mít hezkou kameru, musím k ní mít i hezký držák 🙂
Takže jsem opět sednul k blenderu (opensource program, ve kterém modeluju pro 3D), držák si vymodeloval a vytisknul na 3D tiskárně. Držák jsem vytvořil jako konzolu stavitelnou ve dvou osách se zajišťovacími šrouby, uchycení samotné kamery a celkové uchycení jsem vyřešil drážkami pro nerezové objímky (zkušebně jsem použil plastové stahovací pásky). Celý kryt kamery i držák jsem nakonec nastříkal bílou matnou barvou, abych sjednotil vzhled, protože držák jsem tisknul z červeného PLA.

IP kamera na testovacím stanovišti :)

IP kamera na testovacím stanovišti 🙂

..a strana s objektivem

..a strana objektivu

Software

Jako softwarovou výbavu jsem původně chtěl použít distribuci linuxu Raspbian, kterou si přizpůsobím pro své potřeby. Nakonec jsem ale narazil na zajímavý projekt MotionEye OS, který je vytvořený přímo jako firmware pro IP kameru. Má vlastní webové rozhraní, kde se dají snadno nastavit všechny důležité parametry – nastavení sítě, název kamery, rozlišení snímaného obrazu, počet snímků za sekundu, kvalita obrazu. Maximální rozlišení je 1600×1200, streamování je ve formátu MJPEG. Je možné zapnout ukládání snímků z kamery na kartu, buďto v určitém intervalu, nebo jen když kamera detekuje pohyb. Totéž je možné ukládat jako video. Staré záznamy je možné nechat automaticky mazat po určité době. Nechybí možnost ukládání na externí síťové úložiště, nebo při určité akci poslat oznámení zavoláním externího skriptu někde na webu. K pořízeným záznamům na kartě se pak dá dostat jednoduše přes FTP protokol nebo Sambu. Když se v expertním nastavení přepne do režimu “fast network camera” je maximální rozlišení 1920×1080, streamuje se opět v MJPEG. V tomto režimu nejde použít některé rozšířené funkce jako detekce pohybu a ukládání snímků a videa.

Webové rozhraní kamery

Webové rozhraní kamery systému MotionEye OS

Samotný firmware mi fungoval na první dobrou, po stažení image a nahrání na paměťovku Raspi nabootovalo, z DHCP získalo ip adresu, přes kterou už se dalo přihlásit do webového rozhraní. Systém poznal připojený kamerový modul, takže už fungovalo snímání obrazu v nějakém základním rozlišení 320×240. Narazil jsem akorát na problém, že jsem měl obraz zrcadlově a nemohl jsem ho nijak obrátit. V nastavení je jen rotace po 90°, ale zrcadlení ne. Dal jsem se studovat systém a konfigurační soubory přes SSH, ale bylo už dost pozdě v noci, tak jsem to odložil na druhý den. No a na druhý den tvůrce vydal novou verzi přímo s podporou kamerového modulu V2.1, takže jsem udělal upgrade a obraz už byl v pořádku, problém vyřešen 🙂

Závěrečné hodnocení

Nečekal jsem zázraky, ale samotný výsledek mě docela překvapil. Kvalita obrazu z kamerového modulu, který má údajně osazený CCD 8Mpixel čip, je nad moje očekávání. V porovnání se zmiňovanou Axis 211M, která stála něco málo přes 20 tisíc, je to nebe a dudy. Samozřejmě, 211M je kamera stará 10 let, takže je trochu nefér s ní srovnávat, navíc je to profesionální IP kamera, která umí i MPEG4 stream a má několikazónovou detekci pohybu, ale srovnávám především kvalitu obrazu v poměru k ceně. S Raspberry Pi 3, modulem kamery a ikdybych koupil hotový kryt pro CCTV, jde o částku do 3.000 Kč s přehledem. Co jsem se jen tak zběžně díval na netu po ukázkách z IP kamer v podobné cenové relaci, je řešení s Raspberry Pi bezkonkurenční a výsledný obraz je srovnatelný s výstupem např. z kamer Vivotek v cenové relaci třikrát vyšší.

Výstup z kamery v rozlišení 1600x1200

Výstup z kamery v rozlišení 1600×1200

Někdy se ještě mrknu na to, jak by šlo Raspítko donutit streamovat v h.264 a jestli to bude stíhat, protože MJPEG mi není moc sympatický. No a chtěl bych se podívat na zoubek i “NOIR” verzi kamerového modulu (nemá IR filtr, pro snímání v noci s přísvitem).

/Doplněno 7.4.2017/ – kdo máte možnost tisknout 3D, zde jsou STL soubory “kartuše” pro vsunutí do PVC trubky o vnitřním průměru cca 72mm (vnější průměr 75mm, délka 260mm).

/Doplněno 11.6.2018/ – přidávám STL soubory, kdo by měl zájem si vytisknout i celý držák kamery.