Contacte

Transmitem videoclipuri de la o cameră web conectată la un Raspberry Pi. Conectarea camerei la Raspberry Pi Raspberry pi control ip ptz camera

O zi buna!

De Revelion, mi-a venit ideea să construiesc un fel de supraveghere video. Aveam tot ce aveam nevoie la îndemână:

  • Computer Raspberry Pi Model B cu o singură placă
  • Cameră web LOGITECH HD Webcam C270
După ce am citit, am decis să dezvolt puțin ideea autorului.
Cunoștință
Deci, mai întâi, să ne familiarizăm cu „componenta” principală:
Aspectul Raspberry Pi:

Caracteristici:

  • Procesor Broadcom BCM2835 700MHz ARM1176JZFS cu FPU și GPU Videocore 4
  • GPU oferă Open GL ES 2.0, OpenVG accelerat hardware și decodare 1080p30 H.264 de profil înalt
  • GPU este capabil de 1 Gpixel/s, 1,5 Gtexel/s sau 24 GFLOPS cu filtrare de textură și infrastructură DMA
  • 512 MB RAM
  • Pornește de pe cardul SD, rulând o versiune a sistemului de operare Linux
  • Priză Ethernet 10/100 BaseT
  • Mufa de ieșire video HDMI
  • 2 x mufe USB 2.0
  • Mufa de ieșire video compozit RCA
  • Soclu pentru card SD
  • Alimentat de la mufa microUSB
  • Mufă de ieșire audio de 3,5 mm
  • Conector pentru camera video Raspberry Pi HD
  • Dimensiune: 85,6 x 53,98 x 17 mm
pi@hall-pi ~ $ cat /proc/cpuinfo procesor: 0 nume model: procesor compatibil ARMv6 rev 7 (v6l) BogoMIPS: 2.00 Caracteristici: swp half thumb fastmult vfp edsp java tls CPU implementer: 0x41 arhitectura CPU: 7 varianta CPU : 0x0 Partea CPU: 0xb76 Revizia procesorului: 7 Hardware: BCM2708 Revizie: 000e Serial: 000000005a82c372

O listă a distribuțiilor acceptate oficial poate fi găsită. Am ales Raspbian fără un shell grafic.

Procesul de instalare este destul de simplu și nu necesită o descriere detaliată, așa că voi enumera principalele fapte cărora merită să fiți atenți:

  1. Setarea fusului orar
  2. Setarea numelui computerului
  3. Activarea accesului SSH
  4. Actualizare de sistem
După finalizarea tuturor setărilor necesare, puteți începe.
Pregătirea
Mai întâi, să instalăm toate pachetele necesare:
sudo apt-get install imagemagick libav-tools libjpeg8-dev subversion
Apoi descărcați și asamblați mjpg-streamer:
sudo svn co https://svn.code.sf.net/p/mjpg-streamer/code/mjpg-streamer/ mjpg-streamer cd mjpg-streamer make
Deoarece Vom stoca toate datele în cloud, vom configura lucrul cu un sistem de fișiere la distanță prin 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
Pentru a nu vă introduce numele de utilizator și parola de fiecare dată, trebuie să le adăugați în fișier
/etc/davfs2/secrets
parola de utilizator /mnt/dav
Procesul de lucru
Să adăugăm comenzi la /etc/rc.local pentru a monta WebDAV și a rula scriptul pentru difuzarea în rețea:
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”
Acum, accesând http://:8080/ vom avea acces la cameră. Tot ce rămâne este să redirecționați portul de pe router și puteți accesa camera în afara rețelei locale.
Crearea unui videoclip timelapse
În primul rând, trebuie să obținem o imagine de la cameră. Deoarece este deja ocupată (imaginea este difuzată de serverul web), atunci vom folosi oportunitatea de a primi imaginea curentă de la serverul web:
curl http://localhost:8080/?action=snapshot > out.jpg
Dacă vrem să desenăm data fotografiei pe imagine, atunci putem folosi comanda 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
Versiunea completă a scenariului:
#!/bin/bash nume fișier=$(perl -e „timpul tipăririi”) nume dosar=$(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/$filename/$filename.jpg rm $filename
Videoclipul este asamblat folosind comanda avconv:
avconv -r 10 -i %06d.jpg -r 10 -vcodec mjpeg -qscale 1 out.avi
Versiunea completă a scriptului de asamblare video:
#!/bin/bash filename=$(date --rfc-3339=date) i=0 pentru f în `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
Acum tot ce rămâne este să înregistrați execuția scripturilor în planificatorul Cron:
* * * * * pi bash /home/pi/cam.sh 59 23 * * * pi bash /home/pi/build.sh
Video de exemplu
Concluzie
Această abordare ajută la eliminarea necesității de a petrece mult timp vizionând videoclipuri și, de asemenea, reduce costul produsului final. Datorită prezenței unui sistem de operare cu drepturi depline, devine posibilă extinderea funcționalității în direcția corectă.

Calculatorul Raspberry Pi singleboard vă permite să creați lucruri cu adevărat interesante și utile: de la centre multimedia la sisteme de automatizare a locuinței. Prin conectarea diferitelor module la Raspberry Pi, puteți extinde semnificativ funcționalitatea acestui minicomputer.



Unul dintre aceste plug-in-uri suplimentare este o cameră, care vă permite să faceți fotografii sau să înregistrați videoclipuri. Astăzi există pe piață o serie de camere pentru Raspberry Pi, iar în acest articol vom face o scurtă trecere în revistă a acestora.


Să ne uităm la șase dintre cele mai populare camere: ZeroCam Noir, ZeroCam FishEye, Camera Fisheye compatibilă Raspberry Pi, Camera Raspberry Pi V2, Camera Raspberry Pi V2 Noir și Camera Raspberry Pi 1.3.



ZeroCam Noir este un modul de cameră pentru Raspberry Pi Zero sau Raspberry Pi Zero W, așa că dacă doriți să îl utilizați în Raspberry Pi 3 sau 2, va trebui să utilizați un cablu adaptor. Această cameră nu are un filtru IR pe obiectiv, ceea ce o face ideală pentru fotografii cu lumină scăzută. Iată câteva dintre principalele sale caracteristici: senzor de 5 megapixeli, 2592 × 1944 pixeli, 1080p la 30 FPS (sau 60 FPS la 720p, 90 FPS la 480p), distanță focală 3,60 mm, 53,50 grade orizontală, aproximativ 41,41 grade verticală. dimensiuni placa cu camera: 60 x 11,4 x 5,1 mm.



Aceasta este versiunea fisheye a ZeroCam, ceea ce înseamnă că are o imagine cu unghi larg. Această cameră este făcută și pentru Pi Zero sau Pi Zero W, așa că pentru a o folosi cu un alt panou Pi ai nevoie de un cablu adaptor.



Aceasta este o cameră de pește compatibilă cu Raspberry Pi, care poate fi găsită cu ușurință pe diverse platforme de tranzacționare online, cum ar fi AliExpress, TaoBao, eBay. Se caracterizează printr-un unghi larg de vedere de 175º. Se bazează pe senzorul Omnivision 5647 cu o rezoluție de 5 megapixeli (2592 x 1944 pixeli).



Această cameră este echipată cu un senzor de imagine Sony IMX219 de 8 megapixeli cu o lentilă focală fixă, capabil să afișeze imagini statice de 3280×2464 pixeli, acceptă videoclipuri 1080p30, 720p60 și 640×480p90. Camera este compatibilă cu toate plăcile Raspberry Pi, dar dacă doriți să o utilizați cu Pi Zero, aveți nevoie de un cablu adaptor.



Această cameră are toate caracteristicile modulului Raspberry Pi Camera V2, dar nu are filtru IR. Aceasta înseamnă că este aproape o cameră ideală pentru fotografierea în întuneric.



Raspberry Pi Camera 1.3 este predecesorul modulului V2. Este echipat cu un senzor OmniVision OV5647 de 5 megapixeli.

Comparație între câmpul vizual și calitatea imaginii camerelor pentru Raspberry Pi

În acest test, toate camerele sunt instalate la o distanță de 1 metru de imaginea de test. Rezultatele sunt următoarele:











Comparație între calitatea imaginii și redarea culorilor camerelor Raspberry Pi la zoom











Comparație între calitatea fotografierii pe timp de noapte

Rezultatele de mai jos demonstrează performanța mai multor camere cu capacitate de noapte care captează aceeași imagine de testare la lumină foarte slabă și în întuneric.







concluzii

Toate camerele funcționează puțin mai bine decât se aștepta de la astfel de module ieftine. Din păcate, nu există o cameră all-in-one printre ele și trebuie făcut un compromis, deoarece nu pare să existe camere cu unghi larg (ochi de pește) cu filtrul de tăiere IR eliminat. Deci, dacă doriți un unghi larg, veți avea nevoie de iluminare regulată și, invers, noaptea este puțin probabil să obțineți fotografii cu unghi larg.

Deoarece Acest computer are performanțe suficiente pentru a primi, stoca, procesa și transmite video de la o cameră (de exemplu, de la o cameră USB) prin wifi către alte dispozitive. Există camere speciale pentru Raspberry PI care se conectează la un conector special de pe acesta și camere USB care se conectează la orice port USB de pe Raspberry PI. Deoarece Camerele USB, de regulă, sunt mult mai ieftine decât cele speciale (deși mai proaste), așa că în continuare vom lua în considerare utilizarea unei camere USB cu Raspberry PI. Există o serie de programe pentru capturarea video de la o cameră USB sau puteți să vă scrieți propriile programe, dar, de dragul simplității, să ne uităm mai întâi la capturarea și transmiterea video folosind programul de mișcare. Pentru a instala programul de mișcare pe Raspberry PI, trebuie mai întâi să vă conectați la acesta prin programul Putty (sau orice alt program terminal cu capacitatea de a comunica prin SSH) (pentru informații despre cum să faceți acest lucru, consultați articolul anterior „Raspberry PI 3 configurarea și gestionarea GPIO prin WIFI”). După conectarea la Raspberry PI, trebuie să actualizați sistemul folosind comenzile

Sudo apt-get update

Sudo apt-get upgrade

După o actualizare cu succes a sistemului, trebuie să instalați programul de mișcare cu comanda

Sudo apt-get install motion

În timpul instalării vi se poate pune întrebarea „Doriți să continuați?” după care va trebui să introduceți litera „Y”. După instalarea programului motion, va trebui să faceți câteva modificări la fișierele de configurare. Deschideți fișierul motion.conf în editorul nano cu comanda

Sudo nano /etc/motion/motion.conf

Apoi

Inlocuit de

În continuare, vom găsi și alte linii de schimbat, pentru a face acest lucru, apăsați combinația de taste CTRL+W, introduceți „stream_localhost” și apăsați enter, după aceea trebuie găsită linia necesară, dacă nu este găsită, atunci variabila „stream_localhost” ” se numește altceva, de exemplu „webcam_localhost” sau ceva de genul ăsta. După ce linia cu această variabilă este găsită, trebuie

Stream_localhost activat

inlocuit de

Stream_maxrate 1

Și înlocuiți cu

Stream_maxrate 100

Inlocuit de

Apoi

Timp_minim_cadru 0

Inlocuit de

Timp_minim_cadru 1

Acesta din urmă se face astfel încât cadrele să fie scoase o dată pe secundă - acest lucru nu arată foarte bine, dar videoclipul nu va dispărea dacă imaginea se schimbă brusc. Scopul fiecărei variabile poate fi citit în comentarii.
Acum să salvăm modificările apăsând CTRL+O și enter, apoi apăsăm CTRL+X și ieșim din editorul nano. Acum haideți să edităm un alt fișier, pentru a face asta introducem comanda

Sudo nano /etc/default/motion

Și înlocuiți linia

Start_motion_daemon=nu

Start_motion_daemon=da

Apoi salvați modificările apăsând CTRL+O și enter și apoi apăsați CTRL+X și ieșiți din editorul nano. Acum puteți începe transferul video (camera USB trebuie să fie conectată la unul dintre porturi) cu comanda

Începe mișcarea serviciului Sudo

Opriți cu comandă

Sudo service motion stop

Pentru a vedea videoclipul, trebuie să deschideți browserul și să introduceți adresa IP a Raspberry PI în bara de adrese, apoi puneți două puncte și 8081 (adresa IP a Raspberry PI: 8081) și apăsați Enter, după care videoclipul de la camera USB ar trebui să apară în browser. Puteți vedea cum se face toate acestea, vedeți rezultatul și altceva în videoclip:

Acesta este modul în care puteți obține videoclipuri de la o cameră USB conectată la un Raspberry PI într-un mod simplu. Dacă este un Raspberry PI 3 cu wifi încorporat și alimentat de un powerbank (sau altă sursă portabilă de energie electrică) (de exemplu, acesta sau unul mai ieftin, deși nu este recomandat să folosiți unul ieftin, Raspberry PI are nevoie de o sursă de alimentare normală pentru a-și folosi toate capacitățile, este de asemenea foarte indicat să instalați un radiator pentru procesor și alte microcircuite care se acumulează în timpul funcționării Raspberry, în mod ideal radiatorul ar trebui să fie din cupru și acoperit cu vopsea neagră specială), apoi pe baza toate acestea poti face un fel de sistem de supraveghere video, camera video sau ceva asemanator.

Unul dintre cele mai populare proiecte Raspberry Pi este crearea unui server de supraveghere video cu capacitatea de a difuza pe Internet. Mulți oameni folosesc aceste sisteme ca sisteme de securitate (inclusiv eu), dar există și alte utilizări. Dacă vii cu ceva interesant, poți scrie despre asta în comentarii. Un astfel de proiect ar costa în jur de 60 de lire sterline – 70 de lire sterline, dar am folosit câteva componente suplimentare pe care le aveam în jur (și au ajuns să nu coste nimic). Am folosit camera web Logitech Quickcam în proiectul meu.

Ce ne trebuie:

  • Raspberry Pi
  • Card SD de 8 GB sau mai mult
  • Cameră web
  • Acces la internet folosind un adaptor Ethernet sau WiFi
  • Hub USB cu alimentare externă
  • Tastatură
  • Mouse (pentru setările WiFi)

Deci, să începem prin a instala cea mai recentă versiune a Debian „Wheezy” pe cardul SD, ceea ce o poți face. Pentru a instala imaginea pe un computer Windows, puteți utiliza utilitarul, iar pentru computerele Mac, utilizați acest program. (Mai multe despre instalarea imaginilor)

După ce copierea imaginii este finalizată, introduceți cardul SD în Raspberry Pi. Conectăm cablul de rețea sau adaptorul wireless, precum și tastatura. În cele din urmă, nu uitați să conectați hub-ul USB și să îi furnizați energie.

După ce porniți Raspberry Pi, setați fusul orar în funcție de locația dvs. folosind utilitarul raspi-config.

Vă rugăm să rețineți că pentru a vă conecta la un sistem proaspăt instalat trebuie să utilizați numele de utilizator pi cu parola zmeură.

Dacă utilizați o conexiune la rețea WiFi:

Pentru a configura un adaptor wireless și a vă conecta la WiFi folosind o interfață grafică, trebuie să introduceți comanda:

După aceasta, puteți configura o conexiune wireless. Când ați terminat, faceți clic cu mouse-ul în colțul din stânga jos al ecranului și selectați Deconectați-vă pentru a reveni la linia de comandă.

Acum este timpul să actualizați sistemul. Introduceți în linia de comandă:

Sudo apt-get update sudo apt-get upgrade

și așteptați finalizarea. Acum trebuie să instalați Motion - software care va difuza videoclipuri folosind serverul web încorporat. Pentru a face acest lucru, introduceți:

Sudo apt-get install motion

si asteapta. După finalizarea instalării, conectați camera web la un port USB alimentat de pe hub.

Acum trebuie să faceți modificări în fișierul de configurare a programului Motion. Pentru a face acest lucru, executați comanda:

Sudo nano /etc/motion/motion.conf

Se va deschide un editor cu un fișier de configurare la care puteți face modificări. Cei mai importanți sunt acești parametri:

Daemon = OFF (corect la ON - acest parametru este undeva la începutul fișierului) webcam_localhost = ON (corect la OFF - acest parametru este undeva la sfârșitul fișierului)

Apăsați Ctrl + X pentru a salva, apoi „y” pentru a confirma operațiunea și, în final, Enter pentru a specifica numele fișierului.

Acum puteți porni serverul Motion:

Începe mișcarea serviciului Sudo

Așteptați aproximativ 60 de secunde, apoi introduceți adresa IP a Raspberry Pi în browser. Cea mai bună alegere de browser este cea mai recentă versiune de Firefox.

Adresa arată astfel: 192.168.X.X:8081

Asigurați-vă că portul 8081 este listat la sfârșitul liniei pentru a vedea imaginea. Pentru a accesa setările, utilizați portul 8080 în loc de 8081.

Port 8081 – video Port 8080 – interfață web de configurare

Vă rugăm să rețineți că veți putea accesa camera numai în rețeaua locală. Nu vă veți putea conecta la serverul video de acasă dintr-o altă locație. Pentru a vă conecta din exterior, configurați redirecționarea conexiunii de intrare pe routerul dvs. de acasă.

Felicitări! Tocmai ți-ai configurat propriul server CCTV pe Raspberry Pi! Vă doresc succes și nu ezitați să împărtășiți acest articol!

Notă: dacă serverul video arată un dreptunghi gri în loc de o imagine, introduceți comanda ls /dev/video în terminal pentru a determina numele dispozitivului video. În mod implicit, /etc/motion/motion.conf este setat la video0 . Dacă camera web are alt nume, corectați fișierul de configurare, apoi reporniți Motion.

Atenţie! Repeți tot ceea ce este descris în acest articol pe riscul și riscul tău! Nu sunt responsabil pentru nicio consecință. Acest articol este doar un ghid.

Acum doi ani, când am început să lucrez la multicoptere, a trebuit să fac unul mic. Întrucât quadcopterul era destinat să fie pur autonom, tot ceea ce era necesar de la această telecomandă era să controleze drona în timpul testării și instalării.

În principiu, telecomanda a făcut față cu succes tuturor sarcinilor care i-au fost atribuite . Dar au existat și deficiențe serioase.

  1. Bateriile nu intrau în carcasă, așa că a trebuit să le lipesc pe carcasă cu bandă electrică :)
  2. Parametrii au fost ajustați folosind patru potențiometre, care s-au dovedit a fi foarte sensibile la temperatură. Setezi niște valori în interior, ieși afară - și sunt deja diferite, au plutit.
  3. Arduino Nano pe care l-am folosit la telecomandă are doar 8 intrări analogice. Patru au fost ocupate de potențiometre de reglare. Un potențiometru a servit drept gaz. Două intrări au fost conectate la joystick. O singură ieșire a rămas liberă și mai erau mulți parametri de configurat.
  4. Singurul joystick nu era deloc unul pilot. Controlul clapetei de accelerație cu un potențiometru a fost, de asemenea, destul de frustrant.
  5. Și telecomanda nu a scos niciun sunet, ceea ce uneori este extrem de util.

Pentru a elimina toate aceste neajunsuri, am decis să reproiectez radical telecomanda. Atât partea hardware cât și software-ul. Iată ce am vrut să fac:

  • Faceți o carcasă mare, astfel încât să puteți introduce tot ce doriți acum (inclusiv bateriile) în ea și orice doriți mai târziu.
  • Rezolvați cumva problema cu setările, nu prin creșterea numărului de potențiometre. În plus, adăugați posibilitatea de a salva parametrii în telecomandă.
  • Faceți două joystick-uri, ca pe consolele pilot normale. Ei bine, pune joystick-urile ortodoxe.

Cladire nouă

Ideea este extrem de simplă și de eficientă. Tăiem două plăci din plexiglas sau alt material subțire și le conectăm cu suporturi. Întregul conținut al carcasei este atașat fie de placa superioară, fie de jos.

Comenzi și meniuri

Pentru a controla o mulțime de parametri, fie trebuie să plasați o grămadă de potențiometre pe telecomandă și să adăugați un ADC, fie să faceți toate setările prin meniu. După cum am spus deja, reglarea cu potențiometre nu este întotdeauna o idee bună, dar nici nu ar trebui să renunți la ea. Așadar, s-a decis să se lase patru potențiometre în telecomandă și să se adauge un meniu complet.

Pentru a naviga prin meniu și a modifica parametrii, se folosesc de obicei butoanele. Stânga, dreapta, sus, jos. Dar am vrut să folosesc un encoder în loc de butoane. Am primit această idee de la un controler de imprimantă 3D.


Desigur, datorită adăugării meniului, codul telecomenzii s-a extins de mai multe ori. Pentru început, am adăugat doar trei elemente de meniu: „Telemetrie”, „Parametri” și „Store parametri”. Prima fereastră afișează până la opt indicatori diferiți. Până acum folosesc doar trei: puterea bateriei, busola și altitudinea.

În a doua fereastră, sunt disponibili șase parametri: coeficienții controlerului PID pentru axele X/Y, Z și unghiurile de corecție ale accelerometrului.

Al treilea element vă permite să salvați parametrii în EEPROM.

Joystick-uri

Nu m-am gândit mult la alegerea joystick-urilor pilot. S-a întâmplat că am primit primul joystick Turnigy 9XR de la un coleg din afacerea cu quadcopter - Alexander Vasiliev, proprietarul cunoscutului site alex-exe.ru. Pe al doilea l-am comandat direct de la Hobbyking.


Primul joystick a fost încărcat cu arc în ambele coordonate - pentru a controla rotirea și înclinarea. Al doilea pe care l-am luat a fost același, astfel încât să îl pot transforma apoi într-un joystick pentru a controla tracțiunea și rotația.

Nutriție

În vechea telecomandă am folosit un regulator de tensiune simplu LM7805, care era alimentat cu o grămadă de 8 baterii AA. O variantă teribil de ineficientă, în care s-au cheltuit 7 volți pentru încălzirea regulatorului. 8 baterii - pentru ca exista doar un astfel de compartiment la indemana, si LM7805 - pentru ca la acea vreme aceasta optiune mi se parea cea mai simpla, si cel mai important, cea mai rapida.

Acum am decis să acționez mai înțelept și am instalat un regulator destul de eficient pe LM2596S. Și în loc de 8 baterii AA, am instalat un compartiment pentru două baterii LiIon 18650.


Rezultat

Punând totul împreună, am primit acest dispozitiv. Vedere din interior.


Dar cu capacul închis.


Capacul unui potențiometru și capacele joystick-urilor lipsesc.

În sfârșit, un videoclip despre cum sunt configurate setările prin meniu.


Concluzie

Telecomanda este asamblată fizic. Acum lucrez la finalizarea codului pentru telecomandă și quadcopter pentru a le readuce la fosta lor prietenie puternică.

La configurarea telecomenzii au fost identificate deficiențe. În primul rând, colțurile inferioare ale telecomenzii stau în mâinile tale: (probabil voi reproiecta puțin plăcile, voi netezi colțurile. În al doilea rând, nici un afișaj 16x4 nu este suficient pentru un afișaj de telemetrie frumos - trebuie să scurtez numele parametrilor la două litere. În următoarea versiune a dispozitivului voi instala un afișaj cu puncte sau imediat o matrice TFT.



Ți-a plăcut articolul? Împărtășește-l