- Необхідні матеріали:
- 3D-друк необхідних деталей (необов’язково):
- Схема та обладнання:
- Налаштування програми для Android:
- Програмування вашого Arduino:
- Робоча:
Ви коли-небудь хотіли створити Роботизовану руку для відстеження обличчя або робота, просто використовуючи Arduino, а не будь-яке інше програмування, таке як OpenCV, візуальні основи C # тощо? Тоді читайте далі, у цьому проекті ми збираємось реалізувати розпізнавання облич, поєднуючи потужність Arduino та Android. У цьому проекті мобільна камера рухатиметься разом з вашим обличчям за допомогою сервоприводів. Перевага використання мобільного телефону Android тут полягає в тому, що вам не потрібно вкладати гроші в модуль камери, і всю роботу з виявлення зображень можна виконати в самому телефоні, вам не потрібен ваш Arduino, підключений до комп’ютера, щоб це працювало. Тут ми використовували модуль Bluetooth з Arduino для бездротового зв'язку з Mobile.
Додаток Android, використаний у цьому проекті, було створено за допомогою Processing Android. Ви можете або безпосередньо встановити додаток, завантаживши файл APK (читайте далі для посилання), або надіти шапку програмування та створити власну, більш привабливу програму Android, використовуючи наданий код обробки далі в Підручнику. Дізнайтеся більше про обробку, перевіривши наші попередні проекти обробки.
В кінці цього підручника у вас буде міні-нахил та робоча рука, яка може відстежувати ваше обличчя та рухатися разом з ним. Ви можете використовувати це (з подальшим прогресом) для запису відеозаписів у відеоблозі або навіть зробити селфі задньою камерою мобільного телефону, оскільки воно розміщує ваше обличчя точно в центрі екрана вашого мобільного телефону. Так!! Звучить цікаво? Перевірте демонстраційне відео в кінці цього підручника, щоб побачити, як воно працює. Давайте подивимося, як ми можемо створити його…
Я намагався зробити все, щоб цей проект працював якомога простіше, кожен, хто володіє мінімальними знаннями в галузі апаратного забезпечення чи кодування, може скористатися цими рекомендаціями, щоб в найкоротші терміни змусити цей проект працювати. Однак, як тільки ви це зробите, я пропоную вам відстати від кодів, щоб ви могли по-справжньому знати, що змушує цю справу працювати і як.
Необхідні матеріали:
- Arduino Nano
- Сервомотор 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 був розроблений за допомогою Processing Android. Ви можете безпосередньо встановити цю програму на свій мобільний телефон і запустити її, виконавши наведені нижче дії.
- Завантажте файл APK звідси.
- Увімкніть схему, показану вище.
- У налаштуваннях телефону знайдіть модуль Bluetooth під назвою “HC-05”
- Якщо ви назвали його інакше, ніж "HC-05", змініть його на HC-05, оскільки лише тоді програма працюватиме.
- Підключіть свій модуль Bluetooth до пароля “1234” або “0000”.
- Тепер запустіть програму в портретному режимі. Ви повинні побачити екран камери, а також “Підключено до: HC-05” у верхній частині екрана.
- Спробуйте перемістити камеру над обличчям, і зверху на ньому має з’явитися зелене поле, а його положення також відображатиметься у верхньому лівому куті екрана, як показано нижче.
Ви можете підняти цей проект відстеження обличчя Arduino на новий рівень, додавши безліч вдосконалень, для яких вам не потрібно буде кодувати власну програму Android. Створення програми для Android може здатися складною, але, повірте мені, за допомогою обробки ви зможете навчитися її в найкоротші терміни. Повний код обробки, який використовується для створення цієї програми, можна завантажити тут. Ви можете зробити будь-який прогрес завдяки власній творчості. Перегляньте нижче проекти, щоб дізнатись більше про обробку:
- Віртуальна реальність за допомогою 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) і буде чекати виявлення обличчя. Просто помістіть телефон у наш мобільний тримач і сядьте перед ним. Ви повинні помітити, як ваші сервомотори рухають ваш телефон так, щоб ваше обличчя було розташоване в центрі екрана. Тепер рухайтеся в межах діапазону камери, і ваш мобільний телефон буде стежити за вашими рухами. Ви також можете спробувати, розмістивши та перемістивши будь-яку картинку.
Повна робота проекту показана у відео нижче. Можна багато побудувати