Vi streamar video från en webbkamera kopplad till en Raspberry Pi. Raspberry Pi. Ansluta och arbeta med en CSI-kamera Hur man ansluter en analog kamera till raspberry pi

Korta instruktioner för att ansluta och använda en hårdvarukamera för Raspberry Pi Observera att kameran kan skadas av statisk elektricitet. Innan du tar bort kameran rekommenderar vi att du rör vid ett jordat föremål (till exempel ett element) för att ta bort laddningen. Kameran ansluts till kortet med en flexibel kabel. Kabelkontakten är placerad mellan Ethernet- och HDMI-portarna. Kameralinsen kan täckas med en genomskinlig skyddsfilm, som måste tas bort före användning.

Aktivera kamerastöd i Raspbian

Starta Raspberry Pi och logga in (standardanvändarnamn är pi, Lösenord - hallon). Kör kommandona i terminalen för att uppdatera Raspbian-distributionen till den senaste versionen: sudo apt-get uppdatering

sudo apt-get uppgradering

Programvara för kamera

raspivid konsolapplikation för att spela in video från en kamera.

raspistill Applikationer för att ta emot bilder från kameraparametrarna -o eller –output anger utdatafilens namn -t eller – timeout videoinspelningslängd (standard 5 sekunder) -d eller –demoinspelning i funktionsdemonstrationsläge. Alla möjliga effekter kommer att användas

Exempel: raspistill -o image.jpg- bildtagning i .jpg-format

raspivid -o video.h264- fånga 5 sekunders video i h264-format

raspivid -o video.h264 -t 10000- fånga 10 sekunders video i h264-format

raspivid -o video.h264 -t 10000 -d- fånga 10 sekunders video i h264-format i demoläge

Du kan se alla möjliga parametrar för raspivid- och raspistillapplikationerna enligt följande: raspivid | mindre, raspistill | mindre

Använd markören för att flytta genom listan eller skriv "q" för att avsluta. Detaljerade beskrivningar av parametrar för kameramjukvaran kan hittas

Strömmande video över nätverket

För att överföra video, kör kommandot på Raspberry Pi

raspivid -t 999999 -o - | nc 5001

För att titta på video på klienten måste du installera mplayer och netcat och köra dem enligt följande: nc -l -p 5001 | mplayer -fps 31 -cache 1024 för Linux


Raspberry Pi enkelkortsdator låter dig skapa riktigt intressanta och användbara saker: från multimediacenter till hemautomationssystem. Genom att ansluta olika moduler till Raspberry Pi kan du avsevärt utöka funktionaliteten hos denna minidator.



En av dessa extra plug-ins är en kamera, som gör att du kan ta bilder eller filma. Idag finns det ett antal kameror för Raspberry Pi på marknaden, och i den här artikeln kommer vi att ge en kort genomgång av dem.


Låt oss titta på sex av de mest populära kamerorna: ZeroCam Noir, ZeroCam FishEye, Raspberry Pi-kompatibel Fisheye-kamera, Raspberry Pi Camera V2, Raspberry Pi Camera V2 Noir och Raspberry Pi Camera 1.3.



ZeroCam Noir är en kameramodul för Raspberry Pi Zero eller Raspberry Pi Zero W, så om du vill använda den i Raspberry Pi 3 eller 2 behöver du använda en adapterkabel. Den här kameran har inget IR-filter på objektivet, vilket gör den idealisk för fotografering i svagt ljus. Här är några av dess huvudsakliga egenskaper: 5 megapixel sensor, 2592 × 1944 pixlar, 1080p vid 30 FPS (eller 60 FPS vid 720p, 90 FPS vid 480p), brännvidd 3,60 mm, 53,50 grader horisontellt, ca 41,41 grader vertikalt. brädans mått med kamera: 60 x 11,4 x 5,1 mm.



Detta är fisheye-versionen av ZeroCam, vilket betyder att den har en vidvinkelbild. Den här kameran är också gjord för Pi Zero eller Pi Zero W, så för att använda den med en annan Pi-panel behöver du en adapterkabel.



Detta är en Raspberry Pi-kompatibel fisheye-kamera som lätt kan hittas på olika handelsplattformar online som AliExpress, TaoBao, eBay. Den kännetecknas av en vidvinkelvy på 175º. Den är baserad på Omnivision 5647-sensorn med en upplösning på 5 megapixlar (2592 x 1944 pixlar).



Den här kameran är utrustad med en 8-megapixel Sony IMX219 bildsensor med en fast fokal lins, som kan visa 3280×2464 pixlar statiska bilder, den stöder 1080p30, 720p60 och 640×480p90 videor. Kameran är kompatibel med alla Raspberry Pi-kort, men om du vill använda den med Pi Zero behöver du en adapterkabel.



Den här kameran har alla funktioner i Raspberry Pi Camera V2-modulen, men den har inget IR-filter. Det betyder att det nästan är en idealisk kamera för fotografering i mörker.



Raspberry Pi Camera 1.3 är föregångaren till V2-modulen. Den är utrustad med en 5-megapixel OmniVision OV5647-sensor.

Jämförelse av synfält och bildkvalitet för kameror för Raspberry Pi

I detta test installeras alla kameror på ett avstånd av 1 meter från testbilden. Resultaten är följande:











Jämförelse av bildkvalitet och färgåtergivning av Raspberry Pi-kameror vid zoomning











Jämförelse av fotograferingskvalitet på natten

Resultaten nedan visar prestandan hos flera nattkompatibla kameror som tar samma testbild i mycket svagt ljus i mörker.







Slutsatser

Alla kameror presterar lite bättre än förväntat av så billiga moduler. Tyvärr finns det ingen allt-i-ett-kamera bland dem, och det finns en avvägning att göra eftersom det inte verkar finnas några vidvinkelkameror (fiskögon) med IR-klippfiltret borttaget. Så om du vill ha vidvinkel behöver du vanlig belysning, och omvänt är det osannolikt att du kan fotografera vidvinkel på natten.

Bland de intressanta tilläggen till Raspberry Pi är en videokameramodul utformad för att ansluta till CSI-bussen med en bandkabel.

Själva kamerakortet är litet. Den mäter endast 25x20x9 mm, väger endast 3 gram och levereras med en 15 cm bandkabel.


Kamerasensorn är på 5 MP, har en fast fokuslins och låter dig ta bilder med en upplösning på 2592x1944. Videostöd: 1080p 30 bilder per sekund (fps), 720p vid 60 fps och 640x480 upplösning vid upp till 90 fps. Fullständigt kamerastöd har lagts till i Raspbian OS, som behöver uppdateras.

Säg "chee-ee-iz" för Wheezy

Innan du går vidare behöver du en internetanslutning. Kameramodulen kräver att Raspian OS uppdateras till den senaste versionen så att nödvändiga drivrutiner och verktyg kan installeras.

Om detta inte är ett problem kan vi installera utrustningen.

Observera att kameran kan skadas av statisk laddning. Innan du tar bort den grå antistatiska påsen från kameran, se till att du har eliminerat din laddning genom att röra vid ett jordat föremål (som ett element eller ett vattenrör).

För kameran är den dedikerade bussen bandkontakten närmast Ethernet-porten. Den har en ZIF-design (zero insertion force): du behöver bara dra åt de två sidoklämmorna för att frigöra fästet.

Du måste placera introduktionstejpen från kanten av anslutningen nära Ethernet-porten till änden av Pi:s strömkontakt. Håll tejpen på plats och flytta isär flikarna för att låsa tejpen på plats. Observera på bilden att den flexibla kabeln är insatt med silverkontakter mot HDMI-porten:


Anslut allt till Raspberry Pi och starta från SD-kortet, välj att installera det vanliga Raspbian "Wheezy" OS och starta sedan om. Standardanvändarnamnet och lösenordet är "pi" respektive "hallon".

Först måste vi uppdatera OS, för att göra detta, öppna en terminal och ange följande två kommandon, tryck på returtangenten efter varje. De kan ta ganska många minuter att slutföra, så du kanske vill ta en kopp te.

sudo apt-get uppdatering

sudo apt-get upgrade -y

Nu måste vi använda Raspberry Pi-justeringsverktyget för att kontrollera GPU-minnestilldelningen eftersom vi behöver minst 128 som buffert för all videodata som är på väg att spolas in i minnet. Detta aktiverar faktiskt kamerabussen. Ange i terminalen:

sudo raspi-config

Välj först "Avancerat > Memory_split" - den ska redan vara inställd på 128, men om inte, gör ändringar. Kamerasystemet verkar fungera bra även vid 16, men 128 rekommenderas.

Slutligen finns det ett alternativ för att stödja kameran Aktivera/inaktivera kamera (slå på/av kameran), välj Aktivera (aktivera):



Välj Slutför (klar) och starta sedan om för att starta om:


Fotografera med Raspberry Pi

Det finns två kommandoradsverktyg för att komma åt kameramodulen - dessa är raspivid Och raspistill .

Kameran erbjuder ett bra urval av grafiska effekter och allmänna kamerainställningar som kan tillämpas live, både för foton och video. Du kan ändra lägena vitbalans, fokus, fototyp, exponering, ISO-nivå och EXIF-data.

Nedan finns exempel på kommandon från terminalen och vad de kommer att göra, standardinfångningstiden är 5 sekunder, använd alternativet -t för att ange en längre period i millisekunder, så -t 20000 betyder "i 20 sekunder".

Video

Visar fem sekunder i demoläge:raspivid -d

Visar 10 s video i demoläge: raspivid -o video.h264 -t 10000 -d

Visar 640 x 480 förhandsvisning: raspivid -p 0,0,640,480

Fånga 20 sekunders video i h264-format: raspivid -t 20000 -o video.h264

Använda bildalternativ i ett kommando raspivid

Syntax: RaspiVid[alternativ]

Hjälp: Information för hjälp
. Standard 1920
. Standard 1080
-b , - bithastighet: Den angivna bithastigheten. Använd bitar per sekund (till exempel skulle 10Mbits/s vara -b 10000000)
-o , - output: Utdatafil (för att skriva till stdout, använd "-o -")

-t , - timeout: Tid (i ms) för att ta bilder och stänga av. Om det inte anges, ställ in på 5 sekunder

-fps - bildhastighet: Ställ in bildhastigheten per sekund för inspelning
-e , - penc: Visa förhandsvisningsbilder *efter* kodning (visa komprimeringsartefakter)

<"x,y,w,h">

Foto

Ta en bild i JPEG-format: raspistill -о image.jpg

Gör ett foto 640x480: raspistill -o image.jpg -w 640 -h 480

Gör en JPEG av reducerad kvalitet: raspistill -o image.jpg -q 5

Använda bildalternativ i kommandot RaspiStill

Syntax: RaspiStill [alternativ]

Bildkommandoalternativ

Hjälp: Information för hjälp
-w , -width: Ställ in bildens bredd
-h , - height: Den angivna bildhöjden
-q , - kvalitet: Ställ in JPEG-kvalitet<0 до 100>
-r , - rå: Lägg till rå Bayer-data till JPEG-metadata
-o , - output: Utdatafil (för att skriva till stdout, använd "-o -"). Om det inte anges sparas inte filen
-v , - verbose: Skriv ut verbose medan du kör
-t , - timeout: Tid (i ms) för att ta ett foto och stänga av (om inte specificerat, ställ in på 5 sekunder)
-th , - thumb: Ställ in miniatyrbildsparametrar (x:y:kvalitet)
-d , - demo: Starta demoläge (slinga genom ett antal kameraparametrar, ingen bildtagning)
-e , - encoding: Kodning som används för utdatafilen (JPG, BMP, GIF, PNG)
-x , - exif: EXIF-tagg för att tillämpa på fångar (format som "nyckel=värde")
-tl , - timelapse: Intervallfotograferingsläge. Tar ett foto varje Fröken

Förhandsgranska kommandoalternativ

P, - förhandsgranskning: Förhandsgranskningsfönsteralternativ<"x,y,w,h">
-f , - helskärm: Fullskärmsläge
-n , - ingen förhandsgranskning: Visa inte förhandsgranskningsfönstret

Ytterligare kommandoalternativ för video och bild

Sh , - skärpa: Ställer in bildens skärpa (-100 till +100)
-co , - contrast: Ställ in bildens kontrast (-100 till +100)
-br , - ljusstyrka: Ställ in bildens ljusstyrka (0 till 100)
-sa , - saturation: Ställ in bildmättnaden (-100 till +100)
-ISO , -ISO: Specificerad ISO för inspelning
-vs , - vstab: Aktivera videostabilisering
-ev , -ev: Ställ in exponeringskompensation
-ex , - exponering: Ställ in exponeringsläge
-awb , -awb: Ställ in AWB-läge
-ifx , -imxfx: Ställ in bildeffekt
-cfx , - colfx: Ställ in färgeffekt (U:V)
-mm , - mätning: Ställ in exponeringsmätningsläge
-rot , - rotation: Rotera bilden (0-359)
-hf , - hflip: Horisontell vändning
-vf , - vflip: Vertikal flip

Standardmappen för att spara bilder är "/home/pi" så om du bara behöver spela upp den sparade videon är det lättare att starta upp i GUI med startx, öppna "Filhanteraren" och använda "LXTerminal" för kamerakommandon.

Hur man strömmar video från Raspberry Pi

För att titta på kanalen på Linux

Installera den nödvändiga programvaran genom att köra följande kommando från terminalen:

God dag!

På nyårsafton fick jag idén att bygga någon form av videoövervakning. Jag hade allt jag behövde till hands:

  • Raspberry Pi Model B enkelkortsdator
  • Webbkamera LOGITECH HD Webbkamera C270
Efter att ha läst, bestämde jag mig för att utveckla författarens idé lite.
Bekantskap
Så låt oss först bekanta oss med huvudkomponenten:
Raspberry Pi utseende:

Egenskaper:

  • Broadcom BCM2835 700MHz ARM1176JZFS-processor med FPU och Videocore 4 GPU
  • GPU ger Open GL ES 2.0, hårdvaruaccelererad OpenVG och 1080p30 H.264 högprofilsavkodning
  • GPU klarar av 1Gpixel/s, 1,5Gtexel/s eller 24GFLOPS med texturfiltrering och DMA-infrastruktur
  • 512 MB RAM
  • Startar från SD-kort, kör en version av operativsystemet Linux
  • 10/100 BaseT Ethernet-uttag
  • HDMI-videoutgång
  • 2 x USB 2.0-uttag
  • RCA-kompositvideoutgång
  • SD-kortuttag
  • Drivs från microUSB-uttag
  • 3,5 mm ljudutgång
  • Raspberry Pi HD videokamerakontakt
  • Storlek: 85,6 x 53,98 x 17 mm
pi@hall-pi ~ $ cat /proc/cpuinfo processor: 0 modellnamn: ARMv6-kompatibel processor rev 7 (v6l) BogoMIPS: 2.00 Funktioner: swp half thumb fastmult vfp edsp java tls CPU implementerare: 0x41 CPU-arkitektur: 7 CPU-variant : 0x0 CPU-del: 0xb76 CPU-revision: 7 Hårdvara: BCM2708 Revision: 000e Serie: 000000005a82c372

En lista över officiellt stödda distributioner finns. Jag valde Raspbian utan ett grafiskt skal.

Installationsprocessen är ganska enkel och behöver inte en detaljerad beskrivning, så jag kommer att lista de viktigaste fakta som är värda att uppmärksamma:

  1. Ställa in tidszonen
  2. Ställa in datornamnet
  3. Aktiverar SSH-åtkomst
  4. Systemuppdatering
När du har gjort alla nödvändiga inställningar kan du börja.
Förberedelse
Låt oss först installera alla nödvändiga paket:
sudo apt-get installera imagemagick libav-tools libjpeg8-dev subversion
Ladda sedan ner och montera mjpg-streamer:
sudo svn co https://svn.code.sf.net/p/mjpg-streamer/code/mjpg-streamer/ mjpg-streamer cd mjpg-streamer make
Därför att Vi kommer att lagra all data i molnet, vi kommer att ställa in arbetet med ett fjärrfilsystem via WebDAV:
sudo apt-get install davfs2 sudo mkdir /mnt/dav sudo mount -t davfs https://webdav.yandex.ru /mnt/dav -o uid=pi,gid=pi
För att inte ange ditt användarnamn och lösenord varje gång måste du lägga till dem i filen
/etc/davfs2/secrets
/mnt/dav användarlösenord
Arbetsprocessen
Låt oss lägga till kommandon till /etc/rc.local för att montera WebDAV och köra skriptet för att sända till nätverket:
montera -t davfs https://webdav.yandex.ru /mnt/dav -o uid=pi,gid=pi cd /home/pi/mjpg-streamer && ./mjpg_streamer -i "./input_uvc.so" -o "./output_http.så -w ./www"
Nu, genom att gå till http://:8080/ får vi tillgång till kameran. Allt som återstår är att vidarebefordra porten på routern så kommer du åt kameran utanför det lokala nätverket.
Skapar timelapse-video
Först och främst måste vi få en bild från kameran. Därför att den är redan upptagen (bilden sänds av webbservern), då kommer vi att använda möjligheten att ta emot den aktuella bilden från webbservern:
curl http://localhost:8080/?action=snapshot > out.jpg
Om vi ​​vill rita datumet för fotot på bilden kan vi använda kommandot konvertera
timestamp=`stat -c %y out.jpg` convert out.jpg -fill svart -fill vit -pointsize 15 -draw "text 5.15 "$(timestamp:0:19)"" out_.jpg
Full version av skriptet:
#!/bin/bash filnamn=$(perl -e "utskriftstid") mappnamn=$(datum --rfc-3339=datum) curl http://localhost:8080/?action=snapshot > $filnamn timestamp=` stat -c %y $filnamn` mkdir /mnt/dav/out/$foldername konvertera $filnamn -fill svart -fill vit -pointsize 15 -draw "text 5.15 "$(timestamp:0:19)"" /mnt /dav /ut/$mappnamn/$filnamn.jpg rm $filnamn
Videon sammanställs med kommandot avconv:
avconv -r 10 -i %06d.jpg -r 10 -vcodec mjpeg -qscale 1 out.avi
Full version av videosammansättningsskriptet:
#!/bin/bash filnamn=$(datum --rfc-3339=datum) i=0 för f i `ls -tr /mnt/dav/out/$filnamn/*.jpg 2>/dev/null` do newf=`printf %06d $i`.jpg eko $f "-->" $newf mv $f $newf i=$((i+1)) klar rmdir -R /mnt/dav/out/$filnamn/ avconv -r 10 -i %06d.jpg -r 10 -vcodec mjpeg -qscale 1 /mnt/dav/$filnamn.avi rm *.jpg
Nu återstår bara att registrera körningen av skript i Cron-schemaläggaren:
* * * * * pi bash /home/pi/cam.sh 59 23 * * * pi bash /home/pi/build.sh
Exempel video
Slutsats
Detta tillvägagångssätt hjälper till att eliminera behovet av att spendera mycket tid på att titta på videor och minskar också kostnaden för slutprodukten. Tack vare närvaron av ett fullfjädrat OS blir det möjligt att utöka funktionaliteten i rätt riktning.

Ett av de mest populära Raspberry Pi-projekten är att skapa en videoövervakningsserver med möjlighet att sända till Internet. Många använder dessa system som säkerhetssystem (inklusive mig själv), men det finns andra användningsområden också. Om du kommer på något intressant kan du skriva om det i kommentarerna. Ett projekt som detta skulle kosta runt £60-£70, men jag använde några extra komponenter som jag hade liggandes (och slutade med att det kostade ingenting). Jag använde Logitech Quickcam-webbkamera i mitt projekt.

Vad vi behöver:

  • Raspberry Pi
  • SD-kort 8 GB eller mer
  • Webbkamera
  • Internetåtkomst med Ethernet eller WiFi-adapter
  • USB-hubb med extern strömförsörjning
  • Tangentbord
  • Mus (för WiFi-inställningar)

Så låt oss börja med att installera den senaste versionen av Debian "Wheezy" på SD-kortet, vilket du kan. För att installera bilden på en Windows-dator kan du använda verktyget och för Mac-datorer, använd det här programmet. (Mer om att installera bilder)

När kopieringen av bilden är klar, sätt in SD-kortet i Raspberry Pi. Vi ansluter nätverkskabeln eller trådlös adapter, såväl som tangentbordet. Slutligen, glöm inte att ansluta USB-hubben och förse den med ström.

När du har slagit på Raspberry Pi, ställ in tidszonen enligt din plats med hjälp av verktyget raspi-config.

Observera att för att logga in på ett nyinstallerat system måste du använda ditt användarnamn pi med lösenord hallon.

Om du använder en WiFi-nätverksanslutning:

För att konfigurera en trådlös adapter och ansluta till WiFi med ett grafiskt gränssnitt måste du ange kommandot:

Efter detta kan du ställa in en trådlös anslutning. När du är klar klickar du med musen i det nedre vänstra hörnet av skärmen och väljer Logga ut för att återgå till kommandoraden.

Nu är det dags att uppdatera systemet. Skriv i kommandoraden:

Sudo apt-get update sudo apt-get upgrade

och vänta på att det är klart. Nu måste du installera Motion - programvara som sänder video med hjälp av den inbyggda webbservern. För att göra detta anger du:

Sudo apt-get installation motion

och vänta. När installationen är klar ansluter du webbkameran till en strömförsörjd USB-port på din hubb.

Nu måste du göra ändringar i Motion-programmets konfigurationsfil. För att göra detta, kör kommandot:

Sudo nano /etc/motion/motion.conf

En redigerare öppnas med en konfigurationsfil som du kan göra ändringar i. De viktigaste är dessa parametrar:

Daemon = AV (rätt till PÅ - den här parametern finns någonstans i början av filen) webcam_localhost = PÅ (rätt till AV - denna parameter finns någonstans i slutet av filen)

Tryck på Ctrl + X för att spara, sedan på 'y' för att bekräfta åtgärden och slutligen på Enter för att ange filnamnet.

Nu kan du starta Motion-servern:

Sudo service motion start

Vänta cirka 60 sekunder och ange sedan Raspberry Pi:s IP-adress i din webbläsare. Det bästa webbläsarvalet är den senaste versionen av Firefox.

Adressen ser ut så här: 192.168.X.X:8081

Se till att port 8081 är listad i slutet av raden för att se bilden. För att komma åt inställningar, använd port 8080 istället för 8081.

Port 8081 – video Port 8080 – webbgränssnitt för konfiguration

Observera att du endast kommer att kunna komma åt kameran inom ditt lokala nätverk. Du kommer inte att kunna ansluta till din hemmavideoserver från en annan plats. För att ansluta utifrån, ställ in omdirigering av inkommande anslutning på din hemrouter.

Grattis! Du har precis ställt in din egen CCTV-server på din Raspberry Pi! Jag önskar dig framgång och dela gärna denna artikel!

Obs: om videoservern visar en grå rektangel istället för en bild, ange kommandot ls /dev/video i terminalen för att bestämma namnet på videoenheten. Som standard är /etc/motion/motion.conf inställt på video0 . Om din webbkamera har ett annat namn, korrigera konfigurationsfilen och starta om Motion.

Uppmärksamhet! Du upprepar allt som beskrivs i den här artikeln på egen risk och risk! Jag är inte ansvarig för några konsekvenser. Den här artikeln är endast en guide.