Circuite

Cum se construiește un robot - Lecția 7: Construiți un Robot Arduino controlat cu Bluetooth: 14 pași

Como hacer un robot SCARA ( 2 )

Como hacer un robot SCARA ( 2 )

Cuprins:

Anonim

Deoarece robotul Arduino este capabil să execute funcțiile de bază, îl actualizăm acum cu o altă caracteristică - controlul de tip romote prin Bluetooth.

La fel ca și celelalte tutoriale "Cum se construiește un robot", este folosit aici un exemplu de kit de robot Arduino (Pirate: Arduino Mobile Robot Kit 4WD cu Bluetooth 4.0). În plus, avem nevoie și de ajutorul lui GoBLE (un controler generic BLE APP) care vă permite să conectați și să controlați roboți, platforme mobile, telefoane mobile sau orice altceva, cum ar fi vehiculul fără pilot (uav), cu dispozitivele mobile prin Bluetooth.

Lecții Meniu:

Lecția 1: Introducere

Lectia 2: Construieste un robot de baza arduino

Lectia 3: Construieste un Robot Arduino de urmarire a liniei

Lectia 4: Construieste un Robot Arduino care ar putea evita obstacolele

Lectia 5: Construieste un Robot Arduino cu efecte de lumina si sunet

Lectia 6: Construieste un Robot Arduino care ar putea monitoriza mediul

Lectia 7: Construieste un Robot Arduino controlat cu Bluetooth

preparare

iPhone sau iPad × 1

GoBLE APP × 1

Furnituri:

Pasul 1:

Notă: în prezent, GoBLE ar putea fi utilizat numai pe dispozitive iOS și vă cere să instalați cel puțin iOS 8.1.

Pentru utilizatorii iOS: vă rugăm să descărcați GoBLE din App Store.

Pasul 2:

Încărcați codul de testare

Conectați Romeo BLE la computer. Codul de testare "GoBLE_Test.ino" poate fi găsit în pachetul software. Aceasta vă permite să verificați ieșirea semnalului de pe dispozitive. DOWNLOAD IT & CHECK IT OUT. Nu uitați să încărcați biblioteca GoBLE înainte de a descărca codul de testare.

Pasul 3:

Test Bluetooth

Acum, să începem împerecherea prin Bluetooth. Porniți bluetooth mobil și apoi deschideți aplicația GoBLE. Ecranul dvs. ar arăta așa!

Pasul 4:

Faceți clic pe cheia de căutare Bluetooth (arată ca o lupă roșie). Apoi, alegeți unul dintre dispozitivele Bluetooth care corespund numelui Romeo BLE. Faceți clic pe UUID și vor începe să se asocieze.

Pasul 5:

După conectare, culoarea tastei de căutare Bluetooth se va schimba de la roșu la verde.

Pasul 6:

In acelasi timp, LINK-ul condus pe placa va porni, ceea ce inseamna ca iPhone-ul tau a fost conectat la Romeo BLE (Arduino Robot Control Board cu Bluetooth 4.0).

Pasul 7:

Acum, să verificăm dacă controlerul poate recepționa cu succes semnal de pe iPhone. Reveniți la interfața IDE Arduino și faceți clic pe monitorul serial în colțul din dreapta sus.

Pasul 8:

Va apărea un dialog așa cum este arătat în imaginea de mai jos. În primul rând, rata baud a portului serial trebuie să fie setată la 115200, așa cum se arată în cercul roșu de mai jos.

Pasul 9:

Acum, puteți să vă scoateți iPhone-ul și să mutați în mod aleator joystick-ul virtual sau să faceți clic pe butonul de pe ecran. Dacă nu altceva, veți vedea valoarea corespunzătoare pe monitorul serial. Valoarea joystick-ului pe monitorul serial va fi modificată atunci când deplasați joystick-ul virtual pe ecran. Veți găsi că creșterea valorii când joystick-ul mergeți în sus sau scăderea valorii când joystick-ul treceți în jos.

ID-ul butonului înseamnă butonul pe care faceți clic.

Pasul 10:

Încărcați codul pentru telecomandă

Dacă totul este în regulă, să continuăm și să încărcăm codul pentru controlul la distanță de la placa Arduino. Există un punct foarte important pentru a vă păstra în minte!

IPhone-ul dvs. a fost deja conectat la board-ul Romeo BLE în ultima etapă de testare. Cu toate acestea, nu puteți încărca codul pe placa Romeo BLE când Bluetooth a fost stabilit între telefon și placă. Astfel, trebuie să vă deconectați mai întâi de la BREAK opțiunea de asociere Bluetooth. În plus, puteți încărca din nou codul dacă placa a fost deconectată de la telefon. ESTE FOARTE IMPORTANT!

Există două metode de întrerupere a conexiunii. O modalitate este că puteți opri pur și simplu puterea Remeo BLE și apoi reporniți-o din nou. Cealaltă este că opriți Bluetooth pe telefon.

După deconectare, puteți încărca din nou exemplul de cod. Codul este numit GoBLE_APP.ino în pachetul de coduri.

Pasul 11:

Odată încărcat cu succes, puteți să urmați săgeata roșie din imaginea de mai jos și glisați joystick-ul pentru a vă controla robotul. De asemenea, puteți face clic pe butonul roșu pentru a porni sau a dezactiva LED-ul de pe placa conectată cu PIN13.

Pasul 12:

Sinopsisul codului

După ce ați jucat robotul, să începem să învățăm cum să folosim codul. Nu mai există cuvinte pentru codul de testare pentru testul GoBLE. Apoi, mergem mai departe spre GoBLE APP.

Nu este nevoie să discutăm codul de bază - să aruncăm o privire la partea care implică controlul bluethooth. Dacă doriți să controlați de la distanță robotul, vor fi utilizate două biblioteci numite Metro și GoBLE.

#include "Metro.h"

#include "GoBLE.h"

int joystickX, joystickY;

butonul intState 6;

joystickX, joystickY și buttonstate 6, trei variabile, sunt definite pentru biblioteca GoBLE. Ele sunt folosite pentru a stoca valoarea de stat pentru axa X, axa Y și acele valori ale celor șase butoane.

Harta de mai jos prezintă aspectul tuturor butoanelor. Probabil ați putea cunoaște semnificațiile lui + X, -X, + Y și -Y dacă ați analizat modificarea valorilor de stare.

X & Y sunt direcțiile mișcării Joystick-ului. "+", "Arată tendințele valorii. "+" Înseamnă că valoarea de stat este în creștere. Și "-" înseamnă că valoarea de stat scade.

Pasul 13:

Setarea inițială va fi scrisă în funcția Setup ().
Goble.begin ();

Această linie este utilizată pentru inițierea configurației bluetooth. Și nu poate fi ratată de fiecare dată când utilizați codul Bluetooth pe bord.

Serial.begin (115200);

De fapt, această linie a fost utilizată în etapa de testare. Se utilizează pentru a iniția portul serial. Dacă doriți să citiți valoarea din monitorul serial, trebuie să scrieți această instrucțiune în funcția de configurare. ȘI, de asemenea, trebuie să setați rata baud.

Deoarece rata baud a Bluetooth este specială, trebuie să setați la 115200. Asigurați-vă că rata baud a fost setată, altfel ar putea provoca unele probleme.

Continuați să arătați în continuare. Următoarea linie este funcția din Goble.available ()

dacă (Goble.available ()) {a face ceva; }

Înseamnă că ceea ce următoarea acțiune este odată ce cifra a fost recepționată prin Bluetooth.

Ceea ce este scris în paranteze ar fi următoarea noastră acțiune. În primul rând, trebuie să analizăm cifra primită. Următoarele două instrucțiuni sunt citirea valorii pe axele X și Y.

joystickX = Goble.readJoystickX ();

joystickY = Goble.readJoystickY ();

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

// Serial.print (joystickX);

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

// Serial.println (joystickX);

Ghiciți ce semnifică cele patru afirmații Serial.print () de mai sus. Este legat de serial. Este pentru seriale să imprime datele primite, ceea ce este convenabil pentru depanarea și optimizarea codului.

"//" înseamnă adnotarea următorului conținut. Aceste patru propoziții nu vor fi incluse la compilarea codului. Anume, nu vor fi trimise date la serial după ce vom folosi adnotarea pentru aceste patru instrucțiuni.

Pentru mai multe informații, consultați pagina de referință a site-ului Arudino (www.arduino.cc).

butonulState SWITCH_UP = Goble.readSwitchUp ();

butonulState SWITCH_DOWN = Goble.readSwitchDown ();

butonulState SWITCH_LEFT = Goble.readSwitchLeft ();

butonulState SWITCH_RIGHT = Goble.readSwitchRight ();

butonulState SWITCH_SELECT = Goble.readSwitchSelect ();

butonulState SWITCH_START = Goble.readSwitchStart ();

Toate conținutul de mai sus sunt utilizate pentru a încărca informații despre starea butoanelor.

Amplasarea butoanelor este după cum urmează.

SWITCH_UP - 1 SWITCH_RIGHT - 2

SWITCH_DOWN - 3

SWITCH_LEFT - 4

SWITCH_SELECT - 5

SWITCH_START - 6

Pasul 14:

Trebuie să procesăm toate datele citite înainte de a începe să le folosim.

Valoarea citită pe joystick va fi mapată la viteza de rotație a roților robotului nostru. Astfel, viteza de rotație a roților se situează între -255 și 255.

int SpeedX = 2 * joystickX-256;

int SpeedY = 2 * joystickY-256;

Serial.print ("Speed:");

Serial.print (SpeedX);

Serial.print ("");

Serial.println (SpeedY);

De asemenea, seria va imprima viteza. Dacă nu este necesar, puteți adăuga "//" la început pentru al elimina.

Acum să controlați robotul și să îl mutați.

Dacă (mișcați joystick-ul în sus sau (||) în jos) {Robotul merge înainte sau înapoi; }

Dacă (mutați joystick-ul spre dreapta sau (||) stânga) {Robot muta la dreapta sau la stânga}

Dacă (axa X a joystick-ului păstrează în centru și (&&) axa Y a joystick-ului se ține în centru) {robotul se oprește; }

Codurile corespondente sunt după cum urmează:

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

altfel dacă (SpeedY> 200 || SpeedY <-200) {LeftWheelSpeed ​​= SpeedY-80; RightWheelSpeed ​​= SpeedY-80; Robot.Speed ​​(LeftWheelSpeed, RightWheelSpeed);}

altfel dacă (SpeedX == 0 && SpeedY == 0) {Robot.Speed ​​(0,0); }

Ultimul cod este utilizat pentru a controla LED-ul de pe placa conectată la PIN13.

int ledPin = 13;

Pinul 13 trebuie definit la începutul codului.

pinMode (ledPin, OUTPUT);

Configurați modul de ieșire pentru LED-ul scriind funcția de configurare (). Consultați instrucțiunile pentru funcția pinMode () de pe site-ul web Arduino (www.arduino.cc).

Următoarele expresii arată starea butoanelor. Odată ce butonul nr.1 a fost apăsat, LED-ul ar fi aprins. În sensul că pinul LED este setat să fie HIGH.

dacă (buttonState 1 == PRESED) {digitalWrite (ledPin, HIGH); }

Odată ce butonul nr.1 a fost eliberat, LED-ul ar fi oprit. În sensul că pinul LED este setat să fie LOW.

dacă (buttonState 1 == RELEASED) {digitalWrite (ledPin, LOW); }

Asta e tot pentru codificare astăzi. Nu-i așa FUN? Deci, nu este imposibil să vă scrieți codul, nu? Puteți încerca să schimbați un buton pentru a controla lumina LED prin modificarea codului. Este cu siguranță mai interesant atunci când îl poți controla cu codul tău. Acum, START HAVING FUN cu robotul tau!