Sisukord:

Vaarika PI kaamera ja valgusjuhtimise surmatäht: 5 sammu (koos piltidega)
Vaarika PI kaamera ja valgusjuhtimise surmatäht: 5 sammu (koos piltidega)

Video: Vaarika PI kaamera ja valgusjuhtimise surmatäht: 5 sammu (koos piltidega)

Video: Vaarika PI kaamera ja valgusjuhtimise surmatäht: 5 sammu (koos piltidega)
Video: Блиппи в Парке развлечений Киндерленд | Блиппи на Русском | Изучай этот Мир вместе с Блиппи | Blippi 2024, Juuli
Anonim
Vaarika PI kaamera ja valgusjuhtimise surmatäht
Vaarika PI kaamera ja valgusjuhtimise surmatäht
Vaarika PI kaamera ja valgusjuhtimise surmatäht
Vaarika PI kaamera ja valgusjuhtimise surmatäht
Vaarika PI kaamera ja valgusjuhtimise surmatäht
Vaarika PI kaamera ja valgusjuhtimise surmatäht

Nagu alati, soovin ehitada seadmeid, mis on kasulikud, töötavad kindlalt ja on sageli isegi täiustused võrreldes praeguste riiulilahendustega.

Siin on veel üks suurepärane projekt, algselt nimega Shadow 0f Phoenix, vaarika PI -kilp koos Arduino -põhise liikumistuvastuse ja valguse juhtimisega.

Samm: kaubanduslike IP -kaamerate seisund

Kaubanduslike IP -kaamerate olukord
Kaubanduslike IP -kaamerate olukord
Kaubanduslike IP -kaamerate olukord
Kaubanduslike IP -kaamerate olukord
Kaubanduslike IP -kaamerate olukord
Kaubanduslike IP -kaamerate olukord

Lisaks sellele, et oma kaamera/valvesüsteemi ehitamine on lahedam, vaatame, miks see on riiulilt parem lahendus.

Võrdlen seda NEO COOLCAM Full HD 1080P juhtmevaba IP -kaamera seeriaga, kuna mulle on kuulunud palju neid erinevaid neo coolcams (ONVIF) kaamerate mudeleid. Neid on erineva kuju ja suurusega, väljas ja siseruumides, enamikul neist on sisseehitatud WiFi -tugi, kuid vaatame nende hoiatusi:

  • Hiina tootjad, kes neid kaameraid müüvad, valetavad peaaegu alati sisseehitatud pildianduri eraldusvõime üle, kui ostate Ebayst 5MP/8MP kaamera, võite saada odava 2MP kaamera, millel on halb pilt (see töötab, kuid kvaliteet on prügi). Kui ostate 8MP Raspberry PI v2 kaamera algselt jaemüüjalt, saate selle, mille eest maksite, ja tegeliku 8MP sensori eraldusvõimega 3280 × 2464 pikslit =>
  • Turvalisuse seisukohast on need kaamerad (isegi kallimad Dlink ja muud mudelid) kohutavad, nad kasutavad vaikimisi paroole (nt 123456) või sisseehitatud kasutajaid, nagu administraator/administraator/operaator, mida te ei saa isegi muuta või muutus on pärast taaskäivitamist kadunud. Lisaks saate paljude nende kaameratega koju helistada (ühendage oma serveritega Hiinas, mõned voogesitavad isegi videoid/pilte tagasi, ilma et peaksite seda hõlbustama juhuks, kui otsustate oma Androidi/iPhone'i rakenduse ühel päeval installida Kodu). Isegi kui panete need seadmed ruuteri taha, pole see lihtsalt piisavalt hea, parim on see, kui te ei sea nendesse vaikelüüsi, tulemüüri või panete need VLAN -i, et nende väljumine oleks võimatu Internet või isegi parem: ärge kasutage neid üldse.
  • Kas nad on usaldusväärsemad? ei, paljudel isegi kallimatel DLINK -idel on võimalus kaamera iga päev/kord nädalas taaskäivitada jne. See valik on põhjustatud, sest pärast X päeva kaotavad nad sageli WiFi -ühenduse või käituvad muul viisil halvasti. Mõelge neile kui vanadest headest Win95 kastidest, mis tuli sagedamini taaskäivitada:) Ma ei ütle, et Raspi -põhine riistvara oleks nii kivikindel, et saaksite need juhtida tuumaelektrijaamadeks, kuid korraliku riistvara/tarkvaraga konfiguratsiooni, jahutusradiaatorite, automaatsete jahutusventilaatorite ja minimeeritud RW -tööga SDCARD -il võivad need hõlpsalt ületada 100 -päevase tööaja ilma probleemideta. Kirjutamise ajal on minu DeathStar jooksnud alates 34 päevast, olnud üle 100, kuid mõnikord häkkisin toiteallika voogu, mis toidab mõnda muud minu vooluahelat, nii et pidin selle välja lülitama:(
  • Sihtotstarbeline riistvara: need on valmistatud üheks konkreetseks otstarbeks, sageli on neil väike nvram -ala ja bussikast, kuid mõned mudelid muudavad selle kestale juurdepääsu ka võimatuks, nii et saate neid kasutada ainult selleks, milleks nad on mõeldud kasutage oma Raspi -põhist kaamerat muudeks ülesanneteks: failiserver, tftp/dhcp -server, veebiserver, maavärinaserver … valikud on piiramatud.
  • Salvestusruum: neil kas pole ühtegi või nad kasutavad vaarikapisil FAT32 -failisüsteemiga VS microsd -kaarte. Soovi korral saate lisada isegi 2 TB kõvaketta.
  • Tulede juhtimine: mõnel on ALARM -väljund, kus võib olla võimalik ühendada väike relee tulede käivitamiseks. Nagu ma selles õpetuses teile näitan, on infrapunakaamerate kasutamine täielik ajaraisk, kuna halva kvaliteedi tõttu ei saa te IR -piltidel kedagi tuvastada. Kui teil on vaja videot pimedas salvestada, on parim viis seda teha, lülitades esmalt sisse valguse ja seejärel video.

Nii et võite küsida, kas on olemas riiulist kaamera kasutamise PRO -sid? Jah ettevõtetele, kelle tööaeg selle seadistamiseks oleks kulukam kui vaarikapisidega nokitsemine (minu jaoks igatahes mitte:)) ja jah, seal on tipptasemel kaamerad (500 dollarit+ parema eraldusvõimega kui pi kaamera muidugi). Teise eelisena võiksin öelda, et ONVIF standardit järgivad kaamerad hõlbustasid tsentraliseeritud varustamist. See pakub standardset liidest, mida saab kasutada kaamerale käskluste saatmiseks, et määrata selle IP/võrgumask/lüüs ja muud asjad. Selleks saate alla laadida Onvifi seadmehalduri Sourceforge'ist. Paljudel nendel seadmetel on rikutud katkised veebi esipaneelid, kus näiteks ei luba teil ip -i või võrgumaski õigesti seadistada, kuna neid välju kinnitav javascript töötab valesti ja ainus viis nende parameetrite õigeks määramiseks on ONVIF.

2. samm: Surmatähe plaanid

Surmatähe plaanid
Surmatähe plaanid
Surmatähe plaanid
Surmatähe plaanid
Surmatähe plaanid
Surmatähe plaanid

Saate selle seadme ehitada mis tahes Raspberry PI -ga alates 1 kuni 3B+. Isegi nullil on kaamerapordid, kuid kuna turul on nii palju erinevaid kasutatud raspisid, võite küsida, milline on selle ehituse jaoks kõige ideaalsem.

Vastus sõltub sellest, kus soovite videovoogu töödelda.

Valikuid on kaks:

1, töödelge videoid kohapeal liikumisega ja edastage videovoogu, kui liikumist tuvastatakse (märkus: liikumine edastab aeglase püsivoo serverisse, olenemata sellest, see võib sõltuda kasutatavast eraldusvõimest ja kaadrisagedusest sada megabaiti kuni mitu gigabaiti päevas, lihtsalt meeldetuletus, kui soovite seadistada mõõdetud ühendust). Siin on protsessor oluline ja kahjuks ei kasuta liikumine (kirjutamise ajal) mitut südamikku, kuid OS püüab koormust veidi tasakaalustada. Teil on alati üks tuumadest 100% kasutamisel.

2, töödelge videoid keskserveris: siin edastate lihtsalt toore video voo kaamerast välisele voogesitusseadmele (nt iSpy, mis töötab x86 arvutis või MotionEyeOS, mis töötab mõnel muul miniarvutil). Kuna kohalikku töötlemist ei toimu, pole teie kasutataval PI -mudelil mingit tähtsust, saadab PI1 sama voo kui PI3B+.

Selles õpetuses lähen esimese valikuga.

Rusikareegel on see, et mida kiiremini protsessori liikuma panete, seda paremaid tulemusi saate. Näiteks minu Raspi 2 -põhine kaamera koridori vaadates ei võtnud seda mõnikord üles, kui keegi läks kiiresti mööda ja salvestamise ajal oli loide aeglane, langedes palju kaadreid võrreldes mudeliga 3. Mudelil 3 on ka 802.11 abgn wifi, mis on mugavam kvaliteetsema video voogesitamiseks, see töötab karbist välja ja on üsna usaldusväärne. Kirjutamise ajal, et mudel 3B+ on väljas, soovitaksin selle hankida 1,4 GHz neljatuumalise protsessoriga.

Materjalide loetelu

  • 30 cm plastikust DeathStar:)
  • Vaarika Pi 3 B+
  • PiCam v2 (8MP)
  • Arduino Pro Micro 5.5v
  • 2x SIP-1A05 Reed lüliti relee
  • 1x PCS HC-SR501 IR püroelektriline infrapuna IR PIR liikumisanduri detektor
  • 1x 10kohm takisti LDR jaoks
  • 1x LDR
  • 1x12V 4A alalisvooluadapter
  • 1x soe valge LED 5050 SMD paindlik valguslamp 12V DC
  • 1xBuck pingeregulaator

Nagu skeemidel näha, oli see projekt algselt mõeldud ühe relee juhtimiseks ühe releega, sest ma ei plaaninud lisada sisemist valgustust (mis on üsna lahe), nii et ma ühendasin Arduinoga lihtsalt teise relee. SIP-1A05 suurepärane asi on see, et sellel on sisemine tagasivoolu diood ja tarbimine mA-s on Arduino võimsuse piirangu kohta.

Põhjus, miks PIR on piltidel kilbil, sest alguses plaaniti S0P panna DeathStar'i asemel lihtsasse IP -plastkasti. Nagu arvata võis, oli kaamera otse laserpüstolis, vajasid PIR ja LDR uusi puuritud auke ja need on liimitud, kuna ma ei plaani neid eemaldada.

DeathStar'i põhja puuriti auk, kuhu liimisin tugeva kahekomponendilise liimiga suure poldi. Selle saab kruvida Neo Coolcamsi algsesse alusse (see oli millekski hea:)). Täiendava toe jaoks kasutasin kõva vasktraati, et hoida tähe ülaosas.

Oluline märkus toiteallika kohta: kuna sama toide toidab nii PI, Arduino kui ka LED -riba, peab see olema piisavalt tugev, et neid kõiki käsitseda, nii et see põhineb projekti jaoks valitud LED -ribal. Kaubanduslik 5050 12v 3 -meetrine LED -riba voolab umbes 2A, see on palju. PI ja Arduino jaoks peate arvutama +2A (kuigi see on liiga suur, ei tee see haiget). Kui kasutate LED -riba tavaliste halogeenpirnide, neoon- või muu suure võimsusega valgustite kohal, saate kogu selle vooluringi varuks kena 12 V@10 Ah pliiakule panna, nii et see töötab isegi voolukatkestuse korral.

Buck vähendab Arduino ja PI toiteallika pinget 12-> 5V-lt, samal ajal kui 12V otsene toide on releega ühendatud, et LED-riba sisse lülitada.

Samm: tarkvara Arduino

Tarkvara Arduino
Tarkvara Arduino

Allpool leiate täieliku lähtekoodi, mida on hästi kommenteeritud, kuid siin on lühike selgitus selle toimimise kohta: Iga tsükli alguses kutsutakse tavaline xcomm () funktsioon, et näha, kas Raspberry PI käsk on võib olla LIGHT_ON/OFF, et koridori tuled sisse lülitada või DS_ON/OFF, et DeathStar taustvalgus sisse/välja lülitada, olen need kasutusele võtnud ainult täiuslikkuse huvides, sest kui keegi möödub PIR -ist, peaks selle üles võtma ja sisse lülitama tuled, kuid võib -olla soovite mingil põhjusel seda kohta vaadata isegi siis, kui kedagi pole.

Pärast seda loetakse fotoelemendi väärtus sisse ja kontrollitakse liikumisnõela liikumist. Kui liikumine toimub, kontrollib kood, kas see on piisavalt tume, siis kontrollib, kas me pole ootel. Kui see kõik möödub, lülitab see lihtsalt koridori valguse sisse ja saadab PHOENIX_MOTION_DETECTED tagasi Raspberry PI -le. Kui see pole piisavalt tume, annab see siiski arvutisse tagasi, kuid ei lülita valgust sisse. Kui liikumine on tuvastatud, käivitatakse 5 -minutiline ooteaeg.

Kohe pärast seda kontrollib järgmine koodiosa, kas oleme ootel (mis peaks juhtuma, kui oli just liikumissündmus, nii et oletame, et see 5 minutit möödus, et see kontroll kinnitada). Kood kontrollib, kas on jälle liikumist, kui mitte, lülitage tuled välja. Nagu näete, kui liikumist pole, kordub see funktsioon ikka ja jälle, proovige tuled välja lülitada, nii et arvutile ei anta tagasisidet.

Meil on DeathStar'i sisevalgustuse jaoks veel üks taimer, mis sõltub täielikult fotoelemendistReading <dark_limit.

Kuigi kaks rutiini ei tea üksteisest, töötavad nad ideaalselt koos, sest kui koridori tuli süttib, annab see nii palju valgust, et LDR arvab, et on taas päev ja lülitab sisevalgustuse välja. Selle protsessi kohta oli siiski mõningaid hoiatusi, mida koodis selgitatakse, kui olete huvitatud, kui mitte, siis võtke vastu Nvidia vastus, et "see lihtsalt töötab!".

Samm 4: Tarkvara Raspberry PI

Tarkvara Raspberry PI
Tarkvara Raspberry PI
Tarkvara Raspberry PI
Tarkvara Raspberry PI
Tarkvara Raspberry PI
Tarkvara Raspberry PI

Viimane Raspbian töötab minu jaoks:

Raspbian GNU/Linux 9.4 (veniv)

Linux Phoenix 4.9.35-v7+ #1014 SMP, 30. juuni 14:47:43 BST 2017 armv7l GNU/Linux ii motion 4.0-1 armhf V4L püüdmisprogramm, mis toetab liikumistuvastust

Kuigi saate kasutada ka teisi distrosid, saate kaameraga seotud probleemide korral meeskonnalt tuge ainult siis, kui kasutate nende ametlikku operatsioonisüsteemi. Soovitatav on eemaldada ka soovimatu bloatware, näiteks systemd.

Liikumist saab hõlpsalt luua ka allikast:

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 kloon https://github.com/Motion-Project/motion cd motion/autoreconf -fiv. /configure --prefix =/usr/motion make && make install/usr/motion/bin/motion -v

Soovitan iSpy videosalvesti/koguja serveriks. Kahjuks pole kirjutamise ajal Linuxile häid alternatiive. Kaamerat saab lisada vaikimisi kasutatava MJPEG -i URL -iga https:// CAMERA_IP: 8081.

Liikumiste töötlemine võib olla kasulik, näiteks ei pea te kogu päeva oma iSpy serverit vaatama, vaid saate liikumise korral meili. Kuigi iSpy -l on see funktsioon liikumise korral e -posti teel hoiatamiseks, lülitab see aeg -ajalt sisse salvestamise mitmesuguste sündmuste jaoks, nagu näiteks ala peegeldumine. PIR -liikumistuvastusega ei olnud mul kunagi ühtegi valehäiret. Hoiatusi saab töödelda kohapeal:

Anduril tuvastati Pir liikumise sündmus> Arduino märguanne> Raspberry pi saab konsoolilt> C töötlemisprogramm> Välise posti rakendus

Eelistan siiski nii logide kui ka videote kaugtöötlust, nii et sel juhul olen lisanud C -juhtimisprogrammi jao, samal ajal kui see logib kohapeal lihttekstifaili, logib selle ka syslogisse ja see edastatakse SIEM -i jaoks edasine töötlemine.

tühine logija (sümbol *tekst) {

FILE *f = fopen ("phoenix.log", "a"); if (f == NULL) {printf ("Viga logifaili avamisel! / n"); tagasipöördumine; } fprintf (f, " %s => %s / n", cur_time (0), tekst); fclose (f); #ifdef SYSLOG char loggy [500]; sprintf (logine, " %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, "Programmi käivitas kasutaja %d", getuid ()); syslog (LOG_NOTICE, loggy); sulgemispäevik (); #endif return; }

Vastuvõtvas otsas saab syslog-ng neid sündmusi põhilogivoo kaudu demuxida:

filter f_phx {

vaste ("DeathStar"); }; sihtkoht d_phx {fail ("/var/log/phoenix/deathstar.log"); }; log {allikas (s_net); filter (f_phx); sihtkoht (d_phx); };

ja selle saab analüüsimiseks ja hoiatamiseks edastada teisele tööriistale (motion.php vt lisatud).

Selle skripti abil saate lihtsalt määrata nädala tavapärase aja, kui te pole kodus:

$ opt ['alert_after'] = '09:00:00'; // Hommikud $ opt ['alert_before'] = '17:00:00'; // Õhtud

Programm php kasutab logide parsimiseks suurepärast logtail -utiliiti.

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

Logtail jälgib positsiooni nihkefailis, nii et põhiprogramm ei pea teadma, mis ajast logisid vaatama hakata, see saab uusimaid töötlemata andmeid.

Motion.php -d saab crontabist käivitada väikese nipiga nädalavahetustel, kui see logid läbi käib, kuid ei vaja täiendavat töötlemist.

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

Samm: probleemid ja ülesannete loend

Probleemid ja ülesannete loend
Probleemid ja ülesannete loend
Probleemid ja ülesannete loend
Probleemid ja ülesannete loend

Kui kasutate Raspberry pi 3 või uuemat versiooni, võite selle jaotise vahele jätta, siis tõenäoliselt nende probleemidega enam kokku ei puutu.

Aastate jooksul oli mul probleeme Raspberry pi 2 põhiste tahvlitega, mis võivad käitada sama tarkvara, kuid mis osteti eri aegadel erinevatest kohtadest. Pärast teatud ajavahemikku, mis võib olla 2 päeva või 20 päeva, kui SSH seadmesse sisse lülitab, ripub SSH lihtsalt üles, nii et nii liikumisdemon kui ka kohalik C -kood, mis rääkisid Arduinoga, laaditi mällu, mistõttu seade töötas kuid selles olekus oli võimatu sellega enam midagi teha.

Pärast palju tõrkeotsinguid jõudsin lahenduseni:

homesync.sh

#!/bin/sh -e

### ALUSTA INFO # Pakub: homesync # Nõutav-Start: mountkernfs $ local_fs # Nõutav-Stop: kaamera phoenix # Vaikimisi-Start: S # Vaikepeatus: 0 6 # Lühikirjeldus: Kodu sünkroonija # Kirjeldus: Kodu sünkroonija poolt NLD ### END INIT INFO NAME = home DESC = "Ramdisk Home Synchronizer" RAM = "/home/" DISK = "/realhome/" set -e case "$ 1" in algus | neljas) echo -n "Starting $ DESC: "rsync -az --numeric -ids --delete $ DISK $ RAM &> /dev /null echo" $ NAME. ";; stop | back) echo -n "$ DESC peatamine:" rsync -az --numeric -ids -kustuta $ RAM $ DISK &> /dev /null echo "$ NAME.";; *) kaja "Kasutus: $ 0 {start | stop}" exit 1;; esac väljumine 0

Skript käib koos fstab modifikatsiooniga:

tmpfs /home tmpfs rw, suurus = 80%, nosuid, nodev 0 0

Kodupartitsioon on paigaldatud ramdiskina, mis annaks Raspberry pi 2 -l umbes 600 MB vaba ruumi, mis on enam kui piisav mõne binaarfaili ja väikeste logifailide salvestamiseks:

tmpfs 690M 8,6M 682M 2% /kodu

Selgus, et PI -ripp oli tingitud SD -kaardi kirjutamistoimingutest, kuigi olen proovinud erinevaid kaarte (Samsung EVO, Sandisk), mida enne ja pärast mitu korda vigade suhtes skanniti ning teistes sülearvutites polnud neil probleeme. tulekul. Mul ei olnud sama probleemi (veel) Raspberry PI 3 ja kõrgema riistvaraga, seega soovitan neid ka selles õpetuses.

Kuigi praegune Raspberry PI 3 liikumine on minu jaoks piisavalt hea, on siin mõned ideed, mida tasub uurida:

  1. Ärge kasutage liikumist, vaid kasutage võrgus raspivid voogu ja laske võimsal serveril liikumist tuvastada ja videot kodeerida (nt iSpy). -> Probleem: pidev võrgu ribalaiuse ületamine.
  2. Kasutage liikumist ja laske ffmpegil teha videokodeering. -> Probleem: CPU ei saa kõrgemate eraldusvõimetega hakkama
  3. Kasutage liikumist, salvestage toores video ja laske võimsal serveril kodeering teha. -> CPU kasutamine RPi -l on väike ja võrgu ribalaius on piiratud tegeliku liikumisega. Selle stsenaariumi korral võiksime maksimaalse läbilaskevõime jaoks kirjutada SD-kaardile/ramdiskile ja seejärel kopeerida video teise serverisse.

Samuti märgiksin, et selle projekti ehitamist on võimalik ehitada ilma Arduino'ta. Kõik komponendid (releed, LDR, PIR) võiksid olla mingil moel vaarika pi -ga ühendatud, kuid ma eelistan reaalajas mikrokontrollereid andurite ja väljundseadmetega suhtlemiseks. Juhtudel, kui mu vaarika pi rippus või kukkus kokku, töötas Arduino juhitud valguse juhtimine suurepäraselt.

Kui teile meeldis see juhend, jääge lainel, kuna jätkan järgmisel aastal oma 360 -kraadise vaarika pi nulkupoolkaameraga.

Soovitan: