Opravdu levná internetová kamera

Pro jeden projekt jsem potřeboval co nejlevnější řešení, které by dokázalo pravidelně snímat fotografii probíhajícího experimentu a publikovat výsledek jako sérii obrázků, případně z nich sestrojit i časosběrné video. Jde to opravdu za pár korun.

1) Webkamera

S podporou levných USB webkamer je to v Linuxu všelijaké, ne každý výrobce uvolní API svého výrobku. Naštěstí se v poslední době většina výrobců orientuje na UVC (USB Video Class), takže je naděje, že linuxově uchopitelných kamer bude přibývat. Já jsem zvolil nejlevnější možnou, Canyon CNR-FWC113 z Alzy. Za 220 Kč toho umí vcelku dost. Navíc má velmi šikovně demontovatelný držák, po kterém zbyde na těle kamery kloub +-20 stupňů ve všech směrech s úchytem na dva šroubky. Jak kdyby výrobce myslel na budoucí úpravu.

2) Strojek

Za zpracovací strojek byl zvolen jednodeskový systém Alix 3D2. Postačil by i jednodušší board ze série WRAP, který lze koupit dnes s výbavou 128MB RAM na bazarech za 100 až 200Kč, ale u těchto starších boardů je nutné ručně doplnit a vyvést USB rozhraní – a lenost je zlá věc. Pak už jen nainstalujeme Voyage linux a provedeme známou sekvenci

apt-get update
apt-get upgrade

Dále nainstalujeme balíček streamer a apache2.

Pro milovníky malinových koláčů dobrá zpráva – postup s Raspbianem na Rasberry Pi v.B je ještě jednodušší, nemusíme občurávat paměť (viz níže). Pro Raspi verze A platí následující poznámka úplně stejně, jako pro Alix/Wrap.

3) Poznámky k instalaci

Až dosud to všechno vypadalo dobře. jenže při prvním zavolání programu streamer se dozvíme, že nejde alokovat paměť. Proč, když kamerka dává obrázek jen 640×480 a k dispozici máme 256MB RAM? Inu, chybka je přímo v binárce streamer. Tato se pokouší při každém startu alokovat 256MB paměti, bez ohledu na to, jak velký snímek bude zpracovávat. Po poněkud nečestném, ale účinném občurání systému postupem

sysctl vm.overcommit_memory=1
streamer ... (parametry)
sysctl vm.overcommit_memory=0

vše vesele zafunguje. Pak už jenom cronem spouštíme takovouhle dávku každou (např.) minutu, obrázky píšeme na CF kartu (nejlépe do samostatné partition, aby se nám systém po čase „neucpal“ vlastními produkty) a toto místo linkneme do struktury dokumentů Apache (symlinkem v souborovém systému, nebo aliasem v konfiguraci Apache). Doplníme šikovně nakonfigurovaný příkaz find, který staré obrázky maže a voilá – internetová kamerka za pár stokorun vesele slouží lidu. Překvapivá je kvalita objektivu, který lze jako makro použít už od jednotek centimetrů a získat tak i levný počítačový „mikroskop“.

kamera-na-letajici-hmyz