Оглавление:

CribSense: бесконтактная видеоняня: 9 шагов (с изображениями)
CribSense: бесконтактная видеоняня: 9 шагов (с изображениями)

Видео: CribSense: бесконтактная видеоняня: 9 шагов (с изображениями)

Видео: CribSense: бесконтактная видеоняня: 9 шагов (с изображениями)
Видео: CribSenseSetup 2024, Ноябрь
Anonim
CribSense: бесконтактная видеоняня
CribSense: бесконтактная видеоняня
CribSense: бесконтактная видеоняня
CribSense: бесконтактная видеоняня

CribSense - это бесконтактная радионяня на основе видео, которую вы можете сделать самостоятельно, не нарушая при этом денег

CribSense - это реализация функции увеличения видео на C ++, настроенная для работы на Raspberry Pi 3 Model B. В выходные вы можете настроить собственную радионяню для детской кроватки, которая подаст сигнал тревоги, если ваш ребенок перестает двигаться. В качестве бонуса все программное обеспечение можно бесплатно использовать в некоммерческих целях и легко расширять.

Полный репозиторий, содержащий исходные файлы и документацию, можно найти по адресу

Хотя мы думаем, что CribSense - это довольно весело, важно помнить, что на самом деле это не сертифицированное надежное устройство безопасности. То есть, чтобы он работал, он должен быть правильно настроен и иметь хорошо контролируемую среду. Например, если он плохо откалиброван и / или среда на видео не способствует увеличению видео, вы не сможете его использовать. Мы сделали это забавным проектом, чтобы увидеть, насколько хорошо мы могли бы работать с тяжелым программным обеспечением, таким как увеличение видео, на оборудовании с ограниченными вычислительными возможностями, таком как Raspberry Pi. Любой реальный продукт потребует гораздо большего тестирования, чем мы сделали. Итак, если вы используете этот проект, примите его таким, какой он есть: краткое исследование увеличения видео на Pi.

Что тебе понадобится:

Raspberry Pi + камера + инструменты настройки:

  • Raspberry Pi 3 Модель B
  • Блок питания 5V 2.5A Micro USB
  • Модуль камеры Raspberry Pi NoIR V2
  • Карта MicroSD (мы использовали карту класса 10 емкостью 16 ГБ)
  • Шлейф для камеры Raspberry Pi (12 дюймов)
  • Динамики с входом 3,5 мм
  • HDMI монитор
  • USB-клавиатура
  • USB-мышь
  • [необязательно] Радиатор Raspberry Pi (если вас беспокоит высокая температура, вы можете прикрепить один из них к своему Pi)

Схема ИК-светодиода для работы в условиях низкой освещенности:

  • [3x] 1N4001 Диоды
  • Резистор 1 Ом, 1Вт
  • ИК-светодиод мощностью 1 Вт
  • 2 провода для подключения светодиода к Pi
  • Паяльник

Шасси:

  • Доступ к 3D-принтеру (минимальный объем сборки = 9,9 дюйма x 7,8 дюйма x 5,9 дюйма) для печати нашего шасси. Тем не менее, вы можете создать свой собственный.
  • Клей (подойдет любой тип клея, но для прототипирования рекомендуется горячий клей).

Шаг 1. Предварительные требования

Прежде чем приступить к нашему пошаговому руководству, вы должны уже установить последнюю версию Raspbian на свою SD-карту и убедиться, что ваш Pi работает. Вам также необходимо включить модуль камеры, прежде чем вы сможете получить доступ к камере.

Шаг 2: Установка программного обеспечения CribSense

CribSense зависит от autoconf, libtool, OpenCV и libcanberra, а также от распространенных программных инструментов.

  • autoconf и libtool используются для автоматической настройки make-файлов и сценариев сборки для CribSense на многих платформах (например, Linux, OSX и Raspberry Pi).
  • OpenCV - это мощный пакет компьютерного зрения, используемый для обработки изображений, который является основой кода увеличения видео и обнаружения движения. Он имеет отличную поддержку, прост в использовании и имеет хорошую производительность.
  • libcanberra - это простая библиотека для воспроизведения звуков событий. Он используется для воспроизведения звукового сигнала для CribSense.

Посетите их отдельные страницы, чтобы получить полную информацию.

Установите их, открыв терминал на своем Pi и запустив:

sudo apt-get install git build-essential autoconf libtool libopencv-dev libcanberra-dev

Затем вам нужно настроить драйвер камеры на автозагрузку, добавив bcm2835-v4l2 в `/ etc / modules-load.d / modules.conf`. Ваш файл modules.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 - это сердце и душа этого проекта. Мы видели некоторые из замечательных демонстраций увеличения видео от Массачусетского технологического института и хотели попробовать запустить аналогичный алгоритм на Raspberry Pi. Это потребовало более чем 10-кратного ускорения работы tbl3rd над его реализацией увеличения видео на C ++, чтобы работать на Pi в реальном времени. Необходимые оптимизации легли в основу нашей разработки программного обеспечения.

На высоком уровне CribSense многократно циклически проходит через конечный автомат программного обеспечения. Во-первых, он делит каждый видеокадр 640x480 в оттенках серого на 3 горизонтальных участка (640x160) для лучшей локализации кэша. Затем он увеличивает каждую полосу в отдельном потоке и отслеживает движение, видимое в кадре. После наблюдения за движением в течение нескольких секунд он определяет основную область движения и обрезает кадр. Это уменьшает общее количество пикселей, которое необходимо обработать алгоритму. Затем CribSense отслеживает количество движения в обрезанном потоке и подает сигнал тревоги, если в течение настраиваемого количества времени движения не обнаруживаются. Периодически CribSense снова открывает вид, чтобы контролировать полный кадр на случай, если ребенок переместился, и повторно кадрирует новую основную область движения.

Увеличение видео используется для увеличения отношения сигнал / шум при тонких движениях, таких как дыхание младенца. Это не обязательно для больших движений, но может помочь в очень тонких движениях. Обратите внимание, что наша реализация в общих чертах основана на алгоритме, описанном в статьях MIT, и работает не так хорошо, как их собственный код.

Такие оптимизации, как многопоточность, адаптивное кадрирование и оптимизация компилятора, дали нам ускорение примерно в 3, 3 и 1,2 раза соответственно. Это позволило нам достичь 10-кратного ускорения, необходимого для работы на Pi в реальном времени.

Полную информацию можно найти на странице «Архитектура программного обеспечения» репозитория CribSense.

Если вас интересует увеличение видео, посетите страницу Массачусетского технологического института.

Шаг 3. Подготовка оборудования: подключите камеру

Подготовка оборудования: подключите камеру
Подготовка оборудования: подключите камеру

Во-первых, вы замените 6-дюймовый кабель, поставляемый с камерой, на 12-дюймовый кабель. Для этого вы можете просто следовать этому руководству по замене кабеля камеры.

Таким образом, вы увидите язычок на задней панели камеры, который вы можете потянуть, чтобы освободить гибкий кабель. Замените короткий кабель на более длинный и снова вставьте язычок.

Вы заметите, что на наших фотографиях у нас есть 24-дюймовый кабель. Он был слишком длинным. 12-дюймовый кабель в списке материалов - гораздо более разумная длина.

Шаг 4: Подготовка оборудования: ИК-светодиод

Подготовка оборудования: ИК-светодиод
Подготовка оборудования: ИК-светодиод
Подготовка оборудования: ИК-светодиод
Подготовка оборудования: ИК-светодиод
Подготовка оборудования: ИК-светодиод
Подготовка оборудования: ИК-светодиод

CribSense относительно прост в изготовлении и в основном состоит из имеющихся в продаже частей. Как видно на рисунке выше, имеется 5 основных аппаратных компонентов, только 2 из которых изготавливаются на заказ. На этой странице будет рассмотрено, как построить цепь ИК-светодиода, а на следующей странице будет рассказано, как построить корпус.

Для этой детали вам понадобится паяльник, провода, диоды, ИК-светодиод и резистор. Мы будем строить схему, показанную на 2-м рисунке. Если вы новичок в пайке, вот хорошее руководство, которое поможет вам. Хотя в этом руководстве обсуждается сквозная пайка, вы можете использовать те же базовые методы для соединения этих компонентов вместе, как показано на 3-м рисунке.

Чтобы обеспечить адекватное освещение в ночное время, мы используем ИК-светодиод, который не виден человеческому глазу, но виден камерой NoIR. ИК-светодиод не потребляет много энергии по сравнению с Raspberry Pi, поэтому для простоты мы оставляем ИК-светодиод включенным.

В более ранних версиях Pi максимальный выходной ток этих контактов составлял 50 мА. Raspberry Pi B + увеличил это значение до 500 мА. Однако для простоты мы просто используем выводы питания 5 В, которые могут обеспечивать ток до 1,5 А. Согласно нашим измерениям, прямое напряжение ИК-светодиода составляет около 1,7 ~ 1,9 В. Хотя ИК-светодиод может потреблять 500 мА, не повреждая себя, мы уменьшаем ток примерно до 200 мА, чтобы снизить нагрев и общее энергопотребление. Экспериментальные результаты также показывают, что ИК-светодиод достаточно яркий при входном токе 200 мА. Чтобы преодолеть разрыв между 5 В и 1,9 В, мы используем три диода 1N4001 и резистор 1 Ом, соединенные последовательно с ИК-светодиодом. Падение напряжения на проводе, диодах и резисторе составляет примерно 0,2 В, 0,9 В (для каждого из них) и 0,2 В соответственно. Таким образом, напряжение на ИК-светодиоде составляет 5В - 0,2В - (3 * 0,9В) - 0,2В = 1,9В. Теплоотдача светодиода составляет 0,18 Вт, а резистора - 0,2 Вт, и все это находится в пределах их максимальных номиналов.

Но мы еще не закончили! Чтобы лучше вписаться в корпус, напечатанный на 3D-принтере, мы хотим, чтобы линза ИК-светодиода выступала из корпуса, а печатная плата была на одном уровне с отверстием. Маленький фотодиод в правом нижнем углу будет мешать. Чтобы исправить это, мы демонтировали его и перевернули на противоположную сторону платы, как показано на последних двух фотографиях. Фотодиод не нужен, так как мы хотим, чтобы светодиод всегда был включен. Простое переключение на противоположную сторону оставляет исходную схему светодиода неизменной.

При пайке к проводам убедитесь, что провода имеют длину не менее 12 дюймов и имеют разъемы для контактов, которые могут скользить по GPIO Pi.

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

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

Исходные файлы:

  • Кейс STL
  • Кейс 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. Затем приклейте ИК-светодиод к отверстию на горловине крышки. Шея расположена под углом 45 градусов для бокового освещения кроватки, что дает больше теней в условиях низкой освещенности. Это добавляет большему контрасту изображению, что упрощает обнаружение движения.
  5. Присоедините провода ИК-светодиода к контактам заголовка Raspberry Pi, как показано на схематическом изображении.
  6. Уложите кабели в корпус так, чтобы они не сгибались и не натягивались. В итоге мы сложили кабель гармошкой, потому что гибкий кабель камеры был слишком длинным.
  7. Когда все заправлено, приклейте горячим клеем края, где встречаются две части, запечатывая их на месте.

Шаг 7: Калибровка

Image
Image
Калибровка
Калибровка

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

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

[io]; Конфигурация ввода / вывода

; input = path_to_file; Входной файл для использования input_fps = 15; fps ввода (максимум 40, рекомендуется 15 при использовании камеры) full_fps = 4.5; fps, при котором можно обрабатывать полные кадры, croc_fps = 15; fps, при котором кадрированные кадры могут обрабатываться camera = 0; Камеру использовать ширину = 640; Ширина входного видео height = 480; Высота входного видео time_to_alarm = 10; Сколько секунд ждать без движения до сигнала тревоги. [кадрирование]; Настройки адаптивного кадрирования crop = true; Обрезать или нет frames_to_settle = 10; # кадра для ожидания после сброса перед обработкой roi_update_interval = 800; # кадров между пересчетом ROI roi_window = 50; # кадра для мониторинга перед выбором области интереса [движение]; Настройки обнаружения движения erode_dim = 4; размер ядра выветривания dilate_dim = 60; размерность дилатирующего ядра diff_threshold = 8; разница абс, необходимая для распознавания длительности изменения = 1; # кадров для поддержания движения перед отметкой истины pixel_threshold = 5; # пиксели, которые должны быть разными, чтобы помечать их как движение show_diff = false; отображать разницу между 3 кадрами [увеличение]; Настройки увеличения видео ampify = 25; Требуемый нижний предел отсечки% усиления = 0,5; Низкая частота полосы пропускания. high-cutoff = 1.0; Высокая частота полосы пропускания. порог = 50; Фазовый порог в% от пи. show_magnification = ложь; Показать выходные кадры каждого увеличения [отладка] print_times = false; Время анализа печати

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

В качестве ориентира увеличение усиления и значений phase_threshold увеличивает степень увеличения, применяемого к входному видео. Вам следует изменять эти значения до тех пор, пока вы четко не увидите движение, которое хотите отслеживать в видеокадре. Если вы видите артефакты, может помочь уменьшение phase_threshold с сохранением того же усиления.

Параметры обнаружения движения помогают компенсировать шум. При обнаружении областей движения erode_dim и dilate_dim используются для определения размеров ядер OpenCV, используемых для размывания и расширения движения, так что сначала эрозия шума, а затем оставшийся сигнал движения значительно расширяется, чтобы сделать области движения очевидными. Эти параметры, возможно, также потребуется настроить, если ваша кроватка настроена на очень высокий контраст. В общем, вам понадобится более высокий erode_dim для настроек высокой контрастности и более низкий erode_dim для низкой контрастности.

Если вы запускаете CribSense с show_diff = true и замечаете, что слишком большая часть вывода аккумулятора имеет белый цвет или какая-то совершенно несвязанная часть видео обнаруживается как движение (например, мерцающая лампа), увеличивайте erode_dim до тех пор, пока не будет только часть видео. вашему ребенку соответствует самая большая часть белого цвета. На первом рисунке показан пример, в котором размер размытия слишком мал для количества движения в кадре, а на следующем рисунке показан хорошо откалиброванный кадр.

После калибровки убедитесь, что для параметра pixel_threshold установлено такое значение, что «Pixel Movement» сообщает только пиковые значения движения пикселей, а не все из них (что означает, что вам нужно вырезать шум). В идеале вы увидите такой вывод в своем терминале, где есть четкий периодический шаблон, соответствующий движению:

[info] Движение пикселей: 0 [info] Оценка движения: 1,219812 Гц

[info] Движение пикселей: 0 [info] Оценка движения: 1,219812 Гц [info] Движение пикселей: 0 [info] Оценка движения: 1,219812 Гц [info] Движение пикселей: 0 [info] Оценка движения: 1,219812 Гц [info] Движение пикселей: 44 [info] Оценка движения: 1,219812 Гц [информация] Движение пикселей: 0 [информация] Оценка движения: 1,219812 Гц [информация] Движение пикселей: 161 [информация] Оценка движения: 1,219812 Гц [информация] Движение пикселей: 121 [информация] Оценка движения: 0,841416 Гц [информация] Движение пикселей: 0 [информация] Оценка движения: 0,841416 Гц [информация] Движение пикселей: 86 [информация] Оценка движения: 0,841416 Гц [информация] Движение пикселей: 0 [информация] Оценка движения: 0,841416 Гц [info] Движение пикселей: 0 [info] Оценка движения: 0,841416 Гц [info] Движение пикселей: 0 [info] Оценка движения: 0,841416 Гц [info] Движение пикселей: 0 [info] Оценка движения: 0,841416 Гц [info] Движение пикселей: 0 [info] Оценка движения: 0,841416 Гц [информация] Движение пикселей: 0 [информация] Оценка движения: 0,841416 Гц [информация] Движение пикселей: 0 [информация] Оценка движения: 0,841416 Гц [информация] Pixel Movem ent: 0 [info] Оценка движения: 0,841416 Гц [info] Движение пикселей: 0 [info] Оценка движения: 0,841416 Гц [info] Движение пикселей: 0 [info] Оценка движения: 0,841416 Гц [info] Движение пикселей: 0 [info] Оценка движения: 0,841416 Гц [информация] Движение пикселей: 0 [информация] Оценка движения: 0,841416 Гц [информация] Движение пикселей: 0 [информация] Оценка движения: 0,841416 Гц [информация] Движение пикселей: 0 [информация] Оценка движения: 0,841416 Hz [info] Движение пикселей: 0 [info] Оценка движения: 0,841416 Гц [info] Движение пикселей: 97 [info] Оценка движения: 0,841416 Гц [info] Движение пикселей: 74 [info] Оценка движения: 0,839298 Гц [info] Пиксель Движение: 0 [info] Оценка движения: 0,839298 Гц [info] Движение пикселей: 60 [info] Оценка движения: 0,839298 Гц [info] Движение пикселей: 0 [info] Оценка движения: 0,839298 Гц [info] Движение пикселей: 0 [info] Оценка движения: 0,839298 Гц [информация] Движение пикселей: 0 [информация] Оценка движения: 0,839298 Гц [информация] Движение пикселей: 0 [информация] Оценка движения: 0,839298 Гц [информация] Движение пикселей: 48 [информация] Движение Оценка: 0,839298 Гц [info] Движение пикселей: 38 [info] Оценка движения: 0,839298 Гц [info] Движение пикселей: 29 [info] Оценка движения: 0,839298 Гц [info] Движение пикселей: 28 [info] Оценка движения: 0,839298 Гц [info] Движение пикселей: 22 [info] Оценка движения: 0,839298 Гц [info] Движение пикселей: 0 [info] Оценка движения: 0,839298 Гц [info] Движение пикселей: 0 [info] Оценка движения: 0,839298 Гц [info] Движение пикселей: 0 [info] Оценка движения: 0,839298 Гц [info] Движение пикселей: 0 [информация] Оценка движения: 0,839298 Гц

Если ваш результат выглядит примерно так:

[info] Движение пикселей: 921 [info] Оценка движения: 1,352046 Гц

[info] Движение пикселей: 736 [info] Оценка движения: 1,352046 Гц [info] Движение пикселей: 666 [info] Оценка движения: 1,352046 Гц [info] Движение пикселей: 663 [info] Оценка движения: 1,352046 Гц [info] Движение пикселей: 1196 [информация] Оценка движения: 1,352046 Гц [информация] Движение пикселей: 1235 [информация] Оценка движения: 1,352046 Гц [информация] Движение пикселей: 1187 [информация] Оценка движения: 1,456389 Гц [информация] Движение пикселей: 1115 [информация] Оценка движения: 1,456389 Гц [информация] Движение пикселей: 959 [информация] Оценка движения: 1,456389 Гц [информация] Движение пикселей: 744 [информация] Оценка движения: 1,456389 Гц [информация] Движение пикселей: 611 [информация] Оценка движения: 1,456389 Гц [info] Движение пикселей: 468 [info] Оценка движения: 1,456389 Гц [info] Движение пикселей: 371 [info] Оценка движения: 1,456389 Гц [info] Движение пикселей: 307 [info] Оценка движения: 1,456389 Гц [info] Движение пикселей: 270 [info] Оценка движения: 1.456389 Гц [info] Движение пикселей: 234 [info] Оценка движения: 1.456389 Гц [info] Движение пикселей: 197 [info] Оценка движения: 1.456389 Hz [info] Движение пикселей: 179 [info] Оценка движения: 1,456389 Гц [info] Движение пикселей: 164 [info] Оценка движения: 1,456389 Гц [info] Движение пикселей: 239 [info] Оценка движения: 1,456389 Гц [info] Движение пикселей: 733 [info] Оценка движения: 1,456389 Гц [info] Движение пикселей: 686 [info] Оценка движения: 1,229389 Гц [info] Движение пикселей: 667 [info] Оценка движения: 1,229389 Гц [info] Движение пикселей: 607 [info] Оценка движения: 1,229389 Гц [info] Движение пикселей: 544 [info] Оценка движения: 1,229389 Гц [info] Движение пикселей: 499 [info] Оценка движения: 1,229389 Гц [info] Движение пикселей: 434 [info] Оценка движения: 1,229389 Гц [информация] Движение пикселей: 396 [информация] Оценка движения: 1,229389 Гц [информация] Движение пикселей: 375 [информация] Оценка движения: 1,229389 Гц [информация] Движение пикселей: 389 [информация] Оценка движения: 1,229389 Гц [информация] Движение пикселей: 305 [информация] Оценка движения: 1,312346 Гц [информация] Движение пикселей: 269 [информация] Оценка движения: 1,312346 Гц [информация] Движение пикселей: 1382 [информация] Движение E стимулировать: 1,312346 Гц [информация] Движение пикселей: 1086 [информация] Оценка движения: 1,312346 Гц [информация] Движение пикселей: 1049 [информация] Оценка движения: 1,312346 Гц [информация] Движение пикселей: 811 [информация] Оценка движения: 1,312346 Гц [info] Движение пикселей: 601 [info] Оценка движения: 1,312346 Гц [info] Движение пикселей: 456 [info] Оценка движения: 1,312346 Гц

Отрегулируйте pixel_threshold и diff_threshold до тех пор, пока не будут видны только пики, в противном случае перемещение пикселей не будет равно 0.

Шаг 8: демонстрация

Image
Image

Вот небольшая демонстрация того, как работает CribSense. Вы должны представить, что это прикреплено к стороне детской кроватки.

Когда вы размещаете CribSense над кроваткой, вам нужно будет оптимизировать расстояние между младенцем и камерой. В идеале грудь вашего ребенка будет занимать менее 1/3 кадра. Ребенок не должен находиться слишком далеко, иначе видео с низким разрешением не сможет найти достаточно деталей для увеличения. Если камера находится слишком близко, она может не увидеть вашего ребенка, если он катится или выходит из кадра. Точно так же, если ребенок находится под «накиданным» одеялом, где имеется ограниченный контакт между одеялом и грудной клеткой ребенка, может быть трудно обнаружить движение. Хорошо их заправьте!

Вы также захотите рассмотреть ситуацию с освещением вокруг вашей кроватки. Если ваша детская кроватка находится прямо рядом с окном, вы можете увидеть движущиеся тени или изменение значений освещенности, поскольку солнце закрыто облаками или движение происходит за окном. Лучше всего где-нибудь с постоянным освещением.

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

Шаг 9: Устранение неполадок

При настройке CribSense вы можете столкнуться с несколькими типичными проблемами. Например, проблема с созданием / запуском программы или отсутствие звука. Помните, что CribSense - не совсем надежная радионяня. Мы будем приветствовать ваши дополнения в нашем репозитории GitHub по мере внесения вами улучшений!

Вот несколько советов по устранению неполадок, которые мы собрали при создании CribSense.

Будильник не играет

  • Ваши колонки работают?
  • Можете ли вы воспроизвести другие звуки Pi вне будильника CribSense?
  • Если ваш Pi пытается воспроизводить звук через HDMI, а не через аудиопорт? Проверьте страницу конфигурации звука Raspberry Pi, чтобы убедиться, что вы выбрали правильный выход.
  • Обнаруживает ли программа CribSense движение? Если CribSense работает в фоновом режиме, вы можете проверить это с помощью journalctl -f в терминале.
  • Если CribSense обнаруживает большое движение, возможно, вам потребуется откалибровать CribSense.

ИК-светодиод не работает

  • Вы видите слабый красный цвет, когда смотрите на ИК-светодиод? Когда светодиод горит, должно быть видно слабое красное кольцо.
  • Проверьте полярность соединений. Если поменять местами + 5V и GND, это не сработает.
  • Подключите светодиод к источнику питания с ограничением напряжения / тока 5 В / 0,5 А. Обычно он должен потреблять 0,2 А при 5 В. Если это не так, возможно, ваш светодиод неисправен.

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"?

Рекомендуемые: