Obsah:

Zostavte prenosný sledovač pohybu (BLE od Arduina po vlastnú aplikáciu Android Studio): 4 kroky
Zostavte prenosný sledovač pohybu (BLE od Arduina po vlastnú aplikáciu Android Studio): 4 kroky

Video: Zostavte prenosný sledovač pohybu (BLE od Arduina po vlastnú aplikáciu Android Studio): 4 kroky

Video: Zostavte prenosný sledovač pohybu (BLE od Arduina po vlastnú aplikáciu Android Studio): 4 kroky
Video: Объяснение прошивки Marlin 2.0.x 2024, November
Anonim
Zostavte prenosný sledovač pohybu (BLE od Arduina po vlastnú aplikáciu Android Studio)
Zostavte prenosný sledovač pohybu (BLE od Arduina po vlastnú aplikáciu Android Studio)

Bluetooth Low Energy (BLE) je forma nízkoenergetickej komunikácie Bluetooth. Nositeľné zariadenia, ako napríklad inteligentné odevy, ktoré navrhujem v Predictive Wear, musia obmedzovať spotrebu energie, aby sa predĺžila životnosť batérie, a to kdekoľvek je to možné, a často využívať BLE. Skupina Bluetooth Special Interest Group (SIG) definuje niekoľko špecifikácií, ktoré by malo zariadenie implementovať na interakciu so zariadením Bluetooth, ktoré nazýva „profily“. Väčšina profilov aplikácií používa na odosielanie údajov prostredníctvom odkazu BLE profil General Attribute (GATT). V BLE existujú tri základné pojmy: profily, služby a atribúty.

Bluetooth SIG štandardizoval mnoho bežných profilov, služieb a atribútov. Pri vytváraní vlastného hardvéru je však často potrebné vytvárať vlastné služby a atribúty a nie je k dispozícii veľa návodov. Aby to bolo ešte ťažšie, Adafruit neposkytuje žiadne návody na navrhovanie mobilných aplikácií na párovanie s ich modulmi BLE a zdrojový kód pre ich aplikácie je ťažké spätne analyzovať.

Cieľom tohto tutoriálu je vysvetliť:

  1. Ako navrhnúť vlastné služby a charakteristiky GATT
  2. Ako naprogramovať priateľa Adafruit Bluefruit LE SPI tak, aby pôsobil ako server GATT pre tieto vlastné služby a vlastnosti
  3. Ako naprogramovať zariadenie Android tak, aby slúžilo ako klient GATT na čítanie údajov zo servera GATT

Tento tutoriál nie je určený na preloženie do aplikácie pripravenej na produkciu - toto je len úvod do BLE.

Čítanie na pozadí:

  • Dokumentácia priateľa Adafruit Bluefruit LE SPI
  • Ak nepoznáte GATT alebo BLE

Zásoby

  • 1x - Zariadenie Arduino (na tento tutoriál používam UNO)
  • 1x - Adafruit Bluefruit LE SPI Priateľ
  • 8x - prepojovacie vodiče medzi mužom a mužom
  • Základné spájkovacie zariadenie (na spájkovanie kolíkov záhlavia na zariadení SPI Friend)
  • Počítač (na programovanie zariadenia Arduino a zariadenia Android)

Krok 1: Navrhnite vlastné služby a charakteristiky

ÚVOD

Tento článok robí skvelú prácu, keď vysvetľuje, ako navrhnúť vlastné služby a vlastnosti. Vrelo odporúčam prečítať si tento článok. Ďalej uvádzam veľmi jednoduchý prehľad, ktorý zanedbáva jemnosti v prospech jednoduchosti.

Služby GATT sú súborom vlastností.

Charakteristiky GATT obsahujú vlastnosť, hodnotu a nula alebo viac deskriptorov.

  • Vlastníctvo: ako by mal s údajmi zaobchádzať klient (aplikácia pre Android), napr. čítať, písať, písať bez reakcie, upozorňovať a naznačovať.
  • Hodnota: skutočná hodnota charakteristiky, napr. 1089
  • Deskriptory: toto sú informácie o hodnote napr. jednotka, milisekundy

DIZAJN

Dobre, teraz viete, aké sú služby a charakteristiky, musíme zistiť, ako navrhnúť niektoré služby a vlastnosti, aby sme získali naše vlastné údaje a odoslali ich z nášho servera GATT (Arduino) klientovi (aplikácia pre Android). Uvažujme o zariadení Arduino, ktoré zhromažďuje údaje z modulu akcelerometra-gyroskopu (AGM). Chceme zbierať gyroskopy a merania zrýchlenia z troch priestorových osí a čas, kedy boli tieto merania vykonané, a odoslať tieto údaje do našej mobilnej aplikácie. Chceme tiež vedieť, kedy potrebujeme zariadenie nabiť, a preto chceme prečítať stav batérie a preniesť to do našej mobilnej aplikácie.

1. Môžeme použiť niektoré zo štandardných služieb a charakteristík?

Bluetooth SIG štandardizoval mnoho bežných služieb a charakteristík. Najprv ich skontrolujte a zistite, či sa môžete rozhodnúť pre niektoré zo štandardizovaných služieb a charakteristík. Štandardné služby a charakteristiky môžu využívať oveľa menšie dátové pakety, pretože univerzálne jedinečný identifikátor (UUID) je 16 bitov, zatiaľ čo vlastné služby a charakteristiky musia pre svoje UUID využívať 128 bitov. Viac o UUID neskôr. Z nášho vyhľadávania sme našli štandardizovanú „službu batérií“, ktorá obsahuje jednu charakteristickú „úroveň batérie“.

2. Rozdeľte všetky hodnoty údajov, ktoré chcete odoslať cez BLE, na charakteristiky a služby

Naše vlastné údajové body môžeme v rámci jednej vlastnej služby rozdeliť na sedem vlastných charakteristík. Túto službu budeme nazývať „služba AGM“. Bude obsahovať 7 charakteristík: zrýchlenie x, zrýchlenie y, zrýchlenie z, x-gyroskop, y-gyroskop, z-gyroskop a časová referencia.

3. Určte vlastnosti potrebné pre každú charakteristiku

Charakteristiky môžu mať niekoľko vlastností.

  1. Prečítajte si: Klient (aplikácia pre Android) môže načítať hodnotu zo servera GATT (Arduino)
  2. Napíšte: Klient môže zmeniť hodnotu zo servera GATT
  3. Uveďte: Klient bude upozornený, ak sa zmení hodnota zo servera GATT a očakáva sa, že klient pošle potvrdenie na server GATT
  4. Upozorniť: Klient bude upozornený, ak sa zmení hodnota zo servera GATT a neočakáva sa, že klient pošle potvrdenie na server GATT

V tomto tutoriáli nastavíme všetky naše charakteristiky na čítanie, s výnimkou úrovne batérie, ktorá bude mať vlastnosti oznamovania aj čítania.

4. Vygenerujte UUID pre vlastné služby a vlastnosti a nájdite štandardné UUID

Ako som už stručne spomenul, štandardizované služby a vlastnosti Bluetooth SIG používajú 16 -bitový UUID, zatiaľ čo vlastné služby a vlastnosti používajú 128 -bitové UUID. Napríklad si pozrite číslo priradené službe batérií na Bluetooth SIG. Priradené číslo 0x180F predstavuje 128-bitový UUID „0000180F-0000-1000-8000-00805F9B34FB“. Štyri číslice (16 bitov) tučným písmom sú jedinečné pre konkrétnu štandardizovanú službu alebo charakteristiku, zatiaľ čo ostatné znaky sú zachované medzi všetkými štandardizovanými službami a charakteristikami. Pretože klient aj server GATT vedia, že štandardizované služby a charakteristiky sa líšia iba tučnými číslicami, veľkosti paketov údajov je možné výrazne znížiť. Vlastné služby a vlastnosti však nemôžu fungovať za rovnakého predpokladu.

Namiesto toho musia vlastné služby a vlastnosti využívať neskrátené 128 -bitové UUID. Tu je online generátor UUID. Akýkoľvek UUID iný ako štandardizovaný UUID je prijateľný pre vlastný UUID. Typickým zvykom pomenovania je však označenie vlastnej služby 00000001-… a charakteristík v rámci tejto vlastnej služby 00000002-…

Tu je súhrnná tabuľka služieb a charakteristík, ktoré budeme implementovať spolu s ich UUID

Krok 2: Arduino kód

AKTUALIZUJTE PRIATEĽA BLUEFRUIT LE SPI

Najprv zapojte Adafruit Bluefruit LE SPI Friend podľa pokynov v ich sprievodcovi pripojením a zapnite zariadenie Arduino. Uistite sa, že pri vyhľadávaní zariadení Bluetooth nájdete priateľa Adafruit Bluefruit LE SPI na svojom zariadení s Androidom. Stiahnite si aplikáciu Bluefruit Connect, pripojte sa k priateľovi Adafruit Bluefruit LE SPI a umožnite jej aktualizovať firmvér v zariadení. Tento krok je dôležitý. Ak neaktualizujete firmvér, príkazy, ktoré zadávate zariadeniu prostredníctvom Arduina, pravdepodobne zlyhajú a nebude zrejmé, že by ste zistili, v čom je problém.

Tu je moje repo k tomuto projektu. Tu si môžete pozrieť úplný kód Arduino.

PREHĽAD

Niekoľko dôležitých vecí, ktoré je potrebné poznamenať:

  1. V metóde setup () musia všetky vlastné UUID obsahovať „-“medzi každým dvoma znakmi. Fungovať bude napríklad „AT+GATTADDCHAR = UUID128 = 00-00-00-05-62-7E-47-E5-A3-FC-DD-AB-D9-7A-A9-66“. „AT+GATTADDCHAR = UUID128 = 00000005-627E-47E5-A3fCDDABD97AA966“nebude fungovať.
  2. Všimnite si toho v metóde setup (), „battery.begin (true);“volá „ble.reset ();“automaticky. Ak nepoužívate batériovú službu ako ja, musíte resetovať ble modul (použite "ble.reset ();"), kde mám príkaz "battery.begin (true);".
  3. V metóde setup () zmeňte „if (! Ble.begin (false))“na „if (! Ble.begin (true))“, ak chcete ladiť.

Tento kód je celkom jasný. Zahrnul som popisy každej vlastnej metódy. Metóda nastavenia pripraví modul BLE, aby fungoval ako server GATT. Metóda slučky prechádza falošným pohybom modulu gyroskopu akcelerometra (AGM) a pre tieto hodnoty generuje náhodné číslo od 1 do 100. Batéria je vybitá o 1%, aby sa simulovalo používanie batérie. Tento kód môžete ľahko nahradiť skutočnými hodnotami senzora. Tento kód predpokladá, že budete prenášať rad údajov AGM, dlhých 6 meraní, a nie jediné meranie, pretože analýza okna údajov AGM je pravdepodobne užitočnejšia než jeden bod údajov. Ak zmeníte veľkosť poľa, upozorňujeme, že v kóde Android Studio budú potrebné zmeny. Ak chcete zachytiť množstvo údajov, musíte spolu s údajmi, ktoré chcete odoslať, prejsť počítadlom. Toto počítadlo vám umožňuje v aplikácii Android studio zistiť, kde sa nachádzate, takže môžete počkať, kým si v okne vypočujete chýbajúce dátové body. Bez počítadla alebo s poľom inej veľkosti bude projektu Android Studio buď chýbať dátové body, alebo sa zasekne v slučke a čaká na zostávajúce údajové body, ktoré očakáva.

Krok 3: Kód Android Studio

Tu je moje repo pre tento projekt. Tu si môžete pozrieť úplný kód Android Studio.

PREHĽAD

Budem to naďalej aktualizovať s dôkladnejším prehľadom toho, ako kód arduino a android detailne funguje … Aplikácia je plne funkčná, takže si medzitým môžete kód pozrieť sami.

Krok 4: Konečná aplikácia

Konečná aplikácia
Konečná aplikácia
Konečná aplikácia
Konečná aplikácia
Konečná aplikácia
Konečná aplikácia

Gratulujem Vaša aplikácia sa stiahne do telefónu a vaše prenosné zariadenie sa nabije a prenáša údaje.

SPUSTIŤ APLIKÁCIU

Ak chcete začať, kliknite na ikonu spúšťača pre aplikáciu.

UDELENIE POVOLENÍ

Na správnu funkciu aplikácie budete musieť schváliť používanie niektorých povolení.

SKENOVAŤ ZARIADENIA

Potom kliknite na tlačidlo „Skenovať“v ľavom hornom rohu aplikácie.

VYBERTE SI nositeľné zariadenie

Ďalej vyberte svoje nositeľné zariadenie zo zoznamu dostupných zariadení BLE. Jeho názov je „BLE Arduino Hardware“. ZÍSKAJTE DATAWait, kým aplikácia získa údaje AGM a určí, kde sa používateľ stále nachádza alebo sa pohybuje. POZRITE SI VÝSLEDKY Pozrite sa na výsledky na obrazovke! Kliknutím na tlačidlo synchronizácie získate ďalšie čítanie údajov.

Odporúča: