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