Priključitev analogne kamere na raspberry pi. Strežnik za videonadzor z uporabo Raspberry Pi. Ustvarjanje video posnetka s časovnim zamikom

Oglejmo si metode za pravilno povezavo kamere z Raspberry Pi in delo z njo prek terminalskega okna ter uporabo programskega jezika Python.
Sorodni materiali:
Pri povezovanju kamere z Raspberryjem si zapomnite naslednje:
  • Kamera se boji statične elektrike, zato je priporočljivo, da se je med delovanjem dotikate skozi antistatični material
  • kamera porabi 250 mA - pri uporabi povprečnega napajalnika Malina lahko priklop kamere povzroči pomanjkanje energije, ko kamera aktivno deluje
  • v kameri ni mikrofona
  • zgornji del kamere se nahaja na nasprotni strani od izhoda kabla, vendar obstaja poseben ukaz za navpični odsev slike - več o tem spodaj.

Povezava

Priporočljivo je, da kamero priključite na izklopljen Raspberry. Z ukazom lahko hitro izklopite Raspberry
sudo zaustavi zdaj
Daisy chain konektor CSI se nahaja poleg HDMI: Prednost priklopa kamere preko tega konektorja, za razliko od USB, je, da razbremeni procesor pri prenosu podatkov preko CSI vmesnika.
Za lažjo pritrditev kamere obstaja že pripravljene rešitve, na primer - Akrilno držalo.
Vmesnik kamere mora biti aktiviran v nastavitvah Raspberry:
Po aktiviranju kamere (če je potrebno), je treba Malino znova zagnati: sudo reboot now
Za delo s kamero ima Raspbian že vnaprej nameščene potrebne pripomočke in gonilnike. Posodobimo pakete za uporabo najnovejših različic: sudo apt-get update -y sudo apt-get dist-upgrade -y Če je vse opravljeno pravilno, poskusimo pridobiti testni okvir iz fotoaparata - ustvarite mapo za fotografije, pojdite vanj in izvedite ukaz za zajem slike: mkdir ~/pi_cam/ cd ~/pi_cam/ raspistill -v -o test.jpg
V primeru okvare preverite prejšnje korake ali pozvonite kontakte konektorja na kameri in na Malini.
V OS Raspbian so prednameščeni naslednji paketi za delo s kamero:
  • raspivid, raspvidyuv - zajem videa
  • raspistill, raspiyuv - fotografiranje
Popoln vodnik po navedenih pripomočkih je na voljo na angleški jezik je vklopljen izklopljen. Spletno mesto Raspberry Pi
Vsi pripomočki se zaženejo s terminala in so zelo enostavni za uporabo.
Paketi z imeni, ki se končajo na "yuv", ne uporabljajo komponente kodiranja - shranijo "surove" neobdelane informacije, ki jih prejme senzor kamere. Oglejmo si delo z vsakim paketom, vendar se bomo najprej seznanili s seznamom parametrov kamere, ki so skupni vsem paketom, nato pa si bomo ogledali posebne argumente in konkretni primeri njihove aplikacije.

Skupni parametri

Poglejmo vrednosti parametrov. Omeniti velja, da:
  • Če pri klicu pripomočka argument ni podan, se uporabi njegova privzeta vrednost.
  • ČE JE STOLPEC »OBSEG DOVOLJENIH VREDNOSTI« PRAZEN, potem ni treba posredovati nobenih dodatnih vrednosti - dovolj je samo posredovanje samega argumenta.
  • Predogled je prikazan samo na fizičnem monitorju, ki je povezan z Raspberry. Če do Raspberryja dostopate prek oddaljenega namizja (VNC), predogled ne bo prikazan pri nobeni nastavitvi, saj se slika predogleda pošlje neposredno na monitor poleg ostalih informacij.
  • Podobno kot gledanje videoposnetkov prek namizja
Prepir
Opis
Veljaven obseg
Privzeta vrednost
-str
Možnosti okna za predogled
širina, višina, x-koordinata, y-koordinata
-f
Celozaslonski predogled
št
-n
Brez predogleda
-op
Preglednost okna predogleda
0...255
255
-sh
Ostrina
-100...100
0
-co
Kontrast
-100...100
0
-br
Osvetlitev
0...100
50
-sa
Nasičenost
-100...100
0
-ISO
Občutljivost senzorja kamere
-100...100
0
-vs
Stabilizacija videa
(samo video)
št
-ev
Kompenzacija osvetlitve
-10...10
0
-ex
Razstava
  • noč
  • nočni predogled
  • osvetlitev ozadja: osvetlitev ozadja za motivom
  • reflektor: osvetlitev reflektorja
  • šport: objekt v gibanju
  • sneg: zasnežena pokrajina
  • plaža: pokrajina plaže
  • zelo dolgo: dolga izpostavljenost
  • fixedfps: omeji FPS na fiksno vrednost
  • anti-tresenje: protitresenje
  • ognjemet: pokrajina z ognjemetom
avto
-awb
Ravnovesje beline
  • sonce: 5000K...6500K - sončno
  • oblak:6500K ... 12000K oblačno
  • senca: v senci
  • volfram: 2500K ... 3500K volfram
  • fluorescenčna: 2500K...4500K
  • žarnica: razbeljena kovina
  • blisk: z bliskavico
  • obzorje
avto
-ifx
Razni učinki
nič, negativ, solarizacija, posterizacija, bela tabla, tabla, skica, odpravljanje hrupa, relief, oljna barva, šrafura, gpen, pastel, akvarel, film, zamegljenost, nasičenost, zamenjava barv, izpiranje, barvna točka, barvno ravnovesje, risanka
nič
-cfx
Barvno ravnovesje
0...255:0...255
128:128
-mm
Merjenje osvetlitve
  • povprečje: povprečje
  • točka: točka
  • osvetljeno od zadaj: branje osvetljene slike od zadaj
  • matrix: matrično merjenje
povprečje
-gnitje
Obrat
0 ... 359
0
-hf
Horizontalni odboj
št
-vf
Vertikalni odboj
št
-roi
ROI senzorja
koordinate iz zgornjega levega kota ter širino in višino območja
0 … 1,0 … 1,0 … 1,0 … 1
0,0,1,1
-ss
Hitrost zaslonke
v mikrosekundah
6000000
-drc
Stiskanje dinamičnega razpona
izklopljeno
-st
prikaži statistiko
št
Nato bomo ločeno obravnavali pripomočke.


raspistill - zajem fotografij

Ta pripomoček ustvari kodirano stisnjeno sliko in za izvedbo tega dejanja je pri izvajanju raspistill posredovanih kar nekaj parametrov kot argumentov.

Argumenti

Prepir
Opis
Veljaven obseg
Privzeta vrednost
-w
Premer
0...maks
maks
-h
Višina
0...maks
maks
-q
Kakovost
0...100
75
-o
Ime datoteke
pot do datoteke
-
-v
Izhod na terminal
Informacije o postopku zajemanja
št
-t
Zamuda pred ukrepanjem
v milisekundah
0
-tl
Časovni zamik
primer: -tl 2000 -o slika%04d.jpg
2000 - interval
%04d - 4-mestni številski vzorec
-
-e
Kodiranje v format
jpg, bmp, gif in png
jpg
-x
Dodajanje oznak EXIF ​​​​
do 32 oznak
-
-r
Shranjevanje Bayerjeve matrike v meta podatke kodirane slike
-

Primeri

Oglejmo si konkretne primere uporabe raspistilla:
Po 2 sekundah zajemite standardno sliko in jo shranite v datoteko image.jpg (v mapo, v kateri se trenutno nahajate). Ločljivost bo standardna (največja) raspistill -t 2000 -o image.jpg Enako, vendar v ločljivosti 640x480 raspistill -o image.jpg -w 640 -h 480 Zajemite sliko z zmanjšano kakovostjo za 5 % in shranite v datoteko image.jpg (v mapo, v kateri se trenutno nahajate). S to kakovostjo bo velikost slike znatno manjša raspistill -o image.jpg -q 5 Pridobitev slike, kodirane v formatu PNG, in njeno shranjevanje v datoteko image.png raspistill -o image.png –e png Pridobivanje standardne slike z dve vdelani oznaki EXIF ​​​​: Artist - Boris, GPS nadmorska višina - 123,5 m raspistill -o image.jpg -x IFD0.Artist=Boris -x GPS.GPSAltitude=1235/10 Ustvarjanje niza časovnih zamikov slik, ki bodo zajete v intervalih po 10 sekund v 10 minutah (600.000 ms) in se imenujejo image_num_001_today.jpg, image_num_002_today.jpg itd. Končna slika bo imenovana latest.jpg raspistill -t 600000 -tl 10000 -o image_num_%03d_today.jpg -l latest.jpg Zajemite slike, ko pritisnete Enter, datoteke bodo shranjene ena ob drugi in imenovane my_pics01.jpg my_pics02. jpg itd. raspistill -t 0 -k -o moje_slike%02d.jpg

raspiyuv

Zagonski argumenti so popolnoma enaki tistim za raspistill (glejte zgoraj), od katerih le naslednji NISO NA VOLJO:
-q - kakovost
-e - določa ciljni format slike
-x - Dodajte oznake EXIF ​​​​
-r - shrani Bayerjevo matriko v meta podatke kodirane slike
Vendar pa obstaja LASTNI argument
-rgb - shranjevanje "surovih" neobdelanih podatkov v formatu RGB888 (8 bitov/kanal)

raspivid - zajem videa

Parametri zagona

Prepir
Opis
Veljaven obseg
Privzeta vrednost
-w
Premer
0...maks
1920
-h
Višina
0...maks
1080
-b
Bitna hitrost videa
število bitov na sekundo.
10Mbit/s je nastavljeno -b 10000000
-o
Ime datoteke
pot do datoteke
-
-v
Izhod na terminal
Informacije o postopku zajemanja
-t
Zamuda pred ukrepanjem
v milisekundah
0
-fps
Framerate
Število sličic na sekundo 2...30
-k
Začnite/ustavite snemanje s pritiskom na Enter
postopek se prekine s pritiskom na “X”
-sg
Shranjevanje video segmentov s fiksnim trajanjem v ločene datoteke
Nastavite trajanje enega segmenta in masko datoteke
-sg 3000 -o video%04d.h264
-wr
Omejitev največjega števila datotek med segmentacijo
Uporablja se z argumentom -sg in v bistvu izvaja ciklično prepisovanje kot pri DVR-jih
Privzeta ločljivost je 1080p (1920x1080)
Poglejmo konkretne primere:
Snemanje 5-sekundnega standardnega videa (1920x1080, 30 sličic/s) in shranjevanje v datoteko video.h264 raspivid -t 5000 -o video.h264 Snemanje 5-sekundnega videa z ločljivostjo 1080p in specifično bitno hitrostjo 3,5 Mbits /s in shranjevanje v datoteko video.h264 raspivid -t 5000 -o video.h264 -b 3500000 Posnemite 5 sekund videa standardne ločljivosti pri hitrosti sličic 5fps in shranite v datoteko video.h264 raspivid -t 5000 -o video.h264 -f 5 Če je monitor priključen na Raspberry prek HDMI, si lahko posneti video ogledate s predvajalnikom omxplayer: sudo apt-get install omxplayer #če predvajalnik še ni nameščen omxplayer video.h264 Ogled videa ni na voljo prek VNC

Kode napak

  • 0 - uspešen zaključek
  • 64 - poslan neveljaven ukaz (sintaksna napaka)
  • 70 - napaka v pripomočku ali pri komunikaciji s kamero
  • 130 - izvajanje je prekinil uporabnik (kombinacija tipk Ctrl + C)

Knjižnica PiCamera

To je knjižnica za programski jezik Python, ki vam omogoča poenostavitev in avtomatizacijo dela s kamero Raspberry
Celoten opis knjižnice v angleškem jeziku
V sodobnih različicah distribucije Raspbian je knjižnica že vnaprej nameščena, to lahko preverite prek konzole Python python3 import picamera. V primeru okvare morate zapustiti konzolo z vnosom ukaza exit() ali uporabo Ctrl + Kombinacija tipk D in namestite knjižnico z ukazom sudo apt-get install python3-picamera Delo s kamero iz kode Python je podobno terminalskim ukazom, obravnavanim zgoraj. Standardno sliko iz kamere lahko preprosto dobite neposredno v konzoli Python: import picamera #import knjižnice fotoaparata camera = picamera.PiCamera() #create a camera object camera.capture("image.jpg") #call the camera image capture method camera .close() #close the camera session Slika bo shranjena v datoteko image.jpg v trenutni mapi.

Pred dvema letoma, ko sem se prvič začel ukvarjati z multikopterjem, sem moral narediti majhnega. Ker naj bi bil kvadrokopter popolnoma avtonomen, je bilo vse, kar se je zahtevalo od tega daljinskega upravljalnika, nadzor drona med testiranjem in nastavitvijo.

Načeloma se je daljinski upravljalnik zelo uspešno spopadel z vsemi nalogami, ki so mu bile dodeljene . Vendar so bile tudi resne pomanjkljivosti.

  1. Baterije niso pasale v ohišje, zato sem jih moral na ohišje prilepiti z električnim trakom :)
  2. Parametre smo nastavljali s štirimi potenciometri, ki so se izkazali za zelo občutljive na temperaturo. Nastavite nekaj vrednosti v zaprtih prostorih, greste ven - in že so drugačne, odplavale so.
  3. U Arduino Nano, ki sem ga uporabil v daljinskem upravljalniku, je samo 8 analognih vhodov. Štiri so bili zasedeni s potenciometri za uglaševanje. En potenciometer je služil kot plin. Na krmilno palico sta bila povezana dva vhoda. Samo en izhod je ostal prost in bilo je treba konfigurirati veliko več parametrov.
  4. Edina igralna palica sploh ni bila pilotska. Tudi krmiljenje plina s potenciometrom je bilo precej frustrirajoče.
  5. In daljinski upravljalnik ni oddajal nobenih zvokov, kar je včasih zelo koristno.

Da bi odpravili vse te pomanjkljivosti, sem se odločil za korenito prenovo daljinskega upravljalnika. Tako strojni kot programski del. Tole sem hotel narediti:

  • Naredite velik kovček, da boste lahko vanj stlačili vse, kar želite zdaj (vključno z baterijami), kasneje pa kar želite.
  • Nekako reši problem z nastavitvami, ne pa s povečevanjem števila potenciometrov. Poleg tega dodajte možnost shranjevanja parametrov v daljinski upravljalnik.
  • Naredite dve igralni palici, kot na običajnih pilotskih konzolah. No, postavite igralne palice sami pravoslavni.

Novogradnja

Ideja je izjemno preprosta in učinkovita. Iz pleksi stekla ali drugega tankega materiala izrežemo dve plošči in ju povežemo z nosilci. Celotna vsebina kovčka je pritrjena na zgornjo ali spodnjo ploščo.

Kontrole in meniji

Če želite nadzorovati kup parametrov, morate na daljinski upravljalnik postaviti kup potenciometrov in dodati ADC ali pa vse nastavitve opraviti prek menija. Kot sem že rekel, nastavljanje s potenciometri ni vedno dobra ideja, vendar se temu tudi ne smete odpovedati. Zato je bilo odločeno, da pustimo štiri potenciometre v daljinskem upravljalniku in dodamo celoten meni.

Za krmarjenje po meniju in spreminjanje parametrov se običajno uporabljajo gumbi. Levo, desno, gor, dol. Toda namesto gumbov sem želel uporabiti kodirnik. To idejo sem dobil od krmilnika 3D tiskalnika.


Seveda se je zaradi dodajanja menija koda daljinskega upravljalnika večkrat razširila. Za začetek sem dodal samo tri elemente menija: "Telemetrija", "Parametri" in "Shranjevanje parametrov". Prvo okno prikazuje do osem različnih indikatorjev. Zaenkrat uporabljam samo tri: baterijsko napajanje, kompas in nadmorsko višino.

V drugem oknu je na voljo šest parametrov: koeficienti PID regulatorja za osi X/Y, Z in korekcijski koti merilnika pospeška.

Tretji element vam omogoča shranjevanje parametrov v EEPROM.

Igralne palice

Nisem dolgo razmišljal o izbiri pilotskih krmilnih palic. Tako se je zgodilo, da sem dobil prvo igralno palico Turnigy 9XR od kolega v poslu s kvadrokopterji - Aleksandra Vasiljeva, lastnika znane spletne strani alex-exe.ru. Drugega sem naročil neposredno pri Hobbykingu.


Prva igralna palica je bila vzmetena v obeh koordinatah – za nadzor odklona in naklona. Drugi, ki sem ga vzel, je bil isti, da sem ga nato lahko spremenil v igralno palico za nadzor oprijema in vrtenja.

Prehrana

V starem daljincu sem uporabil preprost regulator napetosti LM7805, ki se je napajal s kupom 8 AA baterij. Strašno neučinkovita možnost, pri kateri je bilo za ogrevanje regulatorja porabljenih 7 voltov. 8 baterij - ker je bil le tak predal pri roki, in LM7805 - ker se mi je takrat ta možnost zdela najpreprostejša in, kar je najpomembneje, najhitrejša.

Zdaj sem se odločil ravnati pametneje in namestil dokaj učinkovit regulator na LM2596S. In namesto 8 AA baterij sem namestil predal za dve LiIon 18650 bateriji.


Rezultat

Če vse skupaj sestavimo, smo dobili to napravo. Pogled od znotraj.


Ampak z zaprtim pokrovom.


Manjka pokrovček na enem potenciometru in pokrovčki na igralnih palicah.

Za konec še video o tem, kako se nastavitve konfigurirajo prek menija.


Spodnja črta

Daljinec je fizično sestavljen. Zdaj delam na dokončanju kode za daljinski upravljalnik in kvadrokopter, da bi jima vrnila nekdanje močno prijateljstvo.

Pri nastavitvi daljinskega upravljalnika so bile ugotovljene pomanjkljivosti. Prvič, spodnji koti daljinskega upravljalnika so v vaših rokah: (Verjetno bom ploščice malo preoblikoval, zgladil vogale. Drugič, tudi zaslon 16x4 ni dovolj za lep prikaz telemetrije - moram skrajšati imena parametrov na dve črki V naslednji različici naprave bom namestil pikčasti zaslon ali takoj TFT matriko.


Računalnik z eno ploščo Raspberry Pi vam omogoča ustvarjanje res zanimivih in uporabnih stvari: od multimedijskih centrov do sistemov za avtomatizacijo doma. S priklopom različnih modulov na Raspberry Pi lahko znatno razširite funkcionalnost tega miniračunalnika.



Eden od teh dodatnih vtičnikov je kamera, ki omogoča fotografiranje ali snemanje videoposnetkov. Danes je na trgu kar nekaj kamer za Raspberry Pi in v tem članku bomo podali kratek pregled le-teh.


Poglejmo si šest najbolj priljubljenih kamer: ZeroCam Noir, ZeroCam FishEye, Raspberry Pi Compatible Fisheye Camera, Raspberry Pi Camera V2, Raspberry Pi Camera V2 Noir in Raspberry Pi Camera 1.3.



ZeroCam Noir je modul kamere za Raspberry Pi Zero ali Raspberry Pi Zero W, tako da, če ga želite uporabiti v Raspberry Pi 3 ali 2, boste morali uporabiti adapterski kabel. Ta fotoaparat nima IR filtra na objektivu, zaradi česar je idealen za fotografiranje pri šibki svetlobi. Tukaj je nekaj njegovih glavnih značilnosti: senzor s 5 milijoni slikovnih pik, 2592 × 1944 slikovnih pik, 1080p pri 30 FPS (ali 60 FPS pri 720p, 90 FPS pri 480p), goriščna razdalja 3,60 mm, 53,50 stopinj vodoravno, 41,41 stopinj navpično, pribl. dimenzije plošče s kamero: 60 x 11,4 x 5,1 mm.



To je različica ZeroCam z ribjim očesom, kar pomeni, da ima širokokotno sliko. Ta kamera je narejena tudi za Pi Zero ali Pi Zero W, tako da za uporabo z drugo ploščo Pi potrebujete adapterski kabel.



To je kamera ribje oko, združljiva z Raspberry Pi, ki jo je mogoče zlahka najti na različnih spletnih trgovalnih platformah, kot so AliExpress, TaoBao, eBay. Odlikuje ga širokokotni pogled 175º. Temelji na senzorju Omnivision 5647 z ločljivostjo 5 milijonov pik (2592 x 1944 pik).



Ta kamera je opremljena s slikovnim senzorjem Sony IMX219 z 8 milijoni slikovnih pik s fiksno goriščno lečo, ki lahko prikazuje 3280×2464 slikovnih pik statične slike, podpira videoposnetke 1080p30, 720p60 in 640×480p90. Kamera je združljiva z vsemi ploščami Raspberry Pi, če pa jo želite uporabljati s Pi Zero, potrebujete adapterski kabel.



Ta kamera ima vse funkcije modula Raspberry Pi Camera V2, vendar nima IR filtra. To pomeni, da je skoraj idealna kamera za fotografiranje v temi.



Raspberry Pi Camera 1.3 je predhodnik modula V2. Opremljen je s senzorjem OmniVision OV5647 s 5 milijoni slikovnih pik.

Primerjava vidnega polja in kakovosti slike kamer za Raspberry Pi

Pri tem testu so vse kamere nameščene na razdalji 1 metra od testne slike. Rezultati so naslednji:











Primerjava kakovosti slike in barvne reprodukcije kamer Raspberry Pi pri povečavi











Primerjava kakovosti fotografiranja ponoči

Spodnji rezultati prikazujejo več kamer, pripravljenih za nočno fotografiranje, ki počnejo isto stvar: testna slika pri zelo šibki svetlobi v temi.







zaključki

Vse kamere delujejo nekoliko bolje, kot se pričakuje od tako poceni modulov. Na žalost med njimi ni kamere vse-v-enem in obstaja kompromis, saj se zdi, da ni nobene širokokotne (ribje oko) kamere z odstranjenim IR-filtrom. Torej, če želite širok kot, boste potrebovali redno osvetlitev, in obratno, ponoči verjetno ne boste dobili širokokotnih posnetkov.

Dober dan!

Na silvestrovo se mi je porodila ideja, da bi zgradil nekakšen video nadzor. Vse kar sem potreboval sem imel pri roki:

  • Računalnik z eno ploščo Raspberry Pi Model B
  • Spletna kamera LOGITECH HD Webcam C270
Po branju sem se odločil malo razviti avtorjevo idejo.
poznanstvo
Torej, najprej se seznanimo z glavno "komponento":
Videz Raspberry Pi:

Značilnosti:

  • Broadcom BCM2835 700MHz ARM1176JZFS procesor s FPU in Videocore 4 GPE
  • GPE zagotavlja Open GL ES 2.0, strojno pospešen OpenVG in 1080p30 H.264 dekodiranje visokega profila
  • GPE zmore 1Gpixel/s, 1,5Gtexel/s ali 24GFLOPS s filtriranjem tekstur in infrastrukturo DMA
  • 512 MB RAM
  • Zažene se s kartice SD in uporablja različico operacijskega sistema Linux
  • 10/100 BaseT Ethernet vtičnica
  • HDMI video izhodna vtičnica
  • 2 x USB 2.0 vtičnice
  • RCA kompozitna video izhodna vtičnica
  • vtičnica za kartico SD
  • Napaja se iz vtičnice microUSB
  • 3,5 mm avdio izhodni priključek
  • Priključek za video kamero Raspberry Pi HD
  • Velikost: 85,6 x 53,98 x 17 mm"
pi@hall-pi ~ $ cat /proc/cpuinfo procesor: 0 ime modela: procesor, združljiv z ARMv6, rev 7 (v6l) BogoMIPS: 2.00 Lastnosti: swp half thumb fastmult vfp edsp java tls CPU implementer: 0x41 CPE arhitektura: 7 CPE različica : 0x0 CPU del: 0xb76 CPE revizija: 7 Strojna oprema: BCM2708 Revizija: 000e Serijska številka: 000000005a82c372

Seznam uradno podprtih distribucij lahko najdete. Odločil sem se za Raspbian brez grafične lupine.

Postopek namestitve je precej preprost in ne zahteva natančen opis, zato bom naštel glavna dejstva, na katera je vredno biti pozoren:

  1. Nastavitev časovnega pasu
  2. Nastavitev imena računalnika
  3. Omogočanje dostopa SSH
  4. Posodobitev sistema
Ko opravite vse potrebne nastavitve, lahko začnete.
Priprava
Najprej namestimo vse potrebne pakete:
sudo apt-get namestite imagemagick libav-tools libjpeg8-dev subversion
Nato prenesite in sestavite mjpg-streamer:
sudo svn co https://svn.code.sf.net/p/mjpg-streamer/code/mjpg-streamer/ mjpg-streamer cd mjpg-streamer make
Ker Vse podatke bomo shranjevali v oblaku, vzpostavili bomo delo na daljavo datotečni sistem prek WebDAV:
sudo apt-get namestite davfs2 sudo mkdir /mnt/dav sudo mount -t davfs https://webdav.yandex.ru /mnt/dav -o uid=pi,gid=pi
Da ne boste vsakič vpisovali svojega uporabniškega imena in gesla, ju morate dodati v datoteko
/etc/davfs2/secrets
/mnt/dav uporabniško geslo
Delovni proces
Dodajmo ukaze v /etc/rc.local za namestitev WebDAV in zagon skripta za oddajanje v omrežje:
mount -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.so -w ./www"
Zdaj, ko gremo na http://:8080/, bomo dobili dostop do kamere. Ostane le še posredovanje vrat na usmerjevalniku in lahko dostopate do kamere izven lokalnega omrežja.
Ustvarjanje video posnetka s časovnim zamikom
Najprej moramo pridobiti sliko iz kamere. Ker je že zasedena (sliko oddaja spletni strežnik), potem bomo izkoristili možnost prejema trenutne slike s spletnega strežnika:
curl http://localhost:8080/?action=snapshot > out.jpg
Če želimo na sliko narisati datum fotografije, potem lahko uporabimo ukaz convert
timestamp=`stat -c %y out.jpg` convert out.jpg -fill black -fill white -pointsize 15 -draw "text 5.15 "$(timestamp:0:19)"" out_.jpg
Celotna različica scenarij:
#!/bin/bash filename=$(perl -e "print time") foldername=$(date --rfc-3339=date) curl http://localhost:8080/?action=snapshot > $filename timestamp=` stat -c %y $filename` mkdir /mnt/dav/out/$foldername convert $filename -fill black -fill white -pointsize 15 -draw "text 5.15 "$(timestamp:0:19)"" /mnt /dav /out/$imemape/$imedatoteke.jpg rm $imedatoteke
Video se sestavi z ukazom avconv:
avconv -r 10 -i %06d.jpg -r 10 -vcodec mjpeg -qscale 1 out.avi
Polna različica skripta za sestavljanje videa:
#!/bin/bash ime datoteke=$(datum --rfc-3339=datum) i=0 za f v `ls -tr /mnt/dav/out/$filename/*.jpg 2>/dev/null` do newf=`printf %06d $i`.jpg echo $f "-->" $newf mv $f $newf i=$((i+1)) done rmdir -R /mnt/dav/out/$filename/ avconv -r 10 -i %06d.jpg -r 10 -vcodec mjpeg -qscale 1 /mnt/dav/$filename.avi rm *.jpg
Zdaj ostane le še registracija izvajanja skriptov v razporejevalniku Cron:
* * * * * pi bash /home/pi/cam.sh 59 23 * * * pi bash /home/pi/build.sh
Primer videa
Zaključek
Ta pristop pomaga odpraviti potrebo po porabi veliko časa za gledanje videoposnetkov in tudi zmanjša stroške končnega izdelka. Zahvaljujoč prisotnosti polnega OS je mogoče razširiti funkcionalnost v pravo smer.

Ker Ta računalnik ima zadostno zmogljivost za sprejemanje, shranjevanje, obdelavo in prenos videa iz kamere (na primer iz kamere USB) prek wifi v druge naprave. Za Raspberry PI obstajajo posebne kamere, ki se priključijo na poseben priključek na njem, in kamere USB, ki se povežejo s katerim koli vrata USB na Raspberry PI. Ker USB kamere so praviloma veliko cenejše od posebnih (čeprav slabše), zato bomo v nadaljevanju razmislili o uporabi USB kamere z Raspberry PI. Obstaja veliko programov za zajem videa s kamere USB, lahko pa tudi napišete svojega, vendar si zaradi enostavnosti najprej poglejmo zajem in prenos videa s programom za gibanje. Če želite namestiti program za gibanje na Raspberry PI, se morate z njim najprej povezati prek programa Putty (ali katerega koli drugega terminalskega programa z možnostjo komunikacije prek SSH) (za informacije o tem, kako to storite, glejte prejšnji članek “Raspberry PI 3 nastavitev in upravljanje GPIO prek WIFI”) . Po povezavi z Raspberry PI morate posodobiti sistem z ukazi

Sudo apt-get posodobitev

Sudo apt-get nadgradnja

Po uspešni posodobitvi sistema morate namestiti program za gibanje z ukazom

Sudo apt-get install motion

Med namestitvijo se lahko pojavi vprašanje "Ali želite nadaljevati?" po kateri boste morali vnesti črko "Y". Po namestitvi programa za gibanje boste morali narediti nekaj sprememb v konfiguracijskih datotekah. Odprite datoteko motion.conf v urejevalniku nano z ukazom

Sudo nano /etc/motion/motion.conf

Potem

Zamenjan z

Nato bomo našli druge vrstice za spreminjanje, za to pritisnite kombinacijo tipk CTRL+W, vnesite »stream_localhost« in pritisnite enter, po tem je treba najti zahtevano vrstico, če je ne najdete, potem spremenljivko »stream_localhost ” se imenuje drugače, na primer “webcam_localhost” ali nekaj podobnega. Ko je vrstica s to spremenljivko najdena, morate

Stream_localhost vklopljen

zamenjan z

Stream_maxrate 1

In zamenjajte z

Stream_maxrate 100

Zamenjan z

Potem

Minimalni_čas_okvira 0

Zamenjan z

Minimalni_čas_okvira 1

Slednje je narejeno tako, da se okvirji oddajajo enkrat na sekundo - to ne izgleda zelo dobro, vendar video ne bo izginil, če se slika nenadoma spremeni. Namen posamezne spremenljivke si lahko preberete v komentarjih.
Zdaj shranite spremembe tako, da pritisnete CTRL+O in enter, nato pritisnete CTRL+X in zapustite urejevalnik nano. Zdaj pa uredimo drugo datoteko, za to vnesemo ukaz

Sudo nano /etc/default/motion

In zamenjajte vrstico

Start_motion_daemon=št

Start_motion_daemon=da

Nato shranite spremembe tako, da pritisnete CTRL+O in enter ter nato pritisnete CTRL+X in zapustite urejevalnik nano. Sedaj lahko z ukazom začnete prenos videa (USB kamera mora biti priključena na enega od vrat).

Zagon gibanja storitve Sudo

Ustavi z ukazom

Zaustavitev gibanja storitve Sudo

Za ogled videoposnetka morate odpreti brskalnik in v naslovno vrstico vnesti naslov IP Raspberry PI, nato vstaviti dvopičje in 8081 (naslov IP Raspberry PI: 8081) in pritisniti enter, nato video s kamere USB bi se moral prikazati v brskalniku. Kako vse to poteka, rezultat in še kaj si lahko ogledate v videu:

Všečkaj to na preprost način Video lahko dobite iz kamere USB, povezane z Raspberry PI. Če gre za Raspberry PI 3 z vgrajenim wifijem in se napaja preko powerbanka (ali kakšnega drugega prenosnega vira elektrike) (npr. tega ali cenejšega, čeprav ni priporočljivo uporabljati poceni, Raspberry PI potrebuje običajen vir energije, da izkoristi vse svoje zmogljivosti, prav tako je zelo priporočljivo namestiti hladilnik za procesor in druga mikrovezja, ki se razvijejo med delovanjem Raspberryja, idealno bi bilo, da bi bil hladilnik bakren in prevlečen s posebno črno barvo), nato pa na podlagi vseh to lahko naredite nekakšen video nadzorni sistem, video kamero ali kaj podobnega.




Vrh