Съдържание:

CribSense: безконтактен, видео базиран бебешки монитор: 9 стъпки (със снимки)
CribSense: безконтактен, видео базиран бебешки монитор: 9 стъпки (със снимки)

Видео: CribSense: безконтактен, видео базиран бебешки монитор: 9 стъпки (със снимки)

Видео: CribSense: безконтактен, видео базиран бебешки монитор: 9 стъпки (със снимки)
Видео: Scentroid's CTAir Continuous Urban Air Quality Monitor Seminar A 12.08.2020 (Subtitled) 2024, Ноември
Anonim
CribSense: безконтактен, базиран на видео монитор за бебета
CribSense: безконтактен, базиран на видео монитор за бебета
CribSense: безконтактен, базиран на видео монитор за бебета
CribSense: безконтактен, базиран на видео монитор за бебета

CribSense е базиран на видео, безконтактен бебефон, който можете да направите сами, без да нарушавате банката

CribSense е C ++ внедряване на видео увеличение, настроено да работи на Raspberry Pi 3 модел B. През уикенд можете да настроите свой собствен бебешки монитор, който вдига аларма, ако вашето бебе спре да се движи. Като бонус, целият софтуер е безплатен за използване с нетърговска цел и е лесно разширяем.

Пълното хранилище, съдържащо изходни файлове и документация, може да бъде намерено на адрес

Въпреки че смятаме, че CribSense е доста забавно, важно е да запомните, че това всъщност не е сертифицирано, надеждно защитно устройство. Тоест, тя трябва да бъде правилно конфигурирана и да има добре контролирана среда, за да работи. Например, ако не е калибриран добре и/или средата във видеото не е благоприятна за увеличение на видеото, може да не успеете да го използвате. Направихме това като забавен проект, за да видим колко добре бихме могли да имаме изчислителен софтуер, като например увеличение на видео, работещ на хардуер, ограничен от изчисления, като Raspberry Pi. Всеки истински продукт би изисквал много повече тестове, отколкото ние направихме. Така че, ако използвате този проект, приемете това, което е: кратко изследване на увеличаването на видео на Pi.

Какво ще ви трябва:

Raspberry Pi + Camera + Инструменти за конфигуриране:

  • Raspberry Pi 3 Модел B
  • 5V 2.5A Micro USB захранване
  • Модул за камера Raspberry Pi NoIR V2
  • MicroSD карта (използвахме 16GB карта клас 10)
  • Гъвкав кабел за Raspberry Pi камера (12 ")
  • Високоговорители с вход 3,5 мм
  • HDMI монитор
  • USB клавиатура
  • USB мишка
  • [по избор] Радинерен радиатор Pi (ако се притеснявате от топлината, можете да залепите един от тях върху вашия Pi)

IR LED верига за работа при слаба светлина:

  • [3x] 1N4001 диоди
  • 1 Ом, 1 W резистор
  • 1W IR LED
  • 2 проводника за свързване на светодиода към Pi
  • Поялник

Шаси:

  • Достъп до 3D принтер (минимален обем на изработка = 9,9 "L x 7,8" W x 5,9 "H) за отпечатване на нашето шаси. Чувствайте се свободни да създадете свой собствен.
  • Лепило (всеки тип лепило ще работи, но се препоръчва горещо лепило за прототипиране).

Стъпка 1: Предпоставки

Преди да започнете нашето стъпка по стъпка ръководство, трябва да сте инсталирали най-новата версия на Raspbian на вашата SD карта и да сте сигурни, че вашият Pi е функционален. Също така ще трябва да активирате модула на камерата, преди да имате достъп до камерата.

Стъпка 2: Инсталиране на софтуера CribSense

CribSense зависи от autoconf, libtool, OpenCV и libcanberra, както и от общи софтуерни инструменти.

  • autoconf и libtool се използват за автоматично конфигуриране на makefiles и изграждане на скриптове за CribSense на много платформи (като Linux, OSX и Raspberry Pi).
  • OpenCV е мощен пакет за компютърно виждане, използван за обработка на изображения и е в основата на кода за увеличение на видеото и откриване на движение. Той има голяма поддръжка, лесен е за използване и има добри показатели.
  • libcanberra е проста библиотека за възпроизвеждане на звуци от събития. Използва се за възпроизвеждане на алармен звук за CribSense.

Посетете техните отделни страници, за да получите пълна информация.

Инсталирайте ги, като отворите терминал на вашия Pi и стартирате:

sudo apt-get install git build-съществен autoconf libtool libopencv-dev libcanberra-dev

След това трябва да настроите драйвера на камерата да се зарежда автоматично, като добавите bcm2835-v4l2 към `/etc/modules-load.d/modules.conf`. Вашите module.conf трябва да изглежда така:

# /etc /modules: модули на ядрото за зареждане по време на зареждане.

# # Файлът съдържа имената на модулите на ядрото, които трябва да бъдат заредени # по време на зареждане, по едно на ред. Редовете, започващи с "#", се игнорират. i2c-dev bcm2835-v4l2

След като файлът бъде редактиран, трябва да рестартирате своя Pi. Този драйвер се използва от CribSense за директно изтегляне на рамки от камерата NoIR.

След това можете да клонирате хранилището, като изпълните:

git clone

След това се преместете в хранилището и изградете софтуера, като стартирате

cd CribSense

./autogen.sh --prefix =/usr --sysconfdir =/etc --disable-debug make sudo make install sudo systemctl daemon-reload

Поздравления, инсталирали сте целия необходим софтуер!

Конфигурация

CribSense може да се персонализира чрез прост INI конфигурационен файл. След стартиране на „make install“, конфигурационният файл се намира на /etc/cribsense/config.ini. Можете да видите и редактирате тези параметри, като стартирате

sudo nano /etc/cribsense/config.ini

Кратко обяснение на всеки параметър е дадено в конфигурацията по подразбиране, но повече подробности са достъпни на https://lukehsiao.github.io/CribSense/setup/config/. Ще обсъдим и калибрирането и конфигурирането в края на това ръководство.

Стартирайте CribSense

CribSense е проектиран да работи при стартиране с помощта на услуга systemd. Докато сте свързани с вашия Raspberry Pi с клавиатурата и мишката, трябва да се уверите, че конфигурационните параметри работят за вашето креватче. Може да се наложи да пренастроите тези параметри, ако го преместите.

Докато настройвате параметрите, можете да стартирате cribsense по желание от командния ред, като стартирате

cribsense --config /etc/cribsense/config.ini

След като сте доволни, можете да активирате автозапускането, като стартирате

sudo systemctl активира cribsense

Можете да спрете автоматичното стартиране на cribsense, като стартирате

sudo systemctl деактивирайте cribsense

Преглед на софтуера

Софтуерът CribSense е сърцето и душата на този проект. Видяхме някои от страхотните демонстрации на видео увеличение от MIT и искахме да опитаме да стартираме подобен алгоритъм на Raspberry Pi. Това изискваше повече от 10-кратно ускорение от работата на tbl3rd върху неговата C ++ реализация на видео увеличение, за да работи в реално време на Pi. Изискваните оптимизации ръководят нашия дизайн на софтуера.

На високо ниво CribSense многократно преминава през машина за състоянието на софтуера. Първо, той разделя всяка видеокадра с 640x480, в сиви скали на 3 хоризонтални секции (640x160) за по -добро местоположение на кеша. След това той увеличава всяка лента в отделна нишка и наблюдава движението, видимо в кадъра. След като наблюдава движението за няколко секунди, той определя основната област на движение и изрязва рамката към него. Това намалява общия брой пиксели, които алгоритъмът трябва да обработи. След това CribSense следи количеството движение в изрязания поток и издава аларма, ако не се възприеме движение за определен период от време. Периодично CribSense отново ще отваря изгледа си, за да следи пълния кадър в случай, че бебето се е преместило и отново изрязва около новата основна зона на движение.

Увеличението на видеото се използва за увеличаване на съотношението сигнал / шум на фините движения като дишането на бебето. Не би било необходимо за по -големи движения, но може да помогне за много фини движения. Обърнете внимание, че нашата реализация е свободно базирана на алгоритъма, описан в документите на MIT, и не работи толкова добре, колкото техния собствен код.

Оптимизации като многонишковост, адаптивно изрязване и оптимизация на компилатор ни дадоха съответно приблизително 3x, 3x и 1.2x ускорение. Това ни позволи да постигнем 10-кратно ускорение, необходимо за работа в реално време на Pi.

Пълни подробности можете да намерите на страницата Архитектура на софтуера в хранилището на CribSense.

Ако се интересувате от видео увеличение, моля, посетете страницата на MIT.

Стъпка 3: Подготовка на хардуера: Свържете камерата си

Подготовка на хардуера: Свържете камерата си
Подготовка на хардуера: Свържете камерата си

Първо трябва да смените 6 -инчовия кабел, доставен с камерата, с 12 -инчовия кабел. За да направите това, можете просто да следвате този урок за това как да смените кабела на камерата.

В обобщение ще видите бутон за натискане/издърпване на гърба на камерата, който можете да издърпате, за да освободите гъвкавия кабел. Сменете късия кабел с по -дългия и натиснете езичето обратно навътре.

Ще забележите, че на снимките ни има 24 "кабел. Той беше твърде дълъг. 12" кабелът в списъка с материали е много по -разумна дължина.

Стъпка 4: Подготовка на хардуера: IR LED

Подготовка на вашия хардуер: IR LED
Подготовка на вашия хардуер: IR LED
Подготовка на вашия хардуер: IR LED
Подготовка на вашия хардуер: IR LED
Подготовка на вашия хардуер: IR LED
Подготовка на вашия хардуер: IR LED

CribSense е сравнително лесен за конструиране и до голяма степен се състои от части, достъпни в търговската мрежа. Както се вижда на фигурата по -горе, има 5 основни хардуерни компонента, само 2 от които са изработени по поръчка. Тази страница ще разгледа как да изградите веригата на IR LED, а следващата страница ще разгледа как да конструирате шасито.

За тази част трябва да получите своя поялник, проводници, диоди, IR LED и резистор. Ще конструираме веригата, показана на втората фигура. Ако сте нов в запояването, ето едно хубаво ръководство, което ще ви настигне. Докато това ръководство обсъжда запояване през отвори, можете да използвате същите основни техники за свързване на тези компоненти заедно, както е показано на третата фигура.

За да осигурим адекватно осветление през нощта, използваме IR LED, който не се вижда от човешкото око, но се вижда от камерата NoIR. IR LED не консумира много енергия в сравнение с Raspberry Pi, така че оставяме IR LED включен за по -голяма простота.

В по -ранните версии на Pi максималният токов изход на тези щифтове беше 50mA. Raspberry Pi B+ увеличи това до 500mA. Въпреки това, ние просто използваме 5V захранващи щифтове за простота, които могат да захранват до 1.5A. Правото напрежение на IR LED е около 1,7 ~ 1,9 V според нашите измервания. Въпреки че инфрачервеният светодиод може да извлича 500 mA, без да се повреди, ние намаляваме тока до около 200 mA, за да намалим топлината и общата консумация на енергия. Експерименталните резултати също показват, че IR LED е достатъчно ярък с 200mA входен ток. За да се преодолее празнината между 5V и 1.9V, ние използваме три 1N4001 диода и 1 ом резистор последователно с IR LED. Спадът на напрежението върху проводника, диодите и резистора е съответно около 0.2V, 0.9V (за всеки един) и 0.2V. По този начин напрежението над инфрачервения светодиод е 5V - 0.2V - (3 * 0.9V) - 0.2V = 1.9V. Разсейването на топлина над светодиода е 0,18 W и 0,2 W над резистора, всичко в рамките на максималните им стойности.

Но още не сме приключили! За да се впишем по -добре в 3D отпечатаното шаси, искаме IR LED обективът да излиза от нашето шаси и платката да се изравнява с отвора. Малкият фотодиод в долния десен ъгъл ще ви попречи. За да поправим това, го разпаяваме и обръщаме към противоположната страна на дъската, както е показано на последните две снимки. Фотодиодът не е необходим, тъй като искаме LED да свети винаги. Простото превключване на противоположната страна оставя оригиналната LED верига непроменена.

Когато запоявате към проводниците, уверете се, че проводниците са дълги поне 12 инча и имат щифтове, които могат да се плъзгат по GPIO на Pi.

Стъпка 5: Подготовка на хардуера: Шаси

Подготовка на хардуера: Шаси
Подготовка на хардуера: Шаси
Подготовка на вашия хардуер: Шаси
Подготовка на вашия хардуер: Шаси
Подготовка на хардуера: Шаси
Подготовка на хардуера: Шаси

Източници:

  • Калъф STL
  • Case Makerbot
  • Покрийте STL
  • Покрийте Makerbot

Използвахме просто шаси с 3D печат, за да поместим Pi, камерата и светодиода. Използването на нашето шаси не е задължително, въпреки че се препоръчва да се предотврати докосването на малки деца до открити електронни схеми. Всяко креватче е различно, така че нашето шаси не включва монтажна скоба. Няколко опции за монтаж могат да включват:

  • Кабелни връзки
  • 3M двойно заключване
  • Велкро
  • Лента

Ако имате достъп до MakerBot Replicator (5 -то поколение), можете просто да изтеглите.makerbot файловете за калъфа и корицата на вашия MakerBot Replicator и да отпечатате. Отпечатването на кутията отнема около 6 часа и отпечатването на корицата - 3 часа. Ако използвате различен тип 3D принтер, моля, продължете да четете.

За отпечатване на CribSense е необходим минимален обем на изграждане от 9,9 "(Д) x 7,8" (Ш) x 5,9 "(В). Ако нямате достъп до 3D принтер с този обем на изграждане, можете да използвате онлайн 3D печат услуга (като Shapeways или Sculpteo) за отпечатване на CribSense. Минималната разделителна способност за печат е 0,015 ". Ако използвате 3D принтер за производство на слята нишка, това означава, че диаметърът на вашата дюза трябва да бъде 0,015 "или по -малък. Принтерите с по -ниска разделителна способност (по -големи диаметри на дюзите) може да работят, но Raspberry Pi може да не се побере в шасито. Препоръчваме PLA (полимлечна киселина) като предпочитан материал за печат. Други пластмаси може да работят, но Raspberry Pi може да не се побере в случай, че коефициентът на термично разширение на избраната пластмаса е по -голям от този на PLA. Ако вашият 3D принтер има загрята плоча за изграждане, изключете нагревателя, преди да продължите.

Ориентирането на модела върху плочата за изграждане на вашия принтер е от решаващо значение за успешен печат. Тези модели са внимателно проектирани, така че не е необходимо да бъдат отпечатани с поддържащ материал, като по този начин се спестява пластмаса и се подобрява качеството на печат. Преди да продължите, изтеглете 3D файловете за калъфа и корицата. Когато отпечатвате тези модели, шията на CribSense трябва да лежи плоско върху плочата за изграждане. Това гарантира, че всички надвесени ъгли на моделите не надвишават 45 градуса, като по този начин се елиминира изискването за поддържащ материал. За инструкции относно ориентирането на 3D модели в обема на вашия принтер, моля, вижте ръководството с инструкции, което се доставя с вашия 3D принтер. Примери за ориентация на конструкцията на корпуса и капака са показани по -горе.

В допълнение към поставянето на гърлото на CribSense върху плочата за изграждане, може да забележите, че моделите се завъртат около вертикалната ос. Това може да е необходимо, за да се побере моделът в обема на изграждане на вашия 3D принтер. Това завъртане не е задължително, ако дължината на обема ви за изграждане е достатъчно дълга, за да побере CribSense.

Стъпка 6: Подготовка на хардуера: Монтаж

Подготовка на вашия хардуер: Монтаж
Подготовка на вашия хардуер: Монтаж
Подготовка на вашия хардуер: Монтаж
Подготовка на вашия хардуер: Монтаж
Подготовка на вашия хардуер: Монтаж
Подготовка на вашия хардуер: Монтаж
Подготовка на вашия хардуер: Монтаж
Подготовка на вашия хардуер: Монтаж

След като сте подготвили целия хардуер, можете да започнете сглобяването. В този процес може да се използва всяко лепило, но ние препоръчваме горещо лепило по две основни причини. Горещото лепило изсъхва бързо, така че не е нужно да чакате дълго, докато лепилото изсъхне. В допълнение, горещото лепило се отстранява, ако направите грешка. За да премахнете изсушеното горещо лепило, накиснете горещото лепило в разтриващ (изопропилов) спирт. Препоръчваме 90% или по -висока концентрация, но 70% концентрация все пак ще работи. Накисването на изсушеното горещо лепило в изопропилов алкохол ще отслаби връзката между лепилото и подлежащата повърхност, което ще ви позволи да отлепите чисто лепилото. Когато накисвате лепилото в изопропилов алкохол, Raspberry Pi трябва да бъде изключен и изключен от контакта. Не забравяйте да оставите всичко да изсъхне, преди да нанесете отново горещо лепило и да заредите Raspberry Pi.

Всички снимки за тези стъпки са подредени и следвани заедно с текстовите стъпки.

  1. Поставете Raspberry Pi в шасито. Ще трябва да го огънете малко, за да включите аудио порта, но след като е включен, аудио жакът ще го задържи на място. След като е на място, уверете се, че всички портове все още могат да бъдат достъпни (например можете да включите захранващия кабел).
  2. След това използвайте горещо лепило, за да поставите Pi на място и да прикрепите камерата към Pi. Има и дупки за винтове, ако предпочитате да ги използвате.
  3. Сега залепете светодиода и камерата към предния капак (на снимката). Започнете с горещо залепване на камерата NoIR към отвора на камерата. Уверете се, че камерата е плътна и подравнена с шасито. Не използвайте твърде много лепило; в противен случай няма да можете да поставите камерата в основния калъф. Не забравяйте да включите Pi и погледнете камерата (например „raspistill -v“), за да се уверите, че е под ъгъл добре и има добро зрително поле. Ако не е, отстранете горещото лепило и го поставете отново.
  4. След това залепете IR LED към отвора на гърлото на капака. Вратът е под ъгъл 45 градуса, за да освети странично кошарата, което води до повече сенки в ситуации на слаба светлина. Това добавя по -голям контраст към изображението, което улеснява откриването на движение.
  5. Прикрепете IR LED проводниците към щифтовете на заглавката на Raspberry Pi, както е показано на схематичната картина.
  6. Опаковайте кабелите в шасито по начин, който да не ги нагъва или напряга. В крайна сметка сгънахме стила на кабелния акордеон, защото гъвкавият ни кабел на камерата беше твърде дълъг.
  7. С всичко прибрано, горещо лепило около краищата, където се срещат двете части, ги запечатва на място.

Стъпка 7: Калибриране

Image
Image
Калибриране
Калибриране

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

Ето пример на конфигурационния файл:

[io]; I/O конфигурация

; вход = път_ към_файл; Входен файл за използване на input_fps = 15; fps на входа (40 max, 15 препоръчани, ако използвате камера) full_fps = 4,5; fps, при които могат да се обработват пълни кадри crop_fps = 15; fps, при които могат да се обработват изрязани кадри камера = 0; Ширина на камерата = 640; Ширина на височината на входното видео = 480; Височина на входното видео time_to_alarm = 10; Колко секунди да чакате без движение преди алармата. [изрязване]; Adaptive Cropping Settings crop = true; Дали да се изрежат frame_to_settle = 10; # рамки за изчакване след нулиране преди обработка roi_update_interval = 800; # рамки между преизчисляване на ROI roi_window = 50; # рамки за наблюдение, преди да изберете ROI [движение]; Настройки за откриване на движение erode_dim = 4; размер на ерозиращото ядро dilate_dim = 60; размер на разширеното ядро diff_threshold = 8; абс разлика, необходима преди да се признае продължителността на промяната = 1; # рамки за поддържане на движение, преди да маркирате true pixel_threshold = 5; # пиксела, които трябва да бъдат различни, за да бъдат означени като движение show_diff = false; показва разликата между 3 кадъра [увеличение]; Настройки за увеличение на видео усилва = 25; Желаното % усилване с ниска граница = 0,5; Ниската честота на лентовия пропуск. висока граница = 1,0; Високата честота на лентовия проход. праг = 50; Фазовият праг като % от pi. show_magnification = false; Показване на изходните кадри за всяко увеличение [отстраняване на грешки] print_times = false; Отпечатайте времената за анализ

Калибрирането на алгоритъма е итеративно усилие, без точно решение. Насърчаваме ви да експериментирате с различни стойности, комбинирайки ги с функциите за отстраняване на грешки, за да намерите комбинацията от параметри, най -подходящи за вашата среда. Преди да започнете калибриране, уверете се, че show_diff и show_magnification са настроени на true.

Като ориентир, увеличаването на усилването и стойностите на фаза_праг увеличават размера на увеличение, приложено към входното видео. Трябва да промените тези стойности, докато не видите ясно движението, което искате да проследите във видеокадъра. Ако видите артефакти, намаляването на phase_threshold при запазване на същото усилване може да помогне.

Параметрите за откриване на движение помагат да се компенсира шумът. При откриване на области на движение, erode_dim и dilate_dim се използват за оразмеряване на размерите на ядрата на OpenCV, използвани за ерозия и разширяване на движението, така че шумът първо да се ерозира, след това останалият сигнал за движение е значително разширен, за да направи регионите на движение очевидни. Тези параметри също може да се наложи да се настроят, ако креватчето ви е в настройка с много висок контраст. Като цяло ще ви трябва по -висок erode_dim за настройки на висок контраст и по -нисък erode_dim за нисък контраст.

Ако стартирате CribSense с show_diff = true и забележите, че твърде много от изхода на акумулатора е бял или някаква напълно несвързана част от видеоклипа се открива като движение (например трептяща лампа), увеличете erode_dim само до частта от видеото съответстващо на вашето бебе е най -големият участък от бяло. Първата фигура показва пример, когато размерът на ерозията е твърде нисък за количеството движение в рамката, докато следващата показва добре калибрирана рамка.

След като това е калибрирано, уверете се, че pixel_threshold е зададено на стойност, така че „Pixel Movement“отчита само пиковите стойности на движението на пикселите, а не всички (което означава, че трябва да изрежете шума). В идеалния случай ще видите изход като този във вашия терминал, където има ясен периодичен модел, съответстващ на движението:

[информация] Движение на пиксела: 0 [информация] Оценка на движение: 1.219812 Hz

[информация] Движение на пиксел: 0 [информация] Оценка на движение: 1.219812 Hz [информация] Движение на пиксел: 0 [информация] Оценка на движение: 1.219812 Hz [информация] Движение на пиксел: 0 [информация] Оценка на движение: 1.219812 Hz [информация] Пикселно движение: 44 [информация] Оценка на движение: 1.219812 Hz [информация] Движение на пиксела: 0 [информация] Оценка на движение: 1.219812 Hz [информация] Движение на пиксел: 161 [информация] Оценка на движение: 1.219812 Hz [информация] Движение на пиксел: 121 [информация] Оценка на движение: 0.841416 Hz [информация] Движение на пиксел: 0 [информация] Оценка на движение: 0.841416 Hz [информация] Движение на пиксел: 86 [информация] Оценка на движение: 0.841416 Hz [информация] Движение на пиксел: 0 [информация] Оценка на движение: 0.841416 Hz [информация] Движение на пиксел: 0 [информация] Оценка на движение: 0.841416 Hz [информация] Движение на пиксел: 0 [информация] Оценка на движение: 0.841416 Hz [информация] Движение на пиксел: 0 [информация] Оценка на движение: 0.841416 Hz [информация] Движение на пиксел: 0 [информация] Оценка на движение: 0.841416 Hz [информация] Движение на пиксела: 0 [информация] Оценка на движение: 0.841416 Hz [информация] Движение на пиксел: 0 [информация] Оценка на движение: 0.841416 Hz [информация] Pixel Movem вход: 0 [информация] Оценка на движение: 0.841416 Hz [информация] Движение на пиксела: 0 [информация] Оценка на движение: 0.841416 Hz [информация] Движение на пиксел: 0 [информация] Оценка на движение: 0.841416 Hz [информация] Движение на пиксел: 0 [информация] Оценка на движение: 0.841416 Hz [информация] Движение на пиксел: 0 [информация] Оценка на движение: 0.841416 Hz [информация] Движение на пиксел: 0 [информация] Оценка на движение: 0.841416 Hz [информация] Движение на пиксел: 0 [информация] Оценка на движение: 0.841416 Hz [информация] Движение на пиксел: 0 [информация] Оценка на движение: 0.841416 Hz [информация] Движение на пиксел: 97 [информация] Оценка на движение: 0.841416 Hz [информация] Движение на пиксел: 74 [информация] Оценка на движение: 0.839298 Hz [информация] Пиксел Движение: 0 [информация] Оценка на движение: 0.839298 Hz [информация] Движение на пиксел: 60 [информация] Оценка на движение: 0.839298 Hz [информация] Движение на пиксел: 0 [информация] Оценка на движение: 0.839298 Hz [информация] Движение на пиксел: 0 [информация] Оценка на движение: 0.839298 Hz [информация] Движение на пиксел: 0 [информация] Оценка на движение: 0.839298 Hz [информация] Движение на пиксел: 0 [информация] Оценка на движение: 0.839298 Hz [информация] Движение на пиксел: 48 [информация] Движение Оценка: 0.839298 Hz [информация] Движение на пиксел: 38 [информация] Оценка на движение: 0.839298 Hz [информация] Движение на пиксел: 29 [информация] Оценка на движение: 0.839298 Hz [информация] Движение на пиксел: 28 [информация] Оценка на движение: 0.839298 Hz [информация] Движение на пиксели: 22 [информация] Оценка на движение: 0.839298 Hz [информация] Движение на пиксел: 0 [информация] Оценка на движение: 0.839298 Hz [информация] Движение на пиксел: 0 [информация] Оценка на движение: 0.839298 Hz [информация] Движение на пиксел: 0 [информация] Оценка на движение: 0.839298 Hz [информация] Движение на пиксела: 0 [информация] Оценка на движение: 0.839298 Hz

Ако вашият изход изглежда по -скоро така:

[информация] Движение на пиксела: 921 [информация] Оценка на движение: 1.352046 Hz

[информация] Движение на пиксел: 736 [информация] Оценка на движение: 1.352046 Hz [информация] Движение на пиксел: 666 [информация] Оценка на движение: 1.352046 Hz [информация] Движение на пиксел: 663 [информация] Оценка на движение: 1.352046 Hz [информация] Движение на пиксел: 1196 [информация] Оценка на движение: 1.352046 Hz [информация] Движение на пиксела: 1235 [информация] Оценка на движение: 1.352046 Hz [информация] Движение на пиксел: 1187 [информация] Оценка на движение: 1.456389 Hz [информация] Движение на пиксели: 1115 [информация] Оценка на движение: 1.456389 Hz [информация] Движение на пиксел: 959 [информация] Оценка на движение: 1.456389 Hz [информация] Движение на пиксел: 744 [информация] Оценка на движение: 1.456389 Hz [информация] Движение на пиксел: 611 [информация] Оценка на движение: 1.456389 Hz [информация] Движение на пиксели: 468 [информация] Оценка на движение: 1.456389 Hz [информация] Движение на пиксел: 371 [информация] Оценка на движение: 1.456389 Hz [информация] Движение на пиксел: 307 [информация] Оценка на движение: 1.456389 Hz [информация] Движение на пиксел: 270 [информация] Оценка на движение: 1.456389 Hz [информация] Движение на пиксели: 234 [информация] Оценка на движение: 1.456389 Hz [информация] Движение на пиксели: 197 [информация] Оценка на движение: 1.456389 Hz [информация] Движение на пиксели: 179 [информация] Оценка на движение: 1.456389 Hz [информация] Движение на пиксели: 164 [информация] Оценка на движение: 1.456389 Hz [информация] Движение на пиксели: 239 [информация] Оценка на движение: 1.456389 Hz [информация] Движение на пиксели: 733 [информация] Оценка на движение: 1.456389 Hz [информация] Движение на пиксел: 686 [информация] Оценка на движение: 1.229389 Hz [информация] Движение на пиксел: 667 [информация] Оценка на движение: 1.229389 Hz [информация] Движение на пиксели: 607 [информация] Оценка на движение: 1.229389 Hz [информация] Движение на пиксела: 544 [информация] Оценка на движение: 1.229389 Hz [информация] Движение на пиксел: 499 [информация] Оценка на движение: 1.229389 Hz [информация] Движение на пиксел: 434 [информация] Оценка на движение: 1.229389 Hz [информация] Движение на пиксели: 396 [информация] Оценка на движение: 1.229389 Hz [информация] Движение на пиксел: 375 [информация] Оценка на движение: 1.229389 Hz [информация] Движение на пиксели: 389 [информация] Оценка на движение: 1.229389 Hz [информация] Движение на пиксели: 305 [информация] Оценка на движение: 1.312346 Hz [информация] Движение на пиксел: 269 [информация] Оценка на движение: 1.312346 Hz [информация] Движение на пиксел: 1382 [информация] Движение E обхват: 1.312346 Hz [информация] Движение на пиксел: 1086 [информация] Оценка на движение: 1.312346 Hz [информация] Движение на пиксел: 1049 [информация] Оценка на движение: 1.312346 Hz [информация] Движение на пиксел: 811 [информация] Оценка на движение: 1.312346 Hz [информация] Движение на пиксели: 601 [информация] Оценка на движение: 1.312346 Hz [информация] Движение на пиксел: 456 [информация] Оценка на движение: 1.312346 Hz

Регулирайте pixel_threshold и diff_threshold, докато се видят само върховете, а движението на пикселите е 0 в противен случай.

Стъпка 8: Демонстрация

Image
Image

Ето малка демонстрация за това как работи CribSense. Ще трябва да си представите, че това е прикрепено отстрани на яслите.

Когато поставяте CribSense над креватчето си, ще трябва да оптимизирате разстоянието между бебето и камерата. В идеалния случай гърдите на вашето бебе ще запълнят по -малко от 1/3 от рамката. Детето не трябва да е твърде далеч, в противен случай видеото с ниска разделителна способност ще се мъчи да намери достатъчно подробности, които да увеличи. Ако камерата е твърде близо, камерата може да не може да види детето ви, ако то се претърколи или излезе от рамката. По подобен начин, ако детето е под „шатрано“одеяло, където има ограничен контакт между одеялото и гърдите на детето, може да е трудно да се открие движение. Пъхнете ги добре!

Също така ще искате да обмислите ситуацията на осветление около креватчето си. Ако креватчето ви е точно до прозорец, може да получите движещи се сенки или промяна на стойностите на светлината, тъй като слънцето е блокирано от облаци, или движение се случва извън прозореца. Някъде с постоянно осветление е най -добре.

С още малко работа смятаме, че някой би могъл да подобри нашия софтуер, така че калибрирането е много по -плавен процес. В бъдеще могат да бъдат добавени и допълнителни функции като push известия.

Стъпка 9: Отстраняване на неизправности

При настройването на CribSense може да срещнете няколко често срещани проблема. Например, имате проблеми при изграждането/изпълнението на програмата или не чувате звук. Не забравяйте, че CribSense не е идеално надежден детегледач. Ще се радваме на приноса в нашето хранилище на GitHub, докато правите подобрения!

Ето някои съвети за отстраняване на неизправности, които събрахме при създаването на CribSense.

Не се пуска аларма

  • Работят ли високоговорителите ви?
  • Можете ли да възпроизвеждате други звуци от Pi извън алармата CribSense?
  • Ако вашият Pi се опитва да възпроизвежда аудио през HDMI, а не през аудио порта? Проверете страницата за конфигурация на Raspberry Pi Audio, за да се уверите, че сте избрали правилния изход.
  • Софтуерът CribSense открива ли движение? Ако CribSense работи във фонов режим, можете да проверите с journalctl -f в терминал.
  • Ако CribSense усеща много движение, може да се наложи да калибрирате CribSense.

IR LED не работи

  • Можете ли да видите слаб червен цвят, когато погледнете IR LED? Слаб червен пръстен трябва да се вижда, когато светодиодът свети.
  • Проверете полярността на връзките. Ако +5V и GND са обърнати, това няма да работи.
  • Свържете светодиода към захранване с 5V/0.5A ограничение на напрежение/ток. Обикновено той трябва да консумира 0.2A при 5V. Ако това не стане, вашият светодиод може да не работи правилно.

CribSense открива движение, въпреки че няма бебе

  • Правилно ли сте калибрирали CribSense?
  • Не забравяйте, че CribSense просто търси промени в стойностите на пикселите

    • Има ли някакви сенки, движещи се в рамките на кадъра?
    • Има ли трептене или промяна на осветлението?
    • Монтиран ли е CribSense на стабилна повърхност (т.е. нещо, което няма да се разклати, ако хората минават покрай него)?
    • Има ли други източници на движение в рамката (огледала, улавящи отражения и т.н.)?

CribSense НЕ открива движение, въпреки че има движение

  • Правилно ли сте калибрирали CribSense?
  • Има ли нещо по пътя на камерата?
  • Можете ли изобщо да се свържете с камерата от Raspberry Pi? Проверете, като стартирате raspistill -v в терминал, за да отворите камерата на Pi за няколко секунди.
  • Ако погледнете sudo systemctl status cribsense, действително ли работи CribSense?
  • Вашето бебе е под одеяло, което е „разпънато“така, че да не влиза в контакт с детето? Ако има значителни въздушни пролуки между одеялото и детето, одеялото може да прикрие движението.
  • Можете ли да видите движението, ако усилите видеоклипа повече?
  • Можете ли да видите движението, ако настроите ниските и високочестотните прекъсвания?
  • Ако това се случва само при слаба светлина, уверихте ли се, че калибрирането ви работи при слаба светлина?

CribSense не се изгражда

Инсталирахте ли всички зависимости?

Не мога да стартирам cribsense от командния ред

  • Случайно ли сте сбъркали нещо, когато сте стартирали./autogen.sh --prefix =/usr --sysconfdir =/etc --disable-debug по време на изграждането на софтуера?
  • Присъства ли cribsense в /usr /bin?
  • Какъв път е предвиден, ако стартирате „which cribsense“?

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