Оглавление:
- Шаг 1: Код
- Шаг 2: Электроника
- Шаг 3: Конструкция: камера и ИК-осветитель
- Шаг 4: Строительство: водопровод
- Шаг 5: Конструкция: сервопривод прицеливания
- Шаг 6: Строительство: Установка блоков питания, вентилятора, Raspberry Pi и Proto-board
- Шаг 7: Построение: Proto Board
- Шаг 8: Строительство: камера Raspberry Pi
- Шаг 9: Список деталей
Видео: Водяной бластер с автоматическим отслеживанием: 9 шагов
2024 Автор: John Day | [email protected]. Последнее изменение: 2024-01-30 11:53
Олень, питающийся розой, побудил меня создать водяной бластер с отслеживанием цели, чтобы помочь сдерживать прожорливых тварей… Этот водный бластер использует видеообнаружение движения, чтобы навести сервопривод и вызвать короткие всплески воды на цель. Стрельба происходит только после того, как обнаруженная цель остается неподвижной в течение нескольких секунд (задержку можно отрегулировать в коде). Меня не волнует, что олени просто проходят мимо, но если они останавливаются, чтобы перекусить, сплюш!
Вот видео, на котором я тестирую водяной бластер:
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
Два источника питания (5 В и 12 В) подключены к одному шнуру питания, выходящему на боковой стороне коробки. Raspberry Pi и макетная плата установлены на боковой стороне коробки рядом с верхней частью. Обратите внимание на дренажные отверстия, просверленные внизу, и вентиляционные отверстия, просверленные вдоль верхнего края. Вентилятор установлен напротив Raspberry Pi. Нет переключателя включения / выключения, поскольку я не хочу поощрять выключение Raspberry Pi без формальной команды «sudo shutdown now» (т.е. не хочу, чтобы питание отключалось слишком легко).
Шаг 7: Построение: Proto Board
Проточная плата содержит регулятор 5 В, крышку фильтра, силовые транзисторы (управляющие сервоприводом и водяным клапаном) и переключатель отладки.
Шаг 8: Строительство: камера 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:
- Портовый фрахт
- Оборудование для садоводства
- Амазонка
- Пластиковые краны
Рекомендуемые:
Взлом на детском квадроцикле с автоматическим движением, отслеживанием линии и обнаружением препятствий: 4 шага
Взлом детского квадроцикла на самоуправляемый автомобиль, автомобиль слежения за линией и обнаружение препятствий. В сегодняшнем руководстве мы превратим детский квадроцикл мощностью 1000 Вт (да, я знаю его много!) В автомобиль с автоматическим движением, слежением за линией и преодолением препятствий! Демо-видео: https: //youtu.be/bVIsolkEP1k Для этого проекта нам потребуются следующие материалы
Умный рюкзак с GPS-отслеживанием и автоматическим освещением: 15 шагов
Умный рюкзак с GPS-отслеживанием и автоматическим освещением: в этом руководстве мы создадим умный рюкзак, который может отслеживать наше положение, скорость и имеет автоматические фонари, которые могут защитить нас в ночное время. Я использую 2 датчика, чтобы определить, лежит ли он у вас на плечах, чтобы убедиться, что он не сработает, когда в этом нет необходимости
Водяной насос с магнитной связью: 10 шагов (с изображениями)
Водяной насос с магнитной связью: в этой ИНСТРУКЦИИ я объясню, как я сделал водяной насос с магнитной муфтой. В этом водяном насосе нет механической связи между крыльчаткой и осью электродвигателя, которая заставляет его работать. Но как этого добиться и
Инфракрасный бластер ESP-12: 7 шагов
ESP-12 Infra Red Blaster: Инфракрасный бластер дистанционного управления с использованием esp8266 Передает коды дистанционного управления, полученные из Интернета, с поддержкой нескольких устройств вывода. Встроенная простая веб-страница в основном для тестирования. Обычное использование - через сообщения POST, которые могут поступать с веб-страниц или из IFTT
Превратите скучную старую настольную лампу в светодиодный бластер 2800 люмен: 7 шагов
Превратите скучную старую настольную лампу в светодиодный бластер 2800 люмен: Привет всем, я научу вас, как превратить вашу "пожирающую пыль в общежитии" настольную лампу в светодиодную лампу с яркостью 2800+ люмен! Это будет больше. иллюстрировать руководство, а не писать … Хорошо! Итак, давайте сделаем это