Turinys:
- Prekės
- 1 žingsnis: suprojektuokite pasirinktines paslaugas ir charakteristikas
- 2 žingsnis: „Arduino“kodas
- 3 veiksmas: „Android Studio“kodas
- 4 žingsnis: galutinė paraiška
Video: Sukurkite nešiojamą judesio sekimo priemonę (BLE iš „Arduino“į pasirinktinę „Android Studio“programą): 4 veiksmai
2024 Autorius: John Day | [email protected]. Paskutinį kartą keistas: 2024-01-30 10:44
„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:
- Kaip sukurti individualias GATT paslaugas ir charakteristikas
- Kaip užprogramuoti „Adafruit Bluefruit LE SPI Friend“veikti kaip GATT serveris šioms pasirinktinėms paslaugoms ir charakteristikoms
- 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ą.
- Skaityti: klientas („Android“programa) gali nuskaityti vertę iš GATT serverio („Arduino“)
- Rašyti: klientas gali pakeisti vertę iš GATT serverio
- Nurodykite: klientas bus informuotas, jei pasikeis vertė iš GATT serverio, ir tikimasi, kad klientas atsiųs patvirtinimą GATT serveriui
- 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į:
- 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.
- 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);“.
- 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
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:
Pridėkite pasirinktinę funkciją „Google“skaičiuoklėse: 5 veiksmai
Pridėkite pasirinktinę funkciją „Google“skaičiuoklėse: esu tikras, kad tam tikru savo gyvenimo momentu turėjote naudoti skaičiuoklės programinę įrangą, pvz., „Microsoft Excel“ar „Google“skaičiuokles. Jie yra gana paprasti ir lengvai naudojami, tačiau taip pat labai galingi ir lengvai išplečiami. Šiandien mes pažvelgsime į „Goo“
Nešiojama saulės automatinė sekimo sistema: 9 žingsniai (su nuotraukomis)
Nešiojama saulės automatinio stebėjimo sistema: „Medomyself“yra „Amazon Services LLC Associates“programos, filialų reklamos programos, sukurta siekiant suteikti svetainėms galimybę užsidirbti reklamos mokesčių reklamuojant ir susiejant su „amazon.com“, autorius: Dave Weaver Šis kūrinys sukurtas naudojant
Paprasta namų automatizavimas (pasirinktinė „Bluetooth“programa): 6 žingsniai
Paprasta namų automatizavimas (pasirinktinė „Bluetooth“programa): šioje pamokoje aš jums parodysiu, kaip sukurti paprastą namų automatiką (tai yra, mes galime valdyti savo namų prietaisus naudodami savo išmanųjį telefoną)
Kaip įdiegti 3.8 ir 4 užklausų sekimo priemonę „Debian“: 3 veiksmai
Kaip įdiegti 3.8 ir 4 užklausų sekimo priemonę „Debian“: jums reikės: „Debian“operacinės sistemos įrenginyje
Sukurkite pasirinktinę USB piktogramą ir pavadinimą: 3 žingsniai
Sukurkite pasirinktinę USB piktogramą ir pavadinimą: Sveiki, sveiki atvykę į šią trumpą pamoką! Pabaigoje galėsite pakeisti seną ir per daug naudojamą USB atmintinės piktogramą ir pakeisti jos pavadinimą po langais. Taigi, pradėkime! PS : Aš esu prancūzas, todėl gali būti klaidų ar keistų sakinių, ir aš atsiprašau