Circuits

Paano Magtayo ng Robot - Aralin 7: Gumawa ng Bluetooth-Controlled Arduino Robot: 14 Steps

BLUETOOTH CONTROLLED ARDUINO ROBOT | ARDUINO PROJECTS 2019

BLUETOOTH CONTROLLED ARDUINO ROBOT | ARDUINO PROJECTS 2019

Talaan ng mga Nilalaman:

Anonim

Habang ang Arduino robot ay maisagawa ang mga pangunahing pag-andar, pinalitan na namin ito ng isa pang tampok - kontrol ng romote sa pamamagitan ng Bluetooth.

Pareho ang iba pang mga 'Paano Gumawa ng isang Robot' na mga tutorial, isang Arduino robot kit (Pirate: 4WD Arduino Mobile Robot Kit na may Bluetooth 4.0) ay ginagamit dito bilang isang halimbawa. Bukod, kailangan din namin ng tulong ng GoBLE (Isang Generic BLE APP Controller) na nagbibigay-daan sa iyo upang kumonekta at makontrol ang mga robot, mobile platform, drone o anumang bagay tulad ng hindi pinuno ang mga tauhan ng aerial sasakyan (uav) sa iyong mga mobile na aparato sa pamamagitan ng Bluetooth.

Mga Aralin Menu:

Aralin 1: Panimula

Aralin 2: Bumuo ng isang Basic Arduino Robot

Aralin 3: Gumawa ng Pagsubaybay sa Linya ng Arduino Robot

Aralin 4: Gumawa ng isang Arduino Robot na Maaring Iwasan ang mga Balakid

Aralin 5: Buuin ang isang Arduino Robot na May Liwanag At Mga Epekto sa Tunog

Aralin 6: Gumawa ng isang Arduino Robot na Puwede ang Monitor Environment

Aralin 7: Bumuo ng isang Arduino Robot na Kinokontrol ng Bluetooth

Paghahanda

iPhone o iPad × 1

GoBLE APP × 1

Mga Kagamitan:

Hakbang 1:

Tandaan: Sa kasalukuyan, ang GoBLE ay magagamit lamang sa mga iOS device at hinihiling sa iyo na hindi bababa sa naka-install na iOS 8.1.

Para sa mga gumagamit ng iOS: mangyaring i-download ang GoBLE mula sa App Store.

Hakbang 2:

I-upload ang Code ng Pagsubok

Mangyaring ikonekta ang Romeo BLE sa computer. Ang code ng pagsubok na 'GoBLE_Test.ino' ay matatagpuan sa pakete ng software. Pinapayagan ka nitong suriin ang signal output mula sa iyong device. DOWNLOAD IT & CHECK IT OUT. Huwag kalimutang i-load ang GoBLE library bago i-download ang code ng pagsubok.

Hakbang 3:

Test ng Bluetooth

Ngayon simulan natin ang Bluetooth pairing. I-on ang mobile bluetooth at pagkatapos ay buksan ang GoBLE app. Ang iyong screen ay magiging ganito!

Hakbang 4:

I-click ang key sa paghahanap ng Bluetooth (mukhang isang pulang magnifying glass). Pagkatapos, pumili ng isa sa mga Bluetooth device na tumutugma sa pangalan ng Romeo BLE. I-click ang UUID at magsisimula ang pagpapares.

Hakbang 5:

Sa sandaling nakakonekta, ang kulay ng Bluetooth search key ay magbabago mula sa pula hanggang berde.

Hakbang 6:

Kasabay nito, ang LINK na humantong sa board ay i-on, na nangangahulugan na ang iyong iPhone ay nakakonekta sa Romeo BLE (Arduino Robot Control Board na may Bluetooth 4.0).

Hakbang 7:

Ngayon ay subukan natin kung ang controller ay maaaring matagumpay na makatanggap ng signal mula sa iyong iPhone. Bumalik sa interface ng Arduino IDE at i-click ang Serial Monitor sa itaas na kanang sulok.

Hakbang 8:

Ang isang dialogue na ipinapakita sa larawan sa ibaba ay magpa-pop up. Una, ang baud rate ng serial port ay dapat itakda bilang 115200 tulad ng ipinapakita sa pulang bilog sa ibaba.

Hakbang 9:

Ngayon ay maaari mong kunin ang iyong iPhone, at random na mag-swipe ang virtual na joystick o i-click ang pindutan sa screen. Kung walang iba pa, makikita mo ang nararapat na halaga sa Serial Monitor. At ang halaga ng joystick sa Serial Monitor ay mababago kapag nag-swipe ka sa virtual na joystick sa screen. Makikita mo na ang pagtaas ng halaga kapag ang joystick mag-swipe, o ang pagbawas ng halaga kapag ang joystick ay mag-swipe pababa.

Ang ibig sabihin ng pindutan ID kung aling pindutan ang iyong na-click.

Hakbang 10:

Mag-upload ng Code para sa Remote Control

Kung lahat ng bagay ay ok, let's magpatuloy at i-upload ang code para sa remote na pagkontrol sa Arduino board. May isang mahalagang punto upang mapanatili sa iyong isip!

Nakakonekta na ang iyong iPhone sa Romeo BLE Board sa huling yugto ng pagsubok. Gayunpaman, hindi mo ma-upload ang code sa Romeo BLE board kapag naitatag ang Bluetooth sa pagitan ng iyong telepono at ng board. Kaya, dapat mong maging BREAK OFF ang Bluetooth pairing muna. Bilang karagdagan, maaari mong i-upload muli ang code kung ang board ay naka-disconnect mula sa telepono. ITO AY NAPAKAHALAGA!

Mayroong dalawang mga paraan upang matakpan ang koneksyon. Ang isang paraan ay maaari mo lamang i-off ang kapangyarihan ng Remeo BLE at pagkatapos ay i-on ito muli. Ang iba pang mga paraan ay na i-off ang Bluetooth sa iyong telepono.

Matapos ang pagkakakonekta, maaari mong i-upload muli ang sample code. Ang code ay pinangalanan bilang GoBLE_APP.ino sa pakete ng code.

Hakbang 11:

Sa sandaling matagumpay na na-upload, maaari mong sundin ang pulang arrow sa larawan sa ibaba at mag-swipe ang Joystick upang makontrol ang iyong robot. Gayundin, maaari mong i-click ang pulang pindutan upang i-on o patayin ang LED sa board na konektado sa PIN13.

Hakbang 12:

Buod ng Code

Pagkatapos maglaro ng robot, magsimulang mag-aral kung paano gamitin ang code. Wala nang mga salita para sa code ng pagsubok para sa pagsubok ng GoBLE. Pagkatapos ay lumipat lang kami sa GOBLE APP.

Hindi na kailangang pag-usapan ang pangunahing code - tingnan lamang natin ang bahagi na may kinalaman sa bluethooth control. Kung nais mong i-remote control ang robot, ang dalawang library na nagngangalang Metro at GoBLE ay gagamitin.

# isama ang "Metro.h"

# isama ang "GoBLE.h"

int joystickX, joystickY;

int buttonState 6;

Ang joystickX, joystickY at buttonState 6, tatlong variable, ay tinukoy para sa library ng GoBLE. Ang mga ito ay ginagamit upang iimbak ang halaga ng estado para sa X-axis, Y-axis at mga halaga ng anim na mga pindutan.

Ang mapa sa ibaba ay nagpapakita ng layout ng lahat ng mga pindutan. Marahil ay alam mo ang mga kahulugan ng + X, -X, + Y, at -Y kung napag-aralan mo ang pagbabago ng mga halaga ng estado.

X & Y ang mga direksyon ng paggalaw ng Joystick. "+, -" ipakita ang mga uso ng halaga. "+" Ay nangangahulugan na ang pagtaas ng halaga ng estado. At "-" ay nangangahulugan na ang halaga ng estado ay bumababa.

Hakbang 13:

Ang unang setting ay dapat na nakasulat sa function ng Setup ().
Goble.begin ();

Ang linyang ito ay ginagamit para sa pagsisimula ng bluetooth setup. At hindi ito maaaring makaligtaan tuwing gagamitin mo ang Bluetooth code sa iyong board.

Serial.begin (115200);

Sa katunayan, ang linyang ito ay ginamit sa yugto ng pagsubok. Ito ay ginagamit upang simulan ang serial port. Kung gusto mong basahin ang halaga mula sa Serial Monitor, dapat mong isulat ang pahayag na ito sa pag-andar ng pag-setup. AT, kailangan ding itakda ang baud rate.

Dahil ang espesyal na baud rate ng Bluetooth ay espesyal, kailangan mong itakda sa 115200. Siguraduhin na ang baud rate ay na-setup, kung hindi man ito maaaring maging sanhi ng ilang mga problema.

Mangyaring magpatuloy sa pagtingin. Ang susunod na linya ay ang pag-andar ng Goble.available ()

kung (Goble.available ()) {gumawa ng isang bagay; }

Ibig sabihin na kung ano ang susunod na pagkilos ay isang beses na ang numero ay natanggap sa pamamagitan ng Bluetooth.

Ano ang nakasulat sa loob ng mga bracket ay magiging aming susunod na pagkilos. Una, kailangan nating suriin ang natanggap na figure. Ang dalawang sumusunod na pahayag ay ang basahin ang halaga sa X at Y axis.

joystickX = Goble.readJoystickX ();

joystickY = Goble.readJoystickY ();

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

/ / Serial.print (joystickX);

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

// Serial.println (joystickX);

Hulaan kung ano ang ibig sabihin ng apat na pahayag na Serial.print (). Ito ay may kaugnayan sa Serial. Ito ay para sa serial upang i-print ang data na natanggap, na kung saan ay maginhawa para sa code debug at pag-optimize.

"//" ay nangangahulugan ng annotation ng sumusunod na nilalaman. Ang apat na mga pangungusap ay hindi isasama kapag pinagsama ang code. Namely, walang data ang ipapadala sa serial sa sandaling ginagamit namin ang annotate para sa apat na pahayag na ito.

Mangyaring sumangguni sa Reference page ng Arudino Website (www.arduino.cc) para sa karagdagang impormasyon.

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 ();

Ang lahat ng nilalaman sa itaas ay ginagamit upang i-load ang impormasyon tungkol sa estado ng mga pindutan.

Ang layout ng mga pindutan ay ang mga sumusunod.

SWITCH_UP - 1 SWITCH_RIGHT - 2

SWITCH_DOWN - 3

SWITCH_LEFT - 4

SWITCH_SELECT - 5

SWITCH_START - 6

Hakbang 14:

Kailangan nating iproseso ang lahat ng datos na basahin bago natin simulan ang paggamit nito.

Ang halaga na nabasa sa Joystick ay dapat na naka-map sa bilis ng pag-ikot ng mga gulong ng aming robot. Kaya, ang bilis ng pag-ikot ng mga gulong ay lumabas sa pagitan ng -255 at 255.

int SpeedX = 2 * joystickX-256;

int SpeedY = 2 * joystickY-256;

Serial.print ("Bilis:");

Serial.print (SpeedX);

Serial.print ("");

Serial.println (SpeedY);

Gayundin ang serial ay i-print out ang bilis. Kung hindi kailangan, maaari kang magdagdag ng "//" sa simula upang alisin ito.

Ngayon ay kontrolin natin ang robot at gawin itong lumipat.

Kung (ilipat ang joystick up o (||) pababa) (Robot ay sumulong o pabalik; }

Kung (ilipat ang joystick sa kanan o (||) kaliwa) {Robot lumipat sa kanan o sa kaliwa}

Kung ang (X-aksis ng Joystick panatilihin sa gitna at (&&) Y-aksis ng Joystick panatilihin sa gitna) {Robot tumitigil; }

Ang mga koresponsal ay ang mga sumusunod:

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

iba pa kung (SpeedY> 200 || SpeedY <-200) {LeftWheelSpeed ​​= SpeedY-80; RightWheelSpeed ​​= SpeedY-80; Robot.Speed ​​(LeftWheelSpeed, RightWheelSpeed);}

ibang tao kung (SpeedX == 0 && SpeedY == 0) {Robot.Speed ​​(0,0); }

Ang huling code ay ginagamit upang makontrol ang LED sa board na konektado sa PIN13.

int ledPin = 13;

Dapat tukuyin ang pin 13 sa simula ng code.

pinMode (ledPin, OUTPUT);

I-set up ang output mode para sa LED sa pamamagitan ng pagsusulat ng function ng setup (). Mangyaring sumangguni sa pagtuturo para sa pagpapaandar ng pinMode () sa website ng Arduino (www.arduino.cc).

Ang mga sumusunod na expression ay nagpapakita ng estado ng mga pindutan. Kapag ang pindutan ng No.1 ay pinindot, ang LED ay magiging. Ibig sabihin na ang LED pin ay naka-set na HIGH.

kung (buttonState 1 == PRESSED) {digitalWrite (ledPin, HIGH); }

Kapag ang pindutan ng No.1 ay inilabas, ang LED ay patayin. Ibig sabihin na ang LED pin ay nakatakda upang maging LOW.

kung (buttonState 1 == Inilabas) {digitalWrite (ledPin, LOW); }

Iyan na ang lahat para sa coding ngayon. Hindi ba masaya? KAYA, hindi imposible na isulat ang code para sa iyo, tama? Maaari mong subukan na baguhin ang isang pindutan upang makontrol ang LED light sa pamamagitan ng pagbabago ng code. Ito ay tiyak na mas kawili-wiling kapag maaari mong kontrolin ito sa iyong code. Ngayon, START HAVING FUN sa iyong robot !!!