- Необходимые материалы:
- 3D-печать необходимых деталей (необязательно):
- Схема и оборудование:
- Настройка вашего приложения для Android:
- Программирование вашего Arduino:
- За работой:
Вы когда-нибудь хотели создать роботизированную руку или робота для отслеживания лиц, просто используя Arduino, а не какие-либо другие программы, такие как OpenCV, визуальные основы C # и т. Д.? Затем читайте дальше, в этом проекте мы собираемся реализовать обнаружение лиц, объединив возможности Arduino и Android. В этом проекте мобильная камера будет двигаться вместе с вашим лицом с помощью сервоприводов. Преимущество использования мобильного телефона Android здесь заключается в том, что вам не нужно вкладывать средства в модуль камеры, и вся работа по обнаружению изображений может выполняться в самом телефоне, вам не нужно, чтобы ваш Arduino был подключен к компьютеру, чтобы это работало. Здесь мы использовали модуль Bluetooth с Arduino для беспроводной связи с мобильным устройством.
Приложение Android, используемое в этом проекте, было создано с использованием Processing Android, вы можете либо напрямую установить приложение, загрузив файл APK (см. Ссылку ниже), либо надеть ограничения на программирование и сделать свое собственное более привлекательное приложение Android, используя данный код обработки далее в Учебнике. Узнайте больше об обработке, проверив наши предыдущие проекты обработки.
К концу этого урока у вас будет роботизированная рука Mini Tilt и Span, которая сможет отслеживать ваше лицо и двигаться вместе с ним. Вы можете использовать это (с дальнейшим развитием) для записи видео влогов или даже сделать селфи с помощью задней камеры вашего мобильного телефона, так как это позиционирует ваше лицо точно в центре экрана вашего мобильного телефона. Так!! Звучит интересно? Посмотрите демонстрационное видео в конце этого руководства, чтобы убедиться, что оно работает. Посмотрим, как мы можем его построить…
Я изо всех сил старался сделать этот проект максимально простым. Любой, у кого есть минимальные знания об оборудовании или кодировании, может использовать это руководство, чтобы этот проект заработал в кратчайшие сроки. Однако, как только вы это сделаете, я предлагаю вам разобраться с кодами, чтобы вы действительно знали, что заставляет эту вещь работать и как.
Необходимые материалы:
- Ардуино Нано
- Серводвигатель SG90 - 2Nos
- Android-телефон с приличной камерой
- Модуль Bluetooth HC-05 / HC-06
- Компьютер для программирования
- 3D-принтер (опционально)
- Батарея 9В
3D-печать необходимых деталей (необязательно):
Чтобы поворачивать и наклонять мобильный телефон, нам нужны механические конструкции, такие как держатель для мобильного телефона и несколько кронштейнов для сервопривода. Вы можете использовать картон, чтобы сделать его, так как у меня есть 3D-принтер, я решил напечатать эти детали на 3D-принтере.
3D-печать - потрясающий инструмент, который может внести большой вклад при создании проектов прототипов или экспериментировании с новыми механическими конструкциями. Если вы еще не узнали о преимуществах 3D-принтера или о том, как он работает, вы можете прочитать Руководство для начинающих по 3D-печати.
Если у вас есть 3D-принтер или есть к нему доступ, вы можете использовать файлы STL, которые можно загрузить отсюда, чтобы напрямую распечатать и собрать их. Однако некоторые детали, такие как держатель мобильного телефона, могут нуждаться в доработке в зависимости от размеров вашего телефона. Я разработал его для своего мобильного телефона MOTO G. Я использовал свой очень простой принтер, чтобы распечатать все детали. Это принтер FABX v1 от 3ding, который поставляется по доступной цене с объемом печати 10 кубических сантиметров. Низкая цена достигается за счет низкого разрешения печати, отсутствия SD-карты или функции возобновления печати. Я использую программное обеспечение под названием Cura для печати файлов STL. Настройки, которые я использовал для печати материалов, приведены ниже, вы можете использовать их или изменить в зависимости от вашего принтера.
После того, как вы напечатаете все необходимые материалы, вы можете закрепить их на месте, используя винты и немного горячего клея. После завершения сборки он должен выглядеть примерно так, как показано ниже.
Схема и оборудование:
Схема для этого проекта отслеживания лица на смартфоне показана на изображении ниже:
Схема состоит из двух серводвигателей, один из которых используется для перемещения мобильного телефона влево / вправо, а другой используется для наклона мобильного телефона вверх / вниз. Направление, в котором должен двигаться сервопривод, будет указываться Arduino Nano, который сам получает информацию от модуля Bluetooth (HC-05). Вся схема питается от батареи 9 В.
Эта схема может быть легко подключена к вашей макетной плате или вы также можете припаять их на небольшой плате Perf, как я сделал здесь.
Настройка вашего приложения для Android:
Как я уже сказал ранее, главный мозг, работающий над этим проектом, - это приложение для Android. Это приложение для Android было разработано с использованием Android Processing. Вы можете напрямую установить это приложение на свой мобильный телефон и запустить его, выполнив следующие действия.
- Загрузите файл APK отсюда.
- Включите схему, показанную выше.
- В настройках телефона найдите модуль Bluetooth с именем «HC-05».
- Если вы назвали его иначе, чем «HC-05», измените его обратно на HC-05, поскольку только тогда приложение будет работать.
- Выполните сопряжение с модулем Bluetooth с паролем «1234» или «0000».
- Теперь запустите приложение в портретном режиме. Вы должны увидеть экран камеры, а также надпись «Connected to: HC-05» в верхней части экрана.
- Попробуйте навести камеру на лицо, и вверху должна появиться зеленая рамка, а ее положение также будет отображаться в верхнем левом углу экрана, как показано ниже.
Вы можете вывести этот проект отслеживания лиц Arduino на новый уровень, внося множество улучшений, для которых вам не нужно будет кодировать собственное приложение для Android. Создание приложения для Android может показаться сложным, но поверьте мне, с помощью Processing вы сможете изучить его в кратчайшие сроки. Полный код обработки, который используется для создания этого приложения, можно скачать здесь. Вы можете продвигаться вперед, используя собственное творчество. Проверьте проекты ниже, чтобы узнать больше об обработке:
- Виртуальная реальность с использованием Arduino и обработки
- Игра в пинг-понг с использованием Arduino
- FM-радио, управляемое смартфоном, с использованием обработки.
- Радиолокационная система Arduino с использованием обработки и ультразвукового датчика
Программирование вашего Arduino:
Приложение Android определит лицо и его положение на экране; Затем он решит, в каком направлении он должен двигаться в зависимости от положения лица, чтобы оно попало в центр экрана. Это направление затем отправляется в Arduino через модуль Bluetooth.
Программа Arduino для этого проекта довольно проста, нам просто нужно управлять направлением двух серводвигателей на основе значений, полученных от модуля Bluetooth. Полный код можно найти в конце этого урока, я также объяснил некоторые важные строки ниже.
Строка кода ниже устанавливает последовательное соединение с контактами D12 как RX и D11 как TX. Следовательно, контакт D12 должен быть подключен к TX модуля BT, а контакт D11 - к RX модуля BT.
SoftwareSerial cam_BT (12, 11); // RX, TX
Затем мы инициализировали модуль Bluetooth на скорости 9600 бод. Убедитесь, что ваш модуль также работает на той же скорости передачи. В противном случае измените его соответствующим образом.
cam_BT.begin (9600); // запускаем соединение Bluetooth со скоростью 9600 бод cam_BT.println ("Готовы принимать команды");
В строке ниже указано, что поступает через модуль Bluetooth. Также данные сохраняются в переменной «BluetoothData».
if (cam_BT.available ()) // Читать данные, поступающие через Bluetooth {BluetoothData = cam_BT.read (); Serial.print ("Входящие от BT:"); Serial.println (BluetoothData); }
На основе данных, полученных от Bluetooth, контролируется направление двигателей. Чтобы повернуть двигатель влево, двигатель уменьшается на значение 2 от его предыдущего положения. Вы можете увеличить это значение с 2 до 4 или 6, если вам нужно, чтобы рука двигалась быстрее. Но это может вызвать рывки, которые сделают камеру нестабильной.
if (BluetoothData == 49) // Поверните налево {pos1 + = 2; servo1.write (pos1);} if (BluetoothData == 50) // Поверните направо {pos1- = 2; servo1.write (pos1);} if (BluetoothData == 51) // Увеличить {pos2- = 2; servo2.write (pos2);} if (BluetoothData == 52) // Уменьшить значение {pos2 + = 2; servo2.write (pos2);}
За работой:
Когда мы будем готовы с нашим оборудованием, кодом и Android-приложением, самое время действовать. Просто включите Arduino и откройте приложение для Android. Приложение автоматически подключится к Bluetooth-модулю HC-05 (должен называться HC-05) и будет ожидать обнаружения лица. Просто поместите телефон в держатель для мобильного телефона и сядьте перед ним. Вы должны заметить, что серводвигатели перемещают ваш телефон так, что ваше лицо будет помещено в центр экрана. Теперь двигайтесь в пределах досягаемости камеры, и ваш мобильный телефон будет следить за вашими движениями. Вы также можете попробовать это, разместив и переместив любую картинку.
Полная работа проекта показана на видео ниже. Вы можете много построить