Главная » Хабрахабр » [Перевод] Фейс-контроль для питомцев

[Перевод] Фейс-контроль для питомцев

Компьютерщики, с днём вас! Пусть и не совсем официальным. Недавно мы провели опрос в нашем сообществе Microsoft Developer и выяснили, что у многих из вас есть котики. Поэтому решили сегодня рассказать вам о создании IoT-дверцы для животных с распознаванием мордочки (+ туториал).

Информация о проекте

Сегодня расскажем о создании двери для кошек в двери на улицу. С помощью нее владельцы домов смогут впускать и выпускать своих питомцев автоматически с помощью датчиков движения с функцией распознавания объекта.

Используемые в проекте компоненты

Аппаратные средства

  • Raspberry Pi 3, модель B.

    Мы используем Raspberry Pi, но подойдет также MinnowBoard. В этом случае поменяйте «АRM» в инструкции ниже на «x86».

  • Microsoft LifeCam 3000.

    Подойдет любая USB-камера.

  • Датчик движения PIR (универсальный) — две штуки.
  • Servo Plate A — две штуки.
  • HS-485HB Servo — две штуки.
  • Светодиод (универсальный) — две штуки.
  • Дверь для питомца.
  • Adafruit PWM, 16 каналов, 12 бит/Servo Driver — интерфейс I2C — PCA9685.

    Используется для управления сервомеханизмами PWM через интерфейс I2C.

Программные приложения и онлайн-службы

Инструменты и устройства

  • 3D-принтер (универсальный)
  • Пила (универсальная)
  • Дрель (универсальная)

Проект

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

Возможно, вам будет интересно дополнить проект следующими функциями:

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

Первоначальная настройка

  1. Настройте Raspberry Pi или MinnowBoard на компьютере, следуя этой инструкции.
  2. Подключите USB-камеру, клавиатуру и мышь к устройству.
  3. Подключите датчики движения PIR, сервомеханизмы и светодиоды согласно схеме, приведенной ниже. Сервомеханизмы используются для открывания и закрывания двери.
  4. Включите компьютер и активируйте коннектор Lightning, следуя этим инструкциям.

Настройка оборудования

Отпилите один конец каждой пластины сервомеханизма пилой так, чтобы они были вровень со стенкой сервомеханизма (см. фото ниже). В результате дверь будет открываться полностью, не ударяясь об эти пластины.

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

Наконец, распечатайте на 3D-принтере два соединителя сервомеханизма и корпус, если посчитаете нужным. На иллюстрациях к этой инструкции показан корпус MinnowBoard.

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

Настройка программного обеспечения

  1. Используйте командную строку для перехода в папку, где будет располагаться проект:

    cd <путь к папке>

  2. Запустите команду клонирования git для загрузки проекта:

    git clone https://github.com/ms-iot/PetDoor.git

  3. Откройте файл PetDoor.sln из только что скачанной папки с помощью Visual Studio 2017.
  4. Загрузите библиотеку OpenCV, скомпилируйте ее и добавьте двоичные файлы в проект, следуя этим инструкциям.
  5. В верхнем меню Visual Studio выберите Debug и ARM (для Raspberry PI) или Debug и x86 (для MinnowBoard).
  6. Нажмите кнопку Remote Machine (Удаленный компьютер). В диалогом окне Remote Connections (Удаленные соединения) укажите IP-адрес удаленного компьютера. IP-адрес отображается на панели IoT, которую можно скачать здесь.

Работа с программным обеспечением

У этого приложения имеется дополнительный интерфейс пользователя, где отображается видеопоток с камеры, а также самые недавние изображения, созданные в момент срабатывания триггера датчика движения. Возможна также работа без монитора. Дверь открывается автоматически при обнаружении движения в помещении. Если движение наблюдается снаружи, то изображения передаются с веб-камеры в классификатор изображений OpenCV и обрабатываются им. Классификатор передает вектор распознанной на изображении кошачьей морды. Если в нем содержатся данные, дверь открывается.

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

Проект разработан на базе Кодекса поведения Microsoft в отношении продуктов с открытым исходным кодом. Для получения дополнительной информации ознакомьтесь с Часто задаваемыми вопросами о кодексеу поведения или напишите по адресу opencode@microsoft.com, если у вас возникнут дополнительные вопросы либо комментарии.

Заказные запчасти

Соединитель сервомеханизма

Необходимо распечатать на 3D-принтере два соединителя и прикрепить их к сервомеханизмам на противоположной от ограничителей стороне двери. В результате сервомеханизмы смогут контролировать открытие и закрытие двери.

Корпус MinnowBoard Max

Этот корпус можно использовать для крепления MinnowBoard к двери.

Файл CAD на сайте thingiverse.com.


x

Ещё Hi-Tech Интересное!

У нас DevOps. Давайте уволим всех тестировщиков

Можно ли автоматизировать всё, что угодно? Потом всех тестировщиков уволим, конечно. Зачем они теперь нужны, «ручного» тестирования не осталось. Правильно ведь? Здесь будут конкретные цифры и чисто практические выводы, как так получается, что у хороших специалистов всегда есть работа. Это ...

Современный PHP — прекрасен и продуктивен

Почти 8 месяцев тому назад я пересел с проектов python/java на проект на php (мне предложили условия от которых было бы глупо отказываться), и я внезапно не ощутил боли и отчаяния, о которых проповедуют бывшие разработчики на ПХП. И вот ...