Szervomotor vezérlés HC-05 Bluetooth modullal és Android okostelefonnal

 

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.

#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 
} 
} 

Android alkalmazás létrehozása

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.

1.a. lépés  Oktató videó letöltése.
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:
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. 
              
 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:

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.
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