Sadržaj:

Raspberry PI kamera i kontrola svjetla Zvijezda smrti: 5 koraka (sa slikama)
Raspberry PI kamera i kontrola svjetla Zvijezda smrti: 5 koraka (sa slikama)

Video: Raspberry PI kamera i kontrola svjetla Zvijezda smrti: 5 koraka (sa slikama)

Video: Raspberry PI kamera i kontrola svjetla Zvijezda smrti: 5 koraka (sa slikama)
Video: SVAKI PUT KAD IZAĐEM VAN #Shorts 2024, Novembar
Anonim
Raspberry PI kamera i kontrola svjetla Zvijezda smrti
Raspberry PI kamera i kontrola svjetla Zvijezda smrti
Raspberry PI kamera i kontrola svjetla Zvijezda smrti
Raspberry PI kamera i kontrola svjetla Zvijezda smrti
Raspberry PI kamera i kontrola svjetla Zvijezda smrti
Raspberry PI kamera i kontrola svjetla Zvijezda smrti

Kao i uvijek, želim izgraditi uređaje koji su korisni, rade robusno i često su čak i poboljšanja u odnosu na trenutna rješenja.

Evo još jednog sjajnog projekta, izvorno nazvanog Shadow 0f Phoenix, Raspberry PI štit u kombinaciji s Arduino detekcijom pokreta i kontrolama svjetla.

Korak 1: Stanje komercijalnih IP kamera

Stanje komercijalnih IP kamera
Stanje komercijalnih IP kamera
Stanje komercijalnih IP kamera
Stanje komercijalnih IP kamera
Stanje komercijalnih IP kamera
Stanje komercijalnih IP kamera

Osim što je izgradnja vlastite kamere/nadzornog sistema hladnija, hajde da vidimo zašto je ovo poboljšanje u odnosu na standardno rješenje.

Usporedit ću ga sa serijom bežičnih IP kamera NEO COOLCAM Full HD 1080P jer posjedujem mnogo ovih različitih modela neo cool kamera (ONVIF) kamera. Dolaze u različitim oblicima i veličinama, na otvorenom i u zatvorenom prostoru, većina njih ima ugrađenu podršku za WiFi, ali pogledajmo njihova upozorenja:

  • Kineski proizvođači koji prodaju ove kamere gotovo uvijek lažu o ugrađenoj rezoluciji senzora slike, kada kupite kameru od 5 MP/8 MP na Ebayu, mogli biste dobiti jeftinu kameru od 2 MP sa lošom slikom (radi, ali kvaliteta je smeće). Kada kupite 8MP Raspberry PI v2 kameru od originalnog prodavača, dobit ćete ono što ste platili i stvarni 8MP senzor rezolucije 3280 × 2464 piksela =>
  • Sa sigurnosnog stanovišta ove kamere (čak i skuplji Dlink i drugi modeli) su užasne, koriste zadane lozinke poput 123456 ili ugrađene korisnike poput administratora/administratora/operatera, što možda nećete moći promijeniti promjena je nestala nakon ponovnog pokretanja. Popunite to mnogim kućnim kamerama (povežite se s njihovim serverima u Kini, neke čak i reproduciraju video zapise/slike bez da vas pitaju samo kako bi vam olakšale u slučaju da jednog dana odlučite instalirati njihovu Android/iPhone aplikaciju da provjerite svoj Dom). Čak i ako ove uređaje stavite iza usmjerivača, to jednostavno nije dovoljno dobro, najbolje je ako u njima ne postavite zadani pristupnik, zaštitni zid ili ih stavite u VLAN kako biste im onemogućili izlazak na internetu ili još bolje: nemojte ih uopće koristiti.
  • Jesu li pouzdaniji? ne, mnogi od njih, čak i skuplji DLINK -ovi, imaju mogućnost ponovnog pokretanja kamere dnevno/sedmično itd. Ta opcija postoji s razlogom, jer nakon X dana često izgube Wi -Fi vezu ili se loše ponašaju na druge načine. Zamislite ih samo kao stare dobre Win95 kutije koje je trebalo češće ponovno pokretati:) Ne kažem da su hardveri zasnovani na Raspiju toliko čvrsti da ih možete ugraditi u kontrolne nuklearne elektrane, ali s odgovarajućim hardverom/softverom konfiguracija, hladnjaci, ventilatori za automatsko hlađenje i minimizirani rad RW -a na SDCARD -u mogu bez problema postići preko 100 dana neprekidnog rada. U vrijeme pisanja moj DeathStar radi od 34 dana, imao je više od 100, ali ponekad sam hakirao izvor napajanja koji napaja neka druga moja kola pa sam ga morao isključiti:(
  • Ciljani hardver: napravljeni su za jednu određenu namjenu, često dolaze s malim nvram područjem i zauzetim sandučićem, ali neki modeli onemogućuju i pristup ovoj ljusci pa ih možete koristiti samo za ono za što su ih namjeravali koristiti koristite kameru zasnovanu na Raspiju za bilo koje druge zadatke: poslužitelj datoteka, poslužitelj tftp/dhcp, web poslužitelj, server za potres … opcije su neograničene.
  • Prostor za skladištenje: ili ih nemaju ili koriste microsd kartice sa FAT32 datotečnim sistemom VS na malini pis, možete čak i da priključite čvrsti disk od 2 TB ako želite.
  • Kontrolna svjetla: neki imaju ALARM izlaz na koji biste mogli spojiti mali relej kako bi se svjetla aktivirala. Kao što ću vam pokazati u ovom vodiču, korištenje infracrvenih kamera potpuno je gubljenje vremena jer zbog loše kvalitete nećete moći identificirati nikoga na IC slikama. Ako trebate snimiti video u mraku, najbolji način da to učinite je da prvo uključite svjetlo, a zatim snimite video.

Stoga biste se mogli zapitati postoje li PRO prednosti korištenja kamere s police? Da za preduzeća gdje bi radno vrijeme za postavljanje bilo skuplje od petljanja s Raspberry pisom (ionako ne za mene:)) i da, postoje vrhunske kamere (500 USD+ s boljom rezolucijom od pi kamere kurs). Kao još jednu prednost mogao bih reći da su kamere koje slijede ONVIF standard olakšale centralizirano opskrbljivanje. Ovo pruža standardni interfejs koji se može koristiti za slanje naredbi kameri za postavljanje njene IP/mrežne maske/mrežnog prolaza i drugih stvari. Za ovo možete preuzeti Onvif upravitelj uređaja sa Sourceforgea. Mnogi od ovih uređaja dolaze s lošim, pokvarenim internetskim sučeljima gdje vam, na primjer, ne dopušta pravilno postavljanje IP -a ili mrežne maske jer javascript koji potvrđuje ova polja ne radi i vaš jedini način da ispravno postavite ove parametre je putem ONVIF -a.

Korak 2: Planovi Zvijezde smrti

Planovi Zvijezde smrti
Planovi Zvijezde smrti
Planovi Zvijezde smrti
Planovi Zvijezde smrti
Planovi Zvijezde smrti
Planovi Zvijezde smrti

Ovaj uređaj možete izgraditi sa bilo kojim Raspberry PI -jem počevši od 1 do 3B+. Čak i nula ima priključke za kameru, ali budući da na tržištu postoji toliko različitih rabljenih raspisa, možda se pitate koji je najidealniji za ovu verziju.

Odgovor ovisi o tome gdje želite obraditi video stream.

Postoje dva izbora:

1, Lokalno obradite videozapise s kretanjem i proslijedite video stream kada se otkrije pokret (napomena: kretanje prema naprijed polagano neprekidno struji prema poslužitelju, što može zavisiti od rezolucije i brzine kadrova koje koristite od stotinu megabajta na više gigabajta dnevno, samo podsjetnik ako želite postaviti na mjerenu vezu). Ovdje je CPU bitan i nažalost kretanje (u vrijeme pisanja) ne koristi prednosti više jezgri, međutim OS će pokušati malo izbalansirati opterećenje. Uvijek ćete imati jedno od jezgri na 100% korištenju.

2, Obradite video zapise na centralnom serveru: ovde samo prosledite sirovi video tok sa kamere na spoljni server za striming (poput iSpy -a koji radi na x86 računaru ili MotionEyeOS na drugom namenskom mini računaru). Budući da ne postoji lokalna obrada, model PI koji koristite nije bitan, PI1 će poslati isti tok kao i PI3B+.

U ovom vodiču ću se odlučiti za prvi izbor.

Opšte pravilo ovdje je da što brži CPU pokrećete bolje ćete rezultate postići. Na primjer, moja kamera zasnovana na Raspi 2 koja gleda u hodnik ponekad je nije podigla kad je neko prošao brzo i dok je snimala snimak je bio spor, pa je ispalo puno sličica u odnosu na model 3. Model 3 također ima 802.11 abgn wifi koji vam je zgodan za prijenos video zapisa više kvalitete, radi izvan kutije i prilično je pouzdan. U vrijeme pisanja o izlasku modela 3B+ samo bih vam preporučio da to nabavite sa Quad Core procesorom od 1,4 Ghz.

Lista materijala

  • 30 cm plastična DeathStar:)
  • Malina Pi 3 B+
  • PiCam v2 (8MP)
  • Arduino Pro Micro 5.5v
  • 2x relej sklopke sa prekidačem SIP-1A05
  • 1x PCS HC-SR501 IC piroelektrični infracrveni IC PIR modul detektora senzora pokreta
  • 1x 10kohm otpornik za LDR
  • 1x LDR
  • 1x12V 4A DC adapter
  • 1xWarm bijela LED 5050 SMD Fleksibilna svjetlosna traka 12V DC
  • 1xBuck regulator napona

Kao što možete vidjeti na shemama, ovaj je projekt izvorno dizajniran za upravljanje jednim svjetlom s jednim relejem, jer nisam planirao dodavati unutarnje osvjetljenje (što je prilično cool), pa sam samo spojio drugi relej na Arduino. Odlična stvar kod SIP-1A05 je to što ima internu flyback diodu, a potrošnja u mA je daleko ispod Arduinovog ograničenja snage po pinu.

Razlog zašto je PIR na štitu na slikama jer je na početku S0P bilo planirano staviti u jednostavnu IP plastičnu kutiju umjesto DeathStara. Kao što ste možda pretpostavili da je kamera direktno u laserskom pištolju, PIR-u i LDR-u su bile potrebne još jedne izbušene rupe i zalijepljene su pištoljem jer ih ne planiram ukloniti.

Izbušena je rupa na dnu DeathStara gdje sam zalijepio veliki vijak jakim dvokomponentnim ljepilom. Ovo se može uvrnuti u originalno postolje Neo Coolcams (ipak je bilo za nešto dobro:)). Za dodatnu podršku koristim tvrde bakrene žice kako bih držao vrh zvijezde.

Važna napomena o napajanju: budući da će isti izvor napajati i PI, Arduino i LED traku, mora biti dovoljno snažan da ih može nositi sa svima, tako da će se temeljiti na LED traci koju odaberete za projekt. Komercijalna LED traka 5050 12v 3 metra troši oko 2A, to je mnogo. Za PI i Arduino morate izračunati u +2A (iako ovo preveliko ne šteti). Korištenje LED trake preko standardnih halogenih žarulja, neonske ili druge rasvjete velike snage omogućuje vam da cijeli ovaj krug stavite na lijepu olovnu bateriju od 12V@10Ah kao rezervnu, tako da će raditi čak i u slučaju nestanka struje.

Buck će smanjiti napon s 12-> 5V za napajanje Arduina i PI-a, dok je izravno napajanje od 12V spojeno na relej za uključivanje LED trake.

Korak 3: Softver Arduino

Softver Arduino
Softver Arduino

Cijeli izvorni kod možete pronaći ispod koji je dobro komentiran, ali evo kratkog objašnjenja kako to funkcionira: Na početku svake petlje poziva se uobičajena funkcija xcomm () da se provjeri postoji li naredba iz Raspberry PI -a koja može biti LIGHT_ON/OFF za uključivanje svjetla hodnika ili DS_ON/OFF za uključivanje/isključivanje pozadinskog osvjetljenja DeathStara, ovo sam implementirao samo radi savršenosti, jer ako neko prođe pored PIR -a, trebao bi ga podići i uključiti svjetla, ali možda želite iz nekog razloga pogledati mjesto čak i kad nikoga nema.

Nakon toga očitava se vrijednost fotoćelije i provjerava se gibanje igle za kretanje. Ako dođe do kretanja, kôd provjerava je li dovoljno mračno, tada provjerava nismo li na čekanju. Ako sve ovo prođe, jednostavno uključuje svjetlo hodnika i šalje PHOENIX_MOTION_DETECTED na Raspberry PI, ako nije dovoljno mračno, i dalje signalizira natrag u računalo, ali ne pali svjetlo. Nakon što se detektira pokret, pokreće se tajmer zadržavanja od 5 minuta.

Odmah nakon ovoga sljedeći odjeljak koda će provjeriti jesmo li na čekanju (što bi trebalo biti slučaj ako je došlo samo do događaja kretanja, pa pretpostavimo da je prošlo 5 minuta kako bi ova provjera mogla potvrditi). Kôd provjerava ima li opet pokreta, ako nije, tada isključuje svjetla. Kao što vidite ako nema pokreta, ova funkcija će se ponavljati uvijek iznova, pokušavajući ugasiti svjetla tako da nema povratnih informacija do računala.

Imamo još jedan mjerač vremena za unutarnje osvjetljenje DeathStara koji čisto ovisi o fotoćelijiReading <dark_limit.

Iako dvije rutine ne znaju jedna za drugu, savršeno će raditi zajedno jer kad se upali svjetlo u hodniku, daje toliko svjetla da će LDR pomisliti da je opet dan i isključuje unutrašnje osvjetljenje. Međutim, bilo je nekih upozorenja u vezi ovog procesa koji su objašnjeni u kodu ako vas zanima, ako ne, onda odgovorite Nvidiji da "to samo radi!".

Korak 4: Softverski Raspberry PI

Softver Raspberry PI
Softver Raspberry PI
Softver Raspberry PI
Softver Raspberry PI
Softver Raspberry PI
Softver Raspberry PI

Najnoviji Raspbian radi za mene:

Raspbian GNU/Linux 9.4 (rastezanje)

Linux Phoenix 4.9.35-v7+ #1014 SMP pet 30. jun 14:47:43 BST 2017. armv7l GNU/Linux ii motion 4.0-1 armhf V4L program za snimanje koji podržava detekciju pokreta

Iako možete koristiti druge distribucije, ako naiđete na bilo kakve probleme s kamerom, podršku ćete dobiti samo ako koristite njihov službeni OS. Uklanjanje neželjenog bloatware -a, poput systemd -a, također se preporučuje.

Kretanje se takođe može lako izgraditi iz izvora:

apt-get -y install autoconf automake pkgconf libtool libjpeg8-dev build-essential libzip-dev apt-get install libavformat-dev libavcodec-dev libavutil-dev libswscale-dev libavdevice-dev

apt-get -y install libavformat-dev libavcodec-dev libavutil-dev libswscale-dev libavdevice-dev apt-get -y install git git clone https://github.com/Motion-Project/motion cd motion/autoreconf -fiv. /configure --prefix =/usr/motion make && make install/usr/motion/bin/motion -v

Preporučujem iSpy kao poslužitelj video rekordera/kolektora. Nažalost, u vrijeme pisanja ovog članka ne postoje dobre alternative za Linux. Kamera se može dodati pomoću MJPEG url https:// CAMERA_IP: 8081 zadanog porta.

Obrada pokreta može biti korisna, na primjer, ne morate cijeli dan gledati svoj iSpy server, možete primiti e -poruku u slučaju kretanja. Iako iSpy ima ovu funkciju da upozori e -poštu u slučaju kretanja, s vremena na vrijeme uključi snimanje za razne događaje, poput svjetlosti koja se reflektira na područje. Uz PIR detekciju pokreta nikada nisam imao niti jedan lažni alarm. Upozorenja se mogu obrađivati lokalno:

Na senzoru otkriven događaj Pir pokreta> Arduino upozorenje> Raspberry pi prima na konzoli> C program za obradu> Vanjska aplikacija za poštu

Ja ipak više volim daljinsku obradu dnevnika i videozapisa, pa sam u ovom slučaju dodao odjeljak u C kontrolni program, dok on zapisuje zapisnike lokalno u običnu tekstualnu datoteku, također ih zapisuje u syslog i prosljeđuje u SIEM za dalju obradu.

void logger (char *text) {

FILE *f = fopen ("phoenix.log", "a"); if (f == NULL) {printf ("Greška pri otvaranju datoteke dnevnika! / n"); return; } fprintf (f, " %s => %s / n", cur_time (0), tekst); fclose (f); #ifdef SYSLOG char loggy [500]; sprintf (loggy, " %s => %s / n", cur_time (0), tekst); setlogmask (LOG_UPTO (LOG_NOTICE)); openlog ("DeathStar", LOG_CONS | LOG_PID | LOG_NDELAY, LOG_USER); // syslog (LOG_NOTICE, "Program je pokrenuo korisnik %d", getuid ()); syslog (LOG_NOTICE, loggy); closelog (); #endif return; }

Na prijemnom kraju syslog-ng može demuksirati ove događaje iz glavnog toka dnevnika:

filter f_phx {

match ("DeathStar"); }; odredište d_phx {datoteka ("/var/log/phoenix/deathstar.log"); }; log {izvor (s_net); filter (f_phx); odredište (d_phx); };

i može se proslijediti drugom alatu (motion.php vidi u prilogu) za analizu i upozorenje.

U ovoj skripti jednostavno možete postaviti uobičajeno vrijeme tokom sedmice kada niste kod kuće:

$ opt ['alert_after'] = '09:00:00'; // Jutro $ opt ['alert_before'] = '17:00:00'; // Večeri

Program php koristi odličan pomoćni program za logtail za raščlanjivanje dnevnika.

$ cmd = "logtail -o". $ offsetfile. ' '. $ logfile.'> '. $ logfile2;

Logtail prati poziciju u offset datoteci tako da glavni program ne mora znati od kada počinje pregledavati dnevnike, bit će mu dostavljeni najnoviji neobrađeni podaci.

Motion.php se može pokrenuti iz crontaba s malim trikom za vikende, kada će proći kroz zapisnike, ali nemojte dalje obrađivati.

*/5 * * * 1-5/usr/local/bin/php ~/motion.php &>/dev/null */5 * * * 6-7/usr/local/bin/php ~/motion.php vikend &>/dev/null

Korak 5: Problemi i lista zadataka

Lista problema i lista zadataka
Lista problema i lista zadataka
Lista problema i lista zadataka
Lista problema i lista zadataka

Ako koristite Raspberry pi 3 ili noviji, možete preskočiti ovaj odjeljak, najvjerojatnije više nećete naići na ove probleme.

Tokom godina imao sam nekih problema sa pločama zasnovanim na Raspberry pi 2 koje bi mogle raditi na istom softverskom steku, ali su kupljene u različito vrijeme sa različitih mjesta. Nakon određenog vremenskog perioda koji bi mogao biti 2 ili 20 dana kada se SSHing priključio na uređaj, SSH bi samo visio, pa su se i demon pokreta i lokalni C kod koji je razgovarao s Arduinom učitali u RAM pa je uređaj funkcionirao ali bilo je nemoguće učiniti više ništa s tim u ovom stanju.

Nakon puno rješavanja problema došao sam do rješenja:

homesync.sh

#!/bin/sh -e

### BEGIN INIT INFO # Pruža: homesync # Obavezno-pokretanje: mountkernfs $ local_fs # Obavezno-zaustavljanje: kamera-feniks # Zadano-pokretanje: S # Zadano-zaustavljanje: 0 6 # Kratki opis: Kućni sinhronizator # Opis: Kućni sinhronizator by NLD ### END INIT INFO NAME = home DESC = "Ramdisk Home Synchronizer" RAM = "/home/" DISK = "/realhome/" set -e case "$ 1" u početku | naprijed) echo -n "Starting $ DESC: "rsync -az --numeric -ids --delete $ DISK $ RAM &> /dev /null echo" $ NAME ".;; stop | back) echo -n "Zaustavljanje $ DESC:" rsync -az --numeric -ids --delete $ RAM $ DISK &> /dev /null echo "$ NAME.";; *) echo "Upotreba: $ 0 {start | stop}" exit 1;; esac izlaz 0

Skripta ide zajedno sa fstab izmjenom:

tmpfs /home tmpfs rw, veličina = 80%, nosuid, nodev 0 0

Početna particija je montirana kao ramdisk što bi dalo približno 600 MB slobodnog prostora na Raspberry pi 2 što je više nego dovoljno za spremanje nekih binarnih datoteka i malih datoteka dnevnika:

tmpfs 690M 8.6M 682M 2% /dom

Ispostavilo se da je PI prekid pripisan operacijama pisanja na SD karticu, iako sam isprobao različite kartice (Samsung EVO, Sandisk) koje su prije i poslije više puta skenirane na greške i nisu imale problema na drugim prijenosnim računalima, to je samo bio dolazi. Nisam još imao isti problem s Raspberry PI 3s i višim hardverom, pa ih i zato preporučujem u ovom vodiču.

Iako je trenutni pokret na Raspberry PI 3 meni sasvim dovoljan, evo nekoliko ideja koje vrijedi istražiti:

  1. Nemojte koristiti kretanje, već koristite raspivid stream preko mreže i dopustite moćnom poslužitelju da vrši detekciju pokreta i kodiranje videa (npr. ISpy). -> Problem: stalno zauzimanje mrežne propusnosti.
  2. Koristite pokret i pustite ffmpeg da kodira video zapis. -> Problem: CPU ne može podnijeti veće rezolucije
  3. Koristite pokret, snimajte neobrađeni video i pustite moćni server da kodira. -> Upotreba procesora na RPi -u je niska, a mrežni opseg je ograničen na stvarno kretanje. Za ovaj scenarij mogli bismo pisati na SD karticu/ramdisk za maksimalnu propusnost, a zatim kopirati video zapis na drugi server.

Također bih napomenuo da je izgradnju ovog projekta moguće izgraditi bez Arduina. Sve komponente (releji, LDR, PIR) mogu se na neki način povezati s malinom pi, ali više volim da mikrokontroleri u stvarnom vremenu komuniciraju sa senzorima i izlaznim uređajima. U slučajevima kada je moj malin pi visio ili se srušio, kontrola svjetla koju je vodio Arduino radila je sasvim u redu.

Ako vam se svidjelo ovo uputstvo, nastavite s praćenjem jer ću sljedeće godine nastaviti seriju sa mojom vanjskom kamerom od maline pi zero dome od 360 stupnjeva.

Preporučuje se: