Turinys:

Sukurkite nešiojamą judesio sekimo priemonę (BLE iš „Arduino“į pasirinktinę „Android Studio“programą): 4 veiksmai
Sukurkite nešiojamą judesio sekimo priemonę (BLE iš „Arduino“į pasirinktinę „Android Studio“programą): 4 veiksmai

Video: Sukurkite nešiojamą judesio sekimo priemonę (BLE iš „Arduino“į pasirinktinę „Android Studio“programą): 4 veiksmai

Video: Sukurkite nešiojamą judesio sekimo priemonę (BLE iš „Arduino“į pasirinktinę „Android Studio“programą): 4 veiksmai
Video: Часть 2 - Аудиокнига «Том Свифт в ледяных пещерах» Виктора Эпплтона (главы 12–25) 2024, Liepa
Anonim
Sukurkite nešiojamą judesio sekimo priemonę (BLE nuo „Arduino“iki pasirinktinės „Android Studio“programos)
Sukurkite nešiojamą judesio sekimo priemonę (BLE nuo „Arduino“iki pasirinktinės „Android Studio“programos)

„Bluetooth Low Energy“(BLE) yra mažos galios „Bluetooth“ryšio forma. Nešiojami prietaisai, kaip ir išmanieji drabužiai, kuriuos padedu projektuoti „Predictive Wear“, turi kuo labiau apriboti energijos suvartojimą, kad prailgintų baterijos veikimo laiką, ir dažnai naudoti BLE. „Bluetooth“specialiųjų interesų grupė (SIG) apibrėžia keletą specifikacijų, kurias įrenginys turėtų įgyvendinti, kad galėtų sąveikauti su „Bluetooth“įrenginiu, kurį jie vadina „profiliu“. Dauguma programų profilių naudoja bendrąjį atributų profilį (GATT) duomenims siųsti per BLE nuorodą. BLE yra trys pagrindinės sąvokos: profiliai, paslaugos ir atributai.

„Bluetooth SIG“standartizavo daugelį įprastų profilių, paslaugų ir atributų. Tačiau kuriant pasirinktinę techninę įrangą dažnai reikia sukurti pasirinktines paslaugas ir atributus, o mokymo priemonių nėra daug. Kad būtų dar sunkiau, „Adafruit“nepateikia jokių gairių, kaip suprojektuoti mobilias programas, kad jos būtų susietos su jų BLE moduliais, o jų programų šaltinio kodą sunku pakeisti.

Šios pamokos tikslas yra paaiškinti:

  1. Kaip sukurti individualias GATT paslaugas ir charakteristikas
  2. Kaip užprogramuoti „Adafruit Bluefruit LE SPI Friend“veikti kaip GATT serveris šioms pasirinktinėms paslaugoms ir charakteristikoms
  3. Kaip užprogramuoti „Android“įrenginį veikti kaip GATT klientas skaityti duomenis iš GATT serverio

Ši pamoka nėra skirta išversti į gamybai paruoštą programą - tai tiesiog įvadas į BLE.

Fono skaitymas:

  • „Adafruit Bluefruit LE SPI Friend“dokumentai
  • Jei nesate susipažinę su GATT ar BLE

Prekės

  • 1x - „Arduino“įrenginys (šiai pamokai naudoju UNO)
  • 1x - Adafruit Bluefruit LE SPI Draugas
  • 8x - jungiamieji laidai nuo vyrų iki vyrų
  • Pagrindinė litavimo įranga („SPI Friend“antgalių kaiščių litavimui)
  • Kompiuteris (programuoti „Arduino“įrenginį ir „Android“įrenginį)

1 žingsnis: suprojektuokite pasirinktines paslaugas ir charakteristikas

ĮVADAS

Šis straipsnis puikiai paaiškina, kaip kurti pasirinktines paslaugas ir savybes. Aš labai rekomenduoju perskaityti šį straipsnį. Žemiau pateikiu labai paprastą apžvalgą, kurioje neatsižvelgiama į subtilybes paprastumo naudai.

GATT paslaugos yra savybių rinkinys.

GATT charakteristikose yra savybė, vertė ir nulis ar daugiau aprašų.

  • Nuosavybė: kaip duomenis turėtų tvarkyti klientas („Android“programa), pvz. skaityti, rašyti, rašyti be atsako, pranešti ir nurodyti.
  • Vertė: faktinė charakteristikos vertė, pvz. 1089
  • Aprašai: tai informacija apie vertę pvz. vienetas, milisekundės

DIZAINAS

Gerai, dabar jūs žinote, kokios yra paslaugos ir charakteristikos, turime išsiaiškinti, kaip suprojektuoti kai kurias paslaugas ir charakteristikas, kad gautume pasirinktinius duomenis ir išsiųstume juos iš mūsų GATT serverio („Arduino“) klientui („Android“programa). Apsvarstykite „Arduino“įrenginį, kuris renka duomenis iš akselerometro-giroskopo modulio (AGM). Mes norime surinkti giroskopo ir pagreičio matavimus iš trijų erdvinių ašių ir šių matavimų atlikimo laiko bei perduoti šiuos duomenis į mūsų mobiliąją programą. Mes taip pat norime žinoti, kada turime įkrauti įrenginį, todėl norime nuskaityti akumuliatoriaus įkrovos lygį ir perduoti jį į savo programą mobiliesiems.

1. Ar galime naudotis bet kuriomis standartinėmis paslaugomis ir charakteristikomis?

„Bluetooth SIG“standartizavo daugybę bendrų paslaugų ir savybių. Pirmiausia patikrinkite tai, ar galite pasirinkti kokias nors standartizuotas paslaugas ir charakteristikas. Standartinės paslaugos ir charakteristikos gali naudoti daug mažesnius duomenų paketus, nes universaliai unikalus identifikatorius (UUID) yra 16 bitų, o pasirinktinėms paslaugoms ir charakteristikoms UUID turi būti naudojami 128 bitai. Daugiau apie UUID vėliau. Ieškodami radome standartizuotą „akumuliatoriaus paslaugą“, kurioje yra vienas būdingas „akumuliatoriaus įkrovos lygis“.

2. Atskirkite visas duomenų reikšmes, kurias norite siųsti per BLE, į charakteristikas ir paslaugas

Mes galime suskirstyti savo pasirinktinius duomenų taškus į septynias tinkintas charakteristikas per vieną pasirinktinę paslaugą. Šią paslaugą vadinsime „AGM paslauga“. Jame bus 7 charakteristikos: x pagreitis, y pagreitis, z pagreitis, x giroskopas, y giroskopas, z giroskopas ir laiko nuoroda.

3. Nustatykite kiekvienai charakteristikai reikalingas savybes

Yra keletas savybių, kurios gali turėti charakteristiką.

  1. Skaityti: klientas („Android“programa) gali nuskaityti vertę iš GATT serverio („Arduino“)
  2. Rašyti: klientas gali pakeisti vertę iš GATT serverio
  3. Nurodykite: klientas bus informuotas, jei pasikeis vertė iš GATT serverio, ir tikimasi, kad klientas atsiųs patvirtinimą GATT serveriui
  4. Pranešti: Klientui bus pranešta, jei pasikeis vertė iš GATT serverio ir tikimasi, kad klientas nesiųs patvirtinimo į GATT serverį

Šioje pamokoje mes nuskaitysime visas mūsų charakteristikas, išskyrus akumuliatoriaus įkrovos lygį, kuris turės ir pranešimo, ir skaitymo ypatybes.

4. Sukurkite individualių paslaugų ir charakteristikų UUID ir raskite standartinius UUID

Kaip trumpai minėjau anksčiau, „Bluetooth SIG“standartizuotoms paslaugoms ir charakteristikoms naudojamas 16 bitų UUID, o pasirinktinėms paslaugoms ir charakteristikoms - 128 bitų UUID. Pvz., Žr. „Bluetooth SIG“akumuliatoriaus paslaugos paskirtą numerį. Priskirtas numeris 0x180F reiškia 128 bitų UUID „0000180F-0000-1000-8000-00805F9B34FB“. Keturi skaitmenys (16 bitų), paryškinti, yra unikalūs konkrečiai standartizuotai paslaugai ar charakteristikai, o kiti simboliai išsaugomi tarp visų standartizuotų paslaugų ir charakteristikų. Kadangi tiek klientas, tiek GATT serveris žino, kad standartizuotos paslaugos ir charakteristikos skiriasi tik paryškintais skaitmenimis, duomenų paketų dydžiai gali būti žymiai sumažinti. Tačiau pagal tą pačią prielaidą pasirinktinės paslaugos ir charakteristikos negali veikti.

Vietoj to, pasirinktinėms paslaugoms ir charakteristikoms turi būti naudojami nesutrumpinti 128 bitų UUID. Čia yra internetinis UUID generatorius. Bet koks UUID, išskyrus standartizuotą UUID, yra tinkamas pritaikytam UUID. Tačiau įprasta pavadinimo sutartis yra žymėti pasirinktinę paslaugą 00000001-… ir šios pasirinktinės paslaugos 00000002-… charakteristikas.

Čia yra paslaugų ir charakteristikų, kurias įgyvendinsime kartu su jų UUID, suvestinė

2 žingsnis: „Arduino“kodas

ATNAUJINKITE „BLUEFRUIT LE SPI FRIEND“

Pirmiausia prijunkite „Adafruit Bluefruit LE SPI Friend“, kaip nurodyta prijungimo vadove, ir įjunkite „Arduino“įrenginį. Įsitikinkite, kad „Adafruit Bluefruit LE SPI Friend“rasite „Android“įrenginyje, kai ieškote „Bluetooth“įrenginių. Atsisiųskite „Bluefruit Connect“programą, prisijunkite prie „Adafruit Bluefruit LE SPI Friend“ir leiskite jai atnaujinti įrenginio programinę -aparatinę įrangą. Šis žingsnis yra svarbus. Jei neatnaujinsite programinės įrangos, komandos, kurias išduosite įrenginiui per „Arduino“, greičiausiai nepavyks ir nebus akivaizdžios klaidos, kad galėtumėte sužinoti, kokia yra problema.

Čia yra mano repo šiam projektui. Visą „Arduino“kodą galite pamatyti čia.

APŽVALGA

Keletas svarbių dalykų, į kuriuos reikia atkreipti dėmesį:

  1. Taikant „setup ()“metodą, visuose pasirinktiniuose UUID tarp dviejų simbolių turi būti „-“. Pavyzdžiui, „AT+GATTADDCHAR = UUID128 = 00-00-00-05-62-7E-47-E5-A3-FC-DD-AB-D9-7A-A9-66“veiks. „AT+GATTADDCHAR = UUID128 = 00000005-627E-47E5-A3fCDDABD97AA966“neveiks.
  2. Atminkite, kad sąrankos () metodu „battery.begin (true);“skambina "ble.reset ();" automatiškai. Jei nenaudojate akumuliatoriaus paslaugos, kaip aš, turite iš naujo nustatyti „ble“modulį (naudokite „ble.reset ();“), kur turiu komandą „battery.begin (true);“.
  3. Sąrankos () metodu pakeiskite „if (! Ble.begin (false))“į „if (! Ble.begin (true))“, jei norite derinti.

Šis kodas yra gana savaime suprantamas. Aš įtraukiau kiekvieno pasirinktinio metodo aprašymus. Nustatymo metodas paruošia BLE modulį veikti kaip GATT serveris. Ciklo metodas atliekamas naudojant suklastotą pagreičio matuoklio giroskopo modulio (AGM) valymą ir generuoja atsitiktinį skaičių nuo 1 iki 100. Akumuliatorius išsikrauna 1%, kad imituotų baterijos naudojimą. Šį kodą galite lengvai pakeisti faktinėmis jutiklių vertėmis. Šis kodas daro prielaidą, kad perduosite 6 matavimų ilgio AGM duomenų masyvą, o ne vieną matavimą, nes AGM duomenų lango analizė greičiausiai yra naudingesnė nei vienas duomenų taškas. Jei pakeisite masyvo dydį, atkreipkite dėmesį, kad „Android“studijos kode reikia atlikti pakeitimus. Norėdami užfiksuoti duomenų masyvą, turite perduoti skaitiklį kartu su duomenimis, kuriuos ketinate siųsti. Šis skaitiklis leidžia jums sužinoti, kur esate, naudodami „Android Studio“programą, kad galėtumėte palaukti, kol išklausysite trūkstamų duomenų taškų lange. Be skaitiklio arba naudojant kitokio dydžio masyvą, „Android“studijos projektas praleis duomenų taškus arba įstrigs cikle, laukdamas likusių duomenų taškų, kurių tikisi.

3 veiksmas: „Android Studio“kodas

Čia yra mano repo šiam projektui. Visą „Android Studio“kodą galite pamatyti čia.

APŽVALGA

Aš nuolat atnaujinsiu tai išsamiau apžvelgdamas, kaip „arduino“ir „Android“kodai veikia išsamiai … Programa yra visiškai funkcionali, todėl kol kas nedvejodami pažiūrėkite į kodą.

4 žingsnis: galutinė paraiška

Galutinė paraiška
Galutinė paraiška
Galutinė paraiška
Galutinė paraiška
Galutinė paraiška
Galutinė paraiška

Sveikinu! Jūsų programa atsisiųsta į jūsų telefoną, o nešiojamas įrenginys įkraunamas ir perduoda duomenis.

PRADĖTI PROGRAMĄ

Norėdami pradėti, spustelėkite programos paleidimo priemonės piktogramą.

SUTEIKTI LEIDŽIUS

Kad programa veiktų tinkamai, turėsite patvirtinti tam tikrų leidimų naudojimą.

SKENUOTI ĮRENGINIUS

Tada viršutiniame kairiajame programos kampe spustelėkite mygtuką „Nuskaityti“.

PASIRINKITE DĖVIMO ĮRENGINĮ

Tada iš galimų BLE įrenginių sąrašo pasirinkite nešiojamą įrenginį. Jos pavadinimas yra „BLE Arduino Hardware“. GAUTI DUOMENUS Palaukite, kol programa gaus AGM duomenis ir nustatys, kur naudotojas yra ar juda. ŽIŪRĖKITE REZULTATUS Patikrinkite rezultatus ekrane! Spustelėkite sinchronizavimo mygtuką, kad gautumėte kitą duomenų skaitymą.

Rekomenduojamas: