Оглавление:

Водяной бластер с автоматическим отслеживанием: 9 шагов
Водяной бластер с автоматическим отслеживанием: 9 шагов

Видео: Водяной бластер с автоматическим отслеживанием: 9 шагов

Видео: Водяной бластер с автоматическим отслеживанием: 9 шагов
Видео: Умный грабитель и игрушечный пистолет 2024, Июль
Anonim
Водяной бластер с автоматическим отслеживанием
Водяной бластер с автоматическим отслеживанием

Олень, питающийся розой, побудил меня создать водяной бластер с отслеживанием цели, чтобы помочь сдерживать прожорливых тварей… Этот водный бластер использует видеообнаружение движения, чтобы навести сервопривод и вызвать короткие всплески воды на цель. Стрельба происходит только после того, как обнаруженная цель остается неподвижной в течение нескольких секунд (задержку можно отрегулировать в коде). Меня не волнует, что олени просто проходят мимо, но если они останавливаются, чтобы перекусить, сплюш!

Вот видео, на котором я тестирую водяной бластер:

Water Blaster - это автономный блок, к которому можно удаленно подключиться (через Wi-Fi / VNC) с любого компьютера в вашей сети, чтобы отслеживать, что он делает. Он делает снимок каждый раз, когда срабатывает, чтобы вы могли позже увидеть, что было взорвано.

Я использовал Raspberry Pi, камеру NoIR, ИК-осветитель, стандартный линейный сервопривод и водяной клапан, чтобы создать водяной бластер для отслеживания цели день / ночь. Код написан на Python и во многом заимствован из примеров кода обработки изображений cv2 Адриана Роузброка. Вы можете увидеть его запись по адресу:

www.pyimagesearch.com/2015/06/01/home-surv…

Поскольку я преследую относительно большие наземные цели (олени), моя проблема несколько упрощается. Мне нужно только горизонтальное прицеливание, поэтому я могу использовать только один сервопривод. Ожидание, пока олень остановится, помогает мне избавиться от множества ложных срабатываний. Это моя попытка rev-0, и я нашел несколько вещей, которые я бы изменил, если бы построил еще один. Я отметил эти вещи в подробном описании, которое следует ниже.

Шаг 1: Код

Водяной бластер использует для обработки Raspberry Pi 3. Для записи видео используется камера NoIR Raspberry Pi вместе с ИК-осветителем для ночного видео. Пакет OpenCV / cv2 Python используется для захвата и обработки информации об изображении и вычисления координат цели. Библиотека pigpio используется для управления gpio для стабильной работы сервопривода. Использование обычного пакета RPi. GPIO приводило к неустойчивой работе сервопривода. ПРИМЕЧАНИЕ. При использовании библиотеки pigpio вам необходимо запустить демон pigpio. Добавьте это в файл запуска вашего Pi /etc/rc.local для библиотеки pigpio и интерфейса камеры Raspberry Pi:

/etc/rc.local# Настройте / dev / video0 для связи со встроенным интерфейсом камеры Raspberry Pimodprobe bcm2835-v4l2 # Запустите демон pigpio для библиотеки управления IO Raspberry Pi pigpiod

См. Https://pypi.python.org/pypi/pigpi для получения более подробной информации.

Исходный код называется water_blaster.py и прилагается ниже.

Отказ от ответственности: я новичок в программировании на Python, поэтому не относитесь к нему как к какой-либо отличной модели стиля кодирования Python!

Базовый алгоритм выглядит следующим образом:

  • Возьмите исходный опорный кадр видео. Это будет использоваться для сравнения с целью обнаружения движения.
  • Возьмите другой кадр.
  • Преобразуйте рамку в оттенки серого, измените размер, размывайте.
  • Вычислить разницу с опорным кадром
  • Отфильтруйте небольшие различия, получите координаты наибольшей разницы.
  • Установите таймер. Если координата цели не меняется в течение нескольких секунд, сделайте снимок того, что мы собираемся выстрелить, и активируйте водяной клапан для струи воды. Поверните сервопривод вперед и назад на несколько градусов, чтобы произвести «выстрел из дробовика».
  • Если мы получаем три триггера слишком быстро, отключаем съемку, немного останавливаемся, а затем обновляем опорный кадр, поскольку мы можем снимать только что включенный свет тени или крыльца …
  • Каждые несколько минут обновляйте систему отсчета для учета низкочастотных изменений (восход / заход солнца, приближение облачности и т. Д.)

Я использую только механизм горизонтального прицеливания, но на EBay доступно множество креплений для сервоприводов панорамирования / наклона, и было бы легко добавить еще один сервопривод для управления вертикальным прицеливанием, если вы хотите более точное прицеливание.

Я настроил Raspberry Pi для работы в качестве сервера VNC, а затем подключился к нему через VNC со своего ноутбука, чтобы запустить программу и отслеживать видео и журналы. cd в каталог, в котором вы храните water_blaster.py, и запустите его, набрав:

./python water_blaster.py

Он откроет окно видеомонитора, запустит файл журнала с именем "./log_[date sizes_[time] и создаст подкаталог с именем" trigger_pictures ", где хранятся файлы-j.webp

Вот несколько примечаний по настройке VNC на Raspberry Pi:

В первый раз, когда я настраивал Raspberry Pi, я использовал внешний монитор / клавиатуру / мышь для настройки. Там я включил VNC-сервер в конфигурации RasPi (Raspberry Logo / Preferences / Raspberry Pi Configuration / Interfaces / Check VNC option). После этого, когда он загружается, он позволяет вам подключиться к его: 0 дисплею через VNC-клиент (с теми же учетными данными, что и пользователь по умолчанию «pi»).

В безголовом режиме по умолчанию используется дисплей с очень маленьким разрешением (поскольку он не обнаруживает никаких дисплеев), чтобы заставить его работать с более высоким разрешением, вы добавляете это в /boot/config.txt и перезапускаете:

# Используйте, если у вас есть дисплей # hdmi_ignore_edid = 0xa5000080hdmi_group = 2 # 1400x1050 с частотой 60 Гц # hdmi_mode = 42 # 1356x768 с частотой 60 Гцhdmi_mode = 39

Вот еще немного информации:

Шаг 2: Электроника

Требования к электронике водяного бластера минимальны, используя Raspberry Pi 3 gpio для управления сервоприводом, водяным клапаном и ИК-осветителем через дискретные транзисторные буферы (построенные на небольшой прототипной плате). Стандартная камера NoIR подключается непосредственно к Raspberry Pi.

Название схемы: water_blaster_schematic.pdf и прилагается ниже.

Я использовал специальный источник питания 5 В / 2,5 А для Raspberry Pi и источник питания 12 В / 1 А для управления ИК-осветителем и водяным клапаном. Источник питания 12 В также управляет регулятором 5 В для подачи питания на сервопривод 5 В. Это было сделано для того, чтобы «шумный» блок управления двигателем был изолирован от источника питания Raspberry Pi 5v. Источник питания 12 В / 1 А оказался на пределе (на самом деле чуть больше, когда я добавил вентилятор). Код выключает ИК-осветитель перед включением реле водяного клапана, чтобы ток оставался в пределах допустимого диапазона … Было бы лучше, если бы вы использовали источник питания 1,5 А. Обязательно соедините клеммы заземления всех источников питания вместе.

Модуль камеры представляет собой стандартную версию NoIR, которая подключается напрямую к Raspberry Pi. Это камера Raspberry Pi с уже удаленным ИК-фильтром, что позволяет использовать ее с ИК-осветителем для ночной видеосъемки.

Используемый сервопривод представляет собой линейный сервопривод 5 В стандартного размера с крутящим моментом 3-4 кг-см.

ИК-осветитель представлял собой дешевое кольцо с 48 светодиодами, которое я нашел на EBay примерно за 4 доллара. Он не очень сильный и может освещать только до 15 футов. Если у вас есть дополнительный бюджет, хорошим улучшением будет установка более мощного осветителя.

Я добавил в gpio23 «переключатель отладки». Код проверяет состояние переключателя, и при нажатии отключает реле водяного клапана для проверки сухим пламенем. Я думал, что сделаю больше с этим переключателем, но на самом деле не стал им вообще пользоваться. Я бы удалил его и код, который его ищет …

Шаг 3: Конструкция: камера и ИК-осветитель

Конструкция: камера и ИК-осветитель
Конструкция: камера и ИК-осветитель

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

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

Шаг 4: Строительство: водопровод

Строительство: водопровод
Строительство: водопровод
Строительство: водопровод
Строительство: водопровод

Впускное отверстие для воды подключено к водяному клапану на 12 В, который подсоединен к виниловой трубке с внутренним диаметром ¼ дюйма и наружным диаметром 3/8 дюйма. Он, в свою очередь, подсоединяется к трубке с зазубринами диаметром ¼ дюйма для скользящего соединения из ПВХ и приклеивается к водяной крышке из ПВХ диаметром ¾ дюйма с отверстием 1/16 дюйма, просверленным для потока воды. Я хотел уберечь реле водяного клапана от непогоды, чтобы оно было установлено внутри коробки. Есть опасность, что я могу получить утечку, но я просверлил сливные отверстия в нижней части коробки и установил электронику высоко, чтобы минимизировать вероятность потенциального повреждения электроники водой, если это произойдет. Менее эстетичный, но более безопасный план - установить клапан снаружи и пропустить провода реле 12 В внутри. Прозрачный пластиковый диск над сервоприводом был удобным способом крепления конца шланга, и он предотвращает попадание воды на сервопривод. О вентиляторе думали позже, так как коробка слишком сильно нагревалась. Я построил над ним небольшой навес, чтобы вода не капала.

Шаг 5: Конструкция: сервопривод прицеливания

Конструкция: сервопривод прицеливания
Конструкция: сервопривод прицеливания

В верхней части корпуса прорезано отверстие, и сервопривод прицеливания установлен и герметизирован силиконом для предотвращения попадания воды.

Шаг 6: Строительство: Установка блоков питания, вентилятора, Raspberry Pi и Proto-board

Конструкция: установка блоков питания, вентилятора, Raspberry Pi и Proto-board
Конструкция: установка блоков питания, вентилятора, Raspberry Pi и Proto-board

Два источника питания (5 В и 12 В) подключены к одному шнуру питания, выходящему на боковой стороне коробки. Raspberry Pi и макетная плата установлены на боковой стороне коробки рядом с верхней частью. Обратите внимание на дренажные отверстия, просверленные внизу, и вентиляционные отверстия, просверленные вдоль верхнего края. Вентилятор установлен напротив Raspberry Pi. Нет переключателя включения / выключения, поскольку я не хочу поощрять выключение Raspberry Pi без формальной команды «sudo shutdown now» (т.е. не хочу, чтобы питание отключалось слишком легко).

Шаг 7: Построение: Proto Board

Конструкция: Proto Board
Конструкция: Proto Board

Проточная плата содержит регулятор 5 В, крышку фильтра, силовые транзисторы (управляющие сервоприводом и водяным клапаном) и переключатель отладки.

Шаг 8: Строительство: камера Raspberry Pi

Конструкция: камера Raspberry Pi
Конструкция: камера Raspberry Pi

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

Шаг 9: Список деталей

В итоге проект стоил около 120 долларов. Основная часть стоимости проекта - это Raspberry Pi, камера, сервопривод и блоки питания. Я нашел большую часть запчастей на EBay или Amazon, а детали сантехники - в местном хозяйственном магазине.

  • Raspberry Pi 3 (Amazon) 38 долларов
  • Камера NoIR (EBay) 30 долларов
  • Аналоговый сервопривод 5 В (крутящий момент 4 кг-см) (EBay) $ 10
  • Настенный блок питания 5 В / 2,4 А (EBay) $ 8
  • Водяной клапан 12v ½”(EBay) $ 5
  • НКТ, муфты для труб (Ош) $ 5
  • Пластиковый ящик с боеприпасами (портовый фрахт) $ 5
  • Настенный блок питания 12 В / 1,5 А (EBay) 5 долларов США
  • ИК-осветитель (EBay) $ 4
  • Разное. Компоненты (резисторы, переключатели, диоды) $ 2
  • Вентилятор процессора (EBay) 2 доллара США
  • Proto Board, стойки, винты (EBay) $ 2
  • (2) Силовые транзисторы (2n5296) (EBay) 1 $
  • Регулятор 5 В (LM7805) (EBay) $ 1
  • Прозрачный пластик 3/32 дюйма (разная корзина для пластмасс) $ 1
  • Шнур питания (Ош) $ 1

Магазины / сайты, где я купил товары:

  • Alice1101983 Сайт EBay:
  • 2bevoque Сайт EBay:
  • Портовый фрахт
  • Оборудование для садоводства
  • Амазонка
  • Пластиковые краны

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