IoT | 26. 9. 2016

Využití bezdrátové technologie Bluetooth Low Energy pro ovládání robotického auta

Nejnovější technologie Bluetooth 4.2 Low Energy (BLE), rovněž nazývaná jako Bluetooth Smart, byla vytvořena pro Internet věcí (IoT). Nativní podpora technologie Bluetooth v každém významném operačním systému umožňuje snadný vývoj mobilních aplikací.

Pomocí prostředí pro vývoj aplikací PSoC Creator 3.2, Xcode 6 a Swift může být vyvinuta aplikace pro řízení obyčejného auta na dálkové ovládání prostřednictvím telefonu iPhone, jako demonstrace využití profilů GATT a periferních zařízení GAP v integrovaném vývojovém systému BLE. Auto sestává ze dvou motorů a H-můstku s kvadratickými kodéry a zařízení PSoC4200 BLE od společnosti Cypress Semiconductor.

Obrázek 1: Zařízení PSoC4200 od společnosti Cypress Semiconductor lze využít pro ovládání robotického auta pomocí technologie Bluetooth Low Energy 4.2

Projekt zahájíte s obyčejnou kontrolkou LED a ovladačem touchpad pro indikaci stavu připojení. Výchozí slider CAPSense slouží k ovládání červené kontrolky LED, s modrou kontrolkou LED pro stav, kdy je deska odpojena.

Při vytváření nového projektu pro zařízení PSoC4100 BLE se součásti přidávají do jednoduchého uspořádání. Součást BLE přidejte do grafického vývojového nástroje a propojte se součástí CapSense. Pro aktivaci kontrolek LED je zapotřebí modulace PWM (Pulse-Width Modulation – Pulzně šířková modulace), a jelikož modrá kontrolka LED svítí ve stavu low, modulaci PWM je třeba invertovat – z knihovny proto použijte hradlo NOT.

Konfiguraci modulace PWM je třeba nastavit jako jediný výstup a je vyžadována součást časovač z knihovny. Časovač pro blikající kontrolku LED nakonfigurujte na 1 kHz. Reset připojte k logic low (jelikož svítí ve stavu high). Změnou názvu modulace PWM usnadníte vzájemnou identifikaci. Do projektu přidejte lineární slider pro řízení pěti senzorů na evaluační desce.

Konfigurace součásti BLE v uspořádání vyžaduje vlastní profil; deska slouží jako server GATT s periferním zařízením GAP (Generic Access profile). iPhone slouží jako centrála GAP komunikující s deskou jakožto periferní zařízení GAP pro uskutečnění připojení. Server GATT představuje databázi na součásti BLE, která uchovává informace sdílené s telefonem iPhone jakožto klientem GATT.

Přizpůsobení profilů v zásadě představuje vytvoření databáze GATT, vytvoření vlastní služby pro indikátor LED a součást CapSense, a přidělení UUID (Universally Unique ID – Univerzálně jedinečného identifikátoru) těmto součástem, aby mohl iPhone tuto službu vyhledat. Tím umožníte firmwaru komunikovat s touto službou. 1bytová charakteristika indikátoru LED znázorňuje stav kontrolky LED, jež může být zapisován a čten na dálku, tudíž je třeba aktivovat příznaky čtení i zápisu. Charakteristika součásti CapSense (v nepodepsaném, 16bitovém/2bytovém formátu) je určena pouze pro čtení na dálku, nikoli zápis. Pro účely zasílání upozornění v případě změn se aktivuje příznak upozornění. V této fázi lze přidat vlastní upozornění srozumitelná pro člověka.

Každá z charakteristik vyžaduje 128bitový identifikátor UUID, a nástroj Creator mu přidělí výchozí hodnotu, kterou lze modifikovat po nejméně významný bit.

Nastavení GAP zahrnuje název zařízení a nastavení ohlašování. V tomto příkladě ohlašování probíhá neustále vypnutím časového limitu. Ohlašovací paket vysílaný každých 20 až 30 ms obsahuje informace pomáhající identifikovat zařízení, například název zařízení a službu, kterou disponuje.

Po dokončení nastavení součástí BLE, CapSense, PWM a LED je třeba nastavit piny. První pin, který je nutné nastavit, je modulační kondenzátor pro součást CapSense u portu 4, pin 0. Slider součásti CapSense poté připojte k pinům P21 až P25 na desce. Modrou kontrolku LED připojte k portu 3, pinu 7, a červenou kontrolku LED k portu 2, pinu 6. Nástroj poté automaticky vygeneruje aplikaci připravenou pro firmware.

Firmware

Použitím Xcode pro implementaci firmwaru do projektu Github bude první proměnnou nepodepsaná globální proměnná, která znázorňuje stav kontrolky LED, a druhou bude upozornění součásti CapSense.

Funkce update_LED doplní do databáze GATT aktuální stav kontrolky LED. Pokud je součást BLE připojena (pomocí funkce GetState), pak CYBLE_LEDCAPSENSE_LED_CHAR_ HANDLE načte hodnotu pinu a invertuje ji, jelikož kontrolka LED svítí ve stavu low. 1bytová hodnota se zapíše do databáze pomocí funkce GATT WriteAttribute. Tato funkce může být vyvolána kdekoli ve zdrojovém kódu za účelem načtení stavu kontrolky LED.

Další funkce vyvolá stejnou akci pro součást CapSense. Ta využívá CYBLE_LEDCAPSENSE_CAPSESNE_CHAR_ HANDLE a zapíše 2bytovou hodnotu do databáze GATT. Tato funkce rovněž využívá funkci upozornění v součásti BLE, takže když se proměnná CapSenseNotify změní, je automaticky odesláno upozornění.

Další funkcí je ovladač událostí součásti BLE. Ten řídí všechny události pocházející od součásti BLE, například aktivaci zásobníku nebo odpojení. Ovladač využívá modrou kontrolku LED pro zobrazení, zda probíhá připojování či odpojování, a tato volání spustí modulaci PWM a doplní do databáze GATT stav kontrolky LED a hodnotu CapSense. Toto je řízeno automaticky firmwarem zásobníku.

Další událostí je zápis, který je vyvolán, když chce vzdálená strana zapisovat do databáze GATT. V tomto případě poskytne zásobník charakteristiku, kterou je třeba zapsat. Toto vše lze poté kompilovat pomocí Xcode pro zařízení.

Robot

Sestavení samotného auta je relativně jednoduché – dva motory jsou připojeny k H-můstku, který je přidělen k přilehlým pinům na desce. Spínače na zařízení se zobrazí v aplikaci, a rychlost každého motoru lze regulovat z aplikace, a auto tak řídit.

Obrázek 2: Deska robotického auta sdružuje chip BLE se dvěma koly a H -můstkem

Základem jsou čtyři klíčové charakteristiky – otáčkoměr pro levý a pravý motor využívající kvadratický kodér, a dva modulátory PWM pro pohon obou motorů. Na telefonu iPhone jsou k dispozici dva spínače pro rychlé přepnutí charakteristik na nulu.

Uspořádání obsahuje podobné prvky u výchozího projektu kontrolek LED. Modulace PWM je jednoduchá s periodou 100, komparací 50 a střídou 100 za účelem rozdělení škály 0 až 100 na telefonu iPhone. Kvadratický kodér využívá součást TCPWM, která dokáže dekódovat kvadratické signály jednotlivých levých i pravých pulzů v režimu 1X, a tudíž načítá spíše pulzy než počáteční a koncové hranice.

Piny PSoC postačí pro přímé napájení H-můstku, a další pin představuje softwarově řízený spínač pro ovládání směru motoru prostřednictvím softwaru. Jako poslední zbývá modulace PWM pro připojení kontrolky LED. Kvadratické kodéry čítají 64 pulzů na otáčku, a každých 187 ms se aktivuje přerušení za účelem zjištění, kolik proběhlo pulzů, a přepočtem se získá výsledný počet otáček za minutu.

Vlastní profil MOTOR_SERVICE obsahuje čtyři charakteristiky jako 8bitová celá čísla určená pro zápis i čtení, v rozmezí −100 až +100 pro rychlost levého a pravého motoru. Zahrnuta je i forma a upozornění srozumitelná pro člověka. Tyto údaje se doplní do databáze GATT a odešle se upozornění. BLE je periferní zařízení s názvem robota a identifikátorem UUID služby motoru. Proces připojení se tím zjednoduší.

Firmware bude vygenerován z nástroje s příznaky upozornění, hodnotami otáčkoměru levého a pravého motoru, a rychlostmi levého a pravého motoru. Při každém stisknutí tlačítka na desce za účelem vypnutí motorů se aktivuje ISR, a rychlosti se uloží do databáze GATT.

Další fází je propojení firmwaru s aplikací chytrého telefonu.

Vytvoření aplikace

Při vytváření aplikace iOS ve Swift jsou k dispozici dva řadiče zobrazení popsané v Cypress Academy. Prvním je řadič zobrazení tabulky, který zobrazí všechna zařízení viditelná telefonem. Pokud je spuštěna tato kategorie, budou přenášena všechna zařízení odpovídající zachyceným službám. V tomto případě je k dispozici pouze jedno auto na dálkové ovládání, proto se v tabulce vyskytuje pouze jedno zařízení. Tímto způsobem lze však ovládat celou řadu periferních zařízení.

Druhým řadičem zobrazení je dálkový ovladač samotný. Ten využívá dvě označení pro levý a pravý otáčkoměr a dva spínače pro úplné zastavení levého a pravého motoru. Existuje také zobrazení voliče v rozmezí −100 až +100 pro levý a pravý motor.

Model obsahuje tři kategorie:

  • RCcar.swift, která sleduje připojení a rychlost levého a pravého motoru,
  • kategorie BT.neighborhood, která sleduje zařízení,
  • kategorie připojení BLE ovládá připojení – RC objekt tak bude mít ohraničení, ke kterému je přiřazeno, a připojení. Kategorie registruje fakt, že se podílí na změnách, a nastaví volič na oba slidery.

A jako poslední událost dojde při změně stavu otáčkoměru k úpravě textových hodnot vlevo a vpravo na obrazovce. Před stiskem tlačítka zpět a ukončením zobrazení je třeba zařízení a připojení deaktivovat. Toto vše je ve Swift propojeno s firmwarem prostřednictvím rozhraní Application Programming Interface (API).

Závěr

Kombinace nejnovější technologie Bluetooth Low Energy 4.2 se zařízením PSoC 4100 s obyčejným H-můstkem, motory a kodéry umožňuje snadný vývoj jednoduchých aplikací pro iPhone. Pomocí nejnovějších verzí vývojových nástrojů PSoC Creator, Xcode a Swift mohou vývojáři vytvářet uspořádání, firmware a aplikace pro roboty.

www.digikey.com

Autor:
Rich Miron, Technical Content Engineer