[Перевод] Дайте собачке погулять: автоматическое открытие двери при помощи Raspberry Pi
Работа дома — хороший вариант для многих из нас. Можно больше времени проводить с семьей (хотя бы теоретически), включая питомцев. Мой офис находится на втором этаже, так что я не всегда замечаю, когда собака хочет погулять. Конечно, можно поставить звонок и научить ее звонить, чтобы понимать, когда выпускать животное наружу. Но зачем, если можно придумать 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. Перезагрузка.
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»
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. Направляем камеру на дверь. Конечно, если собака или кошка мечутся по квартире, такая настройка не очень помогает. Но если питомец садится и терпеливо ждет — то все работает идеально.
13. Выпускаем питомца наружу. Когда собака или кошка дают о себе знать — «малинка» издает звуковой сигнал, так что хозяин может спускаться и выпускать страдальца.