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:
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
Putem verifica identificarea ca dispozitiv USB prin intermediul comenzii:
lsusb
Sau putem verifica modurile video (rezoluțiile) suportate:
sudo lsusb -s 001:005 -v | egrep „Width|Height”
Verificarea mapării camerei ca dispozitiv specific se face cu ajutorul comenzii:
ls /dev/video*
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):
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
lsusb
ls /dev/video*
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