Obsah:

Vytvořte nositelný sledovač pohybu (BLE od Arduina po vlastní aplikaci Android Studio): 4 kroky
Vytvořte nositelný sledovač pohybu (BLE od Arduina po vlastní aplikaci Android Studio): 4 kroky

Video: Vytvořte nositelný sledovač pohybu (BLE od Arduina po vlastní aplikaci Android Studio): 4 kroky

Video: Vytvořte nositelný sledovač pohybu (BLE od Arduina po vlastní aplikaci Android Studio): 4 kroky
Video: Woneligo ID208 BT Smartwatch Review: The Complete Guide! 2024, Červenec
Anonim
Sestavte si Wearable Motion Tracker (BLE od Arduina po vlastní aplikaci Android Studio)
Sestavte si Wearable Motion Tracker (BLE od Arduina po vlastní aplikaci Android Studio)

Bluetooth Low Energy (BLE) je forma komunikace Bluetooth s nízkým výkonem. Nositelná zařízení, jako jsou inteligentní oděvy, které navrhuji v Predictive Wear, musí omezit spotřebu energie, aby prodloužila životnost baterie, a často využívají BLE. Bluetooth Special Interest Group (SIG) definuje několik specifikací, které by zařízení mělo implementovat pro interakci se zařízením Bluetooth, které nazývají „profily“. Většina profilů aplikací používá k odesílání dat přes odkaz BLE profil GATT (General Attribute Profile). V BLE existují tři základní koncepty: profily, služby a atributy.

Bluetooth SIG standardizoval mnoho běžných profilů, služeb a atributů. Při vytváření vlastního hardwaru je však často potřeba vytvořit vlastní služby a atributy a není k dispozici mnoho návodů. Aby to bylo složitější, Adafruit neposkytuje žádné pokyny k navrhování mobilních aplikací pro spárování s jejich moduly BLE a zdrojový kód pro jejich aplikace je obtížné zpětně analyzovat.

Tento tutoriál si klade za cíl vysvětlit:

  1. Jak navrhnout vlastní služby a charakteristiky GATT
  2. Jak naprogramovat Adafruit Bluefruit LE SPI Friend tak, aby fungoval jako server GATT pro tyto vlastní služby a vlastnosti
  3. Jak naprogramovat zařízení Android tak, aby fungovalo jako klient GATT pro čtení dat ze serveru GATT

Tento tutoriál není určen k tomu, aby jej bylo možné přeložit do aplikace připravené na produkci - toto je jen úvod do BLE.

Čtení na pozadí:

  • Dokumentace Adafruit Bluefruit LE SPI Friend
  • Pokud nejste obeznámeni s GATT nebo BLE

Zásoby

  • 1x - Zařízení Arduino (pro tento tutoriál používám UNO)
  • 1x - Adafruit Bluefruit LE SPI Friend
  • 8x - propojovací vodiče mezi muži a muži
  • Základní pájecí zařízení (k pájení kolíkových konektorů na SPI Friend)
  • Počítač (k programování zařízení Arduino a zařízení Android)

Krok 1: Navrhněte vlastní služby a vlastnosti

ÚVOD

Tento článek odvádí skvělou práci, když vysvětluje, jak navrhnout vlastní služby a vlastnosti. Vřele doporučuji přečíst si tento článek. Níže poskytuji velmi jednoduchý přehled, který zanedbává jemnosti ve prospěch jednoduchosti.

Služby GATT jsou souborem charakteristik.

Charakteristiky GATT obsahují vlastnost, hodnotu a nula nebo více deskriptorů.

  • Vlastnost: jak by s daty měl zacházet klient (aplikace pro Android), např. číst, psát, psát bez reakce, upozorňovat a ukazovat.
  • Hodnota: skutečná hodnota charakteristiky, např. 1089
  • Deskriptory: toto jsou informace o hodnotě, např. jednotka, milisekundy

DESIGN

Dobře, teď víte, jaké jsou služby a charakteristiky, musíme zjistit, jak navrhnout některé služby a vlastnosti, abychom získali vlastní data a odeslali je z našeho serveru GATT (Arduino) klientovi (aplikace pro Android). Uvažujme zařízení Arduino, které shromažďuje data z modulu akcelerometru a gyroskopu (AGM). Chceme shromáždit měření gyroskopu a zrychlení ze tří prostorových os a času, kdy byla tato měření provedena, a odeslat tato data do naší mobilní aplikace. Chceme také vědět, kdy potřebujeme zařízení nabít, takže chceme přečíst stav baterie a přenést to do naší mobilní aplikace.

1. Můžeme použít některou ze standardních služeb a vlastností?

Bluetooth SIG standardizoval mnoho běžných služeb a vlastností. Nejprve je zkontrolujte a zjistěte, zda můžete kooptovat některou ze standardizovaných služeb a vlastností. Standardní služby a charakteristiky mohou využívat mnohem menší datové pakety, protože univerzálně jedinečný identifikátor (UUID) má 16 bitů, zatímco vlastní služby a charakteristiky musí pro své UUID využívat 128 bitů. Více o UUID později. Z našeho hledání jsme našli standardizovanou „bateriovou službu“, která obsahuje jednu charakteristickou „úroveň baterie“.

2. Oddělte všechny datové hodnoty, které chcete odeslat přes BLE, do charakteristik a služeb

Můžeme rozdělit naše vlastní datové body do sedmi vlastních charakteristik v rámci jedné vlastní služby. Tuto službu budeme nazývat „služba AGM“. Bude obsahovat 7 charakteristik: x-akcelerace, y-akcelerace, z-akcelerace, x-gyroskop, y-gyroskop, z-gyroskop a časová reference.

3. Určete vlastnosti potřebné pro každou charakteristiku

Charakteristiky mohou mít několik vlastností.

  1. Číst: Klient (aplikace pro Android) může číst hodnotu ze serveru GATT (Arduino)
  2. Zápis: Klient může změnit hodnotu ze serveru GATT
  3. Uveďte: Klient bude informován, pokud se změní hodnota ze serveru GATT a očekává se, že klient odešle potvrzení na server GATT
  4. Upozornit: Klient bude upozorněn, pokud se změní hodnota ze serveru GATT a neočekává se, že klient odešle potvrzení na server GATT

V tomto tutoriálu nastavíme všechny naše vlastnosti ke čtení, s výjimkou úrovně baterie, která bude mít vlastnosti oznámení i čtení.

4. Vygenerujte UUID pro vlastní služby a vlastnosti a najděte standardní UUID

Jak jsem stručně zmínil dříve, standardizované služby a vlastnosti Bluetooth SIG využívají 16bitový UUID, zatímco vlastní služby a vlastnosti využívají 128bitové UUID. Viz například číslo přiřazené bateriové službě na Bluetooth SIG. Přiřazené číslo 0x180F představuje 128bitový UUID „0000180F-0000-1000-8000-00805F9B34FB“. Čtyři číslice (16 bitů) tučně jsou jedinečné pro konkrétní standardizovanou službu nebo charakteristiku, zatímco ostatní znaky jsou zachovány mezi všemi standardizovanými službami a charakteristikami. Jelikož klient i server GATT vědí, že standardizované služby a charakteristiky se liší pouze tučnými číslicemi, lze velikost paketů dat podstatně snížit. Vlastní služby a vlastnosti však nemohou fungovat za stejného předpokladu.

Místo toho musí vlastní služby a vlastnosti využívat nezkrácené 128bitové UUID. Zde je online generátor UUID. Jakýkoli jiný UUID než standardizovaný UUID je pro vlastní UUID přijatelný. Typickou konvencí pojmenování je však označení vlastní služby 00000001-… a charakteristik v rámci této vlastní služby 00000002-…

Zde je souhrnná tabulka služeb a charakteristik, které budeme implementovat spolu s jejich UUID

Krok 2: Arduino kód

AKTUALIZUJTE PŘÁTELE BLUEFRUIT LE SPI

Nejprve připojte Adafruit Bluefruit LE SPI Friend podle pokynů v jejich průvodci připojením a zapněte zařízení Arduino. Při skenování zařízení Bluetooth zajistěte, aby na vašem zařízení Android byl nalezen Adafruit Bluefruit LE SPI Friend. Stáhněte si aplikaci Bluefruit Connect, připojte se k příteli Adafruit Bluefruit LE SPI a umožněte jí aktualizovat firmware v zařízení. Tento krok je důležitý. Pokud firmware neaktualizujete, příkazy, které zařízení vydáte prostřednictvím Arduina, pravděpodobně selžou a nebude zřejmé, že byste zjistili, v čem je problém.

Zde moje repo pro tento projekt. Zde můžete vidět celý kód Arduino.

PŘEHLED

Několik důležitých věcí, které je třeba poznamenat:

  1. V metodě setup () musí všechny vlastní UUID obsahovat „-“mezi každým dvěma znaky. Fungovat bude napří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 fungovat.
  2. Všimněte si, že v metodě setup () „battery.begin (true);“volá „ble.reset ();“automaticky. Pokud nepoužíváte bateriovou službu jako já, musíte resetovat ble modul (použijte "ble.reset ();") kde mám příkaz "battery.begin (true);".
  3. Pokud chcete ladit, v metodě setup () změňte „if (! Ble.begin (false))“na „if (! Ble.begin (true))“.

Tento kód je docela samozřejmý. Zahrnul jsem popisy každé vlastní metody. Metoda instalace připraví modul BLE, aby fungoval jako server GATT. Metoda smyčky prochází falešným zatažením modulu gyroskopu akcelerometru (AGM) a pro tyto hodnoty generuje náhodné číslo od 1 do 100. Baterie je vybitá o 1%, aby se simulovalo používání baterie. Tento kód můžete snadno nahradit skutečnými hodnotami senzoru. Tento kód předpokládá, že budete přenášet řadu dat AGM o délce 6 měření, nikoli jedno měření, protože analýza okna dat AGM je pravděpodobně užitečnější než jeden bod dat. Pokud změníte velikost pole, mějte na paměti, že v kódu studia Android budou nutné změny. Chcete -li zachytit pole dat, musíte předat počitadlo spolu s daty, která hodláte odeslat. Toto počítadlo vám umožňuje v aplikaci Android studio zjistit, kde se nacházíte, takže můžete počkat, až si v okně poslechnete chybějící datové body. Bez počítadla nebo s jinou velikostí pole projekt Android studia buď postrádá datové body, nebo se zasekne ve smyčce čekající na zbývající datové body, které očekává.

Krok 3: Kód Android Studio

Zde moje repo pro tento projekt. Zde si můžete prohlédnout celý kód Android Studio.

PŘEHLED

Budu to průběžně aktualizovat s důkladnějším přehledem o tom, jak arduino a androidový kód detailně fungují … Aplikace je plně funkční, takže se zatím můžete na kód podívat sami.

Krok 4: Konečná aplikace

Konečná aplikace
Konečná aplikace
Konečná aplikace
Konečná aplikace
Konečná aplikace
Konečná aplikace

Gratulujeme! Vaše aplikace se stáhne do telefonu a vaše nositelné zařízení se nabije a přenáší data.

SPUŠTĚTE APLIKACI

Začněte kliknutím na ikonu spouštěče aplikace.

UDĚLENÍ POVOLENÍ

Aby aplikace správně fungovala, budete muset schválit používání některých oprávnění.

SKENOVÁNÍ ZAŘÍZENÍ

Dále klikněte na tlačítko „Skenovat“v levém horním rohu aplikace.

VYBERTE SI SVÉ NOSITELNÉ ZAŘÍZENÍ

Dále vyberte své nositelné zařízení ze seznamu dostupných zařízení BLE. Jmenuje se „BLE Arduino Hardware“. ZÍSKEJTE DATAWait, dokud aplikace získá data AGM a určí, kde se uživatel stále nachází nebo se pohybuje. ZOBRAZTE SVÉ VÝSLEDKY Podívejte se na výsledky na obrazovce! Kliknutím na tlačítko synchronizace získáte další čtení dat.

Doporučuje: