[Перевод] Дайте собачке погулять: автоматическое открытие двери при помощи Raspberry Pi

319a62bfc19550ad6d56e90d0c3bcd35.webp

Работа дома — хороший вариант для многих из нас. Можно больше времени проводить с семьей (хотя бы теоретически), включая питомцев. Мой офис находится на втором этаже, так что я не всегда замечаю, когда собака хочет погулять. Конечно, можно поставить звонок и научить ее звонить, чтобы понимать, когда выпускать животное наружу. Но зачем, если можно придумать over-engineered решение? Технологий никогда не бывает много.

В этом проекте используется машинное обучение, а именно обнаружение объектов. К счастью, даже если вы не слишком хорошо в нем разбираетесь, это ОЧЕНЬ простой проект для старта. Его основа — уже обученная нейросеть, так что не придется тратить часы на то, чтобы получить сотни изображений, а потом обучать на их основе нейросеть.

Что нужно для старта


• Raspberry Pi 4 или Raspberry Pi 3 с источником питания.
• Карта памяти объемом в 8 ГБ или больше с Raspberry Pi OS.
• Raspberry Pi камера и кабель для обнаружения объектов.
• Модуль широкоугольного объектива для «малинки». Ну или любой другой модуль камеры, который может вам понадобиться — все зависит от того, на каком расстоянии от двери будет установлена эта камера.
• Динамики с 3,5 мм штекером. Можно использовать и мегафон — было бы желание.
• Монитор и клавиатура (по желанию) с HDMI и набором кабелей.

Как определить, когда питомец хочет на улицу при помощи «малинки»


1. Настройте Raspberry Pi. Если не знаете как это сделать, вот туториал.
2. Подключите камеру к «малинке».
3. Активируйте камеру при помощи raspi-config. Для этого необходимо зайти под администратором и перейти к Interface Options > P1 Camera.
4. Перезагрузка.
7b57c5a7276e34f16cd9cdf3a137f9f0.jpg

5. Тестируем фокус камеры при помощи команд, указанных ниже. Понятно, что картинка видна только если монитор подключен к ПК. Если используется headless версия rasbian, то нужно использовать scp для отправки изображения на компьютер.

raspistill -o /home/pi/focus.jpg

6. Ставим git. Для загрузки кода и скриптов из удаленного репозитория нужен git (мануал ну очень подробно разжеван, чтобы его могли использовать даже зеленые новички — прим. Переводчика).

sudo apt-get update && sudo apt-get -y install git

7. Клонируем репозиторй с нужным кодом в собственную директорию.

cd ~/
git clone github.com/rydercalmdown/pet_detector

8. Устанавливаем зависимости, виртуальное окружение и python зависимости.

cd ~/pet_detector
make install

9. Загружаем заранее обученные модели. В проекте используется модель YOLOv3, обученная на дата-сете COCO. Модель умеет распознавать практически любые объекты в доме и квартире — включая котов и собак.

10. Подключаем динамики. Они нужны для проигрывания звука, который укажет на то, что питомец находится в зоне действия камеры. Для тестирования динамиков используем команду

say «this is a test»

3a3b462e4988737f17a5dc878faa38d8.webp

11. Редактируем файл /etc/rc.local для запуска скрипта. Сначала нужно открыть файл при помощи команды sudo nano /etc/rc.local, а затем добавить вот эту строку.

source /home/pi/pet_detector/env/bin/activate && cd /home/pi/pet_detector/src && python app.py &

12. Направляем камеру на дверь. Конечно, если собака или кошка мечутся по квартире, такая настройка не очень помогает. Но если питомец садится и терпеливо ждет — то все работает идеально.

eb6fd1d11ff62d83f2ea9ab395e52555.webp

13. Выпускаем питомца наружу. Когда собака или кошка дают о себе знать — «малинка» издает звуковой сигнал, так что хозяин может спускаться и выпускать страдальца.

bkgzbzsrulun7_ogtlmob3kem0w.png

© Habrahabr.ru