egy mobil robot építésének története

Robotkocsi

Robotkocsi

Programozzunk Bluetooth vezérlést!

2017. szeptember 18. - dralisz82

Térjünk vissza kicsit a Freedom boardhoz és az ARM mbed környezetéhez.

Az mbed környezet azzal teszi roppant egyszerűvé a beágyazott rerndszerek programozását, hogy rengeteg előre megírt C++ osztályt kínál, melyek segítségével absztrakt módon kezelhetünk perifériákat, szolgáltatásokat, de olyan komoly alrendszereket is kínál, mint egy beágyazott operációs rendszer (RTOS), vagy a teljes körű network stack az Ethernet réteg kezelésével és TCP/IP stack-kel.

Például egy aszinkron soros kommunikációs perifériának nem kell ismernünk a regisztereit, nem kell tudnuk, hogy a státusz regiszterben melyik bit jelzi, ha megszakítás történt, hanem csak létre kell hoznunk az objektumot, paraméterként megadva, hogy mely lábakhoz szeretnénk rendelni az RX és TX vonalat, majd jól dokumentált függvényekkel könnyen állíthatunk baudrate-et, írhatunk be, olvashatunk ki adatot:

#include "mbed.h"

Serial BT(PTC15, PTC14); // a Bluetooth modulhoz tartozó kivezetések nevei

// megszakításkezelő rutin
void gotChar() {

  char c = BT.getc();
  // ...
  // dolgozzuk fel a fogadott karaktert
  // ...
}

int main() {
  BT.baud(9600);
  BT.printf("Hello World!\n");
  BT.attach(&gotChar);
  // ...

A fenti példában létrehoztunk egy BT nevű példányt a Serial osztályból. Mivel az mbed környezet ismeri a platformunkat, elég néven nevezni a kivezetéseket, nem szükséges ismernünk azok fizikai címeit.
Ahogyan a megszakításvezérlő alrendszer működését sem kell részleteiben ismernünk, elég egy megszakításkezelő függvényt írni, majd függvénypointerként átadni annak címét a Serial osztálynak az attach() függvényhívással.

Én személy szerint jobban szeretem, ha a lehető legmélyebben belelátok valaminek a működésébe. Ha regiszterek szintjén dolgozom, magamnál érzem az irányítást. Viszont be kell látni, hogy ha a produktivitást tartjuk szem előtt, az mbed-hez hasonló környezetek töredékére csökkentik a fejlesztési időt, könnyen portolható kód írását teszik lehetővé (már, ha a cél platformot is támogatja a környezet), láthatóan jól működnek, azaz egyértelműen ez a követendő út.

Az mbed.h mögött rejtőző könyvtár tehát rengeteg feladatot levesz a vállunkról. A rendszerben ráadásul további könyvtárakat is találunk, többek között olyanokat, melyeket más felhasználók hoztak létre közösen, és osztottak meg a többiekkel. Így a hivatalos mbed-rtos és Network Sockets könyvtárakon kívül használhatunk például közösségi fejlesztésű MQTT protokoll implementációt. Ezeket ráadásul egy kattintással importálhatjuk a saját fejlesztői környezetünkbe, ahogyan a saját projektjeinket is egy kattintással publikálhatjuk.

Itt van például a teljes példaprogram, amiből a fenti részletet kimásoltam.
A program egy karakteres parancsokat vár, és amennyiben a kapott karakter r, g vagy b, onnantól a Freedom boardon lévő RGB LED-et a kívánt színnel villogtatja tovább. A LED villogtatását a főprogram végzi, a parancsok értelmezése pedig a Bluetooth modulhoz csatlakoztatott UART megszakításkezelő függvényében történik.

A működtetéshez már csak egy Bluetooth soros terminálra van szükség, mely bármilyen BT képes eszközön futhat. Én praktikusan a telefonomra kerestem egy ilyen programot. Android platformra több lehetőségünk is van, nekem a "BlueTooth Serial Controller" nevű app vált be, ami nem csak egyszerű terminálként működik, de parancs gombokat is definiálhatunk, melyek megnyomásakor, felengedésekor előre beállított karaktersorozatot küld ki a soros portra.

A Red, Green és Blue gombokat érintve a program az r, g és b parancsokat küldi a Freedom boardra:

bluetooth_serial_controller_1.png

A testre szabott felhasználói felületet exportálhatjuk, importálhatjuk, így gyorsan válthatunk több profil között, sőt más eszközre is átvihetjük a profiljainkat.

Ezt a programot tevezem használni az autó telefonos távirányításához is:

bluetooth_serial_controller_2.png

A bejegyzés trackback címe:

https://robotkocsi.blog.hu/api/trackback/id/tr7612868130

Kommentek:

A hozzászólások a vonatkozó jogszabályok  értelmében felhasználói tartalomnak minősülnek, értük a szolgáltatás technikai  üzemeltetője semmilyen felelősséget nem vállal, azokat nem ellenőrzi. Kifogás esetén forduljon a blog szerkesztőjéhez. Részletek a  Felhasználási feltételekben és az adatvédelmi tájékoztatóban.

Nincsenek hozzászólások.
süti beállítások módosítása