Obsah:

Raspberry PI Camera and Light Control Death Star: 5 Steps (with Pictures)
Raspberry PI Camera and Light Control Death Star: 5 Steps (with Pictures)

Video: Raspberry PI Camera and Light Control Death Star: 5 Steps (with Pictures)

Video: Raspberry PI Camera and Light Control Death Star: 5 Steps (with Pictures)
Video: Engineer Explains: Raspberry Pi is FINALLY Dead, Here's Why 2024, Červenec
Anonim
Raspberry PI Camera and Light Control Death Star
Raspberry PI Camera and Light Control Death Star
Raspberry PI Camera and Light Control Death Star
Raspberry PI Camera and Light Control Death Star
Raspberry PI Camera and Light Control Death Star
Raspberry PI Camera and Light Control Death Star

Jako vždy se snažím stavět zařízení, která jsou užitečná, fungují robustně a často jsou dokonce vylepšeními ve srovnání se současnými řešeními mimo regály.

Zde je další skvělý projekt, původně pojmenovaný Shadow 0f Phoenix, štít Raspberry PI ve spojení s detekcí pohybu založenou na Arduinu a ovládáním světla.

Krok 1: Stav komerčních IP kamer

Stav komerčních IP kamer
Stav komerčních IP kamer
Stav komerčních IP kamer
Stav komerčních IP kamer
Stav komerčních IP kamer
Stav komerčních IP kamer

Kromě toho, že budování vlastního kamerového/sledovacího systému je více cool, podívejme se, proč je to vylepšení oproti běžnému řešení.

Porovnám to s řadou bezdrátových IP kamer NEO COOLCAM Full HD 1080P, protože jsem vlastnil spoustu těchto různých modelů kamer neo coolcams (ONVIF). Přicházejí v různých tvarech a velikostech, venku i uvnitř, většina z nich má zabudovanou podporu wifi, ale podívejme se na jejich upozornění:

  • Čínští výrobci, kteří tyto fotoaparáty prodávají, téměř vždy lžou o vestavěném rozlišení obrazového snímače, když si na Ebay koupíte fotoaparát 5MP/8MP, můžete skončit s levným 2MP fotoaparátem se špatným obrazem (funguje, ale kvalita je odpad). Když si koupíte 8MP kameru Raspberry PI v2 u původního prodejce, získáte to, za co jste zaplatili, a skutečný 8MP snímač s rozlišením 3280 × 2464 pixelů =>
  • Z hlediska zabezpečení jsou tyto kamery (i dražší Dlink a další modely) příšerné, používají výchozí hesla, jako je 123456, nebo vestavěná zařízení, jako je admin/admin operátor/operátor, co možná ani nebudete moci změnit, nebo změna je po restartu pryč. Doplňte to mnoha z těchto fotoaparátů telefonem domů (připojte se k jejich serverům v Číně, některé dokonce streamují zpět video/obrázky, aniž by vás požádaly, aby to bylo snazší v případě, že se jednoho dne rozhodnete nainstalovat jejich aplikaci pro Android/Iphone a zkontrolovat Domov). I když dáte tato zařízení za router, prostě to není dost dobré, nejlepší je, když v nich nenastavíte výchozí bránu, nevypálíte je firewallem nebo je nevložíte do sítě VLAN, abyste jim znemožnili jít ven. internet nebo ještě lépe: vůbec je nepoužívejte.
  • Jsou spolehlivější? ne, mnoho z nich i dražších DLINKů má možnost restartovat kameru denně/týdně atd. Tato možnost tu má svůj důvod, protože po X dnech často ztrácejí připojení Wifi nebo se chovají jiným způsobem. Jen si je představte jako staré dobré krabice Win95, které bylo potřeba restartovat častěji než ne:) Neříkám, že hardware založený na Raspi je tak skálopevný, že je můžete zabudovat do řízení jaderných elektráren, ale se správným hardwarem/softwarem konfigurace, chladiče, automatické chladicí ventilátory a minimalizovaný provoz RW na kartě SDCARD mohou bez problémů snadno zasáhnout více než 100 dní provozu. V době, kdy jsem psal, můj DeathStar běžel od 34 dnů, přes 100, ale někdy jsem hackoval zdroj v napájecím zdroji, který napájí některé z mých obvodů, takže jsem ho musel vypnout:(
  • Cílený hardware: jsou vyrobeny pro 1 konkrétní účel, často přicházejí s malou oblastí nvram a busyboxem, ale některé modely také znemožňují přístup k tomuto shellu, takže vše, k čemu je můžete použít, je to, k čemu měly být použity, zatímco vy můžete použijte kameru založenou na Raspi k jakýmkoli dalším úkolům: souborový server, tftp/dhcp server, webový server, zemětřesení … možnosti jsou neomezené.
  • Úložný prostor: buď nemají žádný, nebo používají karty microsd se souborovým systémem FAT32 VS na Raspberry Pis, můžete dokonce připojit 2 TB pevný disk, pokud chcete.
  • Ovládání světel: některé mají výstup ALARM, kde byste mohli připojit malé relé, aby se aktivovala světla. Jak vám ukážu v tomto tutoriálu, používání infračervených kamer je úplná ztráta času, protože kvůli špatné kvalitě nebudete moci na infračervených obrázcích nikoho identifikovat. Pokud potřebujete nahrávat video ve tmě, nejlepší způsob je zapnout nejprve světlo a poté video nahrát.

Můžete se tedy zeptat, zda existují nějaké PRO, které by používaly off -shelf kameru? Ano pro podniky, kde by pracovní doba na nastavení byla dražší než pohrávání si s Raspberry pis (stejně pro mě ne:)) a ano, existují špičkové fotoaparáty (500 $+ s lepším rozlišením než pi kamera kurs). Jako další výhodu bych mohl říci, že kamery podle standardu ONVIF usnadnily centralizované zřizování. Toto poskytuje standardní rozhraní, které lze použít k odesílání příkazů do kamery pro nastavení IP/síťové masky/brány a dalších věcí. K tomu si můžete stáhnout správce zařízení Onvif ze Sourceforge. Mnoho z těchto zařízení má mizerný nefunkční webový frontend, kde vám například neumožňuje správně nastavit IP nebo síťovou masku, protože javascript, který tato pole ověřuje, nefunguje správně a váš jediný způsob, jak správně nastavit tyto parametry, je prostřednictvím ONVIF.

Krok 2: Plány hvězdy smrti

Plány Hvězdy smrti
Plány Hvězdy smrti
Plány Hvězdy smrti
Plány Hvězdy smrti
Plány Hvězdy smrti
Plány Hvězdy smrti

Toto zařízení můžete postavit s kterýmkoli Raspberry PI od 1 do 3B+. I nula má porty pro fotoaparáty, ale jelikož je na trhu tolik různých použitých raspisů, možná si říkáte, který je pro tuto stavbu nejideálnější.

Odpověď závisí na tom, kde chcete stream videa zpracovat.

Jsou dvě možnosti:

1, Zpracovávejte videa lokálně pohybem a předávejte video stream, když je detekován pohyb (poznámka: pohyb přesměruje pomalý konstantní stream na server bez ohledu na to, může to záviset na rozlišení a snímkových frekvencích, které používáte, od několika sto megabajtů až několik gigabajtů denně, jen připomenutí, pokud chcete provést nastavení na měřeném připojení). Zde záleží na CPU a bohužel pohyb (v době psaní) nevyužívá výhod více jader, nicméně OS se pokusí zátěž mírně vyvážit. Při 100% využití budete mít vždy jedno z jader.

2, Zpracujte videa na centrálním serveru: zde jen přeposíláte surový video stream z kamery na externí streamovací server (jako iSpy běžící na počítači x86 nebo MotionEyeOS běžící na jiném vyhrazeném minipočítači). Protože neexistuje lokální zpracování, na modelu PI, který používáte, nezáleží, PI1 odešle stejný proud jako PI3B+.

V tomto tutoriálu půjdu s první volbou.

Platí zde pravidlo, že čím rychlejší CPU vrhnete do pohybu, tím lepších výsledků dosáhnete. Například moje kamera založená na Raspi 2, která se dívala na chodbu, ji někdy nezachytila, když někdo šel rychle a když nahrával, záznam byl pomalý a ve srovnání s modelem 3 upustil spoustu snímků. Model 3 má také 802.11 abgn wifi, která se hodí, aby mohla streamovat video ve vyšší kvalitě, funguje po vybalení z krabice a je docela spolehlivá. V době psaní, že model 3B+ je venku, bych jen doporučil, abyste to získali s procesorem Quad Core 1,4 GHz.

Seznam materiálů

  • 30 cm plastová DeathStar:)
  • Raspberry Pi 3 B+
  • PiCam v2 (8MP)
  • Arduino Pro Micro 5,5v
  • 2x reléové relé SIP-1A05
  • 1x PCS HC-SR501 IR pyroelektrický infračervený infračervený infračervený PIR detektor pohybu modul
  • 1x 10kohm odpor pro LDR
  • 1x LDR
  • 1x12V 4A DC adaptér
  • 1x Teplá bílá LED 5050 SMD Flexibilní světelná lišta 12V DC
  • 1xBuck regulátor napětí

Jak vidíte na schématech, tento projekt byl původně navržen tak, aby ovládal jedno světlo pomocí jednoho relé, protože jsem neplánoval přidání vnitřního osvětlení (což je docela skvělé), takže jsem k Arduinu připojil druhé relé. Skvělá věc na SIP-1A05 je, že má interní diodu flyback a spotřeba v mA je výrazně pod omezením výkonu Arduino na pin.

Důvod, proč je PIR na štítu na obrázcích, protože na začátku byl plánován S0P, který bude umístěn do jednoduchého plastového boxu IP místo DeathStar. Jak jste asi uhodli, kamera je přímo v laserové pistoli, PIR a LDR potřebovaly další vyvrtané otvory a jsou lepené, protože je neplánuji odstraňovat.

Ve spodní části DeathStar byla vyvrtána díra, kde jsem slepil velký šroub silným 2 složkovým lepidlem. To lze našroubovat do původního stojanu Neo Coolcams (k něčemu to přeci jen bylo dobré:)). Pro další podporu jsem použil tvrdé měděné dráty, abych držel na vrcholu hvězdy.

Důležitá poznámka k napájecímu zdroji: protože stejný zdroj bude napájet PI, Arduino i LED pásek, musí být dostatečně silný, aby je zvládl všechny, takže bude vycházet z LED pásku, který pro projekt zvolíte. Komerční 5050 12v 3metrový LED pásek vybíjí kolem 2A, to je hodně. Pro PI a Arduino musíte počítat v +2A (i když je to nadměrné, nebude to bolet). Pomocí LED pásku přes standardní halogenové žárovky, neonové nebo jiné vysoce výkonné osvětlení můžete celý tento obvod dát na záložní olověnou baterii 12V@10 Ah, takže bude fungovat i v případě výpadku proudu.

Buck sníží napětí z 12-> 5V pro napájení Arduina a PI, zatímco přímé reléové napájení je připojeno k relé, aby se zapnul LED pás.

Krok 3: Software Arduino

Software Arduino
Software Arduino

Níže najdete úplný zdrojový kód, který je dobře komentovaný, ale zde je stručné vysvětlení, jak to funguje: Na začátku každé smyčky je volána obvyklá funkce xcomm (), aby se zjistilo, zda z Raspberry PI pochází příkaz, který lze LIGHT_ON/OFF zapnout/vypnout osvětlení chodby nebo DS_ON/OFF zapnout/vypnout podsvícení DeathStar, implementoval jsem je jen kvůli nadměrné dokonalosti, protože pokud někdo projde kolem PIR, měl by to zvednout a zapnout světla, ale možná se na to místo chcete podívat z nějakého důvodu, i když tam nikdo není.

Poté se načte hodnota fotobuňky a pohybový kolík se zkontroluje na pohyb. Pokud existuje pohyb, kód zkontroluje, zda je dostatečně tmavý, pak zkontroluje, zda nejsme pozastaveni. Pokud to všechno projde, jednoduše rozsvítí koridorové světlo a odešle zpět PHOENIX_MOTION_DETECTED na Raspberry PI, pokud není dostatečně tmavý, stále signalizuje zpět do počítače, ale světlo nezapne. Jakmile je detekován pohyb, spustí se 5minutový časovač pozastavení.

Hned poté další sekce kódu zkontroluje, zda jsme pozdrženi (což by mělo být v případě, že došlo pouze k události pohybu, předpokládejme tedy, že uplynulo 5 minut, aby tato kontrola mohla potvrdit). Kód zkontroluje, zda je opět pohyb, pokud ne, zhasněte světla. Jak vidíte, pokud nedochází k žádnému pohybu, tato funkce se bude sama opakovat znovu a znovu a stále se snažte vypnout světla, aby počítač neměl zpětnou vazbu.

Máme další časovač pro vnitřní osvětlení DeathStar, který závisí čistě na fotobuňce Čtení <dark_limit.

Přestože tyto 2 rutiny o sobě navzájem nevědí, budou perfektně spolupracovat, protože když se rozsvítí světlo koridoru, poskytne tolik světla, že si LDR bude myslet, že je opět den a vypne vnitřní osvětlení. Tento proces však měl několik výhrad, které jsou v kódu vysvětleny, pokud vás to zajímá, pokud ne, vezměte odpověď Nvidia, že „to prostě funguje!“.

Krok 4: Software Raspberry PI

Software Raspberry PI
Software Raspberry PI
Software Raspberry PI
Software Raspberry PI
Software Raspberry PI
Software Raspberry PI

Nejnovější Raspbian funguje pro mě:

Raspbian GNU/Linux 9.4 (úsek)

Linux Phoenix 4.9.35-v7+ #1014 SMP Pá 30. června 14:47:43 BST 2017 armv7l GNU/Linux ii motion 4.0-1 armhf V4L capture program podporující detekci pohybu

I když můžete použít další distribuce, pokud narazíte na nějaké problémy s kamerou, podporu od týmu získáte pouze v případě, že používáte jejich oficiální operační systém. Důrazně se doporučuje také odstranění nežádoucího bloatwaru, jako je systemd.

Pohyb lze také snadno vytvářet ze zdroje:

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

Jako server videorekordéru/sběratel doporučuji iSpy. V době psaní bohužel neexistují žádné dobré alternativy pro Linux. Kameru lze přidat s výchozím portem MJPEG URL https:// CAMERA_IP: 8081.

Zpracování pohybu může být užitečné, například se nemusíte celý den dívat na svůj server iSpy, v případě pohybu můžete dostat e -mail. Ačkoli iSpy má tuto funkci, která upozorní v e -mailu v případě pohybu, jednou za čas zapne nahrávání pro různé události, jako je nějaké světlo odrážející se do oblasti. Díky detekci pohybu PIR jsem nikdy neměl jediný planý poplach. Výstrahy lze zpracovat místně:

Na senzoru detekována pohybová událost Pir> Upozornění Arduino> Raspberry pi přijímá na konzolu> Program pro zpracování C> Externí poštovní aplikace

Dávám však přednost zpracování protokolů a videí na dálku, takže v tomto případě jsem přidal sekci do řídicího programu C, zatímco lokálně zaznamenává protokoly do souboru prostého textu, také jej zaznamenává do syslogu a ten je předáván do SIEM pro další zpracování.

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

FILE *f = fopen ("phoenix.log", "a"); if (f == NULL) {printf ("Chyba při otevírání souboru protokolu! / n"); vrátit se; } fprintf (f, " %s => %s / n", cur_time (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 spuštěný uživatelem %d", getuid ()); syslog (LOG_NOTICE, log) closelog (); #endif návrat; }

Na přijímajícím konci může syslog-ng demuxovat tyto události z hlavního toku protokolu:

filtr f_phx {

zápas („DeathStar“); }; místo určení d_phx {soubor ("/var/log/phoenix/deathstar.log"); }; log {zdroj (s_net); filtr (f_phx); destinace (d_phx); };

a lze jej předat jinému nástroji (motion.php viz přiložený) pro analýzu a upozornění.

V tomto skriptu můžete jednoduše nastavit obvyklý čas v týdnu, kdy nejste doma:

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

Program php využívá k analýze protokolů vynikající nástroj logtail.

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

Logtail sleduje polohu v ofsetovém souboru, takže hlavní program nemusí vědět, od kterého času se začít dívat na protokoly, budou mu poskytnuta nejnovější nezpracovaná data.

Motion.php lze spustit z crontabu s malým trikem na víkendy, kdy projde protokoly, ale neprovádí žádné další zpracování.

*/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 seznam úkolů

Seznam problémů a úkolů
Seznam problémů a úkolů
Seznam problémů a úkolů
Seznam problémů a úkolů

Pokud používáte Raspberry pi 3 nebo novější, můžete tuto sekci přeskočit, s největší pravděpodobností se s těmito problémy již nesetkáte.

Během let jsem měl nějaké problémy s deskami založenými na Raspberry pi 2, které mohly spouštět stejný balíček softwaru, ale byly zakoupeny v různých časech z různých míst. Po určitém časovém období, které by mohlo být 2 dny nebo 20 dní, kdy by SSHing na zařízení SSH jen visel, takže pohybový démon a místní C kód, který hovořil s Arduinem, byl načten do RAM, takže zařízení fungovalo ale v tomto stavu se s tím už nedalo dělat nic jiného.

Po mnoha problémech jsem přišel s řeš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" na začátku | dále) echo -n "Počínaje $ DESC: "rsync -az --numeric -ids --delete $ DISK $ RAM &> /dev /null echo" $ NAME. ";; stop | zpět) echo -n "Zastavení $ DESC:" rsync -az --numeric -ids --delete $ RAM $ DISK &> /dev /null echo "$ NAME.";; *) echo "Použití: $ 0 {start | stop}" exit 1;; esac exit 0

Skript jde společně s úpravou fstab:

tmpfs /domácí tmpfs rw, velikost = 80%, nosuid, nodev 0 0

Domácí oddíl je připojen jako ramdisk, což by poskytlo přibližně 600 MB volného místa na Raspberry pi 2, což je více než dost na uložení některých binárních souborů a malých souborů protokolu:

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

Ukázalo se, že PI hang byl přičítán operacím zápisu na SD kartu, i když jsem zkoušel různé karty (Samsung EVO, Sandisk), které byly skenovány na chyby několikrát před a po a neměly žádný problém v jiných přenosných počítačích to bylo jen přichází. Neměl jsem stejný problém (zatím) s Raspberry PI 3 a vyšším hardwarem, proto je také doporučuji v tomto tutoriálu.

Ačkoli je aktuální pohyb na Raspberry PI 3 pro mě dost dobrý, zde je několik nápadů, které stojí za prozkoumání:

  1. Nepoužívejte pohyb, ale použijte raspivid stream přes síť a nechte výkonný server provést detekci pohybu a kódování videa (např. ISpy). -> Problém: neustálé snižování šířky pásma sítě.
  2. Použijte pohyb a nechte ffmpeg provést kódování videa. -> Problém: CPU nezvládá vyšší rozlišení
  3. Použijte pohyb, zaznamenávejte surové video a nechte kódování provést výkonný server. -> Využití CPU na RPi je nízké a síťové pásmo je omezeno na skutečný pohyb. Pro tento scénář bychom mohli zapsat na SD kartu/ramdisk pro maximální propustnost a poté crontab zkopírovat video na jiný server.

Také bych poznamenal, že stavbu tohoto projektu je možné postavit bez Arduina. Všechny komponenty (relé, LDR, PIR) mohly být nějakým způsobem připojeny k Raspberry Pi, ale dávám přednost mikrokontrolérům v reálném čase pro interakci se senzory a výstupními zařízeními. V případech, kdy moje malinová pí například visela nebo havarovala, ovládání světla spuštěné Arduinem fungovalo dobře.

Pokud se vám tento instruktáž líbil, zůstaňte naladěni, protože v příštím roce budu v sérii pokračovat s mojí 360stupňovou venkovní kamerou Raspberry Pi Zero Dome.

Doporučuje: