Obsah:

Raspberry PI kamera a svetlo ovládajúca hviezda smrti: 5 krokov (s obrázkami)
Raspberry PI kamera a svetlo ovládajúca hviezda smrti: 5 krokov (s obrázkami)

Video: Raspberry PI kamera a svetlo ovládajúca hviezda smrti: 5 krokov (s obrázkami)

Video: Raspberry PI kamera a svetlo ovládajúca hviezda smrti: 5 krokov (s obrázkami)
Video: CS50 2015 - Week 5 2024, Júl
Anonim
Raspberry PI kamera a svetelná hviezda Death Star
Raspberry PI kamera a svetelná hviezda Death Star
Raspberry PI kamera a svetelná hviezda Death Star
Raspberry PI kamera a svetelná hviezda Death Star
Raspberry PI kamera a svetelná hviezda Death Star
Raspberry PI kamera a svetelná hviezda Death Star

Ako vždy sa snažím stavať zariadenia, ktoré sú užitočné, fungujú robustne a často sú dokonca vylepšením v porovnaní so súčasnými riešeniami, ktoré nie sú k dispozícii.

Je tu ďalší skvelý projekt, pôvodne pomenovaný Shadow 0f Phoenix, štít Raspberry PI v spojení s detekciou pohybu a ovládaním svetla na báze Arduino.

Krok 1: Stav komerčných IP kamier

Stav komerčných IP kamier
Stav komerčných IP kamier
Stav komerčných IP kamier
Stav komerčných IP kamier
Stav komerčných IP kamier
Stav komerčných IP kamier

Okrem toho, že budovanie vlastného kamerového/monitorovacieho systému je ešte zaujímavejšie, pozrime sa, prečo je to zlepšenie oproti štandardnému riešeniu.

Porovnám to so sériou NEO COOLCAM Full HD 1080P bezdrôtových IP kamier, pretože som vlastnil veľa z týchto rôznych modelov kamier neo coolcams (ONVIF). Prichádzajú v rôznych tvaroch a veľkostiach, vonku aj vnútri, väčšina z nich má vstavanú podporu wifi, ale pozrime sa na ich výhrady:

  • Čínski výrobcovia, ktorí predávajú tieto fotoaparáty, takmer vždy klamú o vstavanom rozlíšení obrazového snímača. Pri kúpe fotoaparátu s rozlíšením 5 MP/8 MP na serveri Ebay môžete skončiť s lacným fotoaparátom s rozlíšením 2 MP so zlým obrazom (funguje to, ale kvalita je odpad). Pri kúpe 8MP kamery Raspberry PI v2 u pôvodného predajcu získate to, za čo ste zaplatili, a skutočný 8MP snímač s rozlíšením 3280 × 2464 pixelov =>
  • Z hľadiska zabezpečenia sú tieto kamery (aj drahšie modely Dlink a ďalšie) hrozné, používajú predvolené heslá, ako napríklad 123456, alebo vstavaných používateľov, ako napríklad admin/admin operátor/operátor, čo možno ani nebudete môcť zmeniť alebo zmena je po reštarte preč. Doplňte to mnohými telefónmi z týchto fotoaparátov domov (pripojte sa k ich serverom v Číne, niektoré dokonca streamujú videá/obrázky bez toho, aby vás o to požiadali, aby ste si to uľahčili v prípade, že sa jedného dňa rozhodnete nainštalovať aplikáciu pre Android/Iphone a skontrolovať svoj Domov). Aj keď umiestnite tieto zariadenia za router, nie je to dosť dobré, najlepšie je, ak v nich nenastavíte predvolenú bránu, nezablokujete ich alebo ich nevložíte do siete VLAN, aby ste im znemožnili ísť von. internet alebo ešte lepšie: vôbec ich nepoužívajte.
  • Sú spoľahlivejšie? nie, veľa z nich, aj drahších DLINKov, má možnosť reštartovať kameru denne/týždenne atď. Táto možnosť tu má svoj dôvod, pretože po X dňoch často strácajú konektivitu Wifi alebo sa správajú iným spôsobom. Považujte ich za staré dobré škatule Win95, ktoré bolo potrebné reštartovať častejšie ako často:) Nehovorím, že hardvér založený na Raspi je taký pevný, že ich môžete zabudovať do riadiacich jadrových elektrární, ale so správnym hardvérom/softvérom. konfigurácia, chladiče, automatické chladiace ventilátory a minimalizovaná prevádzka RW na karte SDCARD môžu bez problémov ľahko dosiahnuť dobu prevádzky viac ako 100 dní. V čase, keď píšem môj DeathStar beží už 34 dní, bolo viac ako 100, ale niekedy som hackoval napájací zdroj, ktorý napája niektoré ďalšie moje obvody, takže som ho musel vypnúť:(
  • Cielený hardvér: sú vyrobené na 1 konkrétny účel, často sa dodávajú s malou oblasťou nvram a busyboxom, ale niektoré modely znemožňujú prístup aj do tohto shellu, takže ich môžete používať iba na to, na čo slúžili, kým môžete používajte svoju kameru založenú na Raspi na akékoľvek iné úlohy: súborový server, server tftp/dhcp, webový server, zemetrasiaci server … možnosti sú neobmedzené.
  • Úložný priestor: buď žiadny nemajú, alebo používajú karty microD so súborovým systémom FAT32 VS na malinový disk, podľa potreby môžete dokonca pripojiť 2 TB pevný disk.
  • Ovládanie svetiel: niektoré majú výstup ALARM, kde by ste mohli pripojiť malé relé na spustenie svetiel. Ako vám ukážem v tomto návode, používanie infračervených kamier je úplná strata času, pretože kvôli zlej kvalite nebudete môcť na infračervených snímkach nikoho identifikovať. Ak potrebujete nahrať video v tme, najlepšie to urobíte tak, že najskôr zapnete svetlo a potom video nahráte.

Mohli by ste sa teda opýtať, či existujú nejakí PRO, ktorí by používali mimopracovnú kameru? Áno pre firmy, kde by pracovný čas na jeho nastavenie bol drahší ako pohrávanie sa s Raspberry Pis (aj tak nie pre mňa:)) a áno, existujú špičkové fotoaparáty (500 $+ s lepším rozlíšením ako pi fotoaparát kurz). Ako ďalšiu výhodu by som mohol povedať, že kamery podľa štandardu ONVIF uľahčujú centralizované poskytovanie. Toto poskytuje štandardné rozhranie, ktoré je možné použiť na odosielanie príkazov do kamery na nastavenie IP/sieťovej masky/brány a ďalších vecí. Na to si môžete stiahnuť správcu zariadenia Onvif z Sourceforge. Mnoho z týchto zariadení má mizerný nefunkčný webový server, kde vám napríklad neumožňuje správne nastaviť IP alebo masku siete, pretože javascript, ktorý tieto polia overuje, nefunguje správne a váš jediný spôsob, ako správne nastaviť tieto parametre, je prostredníctvom ONVIF.

Krok 2: Plány hviezdy smrti

Plány hviezdy smrti
Plány hviezdy smrti
Plány hviezdy smrti
Plány hviezdy smrti
Plány hviezdy smrti
Plány hviezdy smrti

Toto zariadenie môžete postaviť pomocou ktoréhokoľvek z Raspberry PI od 1 do 3 B+. Aj nula má porty pre fotoaparáty, ale keďže je na trhu toľko rôznych použitých Raspisov, možno by vás zaujímalo, čo je pre túto zostavu najideálnejšie.

Odpoveď závisí od toho, kde chcete stream videa spracovať.

Sú dve možnosti:

1, Spracovajte videá lokálne pohybom a v prípade detekcie pohybu presuňte video stream dopredu (poznámka: pohyb presmeruje pomalý konštantný tok na server bez ohľadu na to, čo to môže závisieť od rozlíšenia a frekvencie snímok, ktoré používate, od niekoľkých sto megabajtov až niekoľko gigabajtov denne, len pripomenutie, ak chcete vykonať nastavenie na meranom pripojení). Tu záleží na CPU a bohužiaľ pohyb (v čase písania článku) nevyužíva výhody viacerých jadier, OS sa však pokúsi záťaž mierne vyvážiť. Pri 100% využití budete mať vždy jedno z jadier.

2, Spracujte videá na centrálnom serveri: tu iba presmerujete surový video stream z kamery na externý streamovací server (napríklad iSpy bežiaci na počítači x86 alebo MotionEyeOS bežiaci na inom vyhradenom minipočítači). Pretože lokálne neexistuje spracovanie, na modeli PI, ktorý používate, nezáleží, PI1 pošle rovnaký prúd ako PI3B+.

V tomto návode pôjdem s prvou voľbou.

Platí tu pravidlo, že čím rýchlejšie CPU pohnete pohybom, tým lepšie výsledky dosiahnete. Napríklad moja kamera založená na Raspi 2 pri pohľade na chodbu to niekedy nezachytila, keď niekto išiel rýchlo a keď nahrával, záznam bol spomalený, v porovnaní s modelom 3 padalo veľa snímok. Model 3 má tiež štandard 802.11 abgn wifi, ktorá je praktická na streamovanie videa vo vyššej kvalite, funguje po vybalení z krabice a je celkom spoľahlivá. V čase písania, že model 3B+ je vonku, by som vám len odporučil zaobstarať si to so štvorjadrovým procesorom s frekvenciou 1,4 Ghz.

Zoznam materiálov

  • 30 cm plastová DeathStar:)
  • Raspberry Pi 3 B+
  • PiCam v2 (8MP)
  • Arduino Pro Micro 5,5v
  • 2x jazýčkové relé SIP-1A05
  • 1x Modul PCS HC-SR501 IR pyroelektrický infračervený infračervený PIR detektor pohybu
  • 1x 10kohm odpor pre LDR
  • 1x LDR
  • 1x12V 4A DC adaptér
  • 1x Teplá biela LED 5050 SMD flexibilná svetelná páska 12V DC
  • 1xBuck regulátor napätia

Ako vidíte na schémach, tento projekt bol pôvodne navrhnutý na ovládanie jedného svetla pomocou jedného relé, pretože som neplánoval pridať vnútorné osvetlenie (čo je celkom cool), takže som k Arduinu zapojil druhé relé. Skvelé na SIP-1A05 je, že má vnútornú diódu flyback a spotreba v mA je výrazne pod obmedzením výkonu peru Arduina.

Dôvod, prečo je PIR na štíte na obrázkoch, pretože na začiatku bol S0P plánovaný vložiť do jednoduchého plastového boxu IP namiesto DeathStar. Ako ste mohli uhádnuť, kamera je priamo v laserovej pištoli, PIR a LDR potrebovali ďalšie vyvŕtané otvory a sú lepené, pretože ich neplánujem odstrániť.

V spodnej časti DeathStar bola vyvŕtaná diera, kde som zalepil veľkú skrutku silným dvojzložkovým lepidlom. To sa dá naskrutkovať do originálneho stojana Neo Coolcams (na niečo to predsa bolo dobré:)). Ako ďalšiu podporu používam tvrdé medené drôty, aby držali na vrchole hviezdy.

Dôležitá poznámka k napájaciemu zdroju: Pretože ten istý zdroj napája PI, Arduino aj LED pás, musí byť dostatočne silný, aby ich zvládol všetky, takže bude vychádzať z LED pásika, ktoré si vyberiete pre projekt. Komerčný 5050 12v 3metrový LED pásik vybíja okolo 2A, to je veľa. Pre PI a Arduino musíte počítať v +2A (aj keď je to príliš veľké, nezaškodí to). Použitie LED pásika na štandardné halogénové žiarovky, neónové alebo iné vysokovýkonné osvetlenie znamená, že celý tento obvod môžete dať na záložnú olovenú batériu 12V@10 Ah, takže bude fungovať aj v prípade výpadku prúdu.

Buck zníži napätie z 12-> 5 V na napájanie Arduina a PI, zatiaľ čo na relé je zapojené priame napájanie 12 V, aby sa zapol LED pás.

Krok 3: Softvér Arduino

Softvér Arduino
Softvér Arduino

Nižšie nájdete kompletný zdrojový kód, ktorý je dobre komentovaný, ale tu je stručné vysvetlenie, ako funguje: Na začiatku každej slučky sa volá obvyklá funkcia xcomm (), aby sa zistilo, či z príkazu Raspberry PI pochádza príkaz, ktorý môže byť LIGHT_ON/OFF na zapnutie/vypnutie chodbových svetiel alebo DS_ON/OFF na zapnutie/vypnutie podsvietenia DeathStar, implementoval som ich len kvôli dokonalosti, pretože ak niekto prejde okolo PIR, mal by ho zdvihnúť a zapnúť svetlá, ale možno sa na to miesto chcete pozrieť z nejakého dôvodu, aj keď tam nikto nie je.

Potom sa načíta hodnota fotobunky a pohybový kolík sa skontroluje na pohyb. Ak je pohyb, kód skontroluje, či je dostatočne tmavý, potom skontroluje, či nie sme podržaní. Ak to všetko prejde, potom jednoducho zapne svetlo chodby a odošle späť PHOENIX_MOTION_DETECTED na Raspberry PI, ak nie je dostatočne tmavý, stále signalizuje späť do počítača, ale svetlo nezapne. Akonáhle je detekovaný pohyb, spustí sa 5 -minútový časovač podržania.

Hneď potom sa v ďalšej sekcii kódu skontroluje, či nie sme podržaní (čo by malo platiť v prípade, že došlo iba k pohybovej udalosti, predpokladajme teda, že uplynulo 5 minút, aby sa táto kontrola mohla potvrdiť). Kód skontroluje, či je opäť pohyb, ak nie, vypnite svetlá. Ako vidíte, ak nie je žiadny pohyb, táto funkcia sa bude sama opakovať znova a znova, pokúste sa vypnúť svetlá, aby počítač nemal spätnú väzbu.

Máme ďalší časovač pozastavenia vnútorného osvetlenia DeathStar, ktorý závisí výlučne od čítania fotobunky <Dark_limit.

Napriek tomu, že tieto dve rutiny nevedia jedna o druhej, budú spolu fungovať perfektne, pretože keď sa rozsvieti svetlo na chodbe, poskytne toľko svetla, že si LDR bude myslieť, že je opäť deň a vypne vnútorné osvetlenie. O tomto procese však bolo niekoľko výhrad, ktoré sú v kóde vysvetlené, ak vás to zaujíma, ak nie, vezmite odpoveď spoločnosti Nvidia, že „to jednoducho funguje!“.

Krok 4: Softvér Raspberry PI

Softvér Raspberry PI
Softvér Raspberry PI
Softvér Raspberry PI
Softvér Raspberry PI
Softvér Raspberry PI
Softvér Raspberry PI

Najnovší Raspbian funguje pre mňa:

Raspbian GNU/Linux 9.4 (úsek)

Linux Phoenix 4.9.35-v7+ #1014 SMP Pi 30. júna 14:47:43 BST 2017 armv7l GNU/Linux ii motion 4.0-1 armhf V4L capture program podporujúci detekciu pohybu

Aj keď môžete použiť iné distribúcie, v prípade problémov s kamerou získate podporu tímu iba vtedy, ak používate ich oficiálny operačný systém. Dôrazne sa odporúča aj odstránenie nežiaduceho bloatwaru, ako je systemd.

Pohyb je možné tiež ľahko vytvoriť zo zdroja:

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

Ako server videorekordéra/zberača odporúčam server iSpy. V čase písania článku bohužiaľ neexistujú dobré alternatívy pre Linux. Kameru je možné pridať s predvoleným portom MJPEG URL https:// CAMERA_IP: 8081.

Spracovanie pohybu môže byť užitočné, napríklad sa nemusíte celý deň pozerať na svoj server iSpy, v prípade pohybu môžete dostať e -mail. Napriek tomu, že iSpy má túto funkciu na upozornenie v e -maile v prípade pohybu, čas od času zapne nahrávanie pre rôzne udalosti, ako keď sa do tejto oblasti odráža určité svetlo. S detekciou pohybu PIR som nikdy nemal jediný falošný poplach. Výstrahy je možné spracovať lokálne:

Na senzore bola detekovaná udalosť pohybu PIR> Upozornenie Arduino> Raspberry pi prijíma na konzolu> Program na spracovanie C> Externá poštová aplikácia

Dávam však prednosť spracovaniu protokolov a videí na diaľku, takže v tomto prípade som pridal časť do riadiaceho programu C, zatiaľ čo lokálne protokoly protokoly ukladajú do súboru vo formáte obyčajného textu, zaznamenávajú ich aj do syslogu a ten sa odosiela do systému SIEM pre ďalšie spracovanie.

neplatný záznamník (znak *text) {

SÚBOR *f = fopen ("phoenix.log", "a"); if (f == NULL) {printf ("Chyba pri otváraní súboru denníka! / n"); návrat; } fprintf (f, " %s => %s / n", aktuálny čas (0), text); fclose (f); #ifdef SYSLOG char loggy [500]; sprintf (loggy, " %s => %s / n", cur_time (0), text); setlogmask (LOG_UPTO (LOG_NOTICE)); openlog ("DeathStar", LOG_CONS | LOG_PID | LOG_NDELAY, LOG_USER); // syslog (LOG_NOTICE, "Program spustil používateľ %d", getuid ()); syslog (LOG_NOTICE, log) closelog (); #endif návrat; }

Na prijímajúcom konci môže syslog-ng demuxovať tieto udalosti z hlavného toku protokolov:

filter f_phx {

zápas („DeathStar“); }; cieľový d_phx {súbor ("/var/log/phoenix/deathstar.log"); }; log {zdroj (s_net); filter (f_phx); destinácia (d_phx); };

a môže byť odovzdaný inému nástroju (motion.php, pozri priložený) na analýzu a varovanie.

V tomto skripte môžete jednoducho nastaviť obvyklý čas v týždni, keď nie ste doma:

$ opt ['alert_after'] = '09:00:00'; // Ráno $ opt ['alert_before'] = '17:00:00'; // Večery

Program php používa na analyzovanie protokolov vynikajúci nástroj logtail.

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

Logtail sleduje polohu v ofsetovom súbore, takže hlavný program nemusí vedieť, od ktorého času sa má začať pozerať na protokoly, budú mu poskytnuté najnovšie nespracované údaje.

Motion.php je možné spustiť z programu crontab pomocou malého triku na víkendy, kedy bude prechádzať protokolmi, ale už žiadne ďalšie spracovanie.

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

Krok 5: Problémy a zoznam úloh

Zoznam problémov a zoznam úloh
Zoznam problémov a zoznam úloh
Zoznam problémov a zoznam úloh
Zoznam problémov a zoznam úloh

Ak používate Raspberry pi 3 alebo novší, môžete túto časť preskočiť, s najväčšou pravdepodobnosťou sa s týmito problémami už nestretnete.

V priebehu rokov som mal problémy s doskami založenými na Raspberry pi 2, ktoré mohli používať rovnaký balík softvéru, ale boli zakúpené v rôznych časoch z rôznych miest. Po určitom časovom období, ktoré môže byť 2 dni alebo 20 dní, keď sa SSH nachádza v zariadení, SSH len visí, takže démon pohybu a miestny kód C, ktorý hovoril s Arduinom, boli načítané do pamäte RAM, takže zariadenie fungovalo. ale v tomto stave sa s tým už nedalo robiť nič iné.

Po mnohých problémoch som prišiel s riešením:

homesync.sh

#!/bin/sh -e

### BEGIN INIT INFO # Poskytuje: homesync # Required-Start: mountkernfs $ local_fs # Required-Stop: camera phoenix # Default-Start: S # Default-Stop: 0 6 # Short-Description: Home synchronizer # Description: Home synchronizer od 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 --deete $ DISK $ RAM &> /dev /null echo" $ NAME. ";; stop | späť) echo -n "Zastavenie $ DESC:" rsync -az --numeric -ids -vymazanie $ RAM $ DISK &> /dev /null echo "$ NAME.";; *) echo „Použitie: $ 0 {start | stop}“exit 1;; esac exit 0

Skript je spojený s úpravou fstab:

tmpfs /domáce tmpfs rw, veľkosť = 80%, nosuid, nodev 0 0

Domáci oddiel je namontovaný ako ramdisk, čo poskytne na Raspberry pi 2 približne 600 MB voľného miesta, čo je viac ako dosť na uloženie niektorých binárnych súborov a malých protokolových súborov:

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

Ukázalo sa, že zablokovanie PI bolo pripísané operáciám zápisu na kartu SD, aj keď som vyskúšal rôzne karty (Samsung EVO, Sandisk), ktoré boli skenované na chyby viackrát pred a po a nemali problém v iných prenosných počítačoch. prichádza. S Raspberry PI 3s a vyšším hardvérom som ešte nemal (zatiaľ) rovnaký problém, a preto ich aj v tomto návode odporúčam.

Aj keď je súčasný pohyb na Raspberry PI 3 pre mňa dosť dobrý, tu je niekoľko nápadov, ktoré stojí za to preskúmať:

  1. Nepoužívajte pohyb, ale používajte rozsiahly stream v sieti a nechajte výkonný server vykonať detekciu pohybu a kódovanie videa (napr. ISpy). -> Problém: preťaženie konštantnej šírky pásma siete.
  2. Použite pohyb a nechajte kódovanie videa na ffmpeg. -> Problém: CPU nezvláda vyššie rozlíšenia
  3. Používajte pohyb, zaznamenávajte surové video a kódovanie nechajte na výkonnom serveri. -> Využitie CPU na RPi je nízke a sieťové pásmo je obmedzené iba na skutočný pohyb. V tomto prípade by sme mohli zapísať na SD kartu/ramdisk s maximálnou priepustnosťou a potom crontab skopírovať video na iný server.

Tiež by som poznamenal, že stavbu tohto projektu je možné postaviť bez Arduina. Všetky komponenty (relé, LDR, PIR) mohli byť nejakým spôsobom pripojené k Raspberry Pi, ale dávam prednosť mikrokontrolérom v reálnom čase na interakciu so snímačmi a výstupnými zariadeniami. V prípadoch, keď môj malinový pi napríklad visel alebo havaroval, ovládanie svetla spustené Arduinom fungovalo dobre.

Ak sa vám tento návod páčil, zostaňte naladení, pretože budúci rok budem v sérii pokračovať s mojou 360 -stupňovou vonkajšou malinovou pi nulovou kupolovou kamerou.

Odporúča: