Ce putem face cu o cameră web veche?

În ultimul timp majoritatea dispozitivelor inteligente (telefon mobil, tabletă, laptop, televizor) vin echipate cu camere video performante ce permit realizarea de fotografii, înregistrări video sau video-comunicații. Utilizăm din ce în ce mai rar stațiile de lucru pentru astfel de activități și din acest motiv vechile camere video USB devin niște echipamente inutile tocmai bune de disponibilizat. Fiindcă nu au performanțe deosebite și nu sunt capabile de rezoluții foarte mari, camerele video usb (sau webcam-urile) au ajuns la prima vedere inutile în momentul de față dar… aceste echipamente pot fi reutilizate foarte ușor (și profitabil) în cadrul propriilor sisteme electronice dezvoltând astfel, cu costuri modice, diverse sisteme de achiziție, transmisie și supraveghere video. O cameră video USB poate fi conectată la orice placă de dezvoltare ce rulează Linux și dispune de o mufă USB host – în cadrul proiectului de față vom exemplifica acest lucru utilizând două dintre cele mai utilizate plăci de dezvoltare: Raspberry Pi și Arduino Yun. Ca și cameră video vom utiliza o cameră ultra-low-cost (în jur de 2$ pe ebay) dar se poate utiliza cam orice cameră web USB 1.1 sau 2.0:2

Lista oficială de camere video USB suportate de placa Raspberry Pi se poate consulta la adresa:

RPi USB Webcams

http://elinux.org/RPi_USB_Webcams

Configurarea camerei web pe o placă Raspberry Pi

După conectarea fizică a camerei la placa Raspberry Pi putem să verificăm mesajele date de nucleul sistemului de operare în urma evenimentului de conectare prin intermediul comenzii:

dmesg | tail -n11

3

Putem verifica identificarea ca dispozitiv USB prin intermediul comenzii:

lsusb

4

Sau putem verifica modurile video (rezoluțiile) suportate:

sudo lsusb -s 001:005 -v | egrep “Width|Height”

5

Verificarea mapării camerei ca dispozitiv specific se face cu ajutorul comenzii:

ls /dev/video*

6

Pentru a utiliza camera avem la dispoziție mai multe produse software pe care le putem instala și utiliza:

fswebcam – utilitar ce ne permite să preluăm un cadru video (o fotografie) și să-l salvăm într-un format ales. Instalarea acestui utilitar se face cu ajutorul comenzii:

sudo apt-get install fswebcam

Pentru a prelua o fotografie și a o salva într-un fișier denumit image.jpg executăm:

fswebcam image.jpg

Pentru mai multe detalii legate de utilizarea programului fswebcam puteți vedea și:

Using a standard USB webcam

https://www.raspberrypi.org/documentation/usage/webcams/

motion – utilitar capabil să transmită prin rețea imaginile captate de la camera video transformând astfel sistemul într-o cameră IP (WiFi sau Ethernet în funcție de capabilitățile plăcii Raspberry Pi). Instalarea se face cu ajutorul comenzii:

sudo apt-get install motion

Înainte de a porni aplicația trebuie trebuie să modificăm în fișierul de configurare (/etc/motion/motion.conf), cel puțin, următoarele directive:

# Start in daemon (background) mode and release terminal (default: off)

daemon on

# Restrict stream connections to localhost only (default: on)

stream_localhost off

Și în fișierul /etc/default/motion trebuie să modificăm:

start_motion_daemon=yes

Pornirea serviciului motion se face cu următoarea comandă:

sudo motion

După pornirea aplicației se pot urmării imaginile furnizate de camera video accesând adresa web:

http://adresa_ip_raspberrypi:8081

Facilitățile oferite de aplicația motion sunt foarte variate: înregistrare de imagini sau video, detecția mișcării, declanșarea de acțiuni în urma detecției de mișcare, transmiterea prin rețea de imagini sau flux de imagini și nu numai. Pentru o înțelegere mai bună a funcționării acestei aplicații se pot parcurge și următoarele proiecte:

Raspberry Pi remote webcam

http://www.instructables.com/id/Raspberry-Pi-remote-webcam

Build a Raspberry Pi Webcam Server in Minutes

https://pimylifeup.com/raspberry-pi-webcam-server/

Beginners Guide How To Setup a USB Webcam to your Raspberry Pi 2 in Minutes

http://www.awesomeprojects.xyz/2015/09/beginners-guide-how-to-setup-usb-webcam.html

Motion detection using the Raspberry Pi + USB Webcam

http://sjj.azurewebsites.net/?p=701

Raspberry Pi as low-cost HD surveillance camera

http://www.instructables.com/id/Raspberry-Pi-as-low-cost-HD-surveillance-camera

How to turn an USB camera with Raspberry Pi into an Onvif IP Camera?

http://www.instructables.com/id/How-to-turn-an-USB-camera-with-Raspberry-Pi-into-a

Configurațiile anterioare au fost testate pe un sistem rulând Raspbian GNU/Linux 8 (jessie), kernel 4.4.43-v7+, fswebcam 20140113-1 și motion 3.2.12+git20140228-4+b2.

Configurarea camerei web pe o placă Arduino Yun

Utilizarea unei camere web USB împreună cu o placă Arduino Yun este aproape la fel ca și în cazul plăcii Raspberry Pi dar există și câteva deosebiri. În primul rând curentul furnizat pe mufa USB a plăcii este mai mic decât în cazul plăcii Raspberry Pi și din acest motiv este posibil ca să fie nevoie să se utilizeze un hub USB cu alimentare (dacă placa Arduino Yun se resetează fără motiv după conectarea camerei video înseamnă că sigur aveți nevoie de mai mult curent, acest lucru poate fi valabil și în cazul plăcii Raspberry Pi):

7

https://www.robofun.ro/raspberry-pi-si-componente/powered-usb-hub-raspberry-pi

Un alt aspect important este faptul că placa Arduino Yun nu vine configurată implicit să ruleze sistemul de operare de pe un card ci din memoria internă. Pentru a nu uza memoria internă și pentru a face rost de mai mult spațiu pentru instalarea de programe este recomandată configurarea încărcării sistemului de operare de pe card:

How to expand the Yún disk space

https://www.arduino.cc/en/Tutorial/ExpandingYunDiskSpace

După conectarea fizică a camerei web la placa Arduino Yun se pot efectua aceleași verificări ca și în cazul precedent:

dmesg | tail -n7

8

lsusb

9

ls /dev/video*

10

Pentru utilizarea utilitarului fswebcam vom instala următoarele pachete software:

opkg update 

opkg install kmod-video-uvc 

opkg install fswebcam

iar comanda de execuție este identică cu cazul precedent:

fswebcam image.jpg

Pentru instalarea programului motion vom utiliza comanda:

opkg install motion

și pentru pornirea acestuia (după efectuarea modificărilor necesare în fișierul /etc/motion/motion.conf) comanda:

motion

Urmărirea imaginilor transmise prin rețea (WiFi sau Ethernet în funcție de configurația plăcii Arduino Yun) se poate face la aceiași adresă:

http://adresa_IP_arduinoyun:8081

Atenție!!! Procesorul plăcii Arduino Yun (Atheros AR9331 – 400MHz) nu este la fel de puternic ca procesorul plăcii Raspberry Pi (Broadcom BCM2836 – 900 MHz), din acest motiv nu putem avea pretenția la un număr mare de cadre per secundă la transmisia în rețea.

Pe lângă cele două utilitare prezentate și pentru placa Raspberry Pi, distribuția de Linux OpenWRT ce rulează pe placa Arduino Yun mai include și programul mjpg-streamer ce permite de asemenea transmisia în rețea de imagini preluate de la camera web dar nu și detecția de mișcare. Pentru instalarea acestuia vom utiliza comanda:

opkg install kmod-video-core kmod-video-uvc mjpg-streamer

iar pentru utilizare comanda:

mjpg_streamer -i “input_uvc.so -d /dev/video0 -y” -o “output_http.so”

Accesarea imaginilor transmise se poate face la adresele:

Flux video:

http:// adresa_IP_arduinoyun:8080/?action=stream

Imagini:

http:// adresa_IP_arduinoyun:8080/?action=snapshot

Pentru mai multe informații legate de utilizarea unei plăci Arduino Yun împreună cu o cameră web se pot consulta și următoarele proiecte:

WebCam in OpenWrt

http://h-wrt.com/en/doc/webcam

Wireless Security Camera with the Arduino Yun

https://learn.adafruit.com/wireless-security-camera-arduino-yun

DIY Security Camera

http://www.instructables.com/id/DIY-Security-Camera/

Build a Photobooth with an Arduino Yun, a Webcam and Dropbox

https://www.twilio.com/blog/2015/02/arduino-powered-photobooth-arduino-yun-a-webcam-and-dropbox.html