Главная » Arduino
Призовой фонд
на май 2017 г.
1. Тестер компонентов MG328
Паяльник
2. Осциллограф DSO138
Паяльник
3. Регулируемый паяльник 60 Вт
Паяльник
4. 100 руб.
От пользователей

Сундучок на базе Raspberry Pi, который распознает ваше лицо

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

В данном проекте показано, как использовать микрокомпьютер Raspberry Pi и камеру Pi для открытия сундучка с помощью технологии распознавания лица.

Программная часть данного проекта основывается на алгоритме, который представлен в библиотеке OpenCV computer vision library. Raspberry Pi является идеальной платформой для данного проекта, поскольку обладает достаточной вычислительной мощностью для запуска OpenCV и имеет небольшие габаритные размеры, позволяющие вместится в любом месте.

Данный проект средний по сложности. В нем выполняется компилирование и установка программного обеспечения на микрокомпьютере Raspberry Pi. Если у вас есть опыт создания подобных вещей, и вы не имеете проблем при использовании командной строки, тогда вы полностью готовы пройти все этапы данного проекта. Вы также можете обратиться к справочным материалам Adafruit learning system при возникновении каких-либо проблем.

Шаг #1: Подготовка сундучка

  • Просверлите отверстие диаметром 7/16 дюйма в верхней части сундучка для вставки камеры Pi.
  • Просверлите отверстие большего диаметра сзади сундучка для вставки нажимной кнопки и силовых кабелей.

Шаг #2: Изготовления защелки

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

Шаг #3: Завершение работы с сундучком

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

Шаг #4: Подключение электронных компонентов

  • Подключите сигнальную линию сервопривода к выводу GPIO 18 на Raspberry Pi. Питание и земля для сервопривода должны подключаться к питающим выводам аккумулятора.
  • Подключите один вывод нажимной кнопки к выводу Pi GPIO 25, и через резистор 10 кОм к выводу напряжения питания 3.3 В Pi. Подключите второй вывод нажимной кнопки к земляному выводу Pi.
  • Соедините вместе земляные выводы аккумулятора и Pi.
  • Установите Pi камеру через отверстие в верхней части сундучка и подсоедините кабель к микрокомпьютеру Pi.

Шаг #5: Компилирование OpenCV

  • На данном этапе необходимо установить последнюю версию OpenCV на Raspberry Pi. К сожалению, сначала нужно скомпилировать OpenCV из исходного кода, поскольку старая двоичная версия не содержит алгоритмы распознавания лица, используемые в проекте. Компилирование OpenCV на Pi занимает около 5 часов.
  • Подайте питание на микрокомпьютер Pi и подключитесь к нему через сеанс работы с терминалом.
  • Выполните следующие команды для установки взаимозависимостей OpenCV:

sudo apt-get update && sudo apt-get install build-essential cmake pkg-config python-dev libgtk2.0-dev libgtk2.0 zlib1g-dev libpng-dev libjpeg-dev libtiff-dev libjasper-dev libavcodec-dev swig

  • Выполните следующие команды для загрузки и разархивирования исходного кода для последней версии OpenCV:

wget http://downloads.sourceforge.net/project/opencvlibrary/opencv-unix/2.4.7/opencv-2.4.7.tar.gz && tar zxvf opencv-2.4.7.tar.gz

  • Выполните следующие команды для подготовки компиляции исходного кода OpenCV:

cd opencv-2.4.7 && cmake -DCMAKE_BUILD_TYPE=RELEASE -DCMAKE_INSTALL_PREFIX=/usr/local -DBUILD_PERF_TESTS=OFF -DBUILD_opencv_gpu=OFF -DBUILD_opencv_ocl=OFF

  • Выполните данную команду для запуска компиляции OpenCV (примите во внимание, что компиляция занимает около 5 часов):

make

  • После завершения компиляции OpenCV, выполните данную команду для установки Pi:

sudo make install

  • Далее с помощью следующих команд установите взаимозависимости Python:

sudo apt-get install python-pip && sudo pip install picamera && sudo pip install rpio

Шаг #6: Пробное распознавание лица

  • На данном этапе мы опробуем алгоритмы распознавания лица, которые позволят открывать сундучок.
  • Загрузите программное обеспечение для данного проекта с депозитария github repository (сноска: https://github.com/tdicola/pi-facerec-box).
  • Разархивируйте архив и скопируйте содержимое в директорий на Pi.
  • Во время сеанса работы с терминалом на Pi просмотрите директорий и выполните следующую команду для запуска пробного скрипта:

sudo python capture-positives.py

  • Во время работы скрипта вы можете нажать кнопку, располагаемую на сундучке, для фотографирования с помощью камеры Pi. Скрипт попытается определить одно лицо в захваченном изображении и сохранить его как правильно отснятый кадр в поддиректории ./training/positive.
  • Каждый раз при захвате изображения, кадр записывается в файл capture.pgm. Вы можете просмотреть его в графическом редакторе, чтобы определить, как камера Pi выполняет захват и определяет изображение вашего лица.
  • Используйте кнопку для захвата 5 или более изображений вашего лица для получения правильных результатов. Попытайтесь получить изображения с разных углов, при различном освещении и т.д. На фотографиях вы видите полученные мной изображения лица.
  • Если вам интересно, вы можете просмотреть директорий ./training/negative, в котором размещаются изображения из базы данных распознавания лиц AT&T, которые можно использовать как примеры людей, которые не должны иметь доступ к открытию сундучка.
  • После получения правильных изображений запустите следующие команды для обработки правильных и неправильных пробных изображений, и для проверки алгоритма распознавания лица (примите во внимание, что данная пробная операция занимает около 10 минут):

python train.py

Шаг #7: Конфигурирование сервопривода

  • На данном этапе необходимо определить значения ширины импульсов сервопривода для запирания и отпирания защелки.
  • При подаче питания на микрокомпьютер Raspberry Pi и сервопривод защелки, подключитесь к Pi в сессии работы с терминалом. Убедитесь в том, что сундучок открыт так, что вы можете видеть перемещение сервопривода без заклинивания.
  • Выполните следующую команду для запуска интерактивной сессии Python как суперпользователь (необходимо иметь доступ к выводам GPIO и возможность перемещения сервопривода):

sudo python

  • В командной строке Python >>>, введите данную команду для загрузки библиотеки RPIO servo library:

from RPIO import PWM

  • Далее введите следующую команду:

servo = PWM.Servo()

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

servo.set_servo(18, 1500)

  • Параметр 1500 для установки функции set_servo определяет ширину импульса для привода в микросекундах. Крайние значения находятся в диапазоне от 1000 до 2000.
  • Попытайтесь выполнить функцию set_servo с различными значениями ширины импульса, пока не получите значения, при которых происходит правильное закрытие и открытие защелки, как показано на фотографиях.
  • Не забывайте, что вы можете снять качалку сервопривода и прикрепить повторно для надлежащей ориентации защелки на сервоприводе.
  • Как только значения будут подобраны, откройте config.py в текстовом редакторе с правами суперпользователя и измените следующие значения:
  • Установите LOCK_SERVO_UNLOCKED равным значению ширины импульса для разблокировки положения защелки – отпирание. На моем железе надлежащее значение 2000.
  • Установите LOCK_SERVO_LOCKED для определения блокировки положения защелки – запирание. В моем случае это значение 1100.

Шаг #8: Запуск программного обеспечения

  • После проверки распознавания лица и калибровки сервопривода, можно запустить программный код!
  • При подаче питания на микрокомпьютер Raspberry Pi и сервопривод защелки, подключитесь к Pi в сессии работы с терминалом и просмотрите корневой директорий проекта.
  • Выполните следующую команду для запуска программного кода (будьте внимательны, поскольку сразу произойдет запирание сундучка):

sudo python box.py

  • После загрузки пробных данных (это занимает несколько минут), направьте камеру на ваше лицо и нажмите кнопку для попытки распознавания лица.
  • Если сундучок распознает ваше лицо, сработает сервопривод и отопрет защелку. Если ваше лицо не распознано, на терминале отобразится сообщение, насколько ваше лицо было близко к пробному изображению.
  • Для распознавания лица необходимо, чтобы захваченное изображение совпало с пробным, с достоверностью 2000 или менее. Если ваше лицо совпадает с данными пробного изображения, но достоверность невысокая, вы можете изменить порог достоверности в config.py (под настройкой POSITIVE_THRESHOLD). Если распознавание все еще не достоверное, тогда загрузите больше надлежащих захваченных изображений и запустите пробное распознавание еще раз. Алгоритм распознавания лица в данном проекте сильно зависит от освещения лица, поэтому попытайтесь иметь тот же источник освещения, что и при пробных попытках (или добавьте несколько дополнительных изображений при различных условиях освещенности).
  • После раскрытия сундучка повторно нажмите кнопку для его закрытия. Для этого операция распознавания лица не требуется.
  • Если сундучок плохо открывается и не распознает ваше лицо, тогда выполните шаги конфигурации сервопривода для ручного перемещения сервопривода в положение отпирания с помощью команды set_servo.

Оригинал статьи

Теги:

Опубликована: 0 2
Я собрал 0 0
x

Оценить статью

  • Техническая грамотность
  • Актуальность материала
  • Изложение материала
  • Полезность устройства
  • Повторяемость устройства
  • Орфография
0

Средний балл статьи: 0 Проголосовало: 0 чел.

Комментарии (1) | Я собрал (0) | Подписаться

0
Леонид #
Можно ли для данного проекта использовать не Pi камеру, а веб камеру?
Ответить
Добавить комментарий
Имя:
E-mail:
не публикуется
Текст:
Защита от спама:
В чем измеряется электрическая мощность?
Файлы:
 
Для выбора нескольких файлов использйте CTRL

Модуль измерения тока на ACS712 (30А)
Модуль измерения тока на ACS712 (30А)
Набор начинающего радиолюбителя Raspberry Pi 2
вверх