Вериги

Как да изградим робот - Урок 7: Изграждане на Arduino Robot, управляван с Bluetooth: 14 стъпки

Солдатик молодой Исполняет Иван Разумов

Солдатик молодой Исполняет Иван Разумов

Съдържание:

Anonim

Тъй като роботът на Arduino е в състояние да изпълнява основните функции, сега го надграждаме с още една функция - управление на romote чрез Bluetooth.

Също като другите ръководства „Как да изградим робот“, тук се използва комплект за робот Arduino (Pirate: 4WD Arduino Mobile Robot Kit с Bluetooth 4.0). Освен това, ние също се нуждаем от помощта на GoBLE (A Generic BLE APP контролер), която ви позволява да свързвате и контролирате роботи, мобилни платформи, дронове или каквото и да е друго, като безпилотен летателен апарат (uav) с вашите мобилни устройства чрез Bluetooth.

Меню уроци:

Урок 1: Въведение

Урок 2: Създайте основен робот Arduino

Урок 3: Изграждане на Arduino Robot

Урок 4: Изграждане на робот Arduino, който може да избегне препятствия

Урок 5: Изградете робот Arduino със светлинни и звукови ефекти

Урок 6: Изграждане на робот Arduino, който може да наблюдава околната среда

Урок 7: Изграждане на управляван с Bluetooth Arduino робот

подготовка

iPhone или iPad × 1

GoBLE APP × 1

градина:

Етап 1:

Забележка: Понастоящем GoBLE може да се използва само на iOS устройства и ви моли да инсталирате поне iOS 8.1.

За потребители на iOS: моля, изтеглете GoBLE от App Store.

Стъпка 2:

Качете кода за тестване

Свържете Romeo BLE с компютъра. Тестовият код „GoBLE_Test.ino“ може да бъде намерен в софтуерния пакет. Тя ви позволява да проверите изхода на сигнала от вашите устройства. ИЗТЕГЛЕТЕ И И ПРОВЕРЕТЕ. Не забравяйте да заредите библиотеката на GoBLE, преди да изтеглите кода за тестване.

Стъпка 3:

Bluetooth тест

Сега да започнем Bluetooth сдвояването. Включете мобилния Bluetooth и отворете приложението GoBLE. Вашият екран ще изглежда така!

Стъпка 4:

Кликнете върху ключа за търсене на Bluetooth (изглежда като червена лупа). След това изберете едно от Bluetooth устройствата, което съответства на името на Romeo BLE. Кликнете върху UUID и те ще започнат сдвояване.

Стъпка 5:

Веднъж свързан, цветът на ключа за търсене с Bluetooth ще се промени от червен на зелен.

Стъпка 6:

В същото време ще се включи и LINK, който е на борда, което означава, че вашият iPhone е свързан с Romeo BLE (Arduino Robot Control Board с Bluetooth 4.0).

Стъпка 7:

Сега нека проверим дали контролерът може успешно да получи сигнал от вашия iPhone. Върнете се към интерфейса на Arduino IDE и щракнете върху серийния монитор в горния десен ъгъл.

Стъпка 8:

Ще се появи диалог, както е показано на снимката по-долу. Първо, скоростта на предаване в сериен порт трябва да бъде 115200, както е показано в червения кръг по-долу.

Стъпка 9:

Сега можете да извадите своя iPhone и случайно да плъзнете виртуалния джойстик или да натиснете бутона на екрана. Ако нищо друго, ще видите съответната стойност на серийния монитор. А стойността на джойстика на серийния монитор ще се промени, когато плъзнете виртуалния джойстик на екрана. Ще откриете, че стойността се увеличава, когато джойстикът плъзне нагоре, или стойността намалява, когато джойстикът плъзга надолу.

ID на бутон означава кой бутон щраквате.

Стъпка 10:

Качете кода за дистанционно управление

Ако всичко е наред, нека да продължим и да качим кода за дистанционно управление в дъската на Arduino. Има един ключов момент, който трябва да държите в съзнанието си!

Вашият iPhone вече е свързан с борда на Romeo BLE в последния етап на тестване. Въпреки това не можете да качите кода в борда на Romeo BLE, когато Bluetooth е установен между телефона и дъската. По този начин първо трябва да спрете Bluetooth сдвояването. Освен това можете да качите кода отново, ако платката е била изключена от телефона. ТОВА Е МНОГО ВАЖНО!

Има два метода за прекъсване на връзката. Един от начините е, че можете просто да изключите захранването на Remeo BLE и след това да го включите отново. Другият начин е да изключите Bluetooth на телефона си.

След прекъсване на връзката можете отново да качите примера. Кодът се нарича GoBLE_APP.ino в кодовия пакет.

Стъпка 11:

След като бъде качен успешно, можете да следвате червената стрелка на картинката по-долу и да плъзнете джойстика, за да управлявате робота си. Също така можете да натиснете червения бутон, за да включите или изключите светодиода на платката, който е свързан с PIN13.

Стъпка 12:

Обобщение на кода

След като пуснете робота, нека да започнем да се учим как да използваме кода. Няма повече думи за тестовия код за GoBLE теста. Тогава просто се придвижваме напред към GoBLE APP.

Няма нужда да обсъждаме основния код - нека разгледаме частта, включваща контрол на bluethooth. Ако искате да управлявате дистанционно робота, ще се използват две библиотеки с име Metro и GoBLE.

#include "Metro.h"

#include "GoBLE.h"

int joystickX, джойстик;

int buttonState 6;

joystickX, джойстик и бутонState 6, три променливи, са определени за GoBLE библиотеката. Те се използват за съхраняване на стойността на състоянието за X-оста, Y-ос и тези стойности на шест бутона.

Картата по-долу показва разположението на всички бутони. Вероятно знаете значението на + X, -X, + Y и –Y, ако сте анализирали промяната на стойностите на състоянието.

X & Y са посоките на движение на джойстика. "+, -" показват тенденциите на стойността. „+“ Означава, че стойността на държавата се увеличава. А "-" означава, че стойността на държавата намалява.

Стъпка 13:

Първоначалната настройка се записва във функцията на Setup ().
Goble.begin ();

Този ред се използва за стартиране на настройката на Bluetooth. И това не може да бъде пропуснато, когато използвате Bluetooth кода на дъската.

Serial.begin (115,200);

Всъщност, тази линия е била използвана на етапа на тестване. Използва се за иницииране на серийния порт. Ако искате да прочетете стойността от серийния монитор, трябва да напишете този оператор в функцията за настройка. И, също трябва да зададете скоростта на предаване.

Тъй като скоростта на обмен на Bluetooth е специална, трябва да настроите на 115200. Уверете се, че скоростта на предаване е била настроена, в противен случай може да предизвика някои проблеми.

Моля, продължете надолу. Следващият ред е функцията на Goble.available ()

if (Goble.available ()) {направи нещо; }

Това означава, че следващото действие е след като цифрата е получена чрез Bluetooth.

Това, което е написано в скобите, ще бъде следващото ни действие. Първо, трябва да анализираме получената цифра. Следващите два изявления са да се прочете стойността на X и Y ос.

joystickX = Goble.readJoystickX ();

джойстик = Goble.readJoystickY ();

// Serial.print ("joystickX:");

// Serial.print (джойстикX);

// Serial.print ("джойстик:");

// Serial.println (джойстикX);

Познайте какво означават четирите израза Serial.print () по-горе. Той е свързан със сериала. Сериалът трябва да отпечата получените данни, което е удобно за отстраняване на грешки и оптимизиране на кода.

"//" означава пояснение на следното съдържание. Тези четири изречения няма да бъдат включени при съставянето на кода. А именно, няма да се изпращат данни към сериала, след като използваме анотацията за тези четири твърдения.

За допълнителна информация вижте страницата за справки на уебсайта на Arudino (www.arduino.cc).

buttonState SWITCH_UP = Goble.readSwitchUp ();

buttonState SWITCH_DOWN = Goble.readSwitchDown ();

buttonState SWITCH_LEFT = Goble.readSwitchLeft ();

buttonState SWITCH_RIGHT = Goble.readSwitchRight ();

buttonState SWITCH_SELECT = Goble.readSwitchSelect ();

buttonState SWITCH_START = Goble.readSwitchStart ();

Цялото съдържание по-горе се използва за зареждане на информацията за състоянието на бутоните.

Оформлението на бутоните е както следва.

SWITCH_UP - 1 SWITCH_RIGHT - 2

SWITCH_DOWN - 3

SWITCH_LEFT - 4

SWITCH_SELECT - 5

SWITCH_START - 6

Стъпка 14:

Трябва да обработим всички прочетени данни, преди да започнем да ги използваме.

Стойността, отчетена на джойстика, трябва да бъде съпоставена със скоростта на въртене на колелата на нашия робот. По този начин скоростта на въртене на колелата се оказва между -255 и 255.

int SpeedX = 2 * джойстикX-256;

int SpeedY = 2 * джойстик-256;

Serial.print ("Скорост:");

Serial.print (SpeedX);

Serial.print ("");

Serial.println (Скоростна);

Също така сериалът ще отпечата скоростта. Ако не е необходимо, можете да добавите "//" в началото, за да го премахнете.

Сега нека контролираме робота и да го накараме да се движи.

Ако (преместете джойстика нагоре или (||) надолу) {робот се движи напред или назад; }

Ако (преместете джойстика надясно или (||) наляво) {робот се движи надясно или наляво}

Ако (оста X на джойстика се държи в центъра и (&&) Y-оста на джойстика се държи в центъра) (роботът спира; }

Кореспондентските кодове са както следва:

if (SpeedX> 200 || SpeedX <-200) {LeftWheelSpeed ​​= SpeedX; RightWheelSpeed ​​= SpeedX; Robot.Speed ​​(LeftWheelSpeed, RightWheelSpeed); }

иначе ако (SpeedY> 200 || SpeedY <-200) {LeftWheelSpeed ​​= SpeedY-80; RightWheelSpeed ​​= SpeedY-80; Robot.Speed ​​(LeftWheelSpeed, RightWheelSpeed);}

иначе ако (SpeedX == 0 && SpeedY == 0) {Robot.Speed ​​(0,0); }

Последният код се използва за управление на светодиода на платката, свързан с PIN13.

int ledPin = 13;

Пин 13 трябва да се дефинира в началото на кода.

pinMode (ledPin, ИЗХОД);

Настройте изходния режим за LED, като напишете функцията setup (). Моля, вижте инструкцията за функцията на pinMode () на уебсайта на Arduino (www.arduino.cc).

Следните изрази показват състоянието на бутоните. След като бутон № 1 бъде натиснат, ще светне светодиодът. Това означава, че светодиодният щифт е настроен на HIGH.

if (бутонState 1 == PRESSED) {digitalWrite (ledPin, HIGH); }

След като бутон № 1 бъде освободен, светодиодът ще се изключи. Това означава, че светодиодният щифт е настроен на LOW.

if (бутонState 1 == RELEASED) {digitalWrite (ledPin, LOW); }

Това е всичко за кодиране днес. Не е ли забавно? И така, не е невъзможно да напишете код за вас, нали? Можете да опитате да промените един бутон, за да контролирате LED светлината, като промените кода. Определено е по-интересно, когато можете да го контролирате с кода си. Сега, започнете да се забавлявате с вашия робот !!!