Raspberry Pi webkamera

Jak hlídat své domácí mazlíčky, chránit majetek před zloději, nebo zaznamenávat „time-lapse“? Vytvořte z Raspberry Pi webkameru. Chcete vědět jak na to?

Oficiální a NoIR kamerový modul

K Raspberry Pi je možné si dokoupit kamerový modul. Mají ho skladem všichni prodejci (např. alza.cz) . Tento modul můžeme jednoduše připojit k Raspberry a udělat z něho webkameru.

Existují ale dva druhy kamerových modulů. „Obyčejný“ a NoIR. Rozdíl mezi nimi je v tom, že jeden obsahuje infračervený filtr a druhý ne. Ok. To nebylo to pravé ořechové. Jeden umí vidět ve tmě a druhý ne. Bohužel zatím nemám NoIR modul, takže nemůžu říct, jestli opravdu ve tmě vidí. Můžu ale celkem jistě říct, že běžný kamerový modul je na snímání za dne více než dostatečný.

Takže podle použití webkamery vybereme správný modul. Pokud chceme hlídat domácí mazlíčky nebo se chránit před nezvanými hosty, vybereme NoIR modul, protože potřebujeme vidět co se děje a horší barvičky na fotkách nám vadit nebudou. Pokud ale chceme sbírat snímky na „time-lapse“, zvolíme běžný kamerový modul, protože chceme hezký výsledek.

Připojení kamery k Raspberry Pi

Ať už jsme zvolili obyčejný nebo NoIR modul, připojení k Raspberry bude stejné. Na desce je pro něj připraven port, do kterého se prostě zasune konektor od kamery. Při připojování je nutné dávat pozor na to, abychom konektor zasunuli správným směrem. Aby se kontakty dotýkaly.

Obrázky se nestihly načíst.
Prosím opakujte akci zachvilku.
Raspberry Pi s připojeným kamerovým modulem


Je také dobré, že většina dostupných krabiček již s tímto modulem počítá a má připraveny adekvátní otvory pro prostrčení kabelů. Je tedy možné mít Raspberry Pi pěkně uschované v krabičce a kameru připravenu ke snímání.

Nastavení Raspberry Pi

Když Raspberry s připojenou kamerou spustíme, musíme kameru povolit v programu raspi-config. V terminálu tedy zadáme

sudo raspi-config


Když se program spustí, zvolíme možnost 5 Intefacing Options. Na následné obrazovce vybereme hned první možnost P1 Camera a možnost potvrdíme.

Obrázky se nestihly načíst.
Prosím opakujte akci zachvilku.
V raspi-config zvolíme možnost 5 Interfacing Options

Obrázky se nestihly načíst.
Prosím opakujte akci zachvilku.
V další obrazovce vybereme P1 Camera


Pokud máme kameru povolenou, můžeme ji hned vyzkoušet. Nejjednodušší cesta jak kamerou něco vyfotit je program raspistill.

raspistill -o cam.jpg


Toto volání vytvoří v adresáři, ve kterém se zrovna nacházíme, fotku pojmenovanou cam.jpg 🙂.

Obrázky se nestihly načíst.
Prosím opakujte akci zachvilku.
Ukázková fotka z kamery


Program na snímání obrázků z kamery

Kameru máme připojenou a úspěšně jsme prověřili, že funguje. Teď potřebujeme vytvořit jednoduchý pythonový program, který bude v určitém intervalu vyrábět fotky. Python je pro mě nejjednodušší řešení, ale je možné využít jakýkoliv jiný programovací jazyk, nebo si jen napsat shellový script.

import picamera
import time
import os

# get instance of PiCamera
camera = picamera.PiCamera()

# camera settings for resolution, horizontal flip, vertical flip
camera.resolution = '1080p'
camera.hflip = True
camera.vflip = True

time.sleep(1*60)

# infinite loop
while True:

  # picture path settings
  capture_time = time.strftime("%Y-%m-%d-%H%M%S")
  picture_path = '/var/www/html/pics/image' + capture_time + '.jpg'

  # capturing picture
  camera.capture(picture_path)

  # sleep 10 minutes before capturing next picture
  time.sleep(10*60)


Tento pythonový program zajistí, že se každých 10 minut udělá jeden snímek. Podle umístění kamery (pokud by byly fotky obráceně) je potřeba nastavit camera.hflip a camera.vflip. Adresář, do kterého se budou fotky ukládat, se nastavuje proměnnou picture_path. V mém případě je to adresář webového serveru /var/www/html/pics a fotky se budou jmenovat image{čas pořízení}.jpg (například image2017-05-10-103412.jpg).

Časový interval focení se nastavuje na poslední řádce programu. 10*60 znamená, že se fotka vytvoří každých 10 minut. Příkaz time.sleep totiž jako parametr dostává čas v sekundách, takže minuty musíme vynásobit 60. V případě, že bychom chtěli fotit například každou minutu, tak musíme nastavit sleep na 1*60.

Ukázkový program camera.py ke stažení

Program si uložíme do souboru pojmenovaného například camera.py. Pokud máme, tak ho můžeme cvičně spustit příkazem

python camera.py


Kamera by měla začít fotit. V určeném adresáři se začnou vytvářet soubory. První fotka se vytvoří za minutu a pak každých 10 minut další. Ukončení cvičného spuštění provedeme klávesovou zkratkou Ctrl + C.

Spuštění kamery po startu Raspberry Pi

Občas se stane, že vypadne elektřina, nebo je potřeba z nějakého důvodu Raspberry Pi restartovat, takže se hodí, aby se kamera spustila hned po startu Raspberry Pi. Pokud chceme jen Raspberry zastrčit do zásuvky a o víc se nestarat, tak je potřeba doplnit řádek do souboru /etc/rc.local.

Na konec souboru /etc/rc.local doplníme volání

python /home/pi/camera.py >> /home/pi/camera.log &


Toto volání zajistí spuštění programu camera.py po startu Raspberry Pi. Navíc se budou chybové výpisy zapisovat do souboru camera.log. & na konci znamená, že program poběží na pozadí a nebude blokovat další aplikace.

Co říci závěrem?

Myslím si, že Raspberry Pi použité jako webová kamera, je velmi užitečnou věcí. Využití nalezne při hlídání domácích mazlíčků, nebo ochraně majetku před nezvanými hosty. Rozlišení a obrazová kvalita je dostatečná pro vytváření nádherných časozběrných videí (to jsou ty „time-lapse“ 🙂).

A cena této hračky? Raspberry Pi se vším všudy je možné pořídit kolem 1 800 Kč. Kamerový modul (obyčejný i NoIR) stojí 900 Kč. Takže celková částka 2 700 Kč (včetně DPH 🙂). Myslím si, že to stojí za to.

Raspberry Pi, Kamera, NoIR

- (10. 2. 2020)

Líbil se vám článek?

Nasdílejte ho svým přátelům na sociálních sítích.

Pinterest

Názory, připomínky a jiné komentáře

Netuším kde je problém, ale při startu Raspberry Pi3, se skript prostě nespustí. Pokud ho vyvolám z terminálu příkazem python camera.py, tak jede.Nastaveno přesně po dle tohoto návodu a dalších, které jsem našel, ale nejde.

Je script umístěn na správném místě (/home/pi/camera.py)? Nebo změňte cestu tak, aby odpovídala.
Případně zkuste před volání doplnit sudo.
Příkaz tedy bude:
sudo python /home/pi/camera.py &> /home/pi/camera.log &

Ještě je možná problém v tom, že jsem tam nejspíš měl ampersand navíc.
Zkuste:
sudo python /home/pi/camera.py &
pokud se spustí úspěšně tak přidajte "logování":
sudo python /home/pi/camera.py >> /home/pi/camera.log &

camera.capture(picturepath) má být camera.capture(picture_path)

Děkuji za upozornění. Už by mělo být opraveno.

Vložit nový komentář

Jsem programátor, horolezec a tak trochu FlexiBee fanatik :-).
Na CharlieBlogu sepisuji své nápady a poznatky už od roku 2006.

Powered by CharlieBlog Engine v2.3 - Login