- Необходими материали:
- 3D печат на необходимите части (по избор):
- Схема и хардуер:
- Настройване на вашето приложение за Android:
- Програмиране на вашия Arduino:
- Работа:
Някога искали ли сте да изградите Face Tracking Robotic Arm или Robot, като просто използвате Arduino, а не някакво друго програмиране като OpenCV, визуални основи C # и т.н.? След това прочетете, в този проект ще внедрим разпознаване на лица, като смесим силата на Arduino и Android. В този проект мобилната камера ще се движи заедно с лицето ви с помощта на серво. Предимството на използването на мобилния телефон с Android тук е, че не е необходимо да инвестирате в модул на камерата и цялата работа по откриване на изображения може да се извърши в самия телефон, не е необходим вашият Arduino, свързан към вашия компютър, за да работи това. Тук използвахме Bluetooth модул с Arduino за комуникация с Mobile безжично.
Приложението за Android, използвано в този проект, е създадено с помощта на Processing Android, можете или директно да инсталирате приложението, като изтеглите APK файла (прочетете по-нататък за връзка), или да сложите капачката си за програмиране и да направите свое собствено по-привлекателно приложение за Android, като използвате дадения код за обработка по-нататък в урока. Научете повече за обработката, като проверите предишните ни проекти за обработка.
В края на този урок ще имате Mini Tilt and Span Robotic Arm, който може да проследява лицето ви и да се движи заедно с него. Можете да използвате това (с по-нататъшно усъвършенстване), за да запишете видеоклиповете си в vlog или дори да направите селфи със задната камера на мобилния си телефон, тъй като позиционира лицето ви точно в центъра на мобилния ви екран. Така!! Звучи интересно? Проверете демонстрационното видео в края на този урок, за да видите как работи. Нека да видим как можем да изградим такъв…
Постарах се по най-добрия начин да направя този проект възможно най-опростен, всеки с минимални познания по хардуер или кодиране може да използва тези насоки, за да заработи този проект за нула време. След като го направите обаче ви предлагам да се оттеглите от кодовете, за да можете наистина да разберете какво кара това нещо да работи и как.
Необходими материали:
- Arduino Nano
- Серво мотор SG90 - 2Nos
- Android телефон с прилична камера
- Bluetooth-модул HC-05 / HC-06
- Компютър за програмиране
- 3D принтер (по избор)
- 9V батерия
3D печат на необходимите части (по избор):
За да преместваме и накланяме мобилния си телефон, имаме нужда от някои механични конструкции като мобилен държач и няколко серво скоби. Можете да използвате картон, за да го направите, тъй като имам 3D принтер, реших да отпечатам 3D тези части.
3D печатът е невероятен инструмент, който може да допринесе много при изграждането на прототипни проекти или експериментиране с нови механични дизайни. Ако все още не сте открили предимствата на 3D принтера или как работи, можете да прочетете Ръководството за начинаещи за 3D печат.
Ако притежавате или имате достъп до 3D принтер, можете да използвате STL файловете, които можете да изтеглите от тук, за да ги отпечатате директно и да ги съберете. Въпреки това малко части като държача на мобилния телефон може да се нуждаят от някои модификации въз основа на размерите на вашия телефон. Създал съм го за моя мобилен телефон MOTO G. Използвал съм много основен мой принтер, за да отпечатам всички части. Принтерът е FABX v1 от 3ding, който се предлага на достъпна цена с обем на печат от 10 куб. См. Евтината цена идва с компромис с ниска резолюция на печат и без SD карта или функция за възобновяване на печата. Използвам софтуер, наречен Cura, за отпечатване на STL файловете. Настройките, които използвах за отпечатване на материалите, са дадени по-долу, можете да използвате същите или да ги промените в зависимост от вашия принтер.
След като отпечатате всички необходими материали, можете да ги закрепите на място, като използвате винтове и малко горещо лепило. След като монтажът завърши, той трябва да изглежда по следния начин.
Схема и хардуер:
Схемата за този проект за проследяване на лица на смарт телефон е показана на изображението по-долу:
Веригата се състои от два серво мотора, от които единият се използва за преместване на мобилния телефон наляво / надясно, а другият се използва за накланяне на мобилния телефон нагоре / надолу. Посоката, в която трябва да се движи серво, ще бъде инструктирана от Arduino Nano, който сам получава информация от модула Bluetooth (HC-05). Цялата верига се захранва от 9V батерия.
Тази схема може да се свърже лесно на вашата макетна плоча или можете да ги запоявате на малка дъска Perf, както направих тук.
Настройване на вашето приложение за Android:
Както казах по-рано, основният мозък, работещ зад този проект, е това приложение за Android. Това приложение за Android е разработено с помощта на Processing Android. Можете директно да инсталирате това приложение на мобилния си телефон и да го стартирате, като следвате стъпките по-долу.
- Изтеглете APK файла от тук.
- Включете схемата, показана по-горе.
- В настройките на телефона си потърсете Bluetooth модул на име „HC-05“
- Ако сте го нарекли нещо различно от „HC-05“, променете го обратно на HC-05, тъй като само тогава приложението ще работи.
- Сдвоете с вашия Bluetooth модул с паролата „1234“ или „0000“.
- Сега стартирайте приложението в портретен режим. Трябва да видите екрана на вашата камера, а също и „Свързан с: 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 baudrate cam_BT.println („Готови за приемане на команди“);
Под реда се чете какво идва през Bluetooth модула. Също така данните се записват в променливата „BluetoothData“.
if (cam_BT.available ()) // Прочетете какво идва през Bluetooth {BluetoothData = cam_BT.read (); Serial.print ("Incoming from 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. Приложението автоматично ще се свърже с HC-05 (трябва да се нарича HC-05) Bluetooth модул и ще изчака да бъде открито лице. Просто поставете телефона в нашия държач за мобилен телефон и седнете пред него. Трябва да забележите, че вашите серво мотори движат телефона ви, така че лицето ви да бъде поставено в центъра на екрана. Сега се движете в обхвата на камерата и мобилният ви телефон ще следи вашите движения. Можете също да опитате, като поставите и преместите произволна снимка.
Цялостната работа на проекта е показана във видеото по-долу. Можете да изградите много