Съдържание:

Raspberry PI камера и Death Light Star Control: 5 стъпки (със снимки)
Raspberry PI камера и Death Light Star Control: 5 стъпки (със снимки)

Видео: Raspberry PI камера и Death Light Star Control: 5 стъпки (със снимки)

Видео: Raspberry PI камера и Death Light Star Control: 5 стъпки (със снимки)
Видео: ЗАПРЕЩЁННЫЕ ТОВАРЫ с ALIEXPRESS 2023 ШТРАФ и ТЮРЬМА ЛЕГКО! 2024, Юли
Anonim
Малина PI камера и Death Light Star Control Light Control
Малина PI камера и Death Light Star Control Light Control
Малина PI камера и Death Light Star Control Light Control
Малина PI камера и Death Light Star Control Light Control
Малина PI камера и Death Light Star Control Light Control
Малина PI камера и Death Light Star Control Light Control

Както винаги искам да създам полезни устройства, работещи стабилно и често дори са подобрения в сравнение с настоящите готови решения.

Ето още един страхотен проект, първоначално наречен Shadow 0f Phoenix, Raspberry PI щит във връзка с откриване на движение на Arduino и управление на светлината.

Стъпка 1: Състояние на търговските IP камери

Състояние на търговските IP камери
Състояние на търговските IP камери
Състояние на търговските IP камери
Състояние на търговските IP камери
Състояние на търговските IP камери
Състояние на търговските IP камери

Освен че изграждането на собствена система за камера/наблюдение е по -готино, нека да видим защо това е подобрение от готовото решение.

Ще го сравня с серията безжични IP камери на NEO COOLCAM Full HD 1080P, тъй като притежавам много от тези различни модели камери neo coolcams (ONVIF). Те се предлагат в различни форми и размери, на открито и на закрито, повечето от тях имат вградена поддръжка за wifi, но нека видим техните предупреждения:

  • Китайските производители, които продават тези камери, почти винаги лъжат за вградената резолюция на сензора за изображения, когато купувате 5MP/8MP камера на Ebay, може да се окажете с евтина 2MP камера с лоша картина (тя работи, но качеството е боклук). Когато закупите 8MP Raspberry PI v2 камера от оригиналния търговец на дребно, ще получите това, за което сте платили, и действителен 8MP сензор с резолюция 3280 × 2464 пиксела =>
  • От гледна точка на сигурността тези камери (дори и по -скъпите Dlink и други модели) са ужасни, те използват пароли по подразбиране като 123456 или вградени потребители като администратор/администратор/оператор, което дори няма да можете да промените или промяната е изчезнала след рестартиране. Завършете го с много от тези камери телефон вкъщи (свържете се с техните сървъри в Китай, някои дори предават обратно видео/снимки, без да ви питат само за да улесните, в случай че решите да инсталирате приложението им за Android/Iphone един ден, за да проверите на вашия У дома). Дори ако поставите тези устройства зад рутер, просто не е достатъчно добре, най -доброто е, ако не зададете в тях шлюз по подразбиране, не ги защитите от стената или не ги поставите във VLAN, за да не можете да излязат на интернет или още по -добре: изобщо не ги използвайте.
  • По -надеждни ли са? не, много от тях, дори по -скъпите DLINK имат възможност да рестартират камерата ежедневно/седмично и т.н. Тази опция е налице по някаква причина, тъй като след X дни те често губят Wi -Fi връзка или се държат лошо по други начини. Просто помислете за тях като за добри стари кутии Win95, които трябваше да се рестартират по -често, отколкото не:) Не казвам, че хардуерът на базата на Raspi е толкова стабилен, че можете да ги вградите в управляващи атомни електроцентрали, но с подходящ хардуер/софтуер конфигурация, радиатори, автоматични охлаждащи вентилатори и минимизирана работа на RW на SDCARD те могат лесно да достигнат тези 100+ дни непрекъсната работа без проблем. По време на писането моят DeathStar работи от 34 дни, над 100, но понякога хакнах емисията в източник на захранване, който захранва някои други мои вериги, така че трябваше да го затворя:(
  • Насочен хардуер: те са направени за 1 конкретна цел, често идват с малка nvram област и заета кутия, но някои модели правят достъпа до тази обвивка също невъзможен, така че всичко, за което можете да ги използвате, е това, за което са предназначени, докато можете използвайте вашата камера, базирана на Raspi, за всякакви други задачи: файлов сървър, tftp/dhcp сървър, уеб сървър, quake сървър … опциите са неограничени.
  • Място за съхранение: или нямат такива, или използват microsd карти с FAT32 файлова система VS на малиновата писалка, можете дори да свържете 2 TB твърд диск, ако желаете.
  • Контролиращи светлини: някои имат изход АЛАРМ, където може да свържете малко реле, за да се задействат светлини. Както ще ви покажа в този урок, използването на инфрачервени камери е пълна загуба на време, тъй като няма да можете да идентифицирате никого на инфрачервените снимки поради лошото качество. Ако трябва да запишете видео на тъмно, най -добрият начин да направите това е първо да включите светлина, след което да запишете видеоклипа.

Така че може да попитате има ли ПР за използване на камера от рафта? Да за фирми, където работното време за настройването му би било по -скъпо, отколкото да се занимавам с Raspberry pis (така или иначе не е за мен:)) и да, има най -добрите камери (500 $+ с по -добра резолюция от камерата pi на разбира се). Като друго предимство мога да кажа, че камерите, следващи стандарта ONVIF, улесниха централизираното осигуряване. Това осигурява стандартен интерфейс, който може да се използва за изпращане на команди до камерата, за да се настрои нейната IP/мрежова маска/шлюз и други неща. За целта можете да изтеглите мениджъра на устройства Onvif от Sourceforge. Голяма част от тези устройства идват с лоши счупени уеб интерфейси, където например не ви позволява да зададете правилно ip или netmask, защото javascript, който валидира тези полета, е неизправен и единственият ви начин да зададете правилно тези параметри е чрез ONVIF.

Стъпка 2: Планове на Звездата на смъртта

Планове на Звездата на смъртта
Планове на Звездата на смъртта
Планове на Звездата на смъртта
Планове на Звездата на смъртта
Планове на Звездата на смъртта
Планове на Звездата на смъртта

Можете да изградите това устройство с всеки от Raspberry PI, започвайки от 1 до 3B+. Дори нулата има портове за камера, но тъй като има толкова много различни raspis втора употреба на пазара, може да се чудите кой е най -идеалният за тази конструкция.

Отговорът зависи от това къде искате да обработите видео потока.

Има два избора:

1, Обработвайте видеоклиповете локално с движение и препращайте видеопоток, когато има открито движение (забележка: движението препраща бавен постоянен поток към сървъра без значение какво, това може да зависи от разделителната способност и честотата на кадрите, които използвате, от няколко сто мегабайта до няколко гигабайта на ден, само напомняне, ако искате да направите настройка на измервана връзка). Тук процесорът има значение и за съжаление движението (по време на писането) не се възползва от множество ядра, но операционната система ще се опита да балансира леко натоварването. Винаги ще имате едно от ядрата при 100% използване.

2, Обработвайте видеоклиповете на централен сървър: тук просто препращате необработения видеопоток от камерата към външен стрийминг сървър (като iSpy, работещ на x86 компютър или MotionEyeOS, работещ на друг специализиран миникомпютър). Тъй като няма локална обработка, моделът на PI, който използвате, няма значение, PI1 ще изпрати същия поток като PI3B+.

В този урок ще отида с първия избор.

Емпичното правило тук е, че колкото по -бърз процесор пускате в движение, толкова по -добри резултати ще получите. Например моята камера, базирана на Raspi 2, гледаща коридор, понякога не я вдигаше, когато някой минаваше бързо и когато записваше, записът беше бавен, изпускайки много кадри в сравнение с модела 3. Моделът 3 също има 802.11 abgn wifi, който е удобен, за да можете да предавате поточно видео с по -високо качество, той работи нестандартно и е доста надежден. По време на писането, че моделът 3B+ е излязъл, просто бих препоръчал да го получите с 1.4 Ghz Quad Core процесор.

Списък на материалите

  • 30 см пластмасова DeathStar:)
  • Малина Pi 3 B+
  • PiCam v2 (8MP)
  • Arduino Pro Micro 5.5v
  • 2x SIP-1A05 реле за превключвател
  • 1x PCS HC-SR501 IR пироелектрически инфрачервен инфрачервен IR PIR сензор за детектор на движение модул
  • 1x 10kohm резистор за LDR
  • 1x LDR
  • 1x12V 4A DC адаптер
  • 1xWarm Бял LED 5050 SMD Гъвкава светлинна лампа 12V DC
  • 1xBuck регулатор на напрежението

Както можете да видите на схемите, този проект първоначално е проектиран да контролира една светлина с едно реле, тъй като не планирах да добавя вътрешно осветление (което е доста готино), така че просто свързах второ реле към Arduino. Голямото нещо за SIP-1A05 е, че той има вътрешен флайбек диод и консумацията в mA е доста под ограничението на мощността на Arduino на пин.

Причината, поради която PIR е на щита на снимките, защото в началото S0P беше планирано да бъде поставено в обикновена IP пластмасова кутия вместо в DeathStar. Както може би се досещате, че камерата е директно в лазерния пистолет, PIR и LDR се нуждаеха от още пробити дупки и те са залепени с лепило, тъй като не планирам да ги премахна.

В долната част на DeathStar беше пробита дупка, където залепих голям болт със силно двукомпонентно лепило. Това може да се завие в оригиналната стойка на Neo Coolcams (все пак беше добре за нещо:)). За допълнителна поддръжка използвам твърди медни проводници, за да имам задържане на върха на звездата.

Важна забележка относно захранването: тъй като едно и също захранване ще захранва както PI, Arduino, така и LED лентата, тя трябва да бъде достатъчно силна, за да може да се справи с всички тях, така че да се основава на LED лентата, която сте избрали за проекта. Търговска 5050 12v 3метрова LED лента се източва около 2A, това е много. За PI и Arduino трябва да изчислите в +2A (въпреки че това е прекалено голямо, няма да навреди). Използването на LED лента върху стандартни халогенни крушки, неоново или друго осветление с висока мощност е, че можете да поставите цялата тази верига върху хубава оловна акумулаторна батерия 12V@10Ah като резервна, така че дори да работи в случай на прекъсване на захранването.

Доларът ще намали напрежението от 12-> 5V за захранване на Arduino и PI, докато директното 12V захранване е свързано към релето, за да включи LED лентата.

Стъпка 3: Софтуер Arduino

Софтуер Arduino
Софтуер Arduino

Можете да намерите пълния изходен код долу, който е добре коментиран, но ето кратко обяснение как работи: В началото на всеки цикъл се извиква обичайната функция xcomm (), за да се види дали има команда, идваща от Raspberry PI, която може да бъде LIGHT_ON/OFF, за да включите светлините на коридора или DS_ON/OFF, за да включите/изключите подсветката на DeathStar, аз съм ги приложил само за прекомерно съвършенство, тъй като ако някой мине покрай PIR трябва да го вземе и включи светлините, но може би искате да погледнете мястото по някаква причина, дори когато няма никой.

След това стойността на фотоклетката се отчита и щифтът за движение се проверява за движение. Ако има движение, кодът проверява дали е достатъчно тъмно, след това проверява дали не сме задържани. Ако всичко това премине, то просто включва светлината на коридора и изпраща обратно PHOENIX_MOTION_DETECTED към Raspberry PI, ако не е достатъчно тъмно, той все още сигнализира обратно към компютъра, но не включва лампата. След като се открие движение, се стартира 5 -минутен таймер за задържане.

Веднага след това следващият раздел с код ще провери дали сме в режим на задържане (което би трябвало да е случаят, ако е имало само събитие на движение, така че нека приемем, че изминалите 5 минути, за да може тази проверка да потвърди). Кодът проверява дали отново има движение, ако не, тогава изключва светлините. Както можете да видите, ако няма движение, тази функция ще се повтаря отново и отново, опитвайки се да изключи светлините, така че да няма обратна връзка към компютъра.

Имаме друг таймер за задържане на вътрешното осветление на DeathStar, който изцяло зависи от фотоелементаЧетене <тъмно_гранично.

Въпреки че двете рутини не знаят една за друга, те ще работят перфектно заедно, тъй като когато светлината на коридора светне, тя осигурява толкова много светлина, че LDR ще помисли, че отново е ден и изключва вътрешното осветление. Има обаче някои предупреждения относно този процес, които са обяснени в кода, ако се интересувате, ако не, вземете отговора на Nvidia, че „той просто работи!“.

Стъпка 4: Софтуер Raspberry PI

Софтуер Raspberry PI
Софтуер Raspberry PI
Софтуер Raspberry PI
Софтуер Raspberry PI
Софтуер Raspberry PI
Софтуер Raspberry PI

Най -новото Raspbian работи за мен:

Raspbian GNU/Linux 9.4 (участък)

Linux Phoenix 4.9.35-v7+ #1014 SMP Fri Jun 30 14:47:43 BST 2017 armv7l GNU/Linux ii motion 4.0-1 armhf V4L програма за улавяне, поддържаща откриване на движение

Въпреки че можете да използвате други дистрибуции, ако срещнете някакви проблеми с камерата, ще получите подкрепа само от екипа, ако използвате официалната им операционна система. Премахването на нежеланите вируси като Systemd също е силно препоръчително.

Движението също може лесно да бъде изградено от източник:

apt-get -y инсталирайте autoconf automake pkgconf libtool libjpeg8-dev build-essentials 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

Препоръчвам iSpy като видеорекордер/колекционен сървър. За съжаление по време на писането няма добри алтернативи за Linux. Камерата може да бъде добавена с MJPEG url https:// CAMERA_IP: 8081 порт по подразбиране.

Обработката на движение може да бъде полезна, например не е нужно да гледате сървъра си iSpy през целия ден, можете да получавате имейл в случай на движение. Въпреки че iSpy има тази функция да предупреждава по имейл в случай на движение, той понякога включва запис от време на време за различни събития, като например светлина се отразява в областта. С PIR откриването на движение никога не съм имал нито една фалшива аларма. Сигналите могат да се обработват локално:

На сензора е открито събитие за движение на Pir> Сигнал от Arduino> Raspberry pi получава на конзолата> Програма за обработка на C> Външно приложение за поща

Предпочитам обаче да обработвам дневниците и видеоклиповете дистанционно, така че в този случай добавих раздел към контролната програма C, докато той регистрира регистрационните файлове локално в обикновен текстов файл, също така го регистрира в syslog и той се препраща в SIEM за допълнително обработване.

void logger (char *текст) {

FILE *f = fopen ("phoenix.log", "a"); if (f == NULL) {printf ("Грешка при отваряне на лог файл! / n"); връщане; } fprintf (f, " %s => %s / n", cur_time (0), текст); fclose (f); #ifdef SYSLOG char loggy [500]; sprintf (логика, " %s => %s / n", cur_time (0), текст); setlogmask (LOG_UPTO (LOG_NOTICE)); openlog ("DeathStar", LOG_CONS | LOG_PID | LOG_NDELAY, LOG_USER); // syslog (LOG_NOTICE, "Програмата стартирана от потребител %d", getuid ()); syslog (LOG_NOTICE, loggy); closelog (); #endif връщане; }

На приемащия край syslog-ng може да демуксира тези събития от основния поток от регистрационни файлове:

филтър f_phx {

съвпадение ("DeathStar"); }; дестинация d_phx {файл ("/var/log/phoenix/deathstar.log"); }; log {източник (s_net); филтър (f_phx); дестинация (d_phx); };

и може да бъде предаден на друг инструмент (motion.php вижте приложен) за анализ и предупреждение.

В този скрипт можете просто да зададете обичайното време през седмицата, когато не сте у дома:

$ opt ['alert_after'] = '09:00:00'; // Утро $ opt ['alert_before'] = '17:00:00'; // Вечери

Програмата php използва отличната помощна програма за логика за анализиране на регистрационните файлове.

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

Logtail проследява позицията в офсетов файл, така че основната програма не трябва да знае от кога да започне да разглежда регистрационните файлове, тя ще бъде снабдена с най -новите необработени данни.

Motion.php може да се стартира от crontab с малък трик за уикендите, когато ще премине през регистрационните файлове, но не извършва допълнителна обработка.

*/5 * * * 1-5/usr/local/bin/php ~/motion.php &>/dev/null */5 * * * 6-7/usr/local/bin/php ~/motion.php уикенд &>/dev/null

Стъпка 5: Проблеми и списък с задачи

Списък на проблемите и ToDo
Списък на проблемите и ToDo
Списък на проблеми и ToDo
Списък на проблеми и ToDo

Ако използвате Raspberry pi 3 или по -нова версия, можете да пропуснете този раздел, най -вероятно вече няма да се сблъсквате с тези проблеми.

През годините имах някои проблеми с дъските, базирани на Raspberry pi 2, които можеха да работят със същия софтуерен стек, но бяха закупени по различно време от различни места. След определен период от време, който може да бъде 2 дни или 20 дни, когато SSHing на устройството, SSH просто ще виси, така че демонът за движение и локалният C код, който разговаря с Arduino, се зарежда в оперативна памет, следователно устройството функционира но беше невъзможно да се прави нищо друго с него в това състояние.

След много отстраняване на неизправности измислих решение:

homesync.sh

#!/bin/sh -e

### BEGIN INIT INFO # Предоставя: homesync # Изискващ старт: mountkernfs $ local_fs # Изискващ стоп: камера феникс # По подразбиране-Старт: S # По подразбиране-Стоп: 0 6 # Кратко описание: Домашен синхронизатор # Описание: Домашен синхронизатор от NLD ### END INIT INFO NAME = home DESC = "Ramdisk Home Synchronizer" RAM = "/home/" DISK = "/realhome/" set -e case "$ 1" в началото | напред) echo -n "Начален $ DESC: "rsync -az --numeric -ids --delete $ DISK $ RAM &> /dev /null echo" $ NAME. ";; stop | back) echo -n "Спиране на $ DESC:" rsync -az --numeric -ids --delete $ RAM $ DISK &> /dev /null echo "$ NAME.";; *) ехо "Използване: $ 0 {начало | стоп}" изход 1;; esac изход 0

Скриптът върви заедно с модификация на fstab:

tmpfs /home tmpfs rw, размер = 80%, nosuid, nodev 0 0

Началният дял е монтиран като ramdisk, което ще даде приблизително 600 MB свободно пространство на Raspberry pi 2, което е повече от достатъчно за съхранение на някои двоични файлове и малки регистрационни файлове:

tmpfs 690M 8.6M 682M 2% /дом

Оказа се, че зависването на PI се дължи на операциите за запис на SD картата, въпреки че опитах различни карти (Samsung EVO, Sandisk), които бяха сканирани за грешки многократно преди и след това и нямаха проблем в други лаптопи, това беше просто предстои. Нямах същия проблем (все още) с Raspberry PI 3s и по -висок хардуер, така че и затова ги препоръчвам в този урок.

Въпреки че текущото движение на Raspberry PI 3 е достатъчно добро за мен, ето някои идеи, които си струва да проуча:

  1. Не използвайте движение, а използвайте raspivid поток през мрежата и оставете мощен сървър да извършва откриване на движение и видео кодиране (например iSpy). -> Проблем: постоянно свиване на честотната лента на мрежата.
  2. Използвайте движение и оставете ffmpeg да направи кодирането на видео. -> Проблем: Процесорът не може да се справи с по -високите разделителни способности
  3. Използвайте движение, записвайте необработено видео и оставете мощен сървър да направи кодирането. -> Използването на процесора на RPi е ниско и мрежовата честотна лента е ограничена до когато има действително движение. За този сценарий бихме могли да запишем на SD-карта/ramdisk за максимална пропускателна способност и след това да копираме видеото на друг сървър.

Бих искал също така да отбележа, че изграждането на този проект е възможно да се изгради без Arduino. Всички компоненти (релета, LDR, PIR) могат по някакъв начин да бъдат свързани към малиновото пи, но предпочитам микроконтролерите в реално време да взаимодействат със сензори и изходни устройства. В случаите, когато моето малиново пи висеше например или се разби, контролът на светлината, управляван от Arduino, работеше отлично.

Ако ви хареса тази инструкция, останете настроени, тъй като следващата година ще продължа поредицата с моята 360 -градусова външна малинова pi нулева куполна камера.

Препоръчано: