Kredsløb

Sådan bygger du en robot - Lektion 7: Byg en Bluetooth-styret Arduino Robot: 14 trin

Insideeus - Ecstasy (Official Video)

Insideeus - Ecstasy (Official Video)

Indholdsfortegnelse:

Anonim

Da Arduino robotten er i stand til at udføre de grundlæggende funktioner, opgraderer vi den nu med endnu en funktion - Romote-kontrol via Bluetooth.

Samme som de andre 'Hvordan man laver en robot' tutorials, bruges et Arduino robot kit (Pirate: 4WD Arduino Mobile Robot Kit med Bluetooth 4.0) her som et eksempel. Derudover har vi også brug for hjælp fra GoBLE (A Generic BLE APP Controller), som giver dig mulighed for at forbinde og styre robotter, mobilplatforme, droner eller noget andet som ubemandet luftfartøj (uav) med dine mobile enheder via Bluetooth.

Lektioner Menu:

Lektion 1: Introduktion

Lektion 2: Byg en grundlæggende Arduino Robot

Lektion 3: Byg en linjesporing Arduino Robot

Lektion 4: Byg en Arduino Robot, der kunne undgå forhindringer

Lektion 5: Byg en Arduino robot med lys og lydeffekter

Lektion 6: Byg en Arduino Robot, der kunne overvåge miljøet

Lektion 7: Byg en Bluetooth-styret Arduino Robot

Forberedelse

iPhone eller iPad × 1

GoBLE APP × 1

forsyninger:

Trin 1:

Bemærk: GoBLE kan i øjeblikket kun bruges på iOS-enheder, og det beder dig om mindst installeret iOS 8.1.

For iOS-brugere: Download venligst GoBLE fra App Store.

Trin 2:

Upload testkode

Forbind venligst Romeo BLE med computeren. Testkoden 'GoBLE_Test.ino' findes i softwarepakken. Det gør det muligt at kontrollere signaludgangen fra dine enheder. DOWNLOAD IT & CHECK IT OUT. Glem ikke at indlæse GoBLE bibliotek før download testkode.

Trin 3:

Bluetooth Test

Lad os nu starte Bluetooth-parring. Tænd den mobile bluetooth, og åbn derefter GoBLE-appen. Din skærm vil se sådan ud!

Trin 4:

Klik på Bluetooth-søgenøglen (det ser ud som et rødt forstørrelsesglas). Vælg derefter en af ​​de Bluetooth-enheder, der svarer til navnet på Romeo BLE. Klik på UUID, og ​​de vil starte parring.

Trin 5:

Når først forbindelsen er slået til, ændres farven på Bluetooth-søge nøgle fra rød til grøn.

Trin 6:

Samtidig vil LINK ledet på tavlen tænde, det vil sige, at din iPhone har været forbundet til Romeo BLE (Arduino Robot Control Board med Bluetooth 4.0).

Trin 7:

Lad os nu teste om controlleren med held kan modtage signal fra din iPhone. Gå tilbage til Arduino IDE-grænsefladen og klik på Serial Monitor i øverste højre hjørne.

Trin 8:

En dialog som vist på billedet nedenfor vil dukke op. For det første skal baudhastigheden for seriel port indstilles til 115200, som den er vist i den røde cirkel nedenfor.

Trin 9:

Nu kan du tage din iPhone ud, og skub det virtuelle joystick tilfældigt eller klik på knappen på skærmen. Hvis intet andet, vil du se den tilsvarende værdi på Serial Monitor. Og joystickværdien på Serial Monitor ændres, når du slår det virtuelle joystick på skærmen. Du vil opdage, at værdien stiger, når joystick suges op, eller værdien falder, når joysticket slår ned.

Button ID betyder hvilken knap du klikker på.

Trin 10:

Upload kode til fjernbetjening

Hvis alt er ok, lad os fortsætte og uploade koden til fjernstyring til Arduino bord. Der er et meget vigtigt punkt at holde i dit sind!

Din iPhone har allerede været forbundet med Romeo BLE Board i det sidste test stadium. Du kan dog ikke uploade koden til Romeo BLE bordet, når Bluetooth er etableret mellem din telefon og bestyrelsen. Således skal du BREAK OFF Bluetooth-parringen først. Derudover kan du uploade koden igen, hvis kortet er afbrudt fra telefonen. DETTE ER MEGET VIGTIGT!

Der er to metoder til at afbryde forbindelsen. En måde er, at du simpelthen kan slukke for Remeo BLE-strømmen og tænde den igen. På den anden side er det bare at slukke for Bluetooth på din telefon.

Når du er afbrudt, kan du uploade eksemplskoden igen. Koden hedder GoBLE_APP.ino i kodepakken.

Trin 11:

Når du har uploadet succes, kan du følge den røde pil i billedet herunder og svejs joysticket for at styre din robot. Du kan også klikke på den røde knap for at tænde eller slukke for LED på tavlen, som er forbundet med PIN13.

Trin 12:

Kode Synopsis

Efter at have spillet robotten, lad os begynde at lære at bruge koden. Ikke flere ord til testkode for GoBLE test. Så går vi bare videre til GoBLE APP.

Der er ingen grund til at diskutere grundlæggende kode - lad os bare se på den del der involverer bluethooth-kontrol. Hvis du vil fjernbetjeningen robotten, vil der blive brugt to biblioteker navngivet Metro og GoBLE.

#include "Metro.h"

#include "GoBLE.h"

int joystickX, joystickY;

int buttonState 6;

joystickX, joystickY og buttonState 6, tre variabler, er defineret for GoBLE-biblioteket. De bruges til at gemme statens værdi for X-aksen, Y-aksen og disse værdier på seks knapper.

Nedenstående kort viser layoutet på alle knapper. Du kan sikkert vide betydningerne af + X, -X, + Y, og -J hvis du har analyseret ændringen af ​​statens værdier.

X & Y er joystickets bevægelsesretning. "+, -" viser trendens udviklingstendenser. "+" Betyder statens værdi er stigende. Og "-" betyder statens værdi falder.

Trin 13:

Indledende indstilling skal skrives i funktionen af ​​Opsætning ().
Goble.begin ();

Denne linje bruges til at starte Bluetooth-opsætningen. Og det kan ikke gå glip af, når du bruger Bluetooth-koden på dit kort.

Serial.begin (115200);

Faktisk er denne linje blevet brugt på testfasen. Det bruges til at starte serieporten. Hvis du vil læse værdien fra Serial Monitor, skal du skrive denne sætning i opsætningsfunktionen. OG, skal også indstille baudfrekvensen.

Fordi baudhastigheden for Bluetooth er speciel, skal du indstille til 115200. Sørg for, at baudfrekvensen er konfigureret, da det ellers kan forårsage nogle problemer.

Fortsæt med at se ned. Næste linje er funktionen af ​​Goble.available ()

hvis (Goble.available ()) {gør noget; }

Det betyder, at hvad den næste handling er, når figuren er blevet modtaget via Bluetooth.

Hvad der er skrevet inden for parenteserne, ville være vores næste handling. For det første skal vi analysere den modtagne figur. Følgende to erklæringer er at læse værdien på X- og Y-aksen.

joystickX = Goble.readJoystickX ();

joystickY = Goble.readJoystickY ();

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

// Serial.print (joystickX);

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

// Serial.println (joystickX);

Gæt hvad de fire udsagn Serial.print () ovenfor betyder. Det er relateret til serienummeret. Det er for seriet at udskrive de modtagne data, hvilket er praktisk for kodefejl og optimering.

"//" betyder annotering af følgende indhold. Disse fire sætninger vil ikke blive inkluderet, når du udarbejder koden. Nemlig vil der ikke blive sendt nogen data til serienummeret, når vi anvender annotatet for disse fire udsagn.

Se venligst referencens side på Arudino Website (www.arduino.cc) for yderligere information.

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

Alt indhold ovenfor bruges til at indlæse oplysningerne om tilstanden af ​​knapperne.

Layout af knapperne er som følger.

SWITCH_UP - 1 SWITCH_RIGHT - 2

SWITCH_DOWN - 3

SWITCH_LEFT - 4

SWITCH_SELECT - 5

SWITCH_START - 6

Trin 14:

Vi skal behandle alle de data, der læses, før vi begynder at bruge dem.

Værdien af ​​joysticket skal kortlægges til rotationshastigheden for vores robots hjul. Således viser hjulets rotationshastighed mellem -255 og 255.

int SpeedX = 2 * joystickX-256;

int SpeedY = 2 * joystickY-256;

Serial.print ("Speed:");

Serial.print (SpeedX);

Serial.print ("");

Serial.println (SPEEDY);

Også serienummeret ville udskrive hastigheden. Hvis det ikke er nødvendigt, kan du tilføje "//" i starten for at fjerne det.

Lad os nu kontrollere roboten og få den til at bevæge sig.

Hvis (flyt joysticket op eller (||) nede) {Robot bevæge frem eller tilbage; }

Hvis (flyt joysticket til højre eller (||) til venstre) {Robot bevæge sig til højre eller til venstre}

Hvis (Joysticks X-akse holder i midten og (&&) Y-aksen på joysticket holder i midten) {Robot stopper; }

Korrespondentkoder er som følger:

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

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

ellers hvis (SpeedX == 0 && SpeedY == 0) {Robot.Speed ​​(0,0); }

Den sidste kode bruges til at styre LED'en på tavlen, der er tilsluttet PIN13.

int ledPin = 13;

Pin 13 skal defineres i begyndelsen af ​​koden.

pinMode (ledPin, OUTPUT);

Indstil output mode for LED ved at skrive funktionen af ​​opsætningen (). Se venligst instruktion for funktionen af ​​pinMode () på Arduino hjemmeside (www.arduino.cc).

Følgende udtryk viser tilstanden af ​​knapperne. Når knappen No.1 er blevet trykket, vil LED være tændt. Det betyder, at LED-stiften er indstillet til at være HIGH.

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

Når knappen No.1 er frigivet, vil LED slukke. Det betyder, at LED-stiften er indstillet til at være LOW.

hvis (buttonState 1 == frigivet) {digitalWrite (ledPin, LOW); }

Det er alt for kodning i dag. Er det ikke sjovt? Så det er ikke umuligt at skrive kode til dig, ikke? Du kan prøve at ændre en knap for at styre LED-lyset ved at ændre koden. Det er helt sikkert mere interessant, når du kan styre det med din kode. Nu begynder du at have det godt med din robot !!!