Tartalomjegyzék:

Málna PI kamera és fényvezérlő Halálcsillag: 5 lépés (képekkel)
Málna PI kamera és fényvezérlő Halálcsillag: 5 lépés (képekkel)

Videó: Málna PI kamera és fényvezérlő Halálcsillag: 5 lépés (képekkel)

Videó: Málna PI kamera és fényvezérlő Halálcsillag: 5 lépés (képekkel)
Videó: Итальянский усатый беспилотник ► 1 Прохождение Super Mario Galaxy 2 (Nintendo Wii) 2024, Július
Anonim
Málna PI kamera és fényvezérlő Halálcsillag
Málna PI kamera és fényvezérlő Halálcsillag
Málna PI kamera és fényvezérlő Halálcsillag
Málna PI kamera és fényvezérlő Halálcsillag
Málna PI kamera és fényvezérlő Halálcsillag
Málna PI kamera és fényvezérlő Halálcsillag

Mint mindig, olyan eszközöket akarok építeni, amelyek hasznosak, robusztusak és gyakran még javulást is jelentenek a jelenlegi, polcon kívüli megoldásokhoz képest.

Itt egy újabb nagyszerű projekt, eredeti nevén Shadow 0f Phoenix, egy málna PI pajzs az Arduino alapú mozgásérzékeléssel és fényvezérléssel együtt.

1. lépés: A kereskedelmi IP -kamerák állapota

A kereskedelmi IP -kamerák állapota
A kereskedelmi IP -kamerák állapota
A kereskedelmi IP -kamerák állapota
A kereskedelmi IP -kamerák állapota
A kereskedelmi IP -kamerák állapota
A kereskedelmi IP -kamerák állapota

Amellett, hogy a saját kamera/felügyeleti rendszer kiépítése sokkal menőbb, nézzük meg, miért ez a fejlesztés a polcon kívüli megoldáshoz képest.

Összehasonlítom a NEO COOLCAM Full HD 1080P vezeték nélküli IP kamera sorozatával, mivel sok ilyen típusú neo coolcams (ONVIF) fényképezőgépet birtokoltam. Különböző formákban és méretekben kaphatók, kültéren és beltéren, a legtöbbjük beépített wifi támogatással rendelkezik, de lássuk a figyelmeztetéseiket:

  • A kínai gyártók, akik ezeket a fényképezőgépeket értékesítik, szinte mindig hazudnak a beépített képérzékelő felbontásról, ha 5MP/8MP kamerát vásárol az Ebay -en, akkor olcsó, 2MP -es, rossz képű fényképezőgépet kaphat (működik, de a minősége szemét). Ha az eredeti kiskereskedőtől megvásárolja a 8 MP Raspberry PI v2 kamerát, akkor azt kapja, amiért fizetett, és a tényleges 8 MP érzékelőt 3280 × 2464 képpont felbontásban =>
  • Biztonsági szempontból ezek a kamerák (még a drágább Dlink és más modellek is) szörnyűek, alapértelmezett jelszavakat használnak, mint például 123456, vagy beépített felhasználók, például admin/admin operátor/operátor, amit talán nem is tudnak megváltoztatni, vagy a változás az újraindítás után megszűnt. Töltse ki ezt a sok kamerát, amelyek otthon telefonálnak (csatlakozzon a szervereikhez Kínában, néhányan vissza is közvetítenek videókat/képeket anélkül, hogy megkérdeznék Öntől, hogy megkönnyítsék, ha úgy dönt, hogy egy nap telepíti az Android/iPhone alkalmazást, hogy ellenőrizze itthon). Még akkor is, ha ezeket az eszközöket egy útválasztó mögé helyezi, ez nem elég jó, a legjobb az, ha nem állít be beléjük alapértelmezett átjárót, tűzfalat rak ki vagy VLAN -ba helyezi, hogy ne tegye lehetővé az internet, vagy még jobb: egyáltalán ne használja őket.
  • Megbízhatóbbak? nem, sokuknak, még a drágább DLINK -eknek is lehetősége van arra, hogy naponta/hetente újraindítsák a kamerát stb. Ez az opció oka van, mert X nap után gyakran elveszítik a Wifi -kapcsolatot, vagy más módon viselkednek rosszul. Gondoljunk csak rájuk, mint a régi jó Win95 dobozokra, amelyeket gyakrabban kellett újraindítani:) Nem mondom, hogy a Raspi -alapú hardverek olyan kőkemények, hogy irányító atomerőművekbe építhetik őket, de megfelelő hardverrel/szoftverrel konfiguráció, hűtőbordák, automatikus hűtőventilátorok és minimális RW működés az SDCARD kártyán, problémamentesen elérhetik azt a több mint 100 napos üzemidőt. Íráskor a DeathStar futásom 34 napja volt, több mint 100, de néha feltörtem a tápellátást az áramforrásból, amely más áramköreimet is táplálja, ezért le kellett állítanom:(
  • Célzott hardver: 1 konkrét célra készültek, gyakran kis nvram -területtel és busybox -al érkeznek, de egyes modellek lehetetlenné teszik a héj elérését is, így csak arra használhatja őket, amire használni akarják használja Raspi -alapú kameráját bármilyen más feladathoz: fájlszerverhez, tftp/dhcp szerverhez, webszerverhez, rengésszerverhez … a lehetőségek korlátlanok.
  • Tárhely: vagy nincs ilyen, vagy FAT32 VS fájlrendszerrel rendelkező microsd -kártyákat használnak a málna pis -en, és akár 2 TB -os merevlemezt is csatlakoztathat, ha úgy tetszik.
  • Lámpák vezérlése: némelyiknek van ALARM kimenete, ahol esetleg egy kis relét csatlakoztathat a lámpák aktiválásához. Amint ebben az oktatóanyagban megmutatom, az infravörös kamerák használata teljes időpocsékolás, mivel a rossz minőség miatt nem fog tudni azonosítani senkit az infravörös képeken. Ha sötétben kell videót rögzítenie, akkor a legjobb módja annak, hogy először kapcsoljon be egy fényt, majd rögzítse a videót.

Tehát megkérdezheti, hogy vannak -e PRO -k a polcon lévő kamera használatához? Igen, azoknak a vállalkozásoknak, ahol a munkaidő drágább lenne, mint a Raspberry pis -en való barkácsolás (nekem egyébként nem:)), és igen, vannak csúcsminőségű kamerák (500 USD+ jobb felbontással, mint a tanfolyam). További előnyként elmondhatom, hogy az ONVIF szabványt követő kamerák megkönnyítették a központosított ellátást. Ez egy szabványos interfészt biztosít, amellyel parancsokat lehet küldeni a fényképezőgépnek az IP/hálózati maszk/átjáró és egyéb dolgok beállításához. Ehhez letöltheti az Onvif eszközkezelőt a Sourceforge -ból. Sok ilyen eszköz gagyi, törött webes frontendekkel érkezik, ahol például nem teszi lehetővé az ip vagy a netmaszk helyes beállítását, mert az ezeket a mezőket érvényesítő javascript hibásan működik, és az egyetlen módja annak, hogy ezeket a paramétereket helyesen állítsa be, az ONVIF.

2. lépés: A Halálcsillag tervei

A Halálcsillag tervei
A Halálcsillag tervei
A Halálcsillag tervei
A Halálcsillag tervei
A Halálcsillag tervei
A Halálcsillag tervei

Ezt az eszközt bármely Raspberry PI -vel felépítheti 1 és 3B+között. Még a nullának is vannak fényképezőgép -portjai, de mivel nagyon sok különböző használt raspis van a piacon, elgondolkodhat azon, melyik a legideálisabb ehhez az összeállításhoz.

A válasz attól függ, hogy hol kívánja feldolgozni a videófolyamot.

Két lehetőség közül választhat:

1, Feldolgozza a videókat helyben mozgással, és továbbítja a videófolyamot, ha mozgást észlel (megjegyzés: a mozgás lassú állandó adatfolyamot továbbít a szerverre, függetlenül attól, hogy ez mitől függ, a használt felbontástól és képkockasebességtől függően száz megabájtról több gigabájtra naponta, csak emlékeztetőül, ha egy beállított kapcsolatot szeretne beállítani). Itt a CPU számít, és sajnos a mozgás (az írás idején) nem használja ki a több mag előnyeit, azonban az operációs rendszer megpróbálja kissé kiegyensúlyozni a terhelést. 100% -os használat esetén mindig az egyik magja lesz.

2, Feldolgozza a videókat egy központi szerveren: itt csak továbbítja a nyers videofolyamot a kameráról egy külső streaming szerverre (például az iSpy x86 -os számítógépen vagy a MotionEyeOS egy másik dedikált miniszámítógépen). Mivel nincs helyi feldolgozás, az Ön által használt PI modell nem számít, a PI1 ugyanazt az adatfolyamot küldi, mint a PI3B+.

Ebben az oktatóanyagban az első választással fogok foglalkozni.

Az alapszabály itt az, hogy minél gyorsabban mozgatod a CPU -t, annál jobb eredményeket érhetsz el. Például a Raspi 2 alapú fényképezőgépem, amely egy folyosót nézett, néha nem vette fel, amikor valaki gyorsan elhaladt, és amikor rögzítette, a felvétel lassú volt, és sok képkockát ejtett a 3 -as modellhez képest. A 3 -as modell 802.11 -es is abgn wifi, amely praktikus, hogy jobb minőségű videókat streamelhessen, a dobozból kivéve működik, és meglehetősen megbízható. Abban az időben, amikor azt írtam, hogy a 3B+ modell kint van, csak azt javaslom, hogy ezt 1,4 GHz -es négymagos processzorral szerezze be.

Az anyagok listája

  • 30 cm -es műanyag DeathStar:)
  • Raspberry Pi 3 B+
  • PiCam v2 (8MP)
  • Arduino Pro Micro 5.5v
  • 2x SIP-1A05 Reed kapcsoló relé
  • 1 db PCS HC-SR501 IR piroelektromos infravörös IR PIR mozgásérzékelő modul
  • 1x 10kohm ellenállás LDR -hez
  • 1x LDR
  • 1x12V 4A DC adapter
  • 1xMeleg fehér LED 5050 SMD Rugalmas fénylámpacsík 12V DC
  • 1xBuck feszültségszabályozó

Amint az a rajzokon látható, ezt a projektet eredetileg egyetlen fény vezérlésére tervezték egy relével, mert nem terveztem belső világítás hozzáadását (ami nagyon jó), ezért csak egy második relét kötöttem be az Arduino -ba. A nagyszerű dolog a SIP-1A05-ben az, hogy belső flyback diódával rendelkezik, és a fogyasztás mA-ben nagyjából az Arduino tűnkénti teljesítménykorlátozása alatt van.

Az ok, amiért a PIR a képeken a pajzson van, mert az elején az S0P -t egy egyszerű IP műanyag dobozba tervezték helyezni a DeathStar helyett. Ahogy sejtheti, a kamera közvetlenül a lézerpisztolyban van, a PIR és az LDR újabb furatokat igényelt, és ragasztóval vannak ellátva, mivel nem tervezem eltávolítani őket.

A DeathStar alján lyukat fúrtak, ahová egy nagy csavart ragasztottam egy erős kétkomponensű ragasztóval. Ezt bele lehet csavarni az eredeti Neo Coolcams állványba (végül is jó volt valamire:)). További támogatásként kemény rézhuzalokat használok, hogy tartsam a csillag tetejét.

Fontos megjegyzés a tápegységgel kapcsolatban: mivel ugyanaz a tápegység táplálja mind a PI -t, mind az Arduino -t, mind a LED -szalagot, elég erősnek kell lennie ahhoz, hogy képes legyen mindet kezelni, tehát a projekthez kiválasztott LED -szalagon alapul. Egy kereskedelmi 5050 12v 3 méteres LED szalag 2A körül lemerül, ez sok. A PI és az Arduino esetében +2A -ban kell számolni (bár ez túlméretezett, nem fog fájni). Ha a LED szalagot szabványos halogén izzók, neon vagy más nagy teljesítményű világítás felett használja, akkor ezt az egész áramkört egy 12V@10Ah ólomakkumulátorra helyezheti tartalékként, így áramkimaradás esetén is működni fog.

A bak lecsökkenti a feszültséget 12-> 5V-ról az Arduino és a PI tápellátására, míg a közvetlen 12V-os tápvezeték be van kötve a relébe a LED-szalag bekapcsolásához.

Lépés: Szoftver Arduino

Arduino szoftver
Arduino szoftver

Az alábbiakban megtalálja a teljes forráskódot, amely jól kommentált, de itt egy rövid magyarázat, hogyan működik: Minden ciklus elején meghívják a szokásos xcomm () függvényt, hogy megnézze, van -e parancs a Raspberry PI -ből, amely lehet LIGHT_ON/OFF, hogy bekapcsolja a folyosó világítását, vagy DS_ON/OFF, hogy be- vagy kikapcsolja a DeathStar háttérvilágítást, ezeket csak a tökéletesség érdekében hajtottam végre, mivel ha valaki elhalad a PIR mellett, vegye fel és kapcsolja be a fények, de talán valamilyen okból meg akarja nézni a helyet, még akkor is, ha senki nincs ott.

Ezt követően a fotocella értéke beolvasásra kerül, és a mozgótüske ellenőrzi a mozgást. Ha mozgás van, a kód ellenőrzi, hogy elég sötét -e, majd ellenőrzi, hogy nem vagyunk -e visszatartva. Ha mindez elmúlik, akkor egyszerűen bekapcsolja a folyosó fényét, és PHOENIX_MOTION_DETECTED -t küld vissza a Raspberry PI -nek, ha nem elég sötét, akkor is jelzi a számítógépnek, de nem kapcsolja be a lámpát. Mozgás észlelése után elindul egy 5 perces időzítő.

Közvetlenül ezután a következő kódrészlet ellenőrzi, hogy tartásban vagyunk -e (ennek akkor kell lennie, ha csak egy mozgási esemény történt, tehát tegyük fel, hogy eltelt 5 perc, hogy ez az ellenőrzés megerősítse). A kód ellenőrzi, hogy van -e ismét mozgás, ha nem, akkor kapcsolja ki a lámpákat. Mint látható, ha nincs mozgás, ez a funkció újra és újra megismétli önmagát, és próbálja lekapcsolni a lámpákat, hogy ne érkezzen visszajelzés a számítógépre.

Van egy másik időzítő a DeathStar belső világításához, amely kizárólag a fotocellától függ <Read_ <dark_limit.

Bár a két rutin nem tud egymásról, tökéletesen együtt fognak működni, hiszen amikor a folyosó lámpája felgyullad, annyi fényt biztosít, hogy az LDR azt fogja gondolni, hogy ismét nappal van, és kikapcsolja a belső világítást. Ennek a folyamatnak azonban volt néhány figyelmeztetése, amelyet a kód magyaráz, ha érdekli, ha nem, akkor fogadja el az Nvidia válaszát, hogy "csak működik!".

4. lépés: Szoftver Raspberry PI

Szoftver Raspberry PI
Szoftver Raspberry PI
Szoftver Raspberry PI
Szoftver Raspberry PI
Szoftver Raspberry PI
Szoftver Raspberry PI

Nekem a legújabb Raspbian működik:

Raspbian GNU/Linux 9.4 (szakasz)

Linux Phoenix 4.9.35-v7+ #1014 SMP péntek, június 30., 14:47:43 BST 2017 armv7l GNU/Linux ii motion 4.0-1 armhf V4L rögzítő program, amely támogatja a mozgásérzékelést

Bár használhat más disztribúciókat, ha bármilyen problémája akad a kamerával, akkor csak akkor kap támogatást a csapattól, ha a hivatalos operációs rendszerét használja. A nemkívánatos bloatware, például a systemd eltávolítása szintén erősen ajánlott.

A mozgás forrásból is könnyen létrehozható:

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

Videofelvevő/gyűjtő szerverként az iSpy -t javaslom. Sajnos a cikk írásakor nincsenek jó alternatívák a Linux számára. A kamera hozzáadható egy MJPEG URL -címmel https:// CAMERA_IP: 8081 az alapértelmezett porttal.

A mozgásfeldolgozás hasznos lehet, például nem kell egész nap az iSpy szerverét nézegetnie, mozgás esetén e -mailt kaphat. Bár az iSpy rendelkezik ezzel a funkcióval, hogy figyelmeztesse e -mailben mozgás esetén, időnként bekapcsolja a rögzítést az egyéb eseményekhez, például a fény visszaverődéséhez. A PIR mozgásérzékeléssel soha egyetlen hamis riasztásom nem volt. A riasztások helyben feldolgozhatók:

Pir mozgási esemény észlelve az érzékelőn> Arduino riasztás> Raspberry pi fogad a konzolon> C feldolgozó program> Külső levelező alkalmazás

Én azonban jobban szeretem mind a naplókat, mind a videókat távolról feldolgozni, így ebben az esetben hozzáadtam egy szakaszt a C vezérlőprogramhoz ahhoz, hogy a naplókat helyben naplózza egy egyszerű szöveges fájlba, és naplózza a syslog -ba, majd továbbítsa a SIEM további feldolgozás.

void logger (karakter *szöveg) {

FILE *f = fopen ("phoenix.log", "a"); if (f == NULL) {printf ("Hiba a naplófájl megnyitásakor! / n"); Visszatérés; } fprintf (f, " %s => %s / n", cur_time (0), szöveg); fclose (f); #ifdef SYSLOG char loggy [500]; sprintf (loggy, " %s => %s / n", cur_time (0), szöveg); setlogmask (LOG_UPTO (LOG_NOTICE)); openlog ("DeathStar", LOG_CONS | LOG_PID | LOG_NDELAY, LOG_USER); // syslog (LOG_NOTICE, "A programot %d felhasználó indította el", getuid ()); syslog (LOG_NOTICE, loggy); closelog (); #endif visszatérés; }

A fogadó oldalon a syslog-ng demux ezeket az eseményeket a fő naplófolyamból:

szűrő f_phx {

match ("DeathStar"); }; cél d_phx {fájl ("/var/log/phoenix/deathstar.log"); }; log {forrás (s_net); szűrő (f_phx); cél (d_phx); };

és átadható egy másik eszköznek (motion.php lásd mellékelve) elemzés és riasztás céljából.

Ebben a szkriptben egyszerűen beállíthatja a hét szokásos idejét, amikor nincs otthon:

$ opt ['alert_after'] = '09:00:00'; // Reggel $ opt ['alert_before'] = '17:00:00'; // Esték

A php program a kiváló logtail segédprogramot használja a naplók elemzéséhez.

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

A Logtail nyomon követi az eltolt fájl helyzetét, így a főprogramnak nem kell tudnia arról, hogy melyik naptól kezdve nézze meg a naplókat, és a legfrissebb feldolgozatlan adatokat kapja.

A Motion.php futtatható a crontab -ból egy kis trükkel a hétvégére, amikor átmegy a naplókon, de további feldolgozást nem végez.

*/5 * * * 1-5/usr/local/bin/php ~/motion.php &>/dev/null */5 * * * 6-7/usr/local/bin/php ~/motion.php hétvége &>/dev/null

5. lépés: Problémák és teendők listája

Problémák és teendők listája
Problémák és teendők listája
Problémák és teendők listája
Problémák és teendők listája

Ha a Raspberry pi 3 vagy újabb verziót használja, kihagyhatja ezt a részt, akkor valószínűleg nem fog többé ilyen problémákkal szembesülni.

Az évek során voltak problémáim a Raspberry pi 2 alapú táblákkal, amelyek ugyanazt a szoftverköteget futtathatják, de különböző időpontokban vásároltak különböző helyekről. Egy bizonyos idő elteltével, amely lehet 2 nap vagy 20 nap, amikor az SSH bekapcsolja az eszközt, az SSH csak lefagy, így mind a mozgásdémon, mind a helyi C -kód, amely az Arduino -val beszélt, betöltődött a ramba, ezért az eszköz működött de ebben az állapotban már nem lehetett vele mást csinálni.

Sok hibaelhárítás után megoldást találtam:

homesync.sh

#!/bin/sh -e

### BEGIN INIT INFO # A következőket tartalmazza: homesync # Kötelező-Start: mountkernfs $ local_fs # Kötelező-Stop: camera phoenix # Default-Start: S # Default-Stop: 0 6 # Short-Description: Home synchronizer # Description: Home synchronizer by NLD ### END INIT INFO NAME = home DESC = "Ramdisk Home Synchronizer" RAM = "/home/" DISK = "/realhome/" set -e case "$ 1" in start | negyedik) echo -n "Starting $ DESC: "rsync -az --numeric -ids --delete $ DISK $ RAM &> /dev /null echo" $ NAME. ";; stop | back) echo -n "$ DESC leállítása:" rsync -az --numeric -ids --delete $ RAM $ DISK &> /dev /null echo "$ NAME".;; *) echo "Használat: $ 0 {start | stop}" exit 1;; esac kilépés 0

A szkript együtt jár egy fstab módosítással:

tmpfs /home tmpfs rw, méret = 80%, nosuid, nodev 0 0

Az otthoni partíció ramdiskként van felszerelve, amely körülbelül 600 MB szabad helyet biztosít a Raspberry pi 2 -n, ami több mint elegendő néhány bináris fájl és kis naplófájl tárolására:

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

Kiderült, hogy a PI lefagyását az SD -kártyán lévő írási műveleteknek tulajdonították, bár próbáltam különböző kártyákat (Samsung EVO, Sandisk), amelyeket előtte és utána többször is ellenőriztek a hibák miatt, és más laptopokban nem volt probléma. következik. Nem volt ugyanaz a probléma (még) a Raspberry PI 3 -asokkal és a magasabb hardverekkel, ezért is ajánlom őket ebben az oktatóanyagban.

Bár a Raspberry PI 3 jelenlegi mozgása éppen elég jó számomra, íme néhány ötlet, amelyet érdemes megvizsgálni:

  1. Ne használjon mozgást, hanem használjon raspivid adatfolyamot a hálózaton keresztül, és hagyja, hogy egy erőteljes kiszolgáló végezze el a mozgásérzékelést és a videó kódolást (pl. ISpy). -> Probléma: állandó hálózati sávszélesség.
  2. Használja a mozgást, és hagyja, hogy az ffmpeg végezze el a videó kódolását. -> Probléma: A CPU nem tudja kezelni a nagyobb felbontásokat
  3. Használjon mozgást, rögzítsen nyers videót, és hagyja, hogy egy erős szerver végezze el a kódolást. -> A CPU használata az RPi -n alacsony, és a hálózati sávszélesség csak akkor van, ha tényleges mozgás van. Ehhez a forgatókönyvhöz írhatunk egy SD-kártyára/ramdisk-re a maximális átviteli sebesség érdekében, majd crontab másolatot készíthetünk a videóról egy másik szerverre.

Azt is megjegyezném, hogy ennek a projektnek az építése lehetséges Arduino nélkül is. Az összes komponenst (relé, LDR, PIR) valamilyen módon össze lehet kötni a málna pi -vel, de én jobban szeretem a valós idejű mikrovezérlőket, mint az érzékelőket és a kimeneti eszközöket. Azokban az esetekben, amikor a málna piám például lógott vagy lezuhant, az Arduino által működtetett fényvezérlés remekül működött.

Ha tetszett ez az oktatható, maradjon velünk, mivel jövőre folytatom a sorozatot 360 fokos szabadtéri málna pi zero dome kamerámmal.

Ajánlott: