Arduino like a boss

Arduino like a boss

Arduino - Android kommunikáció bluetoothon keresztül

2015. február 12. - Hofecker Andor

Sziasztok!

 

A következő néhány sorban leírom, hogyan csináltam az Arduino-hoz egy soros monitort a mobilomra. Ezzel a soros monitorral lehet majd szöveget küldeni az Arduino-nak egy Androidos mobilon keresztül és fordítva, Arduino-ról az Androidra.

Kicsit korábbról indulok, mint konkrétan a soros monitor, mivel ez is a projekt része volt. Ezt átugorhatják azok, akiknek már máködik a felprogramozás és egyebek.

Arduino pro mini programozása USBasp-vel

 

Először is vettem egy arduino pro minit (link), aminek ugye nincs usb portja. Ezért kisebb és olcsóbb tud lenni, mint a társai, de kell hozzá valami, amivel tudjuk programozni.

Az arduino pro mini és a lábai

A programozáshoz lehet használni egy másik Arduino-t, mint pl az Arduino UNO, Arduino ISP vagy Mini USB Adapter. Én nem ezeket használtam, mert nem volt kéznél egyik sem. Mivel ez is egy AVR mikrokontroller, ezért egy régebben vásárolt USBasp programozóval töltöttem fel az aktuális programot. A kapcsolási rajz pedig így néz ki:

usbasp_programing_bluetooth.jpg

A kapcsolás, ami egyébként a végleges kapcsolás is.
(Fritzing nevű programmal készítettem ezt a gyönyörű kapcsolást)

A valóságban pedig valahogy így néz ki:

wp_20150208_23_56_11_pro.jpg

A szörnyű valóság

A képen lehet látni, hogy a bluetooth modul, amit használtam nem egészen az, ami a kapcsolási rajzon van, de majdnem.

Egy ilyesmi modulnak a közepe van csak szépen (nem) odaforrasztva

A programozó driver telepítése következett, ami windowsra trükkös volt nekem, mert nem a megfelelő drivert rakta fel automatikusan. Lehet, hogy ez a probléma csak nálam merült fel, de nem volt hajlandó felinstallálni a megfelelő drivert, mert szerinte már a legújabb driver fent van, azzal meg nem ment. Először ki kellett kapcsolnom az automatikus driver telepítést (videó), aztán letölteni a megfelelő drivert, (link, innen a legújabb) és felinstallálni (link).

Csatlakozás az Arduino-hoz számítógépről és a program megírása az Arduino-ra

 

Ez után az Arduino Software (IDE)-t (ez az Arduino programozós programja :) ) használtam a felprogramozáshoz. Itt egy rövid videó, hogy is ment ez. A warning ellenére felprogramozta

 A program elég egyszerű. Ha megkap egy karaktert soros porton keresztül, akkor azt visszaküldi a feladónak.

Innen ki lehet ctrl+c-zni:

char inChar = 0;

void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
}

void loop() {
// put your main code here, to run repeatedly:
    if (Serial.available() > 0)
    {
        inChar = Serial.read();
        delay(1);
        Serial.write(inChar);
    }
}

Ha eljutottunk idáig, akkor már át térhetnénk az android programozásra is. De még nem. Először is nézzük meg, hogyan kell az Arduino software-nek a "serial"-ját használni teszteléshez természetesen bluetoothon keresztül. Először is párosítani kell az arduinora rakott bluetooth-t a számítógépben lévővel. Én egy egyszerű bluetooth dongle-t használok, aminek a telepítése már rég volt, de igény esetén újra megcsinálom és leírom, hogyan kell. A bluetooth kódja 1234 vagy 0000. Már csak meg kell találni melyik virtuális COM porton beszélget a gépünkbe telepített bluetooth az arduino-val. Az enyém pl a COM5-ön, ezért azt választottam ki az előző videóban.

bt_port.JPG

Bluetooth COM portja

Innentől kezdve már csak a serialra kell kattintani és működik minden. Ennek két előnye van, nem kell bedugva lennie az arduino-nak a gépbe, hogy tudjunk vele kommunikálni, és mivel USBasp-s porgramozót használok nem kell a programozót/bluetooth-t kihúzogatni, ha az egyiket vagy másikat használni akarjuk, mert mind a kettő az RX TX lábakat használja. Nálam mindenesetre egyszerre nem működött Arduino nano-val.

És itt a nagyon látványos működés: https://www.youtube.com/watch?v=KJ1PlIoeTH0

Android programozás App Inventor 2-vel

 

És most jön a várvavárt Android programozás, méghozzá App Inventor 2-vel. http://ai2.appinventor.mit.edu/

Ez egy MIT által kifejlesztett online szoftver, ami nagyon megkönnyíti az egyszerű androidos programok elkészítését. Nem csak arduinohoz lehet használni, hanem sokminden másra is. Ez nem egy professzionális programozói felület, egy bizonyos bonyolultság, sebesség fölé akarunk menni, akkor a nehezebb vagy drágább (vagy mindkettő) utat kell választani. Ahogy kivettem a szavaikból ez egy ingyenes dolog, annyira ingyenes, hogy az általa készített programokat fel lehet rakni google play-be, és el is lehet adni, de ezt még nem próbáltam.

Az használatához mindössze egy google fiók kell. A fő ablakban különböző objektumokat kell összepakolni, amire szükségünk van. A baloldali menüből kell behúzni oda, ahova szeretnénk. A jobb oldalon a kijelölt objektumok paramétereit lehet állítani.

Ha összeszedtük a megfelelő objektumokat, akkor áttérhetünk a programozós részre, ami a jobb felső sarokban lévő "blocks" gombbal lehetséges. A programozás grafikusan működik, csak a változóneveket és értékeket kell begépelni (vagy kereséshez). Ha még nem csináltál ilyesmi programozást, vagy egyáltalán nem programoztál idáig, akkor nem tudom hogy jutottál el idáig, de van egy csomó játék, amivel az alapokat el lehet sajátítani

Például:

Lányoknak: http://studio.code.org/s/frozen/stage/1/puzzle/1

Fiúknak: http://studio.code.org/hoc/1

Az Androidra egy serial terminálhoz hasonló programot fogok létrehozni.

Első lépésben csatlakozni kell a bluetooth modulhoz. Ez csak akkor sikerülhet, ha már korábban párosítottuk az eszközünkket a mobillal, és be van kapcsolva a bluetooth. Ehhez szükséges a bluetooth periféria használata és a listPicker nevű objektum.

 - Létre kell hozni egy szövegmezőt ahova gépelünk és egy küldés gombot, amivel elküldjük a begépelt szöveget.

 - Fogadjuk a beérkezett adatot és összefűzzük az eddig bejövő szöveggel, majd kiírjuk. Ez egy időzítővel lesz megoldva, ami 0,1 másodprecenként, azaz 100ms-ként fut le.

 - Fejlesztés az arduino szoftveréhez képest, hogy kitörölhetjük az eddig beérkezett szöveget, ha akarjuk.

 - Érdemes még leválasztani a bluetooth-t mielőtt kilépünk az applikációból, mert hibát jelezhet a készülék. Ehhez is készítsünk egy gombot.

Telepítés a telefonra és a program kipróbálása:

A végleges program:

arduino_serial_monitor.jpg

A kész app inventoros program

1. blokk: mielőtt kiválasztanánk a list picker egy elemét: feltöltjük azt a már korábban párosított eszközökkel
2. blokk: miután kiválasztottuk a listpicker elemét: a kiválaszott elemhez csatlakozik a telefon
3. blokk: ha megnyomjuk a leválasztás gombot: ha csatlakoztatva van már a bluetooth, akkor bontja a kapcsolatot
4. blokk: ha megnyomjuk a küldés gombot: ha csatlakoztatva van a bluetooth, akkor elküldi a kuldendo_textboxba beírt szöveget, majd kitörli a textboxot
5. blokk: ha az óra elszámolt 100 ms-ig: ha csatlakoztatva van a bluetooth és van fogadásra kész adat, akkor a kijelzendo_valtozo váltózóba írjuk bele az előző értékével összefűzött beérkező adatot, aztán állítsuk át az erkezett_lbl szövegét a változónk értékére
6. blokk: ha megnyomjuk a törlés gombot: ne tartalmazzon a változónk semmilyen szöveget és aztán állítsuk át az erkezett_lbl szövegét a változónk értékére (azaz legyen üres)
7. az a picike blokk: létrehozza a szöveg típusú változónkat üresen

Innentől kezdve már szabadon szárnyalhat a képzelet, rengeteg felhasználási lehetőség van. És hogyan lett ebből egy légpárnás hajó távirányítója? A következő posztból kiderül.

Mára ennyi lenne. Ha bármi kérdés merül fel, azt a kommentekben igyekszem megválaszolni.

Oszd meg, ha tetszett :)

Üdvözöllek az arduinolab.blog.hu-n!

Ez a blog azért jött létre, hogy arduino projekteket osszak meg veletek.

Nem teljesen az alapoktól indulok, mivel azokat már máshol egyszer leírták. Inkább a gyakorlati alkalmazási lehetőségeket szeretném bemutatni, illetve olyan egyedi problémák megoldásait, amikkel eddig találkoztam. Az első bejegyzésem rögtön egy arduino-android bluetoth párosítás lesz saját készítésű android programmal. Nem is olyan bonyolult, mint elsőre gondolnátok!

süti beállítások módosítása