Raspberry Pi – Webcam gebruiken via USB

webcam

raspberry pi logo

Naast de Raspberry ‘Camera module’ kun je ook webcams gebruiken op de raspberry pi om foto’s en video’s te maken, wel is de originele camera van de raspberry pi stukken beter dan een webcam!

Er zijn een aantal website’s die het beschrijven, hier is mijn ervaring om een webcam aan te sluiten op een raspberry pi.

Wat heb je nodig?

1) fswebcam (te installeren met  sudo apt-get install fswebcam )

Wat is fswebcam (ENG)?
fswebcam is a neat and simple webcam app. It captures images from a V4L1/V4L2 compatible device or file, averages them to reduce noise and draws a caption using the GD Graphics Library which also handles compressing the image to PNG or JPEG.

Installatie

Begin met het installeren vna fswebcam met het commando:  sudo apt-get install fswebcam

Foto maken

Een foto is eenvoudig te maken met het commando:  fswebcam foto.jpg

Je kan zelfs het pad opgeven met de ‘–save‘ optie:  fswebcam --save /tmp/foto.jpg

De resolutie kan je opgeven met -r, bijvoorbeeld -r 640x480

Een ander voorbeeld met meer commando’s om de camera in te stellen (mits ondersteund):

fswebcam -d /dev/video0 -S 2 -s brightness=60% -s Contrast=15% -s Gamma=50% -p YUYV -r 1280x720 --jpeg 80 -s Sharpness=40% -s Saturation=15% --title "New Zealand - Wellington - Tawa" $DIR/$filename

Webcam details en info

Om details en informatie te zien van de webcam zijn verschillende commando’s aanwezig:

Unable to find a compatible palette format

Bij oude (legacy) webcams kan je deze foutmelding krijgen:

webcam_palettte_fout

Dit is op te lossen door een ‘oude compatible’ driver te gebruiken: libv4l/v4l1compat.so ,deze kun je laden met met LD_PRELOAD:

LD_PRELOAD=/usr/lib/arm-linux-gnueabihf/libv4l/v4l1compat.so

Ps. dit schijnt ook te werken:

LD_PRELOAD=/usr/lib/arm-linux-gnueabihf/libv4l/v4l2convert.so

Als je dit nu voor de fswebcam commando zet, werkt de webcam wel:

LD_PRELOAD=/usr/lib/arm-linux-gnueabihf/libv4l/v4l1compat.so fswebcam --save /tmp/foto.jpg

webcam_oude_driver_v4l1compat

VIDIOC_DQBUF error

Een VIDIOC_DQBUF error kan aan verschillende dingen liggen, de verbinding, het USB apparaat is nog niet gereed, of een andere oorzaak, hier is niets aan te doen, als je de webcam om de 10 a 20 seconden dan een foto laat maken zou er niets aan de hand moeten zijn.

webcam dqbuf error

Meer fswebcam opties

Webcam, het ‘device pad’ naar de webcam, in te stellen met de ‘-d‘ optie:  -d /dev/video0
Banner, deze kun je niet laten weergeven met de optie:  --no-banner
Resolutie, deze kun je met de ‘-r‘ optie instellen:  -r 160x120
Kwaliteit, de kwaliteit van de foto is in te stellen met ‘–jpeg‘, een voorbeeld voor 95%:  --jpeg 95
Opslag, waarnaartoe de foto weggeschreven wordt is in te stellen met de ‘–save‘ optie:  --save /tmp/foto.jpg

Cronjob met snapshots via internet

Als je een webserver hebt geinstalleer op de raspberry pi kun je met een cron job een foto maken en deze weergeven via een internet browser, tevens wordt deze ook opgeslagen in het ‘archief’:

1) Maak een folder aan in /var/www genaamd ‘cam‘.
2) Maak een bestand aan in /usr/cron genaamd ‘camsnap.sh‘ (en geef deze uitvoeringsrechten)

3) Als je nu het script uitvoert, wordt er een bestand aangemaakt:  /var/www/cam/foto.jpg en een bestand met ISO datum en tijd prefix in:  /var/www/cam/archief
4) met crontab -e  voeg deze regel toe om de cron om de minuut uit te voeren:

* * * * * /usr/cron/camsnap.sh 2>&1

5) Nu kun je bijvoorbeeld ‘index.html‘ gebruiken om de foto weer te geven: