RoboRemo

roboicon.pngA bluetooth egységet bármilyen androidos szoftverrel lehet kezelni. Számos ingyenes alkalmazást kipróbáltunk, és a roboremofree mellet döntöttünk. Előnye, hogy szinte minden kommunikációs csatornát kezel, és az interface szabadon alakítható. Vagyis tetszőlegesen rendezhetjük el a képernyőn a komponenseket, amiből rengeteg van. A FREE verzióban csak a komponensek száma van 5-re korlátozva. Az alkalmazás fizetős változata sem drága, érdemes megvenni, ha valaki nagyobb projecteket is épít.

A rendszer lényege, hogy a roboremo soros szöveges parancsokat küld, és fogad a HC-06-on keresztül az ARDUINO-hoz. A parancsok tetszőlegesek lehetnek, de a feldolgozásukat az ARDUINO-ban nekünk kell megoldani.

Számos példa, és oktató videó van a gyártó oldalán: http://www.roboremo.com

Egyszerű példa az interface programozásához. Persze a LED vezérlési részét az ARDUINO-ban meg kell írni.

A robotautónk távvezérléshez legalább 8 gomb kellene, de az már meghaladja az ingyenes verzió korlátozását. Ezért egy touchpad komponenst raktunk fel az interface-re, ami úgy működik, hogy a felhasználó megérinti a kijelölt téglalap egy pontját, majd annak koordinátáját elküldi a HC-06-on keresztül az ANDROID soros portjára.

Ha a felhasználó húzás műveletet is végez, akkor azt is elküldi folyamatosan, illetve külön eseményként az elengedés koordinátáit is elküldi. Mindhárom esemény külön parancsot kaphat, de lehet ugyanaz is a parancs.

Akármekkora téglalapot rajzolunk, a téglalap minimális, és maximális koordinátáit mi adhatjuk meg X, és Y irányban. 

Nézzünk egy példát a következő beállításokkal:

xmin = 50
xmax = 100
ymin = 0
ymax = 200

Az érintéskor elküldött parancs (press id) : LE
A felengedéskor elküldött parancs (release id) : FEL
Húzás közben elküldött parancs (drag): HUZ

A felhasználó a téglalap bal felső sarkában érinti meg a touchpad-ot, amjd elhúzza a jobb felső sarokba, és elengedi. Közben a következő parancsok mennek az ARDUINO-nak:

Az érintéskor: LE 62 25
Húzás közben folyamatosan az aktuális koordináták: HUZ 71 30  HUZ 82 41 ...
Elengedéskor: FEL 83 8

A parancsok feldolgozása kicsit körülményes, ha egy változó hosszúságú szöveget kell feldarabolni, és 3 db változóba helyezni az értékeket. Egyszerűbb a helyzet, ha a koordináták 1 karakteresek, vagyis a min érték 0, a max. érték 9

touchpad.jpg

 

Ekkor egy 100 zónás felületet kapunk, amelyekhez egy-egy művelet társítható az ARDUINO-ban.

 

 

0<x<3 3<=x<=6 6<x

0<y<3

ba:
balra előre 
el:
előre
jo:
jobbra előre

3<=y<=6

- - -

6<y

hb:
hátra balra tolatás
ha:
hátra tolatás
hj:
jobbra hátra tolatás

 

A fenti kiosztást teszteltük, és folyamatos húzással egészen jól irányítható az autó. A középső sávot meghagytuk üresen.

Az érintés eseményt nem használtuk, mivel a húzás is azonnal elküldi az érintés koordinátáit. Így csak két parancs kell. A húzás az xy parancsot kapta, az elengedés a st parancsot.

Kb. ilyen parancsok érkeznek feldolgozásra:
xy 1 2 
xy 2 2
xy 3 2
xy 4 2
st 4 2

Vagyis a bal felső sarokból középre húztuk, miközben egy balra előre, majd előre parancs indult el az ARDUINO-ban, végül egy STOP.

Nézzük a roboremo beállítását. 

 

Ha ezzel megvagyunk, akkor párosítani kell a HC-06-ot a telefonhoz. Ehhez jelszót kér, ami alapból 1234. Utána indítható a roboremo, és lehet kapcsolódni a HC-06-hoz. Ha több is van, akkor a HEXA ID alapján lehet megkülönböztetni őket. Ezzel elkészült a távirányítónk.