Kazalo:

Zgradite nosilec za sledenje gibanju (BLE od Arduina do prilagojene aplikacije Android Studio): 4 koraki
Zgradite nosilec za sledenje gibanju (BLE od Arduina do prilagojene aplikacije Android Studio): 4 koraki

Video: Zgradite nosilec za sledenje gibanju (BLE od Arduina do prilagojene aplikacije Android Studio): 4 koraki

Video: Zgradite nosilec za sledenje gibanju (BLE od Arduina do prilagojene aplikacije Android Studio): 4 koraki
Video: CS50 2014 – 9-я неделя 2024, Julij
Anonim
Ustvarite nosljiv sledilnik gibanja (BLE od Arduina do prilagojene aplikacije Android Studio)
Ustvarite nosljiv sledilnik gibanja (BLE od Arduina do prilagojene aplikacije Android Studio)

Bluetooth Low Energy (BLE) je oblika komunikacije Bluetooth z nizko porabo energije. Nosljive naprave, kot so pametna oblačila, ki sem jih oblikoval pri podjetju Predictive Wear, morajo, kjer je to mogoče, omejiti porabo energije, da podaljšajo življenjsko dobo baterije, in pogosto uporabljajo BLE. Skupina za posebne interese Bluetooth (SIG) opredeljuje več specifikacij, ki jih mora naprava uporabiti za interakcijo z napravo Bluetooth, ki jih imenujejo "profili". Večina aplikacijskih profilov za pošiljanje podatkov prek povezave BLE uporablja splošni profil atributov (GATT). V BLE obstajajo trije temeljni pojmi: profili, storitve in atributi.

Bluetooth SIG je standardiziral številne običajne profile, storitve in atribute. Pri ustvarjanju strojne opreme po meri je pogosto treba ustvariti storitve in atribute po meri, zato ni na voljo veliko vadnic. Za oteževanje zadev Adafruit ne podaja navodil o oblikovanju mobilnih aplikacij, ki bi bile združene z njihovimi moduli BLE, izvorno kodo za njihove aplikacije pa je težko spremeniti.

Namen te vadnice je razložiti:

  1. Kako oblikovati storitve in značilnosti GATT po meri
  2. Kako programirati prijatelja Adafruit Bluefruit LE SPI za delovanje kot strežnik GATT za te storitve in značilnosti po meri
  3. Kako programirati napravo Android, da deluje kot odjemalec GATT za branje podatkov s strežnika GATT

Ta vadnica ni namenjena prevajanju v aplikacijo, pripravljeno za proizvodnjo - to je preprosto uvod v BLE.

Branje v ozadju:

  • Adafruit Bluefruit LE SPI Prijateljska dokumentacija
  • Če niste seznanjeni z GATT ali BLE

Zaloge

  • 1x - naprava Arduino (za to vadnico uporabljam UNO)
  • 1x - Adafruit Bluefruit LE SPI prijatelj
  • 8x - moški žice mostičkov
  • Osnovna oprema za spajkanje (do spajkalnih zatičev glave na SPI Friend)
  • Računalnik (za programiranje naprave Arduino in naprave Android)

1. korak: Oblikujte storitve in značilnosti po meri

UVOD

Ta članek odlično opravi razlago, kako oblikovati storitve in značilnosti po meri. Priporočam branje tega članka. Spodaj podajam zelo preprost pregled, ki zanemarja subtilnosti v prid preprostosti.

Storitve GATT so zbirka značilnosti.

Značilnosti GATT vsebujejo lastnost, vrednost in nič ali več deskriptorjev.

  • Lastnost: kako naj odjemalec ravna s podatki (aplikacija za Android), npr. branje, pisanje, pisanje brez odziva, obveščanje in označevanje.
  • Vrednost: dejanska vrednost lastnosti npr. 1089
  • Deskriptorji: to so podatki o vrednosti npr. enota, milisekunde

OBLIKOVANJE

V redu, zdaj veste, kaj so storitve in značilnosti. Moramo ugotoviti, kako oblikovati nekatere storitve in značilnosti, da dobimo naše podatke po meri in jih pošljemo iz našega strežnika GATT (Arduino) odjemalcu (aplikacija za Android). Razmislimo o napravi Arduino, ki zbira podatke iz modula pospeška in žiroskopa (AGM). Želimo zbrati meritve žiroskopa in pospeška s treh prostorskih osi in časa teh meritev ter te podatke posredovati naši mobilni aplikaciji. Prav tako želimo vedeti, kdaj moramo napolniti napravo, zato želimo prebrati raven napolnjenosti baterije in to prenesti v svojo mobilno aplikacijo.

1. Ali lahko uporabimo katero od standardnih storitev in značilnosti?

Bluetooth SIG je standardiziral številne skupne storitve in značilnosti. Najprej jih preverite, ali se lahko odločite za katero od standardiziranih storitev in značilnosti. Standardne storitve in lastnosti lahko uporabljajo veliko manjše podatkovne pakete, saj je univerzalni enolični identifikator (UUID) 16 bitov, medtem ko morajo storitve in značilnosti po meri uporabiti 128 bitov za svoje UUID. Več o UUID -jih kasneje. Pri iskanju smo našli standardiziran "servis baterije", ki vsebuje eno značilno "raven baterije".

2. Vse vrednosti podatkov, ki jih želite poslati prek BLE, ločite v značilnosti in storitve

Podatkovne točke po meri lahko razdelimo na sedem značilnosti po meri v eni storitvi po meri. To storitev bomo imenovali "storitev AGM". Vseboval bo 7 značilnosti: x-pospešek, y-pospešek, z-pospešek, x-žiroskop, y-žiroskop, z-žiroskop in časovno referenco.

3. Določite lastnosti, potrebne za vsako lastnost

Značilnost ima lahko več lastnosti.

  1. Preberite: odjemalec (aplikacija za Android) lahko prebere vrednost iz strežnika GATT (Arduino)
  2. Pišite: Odjemalec lahko spremeni vrednost iz strežnika GATT
  3. Navedite: naročnik bo obveščen, če se vrednost spremeni s strežnika GATT in se pričakuje, da bo odjemalec poslal potrditev strežniku GATT
  4. Obvesti: naročnik bo obveščen, če se vrednost spremeni s strežnika GATT in od odjemalca ne pričakuje, da bo poslal potrditev strežniku GATT

V tej vadnici bomo vse naše lastnosti nastavili za branje, z izjemo ravni napolnjenosti baterije, ki bo imela lastnosti obveščanja in branja.

4. Ustvarite UUID za storitve in značilnosti po meri in poiščite standardne UUID

Kot sem na kratko omenil že prej, standardizirane storitve in značilnosti Bluetooth SIG uporabljajo 16 -bitni UUID, medtem ko storitve in značilnosti po meri uporabljajo 128 -bitne UUID -je. Oglejte si na primer dodeljeno številko servisa baterije na Bluetooth SIG. Dodeljena številka 0x180F predstavlja 128-bitni UUID "0000180F-0000-1000-8000-00805F9B34FB". Krepke štiri števke (16 bitov) so edinstvene za določeno standardizirano storitev ali značilnost, drugi znaki pa so ohranjeni med vsemi standardiziranimi storitvami in značilnostmi. Ker tako odjemalec kot strežnik GATT vesta, da se standardizirane storitve in lastnosti razlikujejo le s krepkimi številkami, se lahko velikosti paketov podatkov znatno zmanjšajo. Vendar storitve in značilnosti po meri ne morejo delovati pod isto predpostavko.

Namesto tega morajo storitve in lastnosti po meri uporabljati neskrajšane 128 -bitne UUID -je. Tukaj je spletni generator UUID. Vsak UUID, razen standardnega UUID, je sprejemljiv za UUID po meri. Tipična konvencija poimenovanja pa označuje storitev po meri 00000001-… in značilnosti te storitve po meri 00000002-…

Tukaj je povzetek preglednice storitev in značilnosti, ki jih bomo izvajali skupaj z njihovimi UUID -ji

2. korak: Arduino koda

Posodobite BLUEFRUIT LE SPI PRIJATELJ

Najprej priključite Adafruit Bluefruit LE SPI Friend, kot je navedeno v vodniku za priključitev, in vklopite napravo Arduino. Pri iskanju naprav Bluetooth se prepričajte, da lahko v napravi Android najdete Adafruit Bluefruit LE SPI Friend. Prenesite aplikacijo Bluefruit Connect, povežite se z Adafruit Bluefruit LE SPI Friend in dovolite, da posodobi vdelano programsko opremo v napravi. Ta korak je pomemben. Če ne posodobite vdelane programske opreme, bodo ukazi, ki jih izdate napravi prek Arduina, verjetno neuspešni in ne boste imeli očitne napake, da ugotovite, v čem je težava.

Tukaj je moj repo za ta projekt. Celotno kodo Arduino si lahko ogledate tukaj.

PREGLED

Upoštevati je treba nekaj pomembnih stvari:

  1. V metodi setup () morajo vsi UUID-ji po meri vsebovati "-" med vsaka dva znaka. Na primer, "AT+GATTADDCHAR = UUID128 = 00-00-00-05-62-7E-47-E5-A3-FC-DD-AB-D9-7A-A9-66" bo delovalo. "AT+GATTADDCHAR = UUID128 = 00000005-627E-47E5-A3fCDDABD97AA966" ne bo delovalo.
  2. Upoštevajte, da je v metodi setup () "battery.begin (true);" kliče "ble.reset ();" samodejno. Če ne uporabljate storitve baterije kot jaz, morate ponastaviti modul ble (uporabite "ble.reset ();"), kjer imam ukaz "battery.begin (true);".
  3. Če želite odpraviti napake, v metodi setup () spremenite »if (! Ble.begin (false))« v »if (! Ble.begin (true))«.

Ta koda je precej samoumevna. Vključil sem opise vsake metode po meri. Način namestitve pripravi modul BLE, da deluje kot strežnik GATT. Metoda zanke gre skozi ponarejeno brisanje modula pospeška v žiroskopu (AGM) in za te vrednosti ustvari naključno število od 1 do 100. Baterija se izprazni za 1%, da simulira uporabo baterije. To kodo lahko preprosto zamenjate z dejanskimi vrednostmi senzorja. Ta koda predvideva, da boste posredovali niz podatkov AGM, dolgih 6 meritev, namesto ene same meritve, saj je analiza okna podatkov AGM verjetno bolj uporabna kot ena točka podatkov. Če spremenite velikost matrike, upoštevajte, da bodo v kodi studia android potrebne spremembe. Če želite zajeti niz podatkov, morate skupaj s podatki, ki jih nameravate poslati, posredovati števec. Ta števec vam omogoča, da v aplikaciji android studio poiščete, kje ste v oknu, tako da lahko počakate, da poslušate manjkajoče podatkovne točke v oknu. Brez števca ali z matriko drugačne velikosti bo projekt studia android zgrešil podatkovne točke ali pa se bo zataknil v zanki, ki čaka na preostale podatkovne točke, ki jih pričakuje.

3. korak: Koda Android Studio

Tukaj je moj repo za ta projekt. Celotno kodo za Android Studio si lahko ogledate tukaj.

PREGLED

To bom še posodabljal s podrobnejšim pregledom delovanja arduino in android kode v podrobnostih … Aplikacija je popolnoma funkcionalna, zato si vmes sami oglejte kodo.

4. korak: Končna prijava

Končna prijava
Končna prijava
Končna prijava
Končna prijava
Končna prijava
Končna prijava

Čestitamo! Vaša aplikacija se prenese v vaš telefon, vaša nosljiva naprava pa se napolni in prenaša podatke.

ZAGONITE APLIKACIJO

Za začetek kliknite ikono zaganjalnika za aplikacijo.

DODELITE DOVOLJENJA

Za pravilno delovanje aplikacije boste morali odobriti uporabo nekaterih dovoljenj.

PREBERITE NAPRAVE

Nato kliknite gumb »Skeniraj« v zgornjem levem kotu aplikacije.

IZBERITE SVOJO NOSILNO NAPRAVO

Nato izberite svojo nosljivo napravo s seznama razpoložljivih naprav BLE. Njegovo ime je "BLE Arduino Hardware". PRIDOBITE PODATKE Počakajte, da aplikacija pridobi podatke AGM in določi, kje je uporabnik še ali se premika. OGLEDAJTE REZULTATE Preverite rezultate na zaslonu! Kliknite gumb za sinhronizacijo, če želite znova prebrati podatke.

Priporočena: