10. Projekt -- Szervo vezérlés HC-05 Bluetooth modullal és Android okostelefonnal -- V1.0
by Roboworld Hobbielektronika
Rövid leírás:
Ebben a rövid projektben bemutatjuk neked, hogy egy HC-05 típusú Bluetooth modullal felszerelt Arduino, hogy kommunikál más Bluetooth eszközökkel, mint pl egy okostelefonnal. A projekt során egy Androidos telefonra fogunk írni egy kis applikációt, amely tud kommunikálni az Arduinoval, amely egy microszervo motort vezérel.
Hardware:
1 db Arduino Uno
1 db Tower Pro MG90S vagy Towerpro SG90 micro szervo
1 db HC -05 Bluetooth modul
1 db Jumper kábel
Kapcsolási rajz:
A kapcsolás megépítése után jöjjön a programozás, valamint az alkalmazás elkészítése, amelyet az okostelefonodra kell másolni és telepíteni.
Programozás, mintakód
FIGYELEM!! A program feltöltése nem lehetséges, ha a kijelzőt és a HC-05 Bluetooth modult is az Arduinon keresztül tápláljuk meg. Megoldásként csak annyi a teendő, hogy feltöltés előtt az 5V és a GND kábelt (amely a breadboardot táplálja) kihúzzuk és a feltöltés zavartalanul mehet végbe. Ezután a két kábelt vissza lehet helyezni.
Android alkalmazás létrehozása#include <SoftwareSerial.h> // TX RX software library HC-05 bluetooth modulhoz #include <Servo.h> // servo library Servo myservo;
// servo név
int bluetoothTx = 10; // bluetooth tx 10 pinre int bluetoothRx = 11; // bluetooth rx 11 pinre SoftwareSerial bluetooth(bluetoothTx, bluetoothRx); void setup() { myservo.attach(9); //Szervomotor jel vezetéke a 9 pinre Serial.begin(9600); //Soros kommunikáció beállítása. Serial Monitoron nyomonkövethető //bármiféle változás. bluetooth.begin(9600); // Bluetooth serial kommunikáció beállítása android okostelefonhoz. } //Program kezdete void loop() { // Bluetoothról olvassa a számokat és kiírja a Serial Monitorra illetve a szervóra if(bluetooth.available()> 0 ) // számok fogadása a Bluetooth modulról { int servopos = bluetooth.read(); // tárolja a fogadott számokat servopos változóba Serial.println(servopos); // Kiírja az aktuális fogadott számot a bluetoothról myservo.write(servopos); // Forgatja a szervómotort abba a szögbe amelyet az Android // okostelefonról kapott a bluetoothon keresztül } }
Az alkalmazás elkészítéséhez az MIT App Inventor programot fogjuk használni, amely online felületen elérhető így nem igényel semmiféle előtelepítést. További információkat a itt találsz.
1.lépés Fejlesztőkörnyezet megnyitása
Nyisd
meg a linket: MIT
App Invertor, majd „Start new Project” gombra kattints a bal felső
sarokban. Nevezd el a projected ahogy szeretnéd. Javaslom: „Servo_control_via_Bluetooth”
nevet. Ezután megjelenik a fejlesztői környezet középen egy telefon kijelzővel.
Abban
az esetben, ha videóról szeretnéd megnézni az applikáció készítést akkor a
következő linkről ezt megtudod tenni. Amennyiben lépésről lépésre részletesen
szeretnéd végigkövetni az applikáció készítés lépéseit úgy ugorj a 2.lépésre.
2. lépés Bluetooth Client list+ Clock létrehozása
Baloldalon
megtalálható egy „Connectivity” nevű fül, amelyre rákkatintva megtalálható a
„BluetoothClient”. Fogd meg a
„BluetoothClient”-et és húzd a főképernyőhöz.
Ekkor megjelenik a képernyő alatt egy kis Bluetooth ikon.
„BluetoothClient1” névvel.
Ezután
következzen a Clock elhelyezése. Ugyancsak baloldalon a „Sensors” fül alatt
található meg a „Clock” funkció blokk.
Húzd a „Clock”-t a főképernyőre.
3. lépés Label,
Listpicker elhelyezése
A
címben említett parancsokat a „User Interface” fül alatt találjuk. Keresd ki a
Label funkciót és húzd a főképernyőre a képen látható módon, majd helyezd
középre a jobb oldalt találató „Width” funkcióval. A „Label1”-re kattintva megjelenik jobb oldalt
egy sáv. Ott keresd ki, hogy „Width” és válaszd a „Fill parent” opciót. Ezzel elértük, hogy a Label középre kerüljön.
Ezután a ListPicker elhelyezése következik. A képernyő bal
oldalán található „Layout” fülben található a „HorizontalArrangement” funkció.
Húzd azt a főképernyőn szereplő Label1 alá és Width” „Fill parent” opciót
választ ki. Ebbe a kis négyzetbe pedig
húzd bele a ListPickert ami a User Interface-ben található és ugyancsak „Fill
parent”.
<--Végén ezt kell látnod
A jobb oldali sávban lévő„Width” alatt az „Image”-et választ ki és tölsd fel a „Bluetooth icon.jpg”-t. Ekkor azt tapasztalod, hogy a Bluetooth ikon nagyon nagy formát vett fel ezért ennek a formátumán állítani kell. A „Height”-nél a pixels mellé írd be hogy 110 a „Width”-nél pedig 150 értéket adj meg.
4. Aktuális szögérték megjelenítése illetve gombok és
csúszka beillesztése
4.1
Aktuális szögérték megjelenítése
A
baloldalon található „Layout” fülben válaszd ki a „TableArrangement” funkciót
és helyezd a főképernyőn a Bluetooth jel alá.
Ezután a „Height” értéket állítsd be 35 pixelre a „Width” pedig „Fill
parent” legyen.
4.2
Gombok beillesztése
A
gombok beillesztéséhez a „Layout” fülben válaszd ki a „HorizontalArrangement”
funkciót és helyezd a főképernyőn a következő sorba. A „Width” legyen „Fill
parent” -re állítva. Ezek után be kell
illeszteni/húzni ide a gombokat (Button). Összesen 5 gombot fogunk beilleszteni,
amelyek a szög értékeket fogják tartalmazni. 0, 45, 90, 135, 180. A gombokat a
jobb oldalon a „Text” fülnél tudjuk átnevezni. A gombok „Widht” értéke legyen
mindegyiknél „Fill parent”.
4.3 Csúszka (Slider)
beillesztése
A
csúszka elhelyezéséhez először a „Layout” fülből húzd a főképernyőre „HorizontalScrollArrangement”
funkciót, majd állítsd a „Width” értéket Fill „parentre”, továbbá a „User Interface”
fülből a „Slider”-t helyezd „HorizontalScrollArrangement” alá, ahogy az alábbi
kép is mutatja.
Ezután
a „Slider” konfigurálása jön a következő beállításokkal: MaxValue:179
MinValue:
0
ColorLeft:
Red
ColorRight:
Gray
5. Program írása Blocksban
A
MIT App Inventor jobb felső sakrában találsz egy „Blocks” nevű gombot amelyre
kattints rá. Ezután megjelenik egy új ablak. Itt tudod programozni, azokat a
gombokat, funkciókat amelyeket korábban
már beillesztettél. Ezeket a bal oldali oszlopban láthatod.
5.1 Bluetooth Client funkcióblokkjai
Kattins
a ListPicker1 nevű funkcióra és helyezz el a legördulő menüből a megfelelő
funkcióblokkokat
az
alábbi kép alapján Az „If-then” blokkot a Built-in/Control fül alatt találod
meg a képernyőd baloldalán.
Majd kapcsold hozzájuk a Bluetooth Client fül alól a következőket így:
Majd kapcsold hozzájuk a Bluetooth Client fül alól a következőket így:
Ezek
a funkcióblokkok azért felelnek hogy a megfelelő Bluetooth modult ki tudd
választani az okostelefonodon (esetünken HC-05) illetve csatlakozni ahhoz.
A
kapcsolat létrejöttéről szükségünk van egy visszajelzésre is, hogy tudjuk a
kapcsolat létrejött e vagy sem. A következő funkcióblokkok ezt fogják
szemléltetni.
Először
helyezd el a következő Clock funkcióblokkot két „If-then” paranccsal az alábbi
kép alapján. A „not” blokkot a
Built-in/Logic fül alatt találod.
Majd
kikell egészítenünk azzal, hogy ezt az információt hol akarjuk megjeleníteni. A
választásom a Label1-re esett, tehát a következő blokkokat a Label1-ből tudjuk
kinyerni. Azokat a parancsokat (píros
színű blokk) ahova tetszőleges szöveget írhatsz be a Built-in/Text fül alatt
találod. Az állapotjelzőket pedig a Built-in/Colors fül alatt.
Tehát
ha a kapcsolat nem jött létre akkor kiírja piros színnel hogy „Nincs
kapcsolat”, ha sikerült a kapcsolódás akkor zöld színnel írja ki hogy
„Csatlakoztatva”.
5.2 Csúszka beállítása
A
csúszka programozásához a következő funkcióblokkra lesz szükség amit a „Slider”
fül alatt találsz.
Majd egészítsd ki a következő funkcióblokkal amelyet a Label2-ben és a „Built-in/Math” opció alatt találsz, a lila blokkot pedig a BluetoothClient menü alatt találod.
Ez a programrészlet annyit csinál,hogy az csúszkán beállított aktuális értéket leolvassa és kijelzi a Label2-ben majd elküldi az aktuális értéket Bluetoothon keresztül az Arduinonak.
Majd egészítsd ki a következő funkcióblokkal amelyet a Label2-ben és a „Built-in/Math” opció alatt találsz, a lila blokkot pedig a BluetoothClient menü alatt találod.
Ez a programrészlet annyit csinál,hogy az csúszkán beállított aktuális értéket leolvassa és kijelzi a Label2-ben majd elküldi az aktuális értéket Bluetoothon keresztül az Arduinonak.
6. Nyomógombok programozása
Továbbiakban
a nyomógomb funkciókról lesz szó. Kattints a baloldalon megtalálható Button1-re
és válaszd ki a megjelenő menüből a következő blokkot:
Majd egészítsd ki így a Bluetooth Client és a Label2 megjelenő menüjéből így:
Majd egészítsd ki így a Bluetooth Client és a Label2 megjelenő menüjéből így:
Az
összeillesztett funkcióblokk nem csinál mást, mint az első gomb megnyomásakor
meghívja a BluetoothClient1 funkciót és rajta keresztül elküld egy számot,
amelynek a tartalma „0”. Ezzel definiáltuk a 0 fokot.
A „0”
szám nagyon fontos mivel ez az az információ amit az okostelefonon lévő gomb
megnyomásakor az okostelefon a HC-05 Bluetooth modulnak elküld. Ezt az
információt fogja az Arduino feldolgozni majd a szervozmotort a megadott „0°”-hoz
mozgatni.
Ismételd
ezt meg még 4x, hogy a másik négy gomb szögértéke is definiálva legyen.Ahogy
korábban említettem a szögértékek: 0°, 45°, 90°,135°, 180°.
Végeredmény:
Teljes
programkód itt látható:
Ezzel
az applikáció programozás véget ért. Nincs más hátra mint elnevezni az
applikációd és apk kiterjesztésű fájlt generálni.
Ahhoz,
hogy az applikációd eltudd nevezni vissza kell lépned a Designer ablakba (Jobb
felül a Blocks mellett). Miután visszaléptél kattins a megjelenített
telefonképernyőre és ekkor jobb oldalon megjelenik a „Properties”, ahol az
„AppName”-nél betudod írni az appod nevét.
5. Applikáció generálás.
5. Applikáció generálás.
Applikációdat
úgy tudsz generálni, hogy a bal felső sarokban lévő „Build” fület lenyitod és
az „App (save .apk to my computer)” választod.
Ekkor startol el az appgenerálás. Körülbelül 1 percen belül el is készül
a letölthető app amelyet másolj fel a telefondodra és telepítsd fel.
6. Használat, csatlakozás
A
telepítés után kapcsold be a telefonodon a Bluetooth-t és párosítsd a HC-05
típusú modullal.A modulon van egy kis gomb amelyet meg kell nyomni a párosítás
előt, mivel ezzel jelezzük a modul felé, hogy párosítást szeretnénk
végrehajtani. A kód 1234 lesz. Miután ez megtörtént nyisd meg az applikációt
majd Bluetooth Client gombot nyomd meg és válaszd ki a HC-05 modult.
Bizonyos
esetekben előfordulhat az, hogy hibaüzenetet kapsz (Error 507 vagy 516 broken
pipe). Ez akkor fordulhat elő ha az Arduinot egy számítógép USB portjáról
táplálod meg, mivel ezen esetben a Bluetooth modul az Arduino és még a szervo
motor is erről van meghajtva. Egyszerűen nincs elég energia. Ha nagyobb motort
használnál mindenképp szükséges a külső megtáplálás.
A
kapcsolat létrejött, az Arduinod illetve az okostelefonod már kommunikál is
egymással. Abban az esetben ha nem működne elsőre, akkor nem kell más tenned
mint újraindítani (Resetelni) az Arduinot.
Megjegyzések
Megjegyzés küldése