Gi din Raspberry Pi Night Vision Med PiNoir Camera


Raspberry Pi og Pi2 er økonomisk lite ARM maskiner som kan gjerne kjøre Linux. Populariteten til Raspberry Pi og kompatible Pi 2 modeller betyr at en stor del av tilbehør er tilgjengelig. Dette tilbehøret omfatter PiNoir Kamera og 4D Systems 'touch-sensitive, 3,5-tommers skjerm.

PiNoir kameraet er så kalt fordi den ikke har et infrarødt filter (no-IR). Uten en IR-filter kameraet kan brukes om natten, forutsatt at du har en infrarød lyskilde. Med nattsyn kan du bruke Raspberry Pi som en rundt-the-clock overvåking kamera monitor, baby monitor, eller å gi visjonen til en robot. Den PiNoir kamera kommer uten en sak, slik at du kanskje har lyst til å plukke opp noe for å beskytte den.

Jeg skal sette opp 4D Systems skjermen og deretter ta en titt ikke bare på PiNoir kamera, men hvor godt den fungerer i kombinasjon med en infrarød lyskilde som gir et forholdsvis bred stråle og opp til 10 meter for belysning. Kameraet kobles til porten på Raspberry Pi kamera Serial Interface (CSI) og skjermen kobles til 40 pin utvidelse header på Raspberry Pi.
4D Systems 3,5-tommers skjerm

4D Systems skjermen kjører på en 480x320 QVGA-oppløsning med 65k farger. Fysisk skjermen er omtrent samme størrelse som Raspberry Pi 2. Skjermen montering skrue faner utvide litt utover Raspberry Pi på USB-kontakten siden av enheten.

dataark for skjermen nevner at du bør inkludere noen skjerming for å hindre utilsiktet elektrisk kontakt mellom elementer på baksiden av skjermen og Raspberry Pi. Jeg fant ut at den kontakten som kobler skjermen og USB-porter gi en anstendig støtte for skjermen. En chip kan lett gjort å røre Ethernet-kontakten på Raspberry Pi, så noen form for ikke-ledende standoff vil trolig være lurt å stoppe det fra å skje. Det finnes også mannlige pinnene på baksiden av skjermen, selv om de ser ut til å ha en rimelig klaring fra Raspberry Pi, men igjen kanskje noen form for skjerming ville være klokt. Den beste løsningen ville være å lage en sak med monteringshull for både Raspberry Pi og skjerm som ville holde begge i riktig avstand fra hverandre.

Det er drivere for både Raspberry Pi og pi2 modeller for Raspian som inkluderer skjerm og touch-støtte. The Raspberry Pi 2 har en 40-pinners utvidelse header kjører ned én side av det. Baksiden av skjermen har en 26 pin hunn header for å koble til Raspberry Pi. De første 26 pinner på bringebær Pi2 spissen er i samme konfigurasjon som de tidligere Pi modellene. Den vanlige 26 pins er på slutten lengst borte fra USB-kontaktene på Raspberry Pi 2.

Før du kobler skjermen bør du installere driverne for det. Disse er knyttet fra nedlastingsdelen av produsenten 4D Systems 'produktsiden. Jeg kjørte Raspbian 7 (Wheezy) og brukt driverne fra kernel4dpi_1.3-3_pi2.deb å teste skjermen. Sette opp sjåfører skjermen gjøres ved å installere kernel-pakken, som vist nedenfor. Jeg fant ut at hvis jeg utførte en apt-get upgrade da måtte jeg også installere kernel4dpi å få skjermen fungerer igjen

 root @ pi:. ~ # Wget https: //.../kernel4dpi_1.3 -3_pi2.debroot@pi: ~ # dpkg -i kernel4dpi_1.3-3_pi2.deb ... Aktiver støvel til GUI [Yn] y 

Etter å slå av Raspberry Pi og feste skjermen jeg kunne se oppstartsmeldinger som Jeg startet på Raspberry Pi, men dessverre, når oppstart var ferdig så jeg bakgrunnsbelysning, men ikke noe bilde av. Jeg ble så kjører kernel versjonen Linux pi 3.18.9-v7 +. Etter å grave rundt, la jeg merke til i /etc/rc.local følgende linje som burde ha tatt opp en X-sesjon på en rammebuffer enhet som er støttet av skjermen.

 sudo -u pi framebuffer- = /dev /FB1 startx & 

Fra en SSH-økt bestemte jeg meg for å kjøre startx med den valgte rammebuffer og skjermen kom til liv med en fin desktop. Min installasjon av Raspbian hadde S05kdm i sin standardkjørenivå (2) oppstart. Deaktivering S05kdm og omstart brakt opp en grafisk session rett etter oppstart som en skulle håpe.

Skjermen gir en rammebuffer enhet som er ganske hendig, som det lar deg vise tekst, bilder og video uten å bruke en full desktop hvis det er det du ønsker. Følgende kommandoer vil vise et bilde eller en video direkte på skjermen. Verktøysett som Qt vil også la deg kjøre på en rammebuffer

 root @ pi. /Usr /share /pixmaps # FBI -T 2 -d /dev /FB1 MagicLinuxPenguins.png root @ pi: ~ # mplayer -vo fbdev: /dev /FB1 -vf skala = 480: 320 test.mkv 

Touch kalibrering skjer på to nivåer: bruker ts_calibrate på rammebuffer og xinput_calibrator for X Window økten. Kalibrering i begge tilfeller er ganske enkel, klikke på fire eller fem posisjoner på skjermen når du blir spurt. Skjermretningen kan endres slik at fire ulike rotasjoner bruker /boot/cmdline.txt filen. Alle disse prosedyrene er godt dokumentert i dataarket for skjermen.

Dimming og slå av bakgrunnsbelysningen kan tilsynelatende styres med GPIO18 og en utsatt /sys /class /bakgrunnsbelysning /4dpi /lysstyrke fil. Selv om jeg hadde en jumper på J1-kontakten på skjermen i PWM posisjon, skriver til lysstyrken filen ikke endre lysstyrken på skjermen mens du kjører en X-sesjon. Kanskje X selv var ansvarlig for skjermen dimming eller jeg hadde en konfigurasjonsproblem med Raspberry Pi 2.
PiNoir Kamera

PiNoir kamera er i stand til å fange opp 30 bilder per sekund for 1080p video og still bilder opp til 5 megapiksler, noe som er 2592x1944. Kameraet er koblet til et bord med en ganske kort bånd kabel festet som du deretter feste til Raspberry Pi. The Raspberry Pi har en CSI port nær Ethernet-port for å koble kameraet flatkabelen inn. Det er en klemme som man trekker oppover på hver ende, og deretter kan man flytte klemmen bakover litt slik at båndet som skal settes inn i CSI porten. Klipsen kan deretter flyttes tilbake og skyves ned for å låse båndet på plass. Manualene nevne at kameraet og bånd er statisk sensitive. Etter jording meg selv før du begynner å montere kameraet i kabinettet sitt, og koble kameraet bånd til CSI-porten på kameraet fungerte fint.

Når maskinvaren er koblet du kanskje må aktivere det CSI port i programvaren. For å gjøre dette kjøre Raspi-config, og velg Aktiver kamera fra menyen. Du vil da måtte starte din Raspberry Pi.

raspistill programmet vil la deg få din første stillbilde fra kameraet. Det eneste du trenger å fortelle det er hvor du vil lagre som bildefil til, som vist nedenfor. En 5-sekunders forsinkelse vil gå forut for den faktiske bildeopptak og resultatet vil bli lagret i test.jpg. Jeg fant ut at lyset oppsettet var bedre med denne forsinkelsen, ved hjelp av en --timeout 100 parameter for å ta bildet etter bare en 100 millisekund forsinkelse resulterte i et bilde med mye dårligere eksponering.

 pi @ pi ~ $ raspistill -o test.jpgpi@pi~$ raspistill --timeout 100 -o badlight.jpg 

For å teste hvor godt eksponert et bilde var etter kamera oppstart jeg tok en time lapse serie på 10 bilder, ett hver andre ved hjelp av kommandoen nedenfor . Det tok ca 3 sekunder for at bildet skal gå fra en ganske grønt image til et mye mer fargerikt bilde.

 pi @ pi ~ $ raspistill --timeout 10000 --timelapse 1000 \\ --nopreview -n -o test% 04d.jpg 

raspivid verktøyet er et godt sted å begynne når du ønsker å få video fra kameraet. Dessverre test.h264 fil opprettet av den første kommandoen vil være uten noen videofil container, det vil si, bare den rå h264 video stream. Dette gjør det litt vanskeligere å spille med vanlige videospillere, så MP4Box kommandoen kan brukes til å lage en mp4-fil som inneholder rå test.h264 stream. Den test.mp4 kan spilles av med mplayer og andre verktøy.

 pi @ pi ~ $ raspivid -t 5000 -o test.h264 pi @ pi ~ $ pi @ pi ~ $ sudo apt-get install -y gpac pi @ pi ~ $ MP4Box -fps 30 -Legg test.h264 test.mp4 

Hvis du ønsker å eksportere videostrømmen over nettverket, kan gstreamer være et mer nyttig verktøy. Det er en GST-rpicamsrc prosjekt som legger til støtte for Raspberry Pi kameraet som som kilde til GStreamer. Dessverre, i skrivende stund GST-rpicamsrc ikke er pakket i hoved Raspbian distribusjon. Installere libgstreamer1.0-dev pakken tillatt meg å git pull fra GST-rpicamsrc depot og bygge og installere den modulen like kommandoene i sin README beskrive. Jeg har kopiert kommandoene nedenfor for enkel bruk.

 pi @ pi ~ /src $ sudo apt-get install libgstreamer1.0-dev libgstreamer-plugins-base1.0-devpi@pi ~ /src $ git clone https://github.com/thaytan/gst-rpicamsrc.gitpi@pi ~ /src $ cd ./gst-rpicamsrc/pi@pi ~ /src $ /autogen.sh prefix = /usr. - libdir = /usr /lib /arm-linux-gnueabihf /pi @ pi ~ /src $ makepi @ pi ~ /src $ sudo make install 

Nå som du har GST-rpicamsrc modul installert, kan du sende h264 strømmen over nettverket ved hjelp nedenfor kommandoer. Jeg fant ut at selv på 1080-oppløsning og en høy profil var det svært lite CPU brukes på Raspberry Pi2 å streame kameraet. CPU-bruk var i ensifrede verdier i en topp (1) skjerm.

Raspberry Pi støtter koding av video i maskinvare og fordi rpicamsrc leverer h264 kodet video rett fra kilden jeg mistenker at maskinvaren koding ble brukt til å produsere at videostrømmen. De to første kommandoene forløp 720 eller 1080 video med en litt annen kode profil. Den endelige kommandoen skal kjøres på 'mydesktop "maskin for å fange strømmen og vise det i et vindu.

 pi @ pi ~ $ GST-launch-1,0-v rpicamsrc bitrate = 1000000 \\! video /x-h264, width = 1280, height = 720, framerate = 15/1 \\! rtph264pay config-intervall = 1 \\! udpsink host = mydesktop port = 5000 pi @ pi ~ $ GST-launch-1,0-v rpicamsrc bitrate = 1000000 \\! video /x-h264, width = 1920 height = 1080, framerate = 15/1, profil = høy \\! rtph264pay config-intervall = 1 \\! udpsink host = mydesktop port = 5000 meg @ mydesktop ~ $ GST-launch-1.0 udpsrc port = 5000 \\ caps = "application /x-RTP, media = (string) video, klokke-rate = (int) 90000, koding-navn = (string) H264 "\\! rtph264depay! decodebin! autovideosinkNight Vision med PiNoir kamera og IR kilde 

dataarket for PiNoir kameraet slår fast at den ønsker infrarødt lys på rundt 880nm bølgelengde. Den TV6700 IR-lys opererer på 850nm så kanskje ikke direkte på sweet spot at PiNoir forventer. Spesifikasjonene for IR-lys er en 10 meter rekkevidde og en 70 graders vinkel stråling. Lysdiodene er oppført for opptil 6000 timers bruk, og det er en automatisk på /av evnen til å slå av lyset i løpet av dagen.

TV6700 IR-lyset kommer med et lite runde metallsylinder, den ene enden av som du kan se lysdioder gjennom et gjennomsiktig deksel. Enheten vil ha et 12-volt uttak, og det er en Y splitter med en kvinnelig og to mannlige DC knekt. Hvis din eksisterende kameraets strømforsyningen er 12 V og har litt ekstra kraft kapasitet deretter splitter vil la deg hente strøm rett utenfor kameraet og montere IR-lys i nærheten. Det er også en U form brakett og noen skruer.

En innledende test av lyset ble gjort i et rom ca 5 av 5 yards store. Om natten med en 3-watts LED skrivebordslampe og en ganske mørk LCD-skjermen kan jeg bare ta ut elementer som en vifte i nær bakken (2 fot fra kamera), men elementer på en bokhylle 2 kilometer fra kameraet var mye vanskeligere å se, bare å kunne lese svært stor tekst på spines av hvite bøker. Slå av 3 W LED svertet den PiNoir kameraskjermen helt. Det synes lyset slippes ut av skjermen når du viser et mørkt bilde er ikke nok for PiNoir kamera til å gi mye av et bilde av.

Forlater 3 W normal LED lys av og slå på IR-lyset gjorde hele bildet klart synlig i gråtoner. Viftet med en hånd foran kameraet kom gjennom i sanntid selv om rommet var mørkt. Ved hjelp av IR-lys og et kamera som ikke filtrerer IR har fordelen av å være i stand til å strømme hurtig bevegelse på riktig måte. Ved hjelp av et stillbildekamera for å ta en sekvens av lengre bildene eksponerings vil trolig resultere i en samling av bevegelsesuskarphet bilder.

Flytte til en utenfor innstilling med en stor gressplen på kvelden kunne jeg skimte en person litt over 7 meter fra Raspberry Pi og nesten over hele spekteret av bredden på fanget videobildet fra kameraet. Kanskje bare får 7 meter sikt ble resultatet av ikke nøyaktig matche infrarød bølgelengde at PiNoir kameraet forventer.
RPI for videoovervåking Applications

Mens Raspberry Pi går utmerket godt uten display, noen programmer kanskje nytte av å være i stand til å vise informasjon på forespørsel. Fordi 4D Systems 3,5 tommers skjerm er omtrent samme dimensjoner som Raspberry Pi bord kan det gi en skjerm uten å øke den fysiske størrelsen på Raspberry Pi eller krever ekstern strøm for skjermen.

Å kunne produsere og stream 1080 h264 kodet video med PiNoir kameraet og i lite lys situasjoner åpner opp Raspberry Pi til video-overvåkning. For eksempel bruker en hodeløs Raspberry Pi med en PiNoir kameraet som en babymonitor. Den viktigste ulempen med å bruke Raspberry Pi som en skjerm er at CSI-kabelen er ganske kort, spesielt sammenlignet med en USB-kabel. Hvis du ønsker en Raspberry Pi i hjertet av roboten så kan du streame hyggelig robot øye kamera visjon over nettverket uten en stor innvirkning på robotens CPU-ytelsen.

IR kilde er en må ha hvis du planlegger å bruke PiNoir kamera for sikkerhetsovervåking. Å kunne se hvem som gjør hva, mens de kan være uvitende om kameraet eller (infrarød) lyskilde hjelper deg svare på situasjonen på en hensiktsmessig måte.

Vi vil gjerne takke RS Components for å levere hardware brukes i disse artiklene. Den PiNoir Kamera, 4D Systems trykkfølsom skjerm på 3,5 tommer, infrarød lyskilde, og kameraveske er tilgjengelig for kjøp på RS Components 'australske nettstedet så lenge lageret rekker, eller via RS Components' viktigste nettsted, hvis du bestiller internasjonalt.