06-09Raspberry Pi met camera - TEQnationkortere. Bij het plaatsen van een flexkabel moeten de...

4
6 WORKSHOP AAN DE SLAG MET RASPBERRY PI EN CAMERA Met de Raspberry Pi Zero W verscheen dit jaar een goedkope kleine variant van de Raspberry Pi mét wifi. In combinatie met de vernieuwde cameramodule kun je hiermee volop experimenteren met foto en video en bijvoorbeeld je eigen bewakingscamera. Gertjan Groen Bouw een goedkope ip-camera de Pi Zero W (ongeveer 11 euro), maar ook de ‘oude’ Pi Zero (ongeveer 5,50 euro). De camera- module is tevens in NoIR-uitvoering verkrijg- baar, zonder infraroodfilter. Die is niet voor iedereen: bij gewoon daglicht zijn er sterk afwijkende kleuren. Bij schemering doet de NoIR het wel beter. Combineer je de NoIR met infraroodverlichting, dan zijn zelfs goede zwart-witopnames in het donker mogelijk, handig voor bijvoorbeeld een wildcamera. Wil je zowel ‘s nachts als overdag een goed beeld, dan zou je de NoIR kunnen voorzien van een infrarood- filter dat overdag via een mechanisme over de cameralens wordt geschoven, al dan niet op basis van de hoeveelheid licht. Dat is hoe gewone bewakingscamera’s werken. PI ZERO W De Pi Zero W bevat in tegenstelling tot de gewone Pi Zero over wifi, zodat je hier een wifi- bewakingscamera van kunt maken. Eén van de weinige Nederlandse webshops waar je hem kunt bestellen is bijvoorbeeld Kiwi Electronics (www.kiwi-electronics.nl), de officiële distri- buteur voor de Benelux. Behalve goedkoop is het product ook erg compact en energiezuinig. Voor de toepassingen in deze workshop is de Pi Zero W bovendien snel genoeg en het werkgeheugen (512 MB) meer dan toereikend. We gebruiken de originele behuizing voor de Pi Zero W waar de cameramodule in past. Het geheel is zo klein dat je het haast ook als spio- nagecamera zou kunnen gebruiken. CAMERA AANSLUITEN Om de camera aan te sluiten op een gewone Raspberry Pi kun je de bijgeleverde came- rakabel gebruiken, een 15 cm lange flexkabel. Vind je dat te kort of te lang? Je kunt ook andere maten bestellen, vanaf 10 cm tot wel 2 meter. De limiet voor dit type kabel ligt rond 3 tot 4 meter. De huidige Pi Zero W en Pi Zero ondersteunen de cameramodule ook, maar hebben een kleinere camerapoort zodat je een andere camerakabel nodig hebt (ongeveer 6 euro). Een extra korte variant D e cameramodule voor de Raspberry Pi was één van de eerste accessoires die je kon kopen voor de populaire single- boardcomputer. In april 2016 verscheen versie twee van de module, die we in deze workshops onder handen nemen. We gebruiken hem in de onlangs uitgebrachte Raspberry Pi Zero W. Hiermee kun je voor weinig geld een bewa- kingscamera bouwen met wifi. Er zijn ook tal- loze andere toepassingen te bedenken, zoals een time-lapsecamera, dashcam in de auto of vogelnestkast met camera. PI CAMERA De cameramodule (29,95 euro) is meteen het duurste onderdeel in deze workshop. De module bevat een 8megapixel-sensor, de Sony IMX219. Naast foto’s kun je ook video’s in full-hd opnemen met 30 frames per seconde (1080p30). De module is geschikt voor alle uitvoeringen van de Raspberry Pi waaronder De Raspberry Pi Zero met cameramodule Combineer de NoIR met infraroodverlichting om een nachtcamera te maken 06-09Raspberry Pi met camera.indd 6 29-01-18 19:02

Transcript of 06-09Raspberry Pi met camera - TEQnationkortere. Bij het plaatsen van een flexkabel moeten de...

Page 1: 06-09Raspberry Pi met camera - TEQnationkortere. Bij het plaatsen van een flexkabel moeten de zichtbare contacten richting het bordje wijzen. Vergeet niet de afdekking weer dicht te

6

WORKSHOP

AAN DE SLAG MET RASPBERRY PI EN CAMERA

Met de Raspberry Pi Zero W verscheen dit jaar een goedkope kleine variant van de Raspberry Pi mét wifi. In combinatie met de vernieuwde cameramodule kun je hiermee volop experimenteren met foto en video en bijvoorbeeld je eigen bewakingscamera. Gertjan Groen

Bouw een goedkope ip-camera

de Pi Zero W (ongeveer 11 euro), maar ook de ‘oude’ Pi Zero (ongeveer 5,50 euro). De camera-module is tevens in NoIR-uitvoering verkrijg-baar, zonder infraroodfilter. Die is niet voor iedereen: bij gewoon daglicht zijn er sterk afwijkende kleuren. Bij schemering doet de NoIR het wel beter. Combineer je de NoIR met infraroodverlichting, dan zijn zelfs goede zwart-witopnames in het donker mogelijk, handig voor bijvoorbeeld een wildcamera. Wil je zowel ‘s nachts als overdag een goed beeld, dan zou je de NoIR kunnen voorzien van een infrarood-filter dat overdag via een mechanisme over de cameralens wordt geschoven, al dan niet op basis van de hoeveelheid licht. Dat is hoe gewone bewakingscamera’s werken.

PI ZERO WDe Pi Zero W bevat in tegenstelling tot de gewone Pi Zero over wifi, zodat je hier een wifi-

bewakingscamera van kunt maken. Eén van de weinige Nederlandse webshops waar je hem kunt bestellen is bijvoorbeeld Kiwi Electronics (www.kiwi-electronics.nl), de officiële distri-buteur voor de Benelux. Behalve goedkoop is het product ook erg compact en energiezuinig. Voor de toepassingen in deze workshop is de Pi Zero W bovendien snel genoeg en het werkgeheugen (512 MB) meer dan toereikend. We gebruiken de originele behuizing voor de Pi Zero W waar de cameramodule in past. Het geheel is zo klein dat je het haast ook als spio-nagecamera zou kunnen gebruiken.

CAMERA AANSLUITENOm de camera aan te sluiten op een gewone Raspberry Pi kun je de bijgeleverde came-rakabel gebruiken, een 15 cm lange flexkabel. Vind je dat te kort of te lang? Je kunt ook andere maten bestellen, vanaf 10 cm tot wel 2 meter. De limiet voor dit type kabel ligt rond 3 tot 4 meter. De huidige Pi Zero W en Pi Zero ondersteunen de cameramodule ook, maar hebben een kleinere camerapoort zodat je een andere camerakabel nodig hebt (ongeveer 6 euro). Een extra korte variant

De cameramodule voor de Raspberry Pi was één van de eerste accessoires die je kon kopen voor de populaire single-

boardcomputer. In april 2016 verscheen versie twee van de module, die we in deze workshops onder handen nemen. We gebruiken hem in de onlangs uitgebrachte Raspberry Pi Zero W. Hiermee kun je voor weinig geld een bewa-kingscamera bouwen met wifi. Er zijn ook tal-loze andere toepassingen te bedenken, zoals een time-lapsecamera, dashcam in de auto of vogelnestkast met camera.

PI CAMERADe cameramodule (29,95 euro) is meteen het duurste onderdeel in deze workshop. De module bevat een 8megapixel-sensor, de Sony IMX219. Naast foto’s kun je ook video’s in full-hd opnemen met 30 frames per seconde (1080p30). De module is geschikt voor alle uitvoeringen van de Raspberry Pi waaronder

De Raspberry Pi Zero met cameramodule

Combineer de NoIR met infraroodverlichting om een nachtcamera te maken

06-09Raspberry Pi met camera.indd 6 29-01-18 19:02

Page 2: 06-09Raspberry Pi met camera - TEQnationkortere. Bij het plaatsen van een flexkabel moeten de zichtbare contacten richting het bordje wijzen. Vergeet niet de afdekking weer dicht te

7

WORKSHOP

motionEyeOS dat erg veel mogelijkheden biedt voor het gebruik als bewakingscamera. Vooral in zelfbouwprojecten komt de Pi Zero W goed tot zijn recht en de cameramodule speelt in veel van die projecten een belang-rijke rol. Vaak wordt de programmeertaal Python gebruikt, waarmee ook toegang tot de camera mogelijk is dankzij de picamera-bibliotheek. In de vierde workshop lees je daar meer over. We geven voorbeelden hoe je de camera met zelfgeschreven programma’s kunt benaderen.

dat je de netadapter op de juiste micro-usb-poort aansluit. De voeding moet minimaal 1,5 ampère kunnen leveren: 1,2 ampère voor de Pi Zero W zelf en 250 mA (milliam-père) extra voor de cameramodule. Je kunt hiervoor prima de lader van bijvoorbeeld een Samsung-smartphone gebruiken (veelal 2 A).

VEEL MOGELIJKHEDENVia de opdrachtprompt van Raspbian Lite is al veel mogelijk met de cameramodule, van het maken van foto’s en video’s tot het opzetten van een videostream. Over deze toepassingen lees je in de volgende work-shop. In de derde workshop behandelen we het kant-en-klare besturingssysteem

wordt bij de officiële behuizing voor de Pi Zero al bijgeleverd, zodat je in dat geval met-een klaar bent voor ongeveer dezelfde prijs.

AAN DE SLAGOm te beginnen sluiten we de korte came-rakabel die bij de behuizing wordt geleverd aan op de cameramodule. Schuif voorzichtig de zwarte afdekking iets uit zodat de kabel loskomt. Nu kun je die vervangen door de kortere. Bij het plaatsen van een flexkabel moeten de zichtbare contacten richting het bordje wijzen. Vergeet niet de afdekking weer dicht te schuiven na het plaatsen van een kabel en controleer voorzichtig of de kabel vast zit. De andere kant van de flexkabel kun je nu op vergelijkbare wijze op de Pi Zero W aansluiten. Druk daarna het bordje voorzich-tig in de behuizing, zodat de aansluitingen aan de zijkant (mini-hdmi en twee keer micro-usb) in de uitsparing vallen. Bij de behuizing worden drie deksels geleverd waarvan één met cameraoog. Klik hier de cameramodule in vast, maar verwijder wel eerst het stukje plastic folie dat de lens beschermt.

EERSTE GEBRUIKWat resteert is het plaatsen van een ge-heugenkaart met het gewenste besturings-systeem in het micro-sd-slot op het bordje. Hoewel je Raspbian met de Pixel-desktop zou kunnen gebruiken is de Pi Zero W daar eigenlijk te traag voor. Je bent beter af met de Lite-versie van Raspbian als basis. We kiezen in deze workshops voor de Jessie-release. Eventueel zou je het nieuwe versie Stretch kunnen kiezen, maar die is nog zo nieuw dat niet alle software en archieven op internet hiervoor zijn aangepast. Met voorganger Jes-sie zit je net wat veiliger. Het is handig als er op het geheugenkaartje nog wat ruimte vrij is om met foto’s en video’s te experimenteren of voor tijdelijke opslag van beelden. Reken voor foto’s op ongeveer 3 tot 4 MB per foto bij de resolutie van 2592 × 1944 pixels. Zorg

De officiële behuizing voor de Pi Zero met camerakabeltje

Op de Pi Zero W krijgt Raspbian Lite zonder Pixel-desktop de voorkeur

www.linuxmag.nl 01 2018

06-09Raspberry Pi met camera.indd 7 29-01-18 19:02

Page 3: 06-09Raspberry Pi met camera - TEQnationkortere. Bij het plaatsen van een flexkabel moeten de zichtbare contacten richting het bordje wijzen. Vergeet niet de afdekking weer dicht te

8

WORKSHOP

HANDIGE TOOLS VOOR DE CAMERA-MODULE

sudo rpi-update kunnen uitvoeren voor de laatste gpu-firmware, maar dat wordt nu meestal afgeraden. Het geeft weliswaar de nieuwste, maar niet de meest stabiele firm-ware. De standaard updateprocedure is door-gaans toereikend. Verder hoef je wat configu-ratie betreft maar één stap te doorlopen: open de configuratietool van de Pi met de opdracht sudo raspi-config. Activeer de camera onder Interfacing Options. Zorg ook dat onder Localisation Options de juiste tijdzone is gese-lecteerd. Ga naar Finish en herstart de Pi.

BASISTOOLSJe kunt al direct een foto maken vanaf de opdrachtprompt met de opdracht raspistill -o beeld.jpg. Handige parameters zijn bijvoorbeeld -vf en/of -hf om het beeld respectievelijk verticaal en horizon-taal te draaien. Om alle opties te zien, voer je alleen het commando raspistill uit. Met de tool kun je ook een timelapse maken. Met de opdracht uit Listing 2 wordt gedurende 30 seconden (30.000 ms) iedere twee seconden (2.000 ms) een foto gemaakt:

raspistill -t 30000 -tl 2000 -o beeld%04d.jpg

De %04d in de bestandsnaam zorgt ervoor dat de losse beelden worden genummerd (met 4 cijfers). Er bestaan diverse tools om van de beelden een timelapse-video te maken. De

Pi zelf is daar wat traag voor. Handiger is een Windows-programma als zoals Time-Lapse Tool (http://timelapsetool.com/nl) of VirtualDub (http://virtualdub.sourceforge.net). Die laatste is gratis, maar minder gebruiksvriendelijk. Ook een tool om video te maken is aanwezig: met het commando raspivid -o video.h264 maak je een vijf seconden durende video. De tijd in milliseconden geef je aan met parameter -t. Voor een minuut is dat -t 60000.

We gaan de Pi Zero W ‘headless’ gebruiken – wat in dit geval betekent: zonder grafische gebruikersinter-

face – met inlog via ssh. Begin met het flashen van de micro-sd-kaart met bijvoorbeeld Etcher (www.etcher.io). Hierin kun je direct het zip-bestand kiezen als bron. Haal de laatste versie van Jessie (gedateerd 05-07-2017) op uit het archief op http://downloads.raspberrypi.org/raspbian_lite/images.

VOORBEREIDINGENHaal na het flashen de kaartlezer even los zodat de kaart wordt herkend. Negeer meldingen over het formatteren van de kaart. De bootpartitie is toegankelijk en bevat onder meer het bestand kernel.img. Voeg hier twee bestandjes aan toe: een leeg bestand genaamd ssh (zodat direct na het booten ssh-toegang mogelijk is) en een tekstbestand genaamd wpa_supplicant.conf met de netwerkinstellingen (zodat verbinding met wifi wordt gemaakt). Het bestand wpa_supplicant.conf ziet eruit zoals hieron-der. Bij wifinaam voer je de ssid van je wifi-netwerk in en bij wachtwoord het bijbeho-rende wachtwoord (zie Listing 1).

Als de instellingen correct zijn, vind je na het booten het ip-adres van de Pi terug in de verbindingslijst van je router, de mobiele app Fing. Als het niet werkt, kun je altijd een nieuw wpa_supplicant.conf- bestand maken en de Pi herstarten. Log nu in via ssh op dit ip-adres, met een programma zoals PuTTY. De standaard gebruikersnaam is pi met het wachtwoord raspberry.

EERSTE STAPPENZorg eerst dat de software up-to-date is met deze twee commando’s:

sudo apt-get update

sudo apt-get dist-upgrade

Je zou eventueel ook het commando

Er zijn heel veel manieren om de cameramodule in de Raspberry Pi te benaderen. In deze workshop bekijken we enkele handige tools voor de opdrachtprompt. Je kunt er foto’s en video’s mee maken, maar ook een complete videostream opzetten. Gertjan Groen

LISTING 1 country=NL ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdevupdate_config=1 network={ ssid=”wifinaam” scan_ssid=1 psk=”wachtwoord”}

Met bijvoorbeeld Fing zoek je gemakkelijk ip-adressen op in je netwerk

LISTING 2raspistill -t 30000 -tl 2000 -o beeld%04d.jpg

Snelle videostream via de opdrachtprompt

06-09Raspberry Pi met camera.indd 8 29-01-18 19:19

Page 4: 06-09Raspberry Pi met camera - TEQnationkortere. Bij het plaatsen van een flexkabel moeten de zichtbare contacten richting het bordje wijzen. Vergeet niet de afdekking weer dicht te

9

WORKSHOP

www.linuxmag.nl 01 2018

De uitbreiding WebRTC voor de Raspberry Pi 1, Pi Zero en Pi Zero W installeer je met:

sudo apt-get install uv4l-webrtc-armv6

Voor een ander model Raspberry zoals de Pi 2 of 3 is dat:

sudo apt-get install uv4l-webrtc

BEGIN MET STREAMENHeb je alles geïnstalleerd, dan kun je de streamingserver starten via de opdracht uit Listing 8.

Achter encoding kun je eventueel h264 vervangen door mjpeg. Resolutie en frame-rate kun je naar wens aanpassen. Stop altijd eerst het huidige proces met sudo pkill uv4l voordat je een nieuwe stream start. Een stream kun je direct met bijvoorbeeld Firefox of Chrome bekijken door te browsen naar http://ip-adres:9090/stream waarbij je ip-adres vervangt door het ip-adres van de Pi. Een welkomstpagina vind je op http://ip-adres:9090. Optioneel kun je ook audio meesturen, zelfs audio en video in twee richtingen behoort tot de mogelijkheden.

LISTING 8 sudo uv4l -nopreview --auto-video_nr --driver raspicam --encoding h264 --width 640 --height 480 --framerate 20 --server-option ‘--port=9090’--server-option ‘--max-queued-connections=30’ --server-option ‘--max-streams=25’ --server-option ‘--max-threads=29’

www.linuxmag.nl 01 2018

Voeg met teksteditor nano via het commando sudo nano /etc/apt/sources.list de volgende regel toe aan de sources (zie Listing 5).

Bewaar de aanpassingen met Ctrl+O en verlaat nano met Ctrl+X. Werk de bronnen bij met sudo apt-get update en installeer UV4L samen met de driver voor de cameramo-dule en een servicescript (zie Listing 6).

Start de service vervolgens met:

sudo service uv4l_raspicam start

Je kunt ook opdrachten als restart, stop en status geven. Installeer vervolgens de strea-ming server (zie Listing 7).

STREAM OPZETTENJe kunt ook vrij simpel een videostream opzetten. Een aardige optie is cvlc, een ‘kale’ versie van de videospeler VLC. Je moet helaas wel het complete pakket installeren met de opdracht sudo apt-get install vlc. De opdracht in Listing 3 start een rtsp-stream (real time streaming protocol) met 800 × 600 pixels en 25 frames per seconde.

In bijvoorbeeld VLC kun je de rtsp-stream openen via Media / Netwerkstream openen. Geef als adres rtsp://ip-adres:8554/stream op waarbij je ip-adres vervangt door het ip-adres van de Pi. De rtsp-stream kun je ook openen in bijvoorbeeld Surveillance Station (vanaf versie 7.1 bèta) op een nas van Synology.

VERTRAGING BEPERKENHoewel VLC een goed hulpmiddel is, blijkt de vertraging relatief groot door het bufferen. De minste vertraging krijg je met GStreamer, maar het vereist een script op zowel de server als client en werkt vooral efficiënt tussen de Pi en Linux of Mac. Een goed alternatief is mjpg-streamer, waarvoor een verbeterde doch experimentele versie op GitHub te vinden is via www.tiny.cc/timelapsetool. Instructies om de tool te compileren vind je er ook. Nadat je het streamen hebt gestart, krijg je in een browser een welkomstpagina te zien met linkjes naar de stream.

UV4L MET WEBRTCEen nog mooier alternatief is de Userspace Video4Linux2 (UV4L) streamingserver met de WebRTC-uitbreiding, die sinds april ook beschikbaar is voor de Pi Zero (W). Daarmee stream je multimedia rechtstreeks naar een browser. De installatie vergt iets meer stap-pen. Begin met het toevoegen van de bron (zie Listing 4).

LISTING 3 raspivid -o - -t 0 -w 800 -h 600 -fps 25 -b 250000 | cvlc -vvv stream:///dev/stdin --sout ‘#rtp{access=udp,sdp=rtsp://:8554/stream}’ :demux=h264

LISTING 4curl http://www.linux-projects.org/listing/uv4l_repo/lrkey.asc | sudo apt-key add –

LISTING 5deb http://www.linux-projects.org/listing/uv4l_repo/raspbian/ jessie main

LISTING 6sudo apt-get install uv4l uv4l-raspicam uv4l-raspicam-extras

LISTING 7sudo apt-get install uv4l- server uv4l-uvc uv4l-xscreen uv4l-mjpegstream uv4l-dummy uv4l-raspidisp

De welkomstpagina van UV4L

Via de configura-tietool moet je de camera-interface activeren

06-09Raspberry Pi met camera.indd 9 29-01-18 19:19