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

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

Компьютерщики, с днём вас! Пусть и не совсем официальным. Недавно мы провели опрос в нашем сообществе 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 Интересное!

[Перевод] Введение в ptrace или инъекция кода в sshd ради веселья

Конечно, это несколько искусственная задача, так как есть множество других, более эффективных, способов достичь желаемого (и с гораздо меньшей вероятностью получить SEGV), однако, мне показалось клёвым сделать именно так. Цель, которой я задался, была весьма проста: узнать введённый в sshd ...

Дайджест свежих материалов из мира фронтенда за последнюю неделю №339 (12 — 18 ноября 2018)

Предлагаем вашему вниманию подборку с ссылками на новые материалы из области фронтенда и около него.     Медиа    |    Веб-разработка    |    CSS    |    Javascript    |    Браузеры    |    Занимательное Медиа • Подкаст «Frontend Weekend» #79 – Олег Поляков об основании CodeDojo и о том, как это стало основным местом работы• Подкаст «Пятиминутка React» ...