Obsah:
- Zásoby
- Krok 1: Navrhnite vlastné služby a charakteristiky
- Krok 2: Arduino kód
- Krok 3: Kód Android Studio
- Krok 4: Konečná aplikácia
Video: Zostavte prenosný sledovač pohybu (BLE od Arduina po vlastnú aplikáciu Android Studio): 4 kroky
2024 Autor: John Day | [email protected]. Naposledy zmenené: 2024-01-30 11:55
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ť:
- Ako navrhnúť vlastné služby a charakteristiky GATT
- Ako naprogramovať priateľa Adafruit Bluefruit LE SPI tak, aby pôsobil ako server GATT pre tieto vlastné služby a vlastnosti
- 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í.
- Prečítajte si: Klient (aplikácia pre Android) môže načítať hodnotu zo servera GATT (Arduino)
- Napíšte: Klient môže zmeniť hodnotu zo servera GATT
- 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
- 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ť:
- 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ť.
- 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);".
- 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
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:
Stolový sledovač COVID19 s hodinami! Sledovač poháňaný Raspberry Pi: 6 krokov
Stolový sledovač COVID19 s hodinami! Raspberry Pi Powered Tracker: Vieme, že môžeme zomrieť kedykoľvek, dokonca aj ja môžem zomrieť pri písaní tohto príspevku, koniec koncov ja, ja, všetci sme smrteľníci. Celý svet sa otriasol kvôli pandémii COVID19. Vieme, ako tomu zabrániť, ale hej! vieme, ako sa modliť a prečo sa modliť, robíme
Zostavte si vlastnú anténu BiQuad 4G s testom rýchlosti: 7 krokov (s obrázkami)
Zostavte si svoju vlastnú anténu BiQuad 4G s testom rýchlosti: V tomto návode vám ukážem, ako som vyrobil anténu BiQuad 4G. Príjem signálu je v mojom dome zlý kvôli horám okolo môjho domova. Signálna veža je od domu vzdialená 4,5 km. V okrese Colombo môj poskytovateľ služieb dáva rýchlosť 20 Mb / s. ale pri m
Zostavte si vlastnú prenosnú stolnú lampu COB LED!: 16 krokov (s obrázkami)
Zostavte si vlastnú prenosnú stolnú lampu COB LED!: Vitajte! V tomto návode vás naučím, ako vytvoriť nádherne vyzerajúcu, veľmi výkonnú a hlavne prenosnú stolnú lampu! Disclaimer: Tento projekt nie je sponzorovaný žiadnou značkou. Vlastnosti: • Moderný a elegantný dizajn • Prenosný a
Ako vytvoriť aplikáciu pre Android v aplikácii Android Studio: 8 krokov (s obrázkami)
Ako vytvoriť aplikáciu pre Android pomocou Android Studio: Tento tutoriál vás naučí základy vytvárania aplikácie pre Android pomocou vývojového prostredia Android Studio. Keďže zariadenia s Androidom sú stále bežnejšie, dopyt po nových aplikáciách sa bude len zvyšovať. Android Studio sa ľahko používa (
Zostavte si vlastnú LED ružovú kyticu: 4 kroky (s obrázkami)
Zostavte si vlastnú LED ružovú kyticu: Pokyny na zostavenie vlastnej kytice LED ruží vrátane toho, kde nájdete všetky potrebné diely. Najlepšie na nich je, že môžete ľahko odstrániť kvety z LED diód, aby ste ich uložili, keď skončíte, alebo ľahko vymeniť kvet