Vezja

Kako zgraditi robota - Lekcija 7: Zgradite robot za Arduino, ki ga krmili Bluetooth: 14 korakov

Сборка Bluetooth робота RoboCar-3 на Arduino UNO

Сборка Bluetooth робота RoboCar-3 на Arduino UNO

Kazalo:

Anonim

Ker je robot Arduino sposoben opravljati osnovne funkcije, ga zdaj nadgradimo z eno funkcijo - krmiljenje romote prek Bluetootha.

Enako kot pri drugih vajah »Kako zgraditi robot« je tukaj primer Arduino robotski komplet (Pirate: 4WD Arduino Mobile Robot Kit z Bluetooth 4.0). Poleg tega potrebujemo tudi pomoč GoBLE (generičnega kontrolerja BLE APP), ki vam omogoča povezovanje in nadzor robotov, mobilnih platform, brezpilotnih letal ali karkoli drugega, kot je brezpilotno letalo (uav) z vašimi mobilnimi napravami prek Bluetootha.

Lekcije Meni:

Lekcija 1: Uvod

Lekcija 2: Zgradite osnovni robot Arduino

Lekcija 3: Zgradite Arduino robot za sledenje linij

Lekcija 4: Zgradite robot Arduino, ki bi lahko preprečil ovire

Lekcija 5: Zgradite robot Arduino s svetlobnimi in zvočnimi učinki

Lekcija 6: Zgradite robot Arduino, ki lahko spremlja okolje

Lekcija 7: Zgradite robot za Arduino, ki ga upravlja Bluetooth

Priprava

iPhone ali iPad × 1

GoBLE APP × 1

Dobave:

Korak 1:

Opomba: Trenutno se GoBLE lahko uporablja samo na napravah iOS in zahteva, da vsaj namestite iOS 8.1.

Za uporabnike iOS: prenesite GoBLE iz App Store.

2. korak:

Naložite preizkusno kodo

Povežite Romeo BLE z računalnikom. Preizkusno kodo »GoBLE_Test.ino« najdete v programskem paketu. Omogoča preverjanje izhodnega signala iz naprav. Prenesite in preverite. Ne pozabite naložiti knjižnice GoBLE, preden prenesete preizkusno kodo.

3. korak:

Preskus Bluetooth

Zdaj začnimo s seznanjanjem Bluetooth. Vklopite mobilni telefon Bluetooth in nato odprite aplikacijo GoBLE. Vaš zaslon bo izgledal takole!

4. korak:

Kliknite tipko za iskanje Bluetooth (izgleda kot rdeča lupa). Nato izberite eno od naprav Bluetooth, ki ustrezajo imenu Romeo BLE. Kliknite UUID in začela se bosta združevati.

5. korak:

Ko je povezava vzpostavljena, se barva iskalnika Bluetooth spremeni iz rdeče v zeleno.

6. korak:

Hkrati se bo vklopil tudi LINK, ki je na tabli, kar pomeni, da je bil vaš iPhone priključen na Romeo BLE (nadzorna plošča z roboti Arduino z Bluetoothom 4.0).

7. korak:

Zdaj pa preizkusimo, ali lahko krmilnik uspešno sprejme signal iz vašega iPhonea. Vrnite se v vmesnik Arduino IDE in kliknite Serial Monitor v zgornjem desnem kotu.

8. korak:

Pojavil se bo dialog, kot je prikazan na spodnji sliki. Prvič, hitrost prenosa zaporednih vrat mora biti nastavljena na 115200, kot je prikazano v rdečem krogu spodaj.

9. korak:

Zdaj lahko vzamete iPhone in naključno povlečete navidezno igralno palico ali kliknete gumb na zaslonu. Če nič drugega, boste videli ustrezno vrednost na serijskem monitorju. Vrednost igralne palice na serijskem monitorju se bo spremenila, ko na zaslonu povlečete navidezno igralno palico. Ugotovili boste, da se vrednost poveča, ko potegnete krmilno ročico navzgor, ali se vrednost zmanjša, ko potegnite krmilno palčko navzdol.

ID gumba pomeni, kateri gumb kliknete.

Korak 10:

Naložite kodo za daljinski upravljalnik

Če je vse v redu, nadaljujmo in naložimo kodo za daljinsko krmiljenje v Arduino ploščo. Obstaja zelo ključna točka, ki jo morate ohraniti v mislih!

Vaš iPhone je že priključen na odbor Romeo BLE v zadnji fazi testiranja. Vendar pa kode ne morete prenesti na Romeo BLE board, ko je Bluetooth vzpostavljen med telefonom in tablo. Zato morate najprej prekiniti povezavo Bluetooth. Poleg tega lahko kodo ponovno naložite, če je plošča odklopljena od telefona. To je zelo pomembno!

Povezavo lahko prekinete na dva načina. Eden od načinov je, da lahko preprosto izklopite Remeo BLE moč in ga nato ponovno vklopite. Drugi način je, da izklopite Bluetooth na telefonu.

Po prekinitvi povezave lahko znova prenesete primerno kodo. Koda je imenovana kot GoBLE_APP.ino v paketu kode.

11. korak:

Po uspešnem nalaganju lahko sledite rdeči puščici na spodnji sliki in potegnete krmilno palčko, da nadzorujete svojega robota. Prav tako lahko kliknete rdeči gumb, da vklopite ali izklopite LED na plošči, ki je povezana s PIN13.

12. korak:

Povzetek kode

Po igranju robota se bomo začeli učiti, kako uporabljati kodo. Nič več besed za testno kodo za GoBLE test. Potem bomo šli naprej na GoBLE APP.

O osnovni kodi ni treba razpravljati - poglejmo le del, ki vključuje kontrolo bluethootha. Če želite robot na daljavo upravljati, bosta uporabljeni dve knjižnici z imenom Metro in GoBLE.

#include "Metro.h"

#include "GoBLE.h"

int joystickX, krmilna palica;

int gumbState 6;

joystickX, joystickY in gumbState 6, tri spremenljivke so definirane za knjižnico GoBLE. Uporabljajo se za shranjevanje vrednosti stanja osi X, osi Y in vrednosti šestih gumbov.

Zemljevid spodaj prikazuje postavitev vseh gumbov. Verjetno poznate pomene + X, -X, + Y in –Y, če ste analizirali spremembo vrednosti stanja.

X & Y sta smeri gibanja igralne palice. "+, -" kažejo gibanje vrednosti. "+" Pomeni, da se vrednost države povečuje. "-" pomeni, da se vrednost države zmanjšuje.

13. korak:

Začetna nastavitev se zapiše v funkciji Setup ().
Goble.begin ();

Ta vrstica se uporablja za zagon namestitve Bluetooth. In to ne morete zamuditi, ko uporabljate Bluetooth kodo na vašem vozilu.

Serial.begin (115200);

Pravzaprav je bila ta vrstica uporabljena v fazi testiranja. Uporablja se za zagon serijskih vrat. Če želite prebrati vrednost iz serijskega monitorja, morate to izjavo zapisati v funkciji nastavitve. IN, nastavite tudi hitrost prenosa.

Ker je baudna hitrost Bluetooth posebna, morate nastaviti na 115200. Poskrbite, da je bila nastavljena hitrost prenosa, sicer lahko povzroči nekatere težave.

Prosimo, nadaljujte navzdol. Naslednja vrstica je funkcija Goble.available ()

if (Goble.available ()) {naredite nekaj; }

To pomeni, da je naslednja akcija, ko je številka sprejeta prek Bluetootha.

Kar je zapisano v oklepajih, bi bila naša naslednja akcija. Najprej moramo analizirati prejeto številko. Naslednji dve izjavi sta branje vrednosti na X in Y osi.

joystickX = Goble.readJoystickX ();

joystickY = Goble.readJoystickY ();

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

// Serial.print (joystickX);

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

// Serial.println (joystickX);

Ugotovite, kaj pomenijo zgoraj navedene štiri stavke Serial.print (). Povezano je s serijsko. Za serijsko tiskanje prejetih podatkov, kar je primerno za odpravljanje napak in optimizacijo.

"//" pomeni opombo naslednje vsebine. Ti štirje stavki ne bodo vključeni pri prevajanju kode. Podatki se serijski namreč ne bodo poslali, ko bomo uporabili opombe za te štiri izjave.

Za dodatne informacije si oglejte stran Referenca spletne strani 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 ();

Vse zgornje vsebine se uporabljajo za nalaganje informacij o stanju gumbov.

Postavitev gumbov je naslednja.

SWITCH_UP - 1 SWITCH_RIGHT - 2

SWITCH_DOWN - 3

SWITCH_LEFT - 4

SWITCH_SELECT - 5

SWITCH_START - 6

14. korak:

Preden začnemo z uporabo, moramo obdelati vse prebrane podatke.

Vrednost, ki je odčitana na krmilni ročici, se preslika na hitrost vrtenja koles našega robota. Tako se izkaže, da je hitrost vrtenja koles med -255 in 255.

int SpeedX = 2 * joystickX-256;

int SpeedY = 2 * joystickY-256;

Serial.print ("hitrost:");

Serial.print (SpeedX);

Serial.print ("");

Serial.println (SpeedY);

Tudi serijsko bi natisnili hitrost. Če je nepotrebno, lahko na začetku dodate »//«, da ga odstranite.

Zdaj pa nadzorujmo robota in ga premikaj.

Če (premaknete igralno palico navzgor ali navzdol) (robot se premakne naprej ali nazaj; }

Če (premaknite krmilno palčko v desno ali (||) levo) {Robot se premakne v desno ali levo}

Če (os X krmilne palice držite v sredini in (&&) os Y krmilne palice ostane v sredini) {Robot se ustavi; }

Ustrezne kode so naslednje:

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

sicer, če (SpeedY> 200 || SpeedY <-200) {LeftWheelSpeed ​​= SpeedY-80; RightWheelSpeed ​​= SpeedY-80; Robot.Speed ​​(LeftWheelSpeed, RightWheelSpeed);}

tudi če (SpeedX == 0 & & SpeedY == 0) {Robot.Speed ​​(0,0); }

Zadnja koda se uporablja za krmiljenje LED na plošči, ki je priključena na PIN13.

int ledPin = 13;

Pin 13 je treba določiti na začetku kode.

pinMode (ledPin, IZHOD);

Nastavite izhodni način za LED s pisanjem funkcije setup (). Glejte navodila za funkcijo pinMode () na Arduino spletni strani (www.arduino.cc).

Naslednji izrazi prikazujejo stanje gumbov. Ko je gumb No.1 pritisnjen, bo LED svetil. To pomeni, da je LED lučka nastavljena na HIGH.

if (gumbState 1 == PRESSED) {digitalWrite (ledPin, HIGH); }

Ko se sprosti gumb No.1, se LED ugasne. To pomeni, da je LED lučka nastavljena na LOW.

if (gumbStanje 1 == SPROŠČENO) {digitalWrite (ledPin, LOW); }

To je vse za kodiranje danes. Ali ni zabavno? Torej ni nemogoče napisati kodo za vas, kajne? Lahko spremenite gumb za nadzor LED luči, tako da spremenite kodo. Vsekakor je bolj zanimivo, če ga lahko nadzorujete s svojo kodo. Zdaj pa ZAŽIVITE z robotom !!!