Sadržaj:

PI kamera od maline i Zvijezda smrti Death Control: 5 koraka (sa slikama)
PI kamera od maline i Zvijezda smrti Death Control: 5 koraka (sa slikama)

Video: PI kamera od maline i Zvijezda smrti Death Control: 5 koraka (sa slikama)

Video: PI kamera od maline i Zvijezda smrti Death Control: 5 koraka (sa slikama)
Video: Vegan Since 1951! 32 Years Raw! A Natural Man of Many Skills; Mark Huberman 2024, Srpanj
Anonim
PI kamera od maline i Zvijezda smrti Death Control
PI kamera od maline i Zvijezda smrti Death Control
PI kamera od maline i Zvijezda smrti Death Control
PI kamera od maline i Zvijezda smrti Death Control
PI kamera od maline i Zvijezda smrti Death Control
PI kamera od maline i Zvijezda smrti Death Control

Kao i uvijek, želim izgraditi uređaje koji su korisni, rade robusno i često su čak i poboljšanja u usporedbi s trenutnim rješenjima.

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 sustava hladnija, hajde da vidimo zašto je to poboljšanje u odnosu na standardno rješenje.

Usporedit ću ga sa serijom bežičnih IP kamera NEO COOLCAM Full HD 1080P budući da 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 da vidimo njihove opaske:

  • Kineski proizvođači koji prodaju te 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 s lošom slikom (radi, ali kvaliteta je smeće). Kada kupite 8MP Raspberry PI v2 kameru od izvornog prodavača, dobit ćete ono što ste platili i stvarni 8MP senzor rezolucije 3280 × 2464 piksela =>
  • Sa sigurnosnog stajališta ove su kamere (čak i skuplji Dlink i drugi modeli) užasne, koriste zadane lozinke poput 123456 ili ugrađene korisnike poput administratora/administratora/operatera što možda nećete moći promijeniti ili promjena je nestala nakon ponovnog pokretanja. Popunite to mnogim kućnim kamerama (povežite se s poslužiteljima 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 aplikaciju za Android/iPhone kako biste provjerili svoj Dom). Čak i ako ove uređaje ostavite iza usmjerivača, jednostavno nije dovoljno dobro, najbolje je ako u njima ne postavite zadani pristupnik, isključite ih vatrozidom ili ih postavite u VLAN kako biste 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 fotoaparata dnevno/tjedno itd. Ta je opcija dostupna 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 temeljeni na Raspiju toliko čvrsti da ih možete ugraditi u upravljačke 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 više od 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 neke druge krugove pa sam ga morao isključiti:(
  • Ciljani hardver: izrađeni su za jednu određenu svrhu, često dolaze s malim nvram područjem i zauzetim sandučićem, ali neki modeli onemogućuju pristup ovoj ljusci pa ih sve možete koristiti samo za ono za što su ih namjeravali koristiti koristite svoju kameru temeljenu na Raspiju za bilo koje druge zadatke: poslužitelj datoteka, poslužitelj tftp/dhcp, web poslužitelj, poslužitelj potresa … mogućnosti su neograničene.
  • Prostor za pohranu: ili ih nemaju ili koriste microsd kartice s FAT32 datotečnim sustavom VS na malini pis, čak možete priključiti tvrdi 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 potpuni je gubitak vremena jer zbog loše kvalitete nećete moći identificirati nikoga na IC slikama. Ako trebate snimiti video u mraku, najbolji način za to je da prvo uključite svjetlo, a zatim snimite video.

Stoga biste se mogli zapitati postoje li PRO -ovi korištenja kamere s police? Da za tvrtke 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 tečaj). Kao još jednu prednost mogao bih reći da su kamere koje slijede ONVIF standard olakšale centralizirano opskrbljivanje. Ovo pruža standardno sučelje koje se može koristiti za slanje naredbi kameri za postavljanje IP/mrežne maske/pristupnika i drugih stvari. Za to možete preuzeti upravitelj uređaja Onvif s Sourceforgea. Mnogi od ovih uređaja dolaze s lošim slomljenim web sučeljima gdje vam, na primjer, ne dopušta pravilno postavljanje IP -a ili maske mreže jer javascript koji potvrđuje ta polja ne radi ispravno i 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 s bilo kojim od Raspberry PI -ja 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 gradnju.

Odgovor ovisi o tome gdje želite obraditi video stream.

Postoje dva izbora:

1, Lokalno obradite videozapise s kretanjem i proslijedite video stream ako se otkrije gibanje (napomena: kretanje prema naprijed polagano neprekidno struji prema poslužitelju, bez obzira na sve, to može ovisiti o razlučivosti i brzini kadrova koje koristite od nekoliko stotinu megabajta na više gigabajta dnevno, samo podsjetnik ako želite izvršiti postavljanje na mjernoj vezi). Ovdje je CPU bitan i nažalost kretanje (u vrijeme pisanja) ne koristi prednosti više jezgri, međutim OS će pokušati malo uravnotežiti opterećenje. Uvijek ćete imati jedno od jezgri na 100% korištenju.

2, Obradite videozapise na središnjem poslužitelju: ovdje samo prosljeđujete neobrađeni video stream s fotoaparata na vanjski streaming streaming (poput iSpy -a koji radi na x86 računalu ili MotionEyeOS na drugom namjenskom miniračunalu). Budući da nema lokalne obrade, 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.

Zlatno pravilo ovdje je da što brži CPU pokrenete bolje ćete rezultate postići. Na primjer, moja kamera zasnovana na Raspi 2 koja gleda u hodnik ponekad je nije podigla kad je netko prošao brzo i dok je snimala snimka je bila spora, 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 strujanje video zapisa već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 četverojezgrenim procesorom od 1,4 Ghz.

Popis materijala

  • 30 cm plastična DeathStar:)
  • Malina Pi 3 B+
  • PiCam v2 (8 MP)
  • Arduino Pro Micro 5.5v
  • 2x relej sklopke SIP-1A05
  • 1x PCS HC-SR501 IC piroelektrični infracrveni IC PIR senzor pokretačkog detektora
  • 1x 10kohm otpornik za LDR
  • 1x LDR
  • 1x12V 4A istosmjerni adapter
  • 1xWarm bijela LED 5050 SMD fleksibilna svjetlosna traka žarulje 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 dodati 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 unutarnju povratnu 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 mogli pretpostaviti, kamera se nalazi izravno 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 s jakim dvokomponentnim ljepilom. To se može uvrnuti u originalni Neo Coolcams stalak (ipak je za nešto bio dobar:)). Za dodatnu potporu koristim tvrde bakrene žice kako bih se držao na vrhu zvijezde.

Važna napomena o napajanju: budući da će isti izvor napajati i PI, Arduino i LED traku, mora biti dovoljno jaka da ih sve može podnijeti pa će se temeljiti na LED traci koju odaberete za projekt. Komercijalna LED traka 5050 12v 3 metra troši oko 2A, to je puno. Za PI i Arduino morate izračunati u +2A (iako ovo preveliko neće naštetiti). 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 pa ć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 kôd možete pronaći ispod koji je dobro komentiran, ali evo kratkog objašnjenja kako to radi: 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 netko prođe pored PIR -a, trebao bi ga podići i uključiti svjetla, ali možda iz nekog razloga želite pogledati mjesto čak i kad nema nikoga.

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 tamno, tada provjerava nismo li na čekanju. Ako sve ovo prođe, jednostavno uključuje svjetlo hodnika i šalje natrag 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 mjerač vremena zadržavanja od 5 minuta.

Odmah nakon ovoga sljedeći odjeljak koda će provjeriti jesmo li na čekanju (što bi trebao 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 ne, tada isključuje svjetla. Kao što vidite ako nema kretanja, ova će se funkcija ponavljati uvijek iznova, pokušavajući isključiti 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 hodnika, daje toliko svjetla da će LDR pomisliti da je opet dan i isključuje unutarnje osvjetljenje. Međutim, bilo je nekih upozorenja u vezi ovog procesa koji su objašnjeni u kodu ako ste zainteresirani, ako ne, onda odgovorite Nvidiji da "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. lipnja 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, dobit ćete podršku tima samo ako koristite njihov službeni OS. Također se preporučuje uklanjanje neželjenog bloatware programa, poput systemd.

Kretanje se također 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 priključka.

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

Na senzoru je otkriven događaj kretanja Pir -a> 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 kontrolni program C, dok on zapisuje zapisnike lokalno u običnu tekstualnu datoteku, također ih zapisuje u syslog i prosljeđuje u SIEM za daljnje procesiranje.

zapisnik praznina (char *text) {

FILE *f = fopen ("phoenix.log", "a"); if (f == NULL) {printf ("Pogreška pri otvaranju datoteke dnevnika! / n"); povratak; } 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 pokrenuo korisnik %d", getuid ()); syslog (LOG_NOTICE, loggy); closelog (); #endif return; }

Na kraju primatelja syslog-ng može demuksirati ove događaje iz glavnog streama 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 vidjeti u prilogu) radi analize i upozoravanja.

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

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

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

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

Logtail prati položaj u datoteci pomaka tako da glavni program ne mora znati od kada počinje pregledavati zapisnike, bit će mu dostavljeni najnoviji neobrađeni podaci.

Motion.php se može pokrenuti s 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

5. korak: Popis problema i popis zadataka

Popis problema i popis zadataka
Popis problema i popis zadataka
Popis problema i popis zadataka
Popis problema i popis zadataka

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

Tijekom godina imao sam nekih problema s pločama na bazi Raspberry pi 2 koje bi mogle pokrenuti isti softverski stog, ali su kupljene u različito vrijeme s različitih mjesta. Nakon određenog vremenskog razdoblja koje bi moglo biti 2 ili 20 dana kada se SSHing priključio na uređaj, SSH bi samo objesio, pa su se i pokretni demon 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 # Omogućuje: homesync # Obavezno-Pokreni: mountkernfs $ local_fs # Obavezno-Zaustavi: fotoaparat-feniks # Zadano-Pokreni: S # Zadano-Zaustavi: 0 6 # Kratki opis: Domaći sinkronizator # Opis: Domaći sinkronizator by NLD ### END INIT INFO NAME = home DESC = "Ramdisk Home Synchronizer" RAM = "/home/" DISK = "/realhome/" set -e case "$ 1" in start | forward) 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 "Usage: $ 0 {start | stop}" exit 1;; esac izlaz 0

Skripta ide zajedno s 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 pohranu 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 pogreške, a na drugim prijenosnim računalima nisu imale problema, to je samo bio slijedi. 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 trenutačno kretanje na Raspberry PI 3 meni dovoljno dobro, 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 otkrije pokrete i kodira video zapise (npr. ISpy). -> Problem: stalno zauzimanje mrežne propusnosti.
  2. Upotrijebite pokret i dopustite ffmpegu kodiranje videa. -> Problem: CPU ne može podnijeti veće rezolucije
  3. Koristite pokrete, snimajte neobrađeni video i dopustite moćnom poslužitelju da kodira. -> Upotreba procesora na RPi je niska, a propusnost mreže ograničena je na stvarno kretanje. Za ovaj scenarij mogli bismo zapisati na SD karticu/ramdisk za maksimalnu propusnost, a zatim crontab kopirati video na drugi poslužitelj.

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 svidio ovaj instruktor, ostanite s nama jer ću sljedeće godine nastaviti sa svojom vanjskom kamerom od malina pi zero dome od 360 stupnjeva.

Preporučeni: