Satura rādītājs:

Izveidojiet valkājamu kustību izsekotāju (BLE no Arduino uz pielāgotu Android Studio lietotni): 4 soļi
Izveidojiet valkājamu kustību izsekotāju (BLE no Arduino uz pielāgotu Android Studio lietotni): 4 soļi

Video: Izveidojiet valkājamu kustību izsekotāju (BLE no Arduino uz pielāgotu Android Studio lietotni): 4 soļi

Video: Izveidojiet valkājamu kustību izsekotāju (BLE no Arduino uz pielāgotu Android Studio lietotni): 4 soļi
Video: How to Crochet: Sporty Shorts | Pattern & Tutorial DIY 2024, Novembris
Anonim
Izveidojiet valkājamu kustību izsekotāju (BLE no Arduino uz pielāgotu Android Studio lietotni)
Izveidojiet valkājamu kustību izsekotāju (BLE no Arduino uz pielāgotu Android Studio lietotni)

Bluetooth Low Energy (BLE) ir mazjaudas Bluetooth saziņas veids. Valkājamām ierīcēm, piemēram, viedajiem apģērbiem, ko es palīdzu projektēt programmā Predictive Wear, pēc iespējas jāierobežo enerģijas patēriņš, lai pagarinātu akumulatora darbības laiku, un bieži jāizmanto BLE. Bluetooth īpašo interešu grupa (SIG) nosaka vairākas specifikācijas, kas ierīcei jāievieš, lai mijiedarbotos ar Bluetooth ierīci, ko tās sauc par "profiliem". Lielākā daļa lietojumprogrammu profilu izmanto vispārējo atribūtu profilu (GATT), lai nosūtītu datus, izmantojot BLE saiti. BLE ir trīs pamatjēdzieni: profili, pakalpojumi un atribūti.

Bluetooth SIG ir standartizējis daudzus izplatītus profilus, pakalpojumus un atribūtus. Tomēr, veidojot pielāgotu aparatūru, bieži vien ir jāizveido pielāgoti pakalpojumi un atribūti, un nav daudz pamācību. Lai situāciju padarītu sarežģītāku, Adafruit nesniedz nekādus norādījumus par mobilo lietojumprogrammu projektēšanu, lai tās savienotu pārī ar to BLE moduļiem, un to lietojumprogrammu avota kodu ir grūti mainīt.

Šīs apmācības mērķis ir izskaidrot:

  1. Kā izveidot pielāgotus GATT pakalpojumus un īpašības
  2. Kā programmēt Adafruit Bluefruit LE SPI draugu, lai tas darbotos kā GATT serveris šiem pielāgotajiem pakalpojumiem un īpašībām
  3. Kā ieprogrammēt Android ierīci, lai tā darbotos kā GATT klients, lai nolasītu datus no GATT servera

Šī apmācība nav paredzēta pārtapšanai ražošanai gatavā lietojumprogrammā - tas ir vienkārši ievads BLE.

Fona lasījums:

  • Adafruit Bluefruit LE SPI drauga dokumentācija
  • Ja neesat pazīstams ar GATT vai BLE

Piegādes

  • 1x - Arduino ierīce (šai apmācībai izmantoju UNO)
  • 1x - Adafruit Bluefruit LE SPI draugs
  • 8x - džemperu vadi no vīriešu līdz vīriešiem
  • Pamata lodēšanas iekārta (lai lodētu galvenes tapas uz SPI Friend)
  • Dators (lai programmētu Arduino ierīci un Android ierīci)

1. darbība. Izstrādājiet pielāgotus pakalpojumus un īpašības

IEVADS

Šis raksts lieliski palīdz izskaidrot, kā veidot pielāgotus pakalpojumus un īpašības. Es ļoti iesaku izlasīt šo rakstu. Tālāk sniegšu ļoti vienkāršu pārskatu, kurā tiek ignorēti smalkumi par labu vienkāršībai.

GATT pakalpojumi ir raksturlielumu kopums.

VVTT raksturlielumos ir īpašums, vērtība un nulle vai vairāk deskriptoru.

  • Īpašums: kā klientam ir jāapstrādā dati (Android lietotne), piem. lasīt, rakstīt, rakstīt bez atbildes, paziņot un norādīt.
  • Vērtība: raksturlieluma faktiskā vērtība, piem. 1089
  • Apraksti: tā ir informācija par vērtību, piem. vienība, milisekundes

DIZAINS

Labi, tagad jūs zināt, kas ir pakalpojumi un īpašības, mums ir jāizdomā, kā izstrādāt dažus pakalpojumus un īpašības, lai iegūtu mūsu pielāgotos datus un nosūtītu tos no mūsu GATT servera (Arduino) klientam (Android lietotne). Aplūkosim Arduino ierīci, kas vāc datus no akselerometra-žiroskopa moduļa (AGM). Mēs vēlamies savākt žiroskopu un paātrinājuma mērījumus no trim telpiskajām asīm un šo mērījumu veikšanas laiku un pārsūtīt šos datus uz mūsu mobilo lietotni. Mēs arī vēlamies zināt, kad ierīce jāuzlādē, tāpēc vēlamies nolasīt akumulatora uzlādes līmeni un pārsūtīt to uz mūsu mobilo lietojumprogrammu.

1. Vai mēs varam izmantot kādu no standarta pakalpojumiem un īpašībām?

Bluetooth SIG ir standartizējis daudzus izplatītus pakalpojumus un īpašības. Vispirms pārbaudiet šos, lai redzētu, vai varat kopīgi izvēlēties kādu no standartizētajiem pakalpojumiem un īpašībām. Standarta pakalpojumos un raksturlielumos var izmantot daudz mazākas datu paketes, jo universāli unikālais identifikators (UUID) ir 16 bitu, savukārt pielāgoto pakalpojumu un raksturlielumu UUID ir jāizmanto 128 biti. Vairāk par UUID vēlāk. Veicot meklēšanu, mēs atradām standartizētu "akumulatora pakalpojumu", kas satur vienu raksturīgu "akumulatora uzlādes līmeni".

2. Atdaliet visas datu vērtības, kuras vēlaties nosūtīt, izmantojot BLE, raksturlielumos un pakalpojumos

Mēs varam sadalīt savus pielāgotos datu punktus septiņos pielāgotos raksturlielumos viena pielāgota pakalpojuma ietvaros. Šo pakalpojumu mēs sauksim par "AGM pakalpojumu". Tajā būs 7 raksturlielumi: x-paātrinājums, y-paātrinājums, z-paātrinājums, x-žiroskops, y-žiroskops, z-žiroskops un laika atskaite.

3. Nosakiet katrai pazīmei nepieciešamās īpašības

Raksturojumam var būt vairākas īpašības.

  1. Lasīt: klients (Android lietotne) var nolasīt vērtību no GATT servera (Arduino)
  2. Rakstīt: klients var mainīt vērtību no GATT servera
  3. Norādiet: klients tiks informēts, ja vērtība mainīsies no GATT servera, un gaidāms, ka klients nosūtīs apstiprinājumu GATT serverim
  4. Paziņot: klients tiks informēts, ja vērtība mainīsies no GATT servera un nav paredzēts, ka klients nosūtīs apstiprinājumu uz GATT serveri

Šajā apmācībā mēs iestatīsim visu mūsu raksturlielumu lasīšanu, izņemot akumulatora uzlādes līmeni, kam būs gan paziņojuma, gan lasīšanas rekvizīti.

4. Izveidojiet UUID pielāgotiem pakalpojumiem un īpašībām un atrodiet standarta UUID

Kā es īsumā minēju iepriekš, Bluetooth SIG standartizētajos pakalpojumos un raksturlielumos tiek izmantots 16 bitu UUID, savukārt pielāgotajos pakalpojumos un raksturlielumos tiek izmantoti 128 bitu UUID. Piemēram, skatiet akumulatora pakalpojumam piešķirto numuru Bluetooth SIG. Piešķirtais numurs 0x180F apzīmē 128 bitu UUID "0000180F-0000-1000-8000-00805F9B34FB". Četri cipari (16 biti) treknrakstā ir unikāli konkrētajam standartizētajam pakalpojumam vai īpašībai, bet pārējās rakstzīmes tiek saglabātas starp visiem standartizētiem pakalpojumiem un raksturlielumiem. Tā kā gan klients, gan GATT serveris zina, ka standartizētie pakalpojumi un īpašības atšķiras tikai ar trekniem cipariem, datu pakešu izmērus var ievērojami samazināt. Tomēr pielāgoti pakalpojumi un īpašības nevar darboties saskaņā ar šo pašu pieņēmumu.

Tā vietā pielāgotajos pakalpojumos un raksturlielumos jāizmanto nesaīsināti 128 bitu UUID. Šeit ir tiešsaistes UUID ģenerators. Jebkurš UUID, kas nav standartizēts UUID, ir pieņemams pielāgotajam UUID. Tomēr tipiska nosaukšanas konvencija ir apzīmēt pielāgotu pakalpojumu 00000001-… un šī pielāgotā pakalpojuma 00000002- raksturlielumus.

Šeit ir apkopota izklājlapa par pakalpojumiem un īpašībām, ko mēs īstenosim kopā ar to UUID

2. darbība: Arduino kods

ATJAUNINIET BLUEFRUIT LE SPI DRAUGU

Vispirms pievienojiet Adafruit Bluefruit LE SPI Friend, kā norādīts savienošanas rokasgrāmatā, un ieslēdziet Arduino ierīci. Pārliecinieties, ka varat atrast Adafruit Bluefruit LE SPI Friend savā Android ierīcē, meklējot Bluetooth ierīces. Lejupielādējiet lietotni Bluefruit Connect, izveidojiet savienojumu ar Adafruit Bluefruit LE SPI Friend un ļaujiet tai atjaunināt ierīces programmaparatūru. Šis solis ir svarīgs. Ja neatjaunināsit programmaparatūru, komandas, kuras izdodat ierīcei, izmantojot Arduino, visticamāk neizdosies, un nebūs acīmredzamas kļūdas, lai jūs varētu atklāt problēmu.

Šeit ir mans repo šim projektam. Šeit varat redzēt pilnu Arduino kodu.

PĀRSKATS

Jāņem vērā dažas svarīgas lietas:

  1. Iestatīšanas () metodē visos pielāgotajos UUID ik pēc divām rakstzīmēm ir jābūt "-". Piemēram, "AT+GATTADDCHAR = UUID128 = 00-00-00-05-62-7E-47-E5-A3-FC-DD-AB-D9-7A-A9-66" darbosies. "AT+GATTADDCHAR = UUID128 = 00000005-627E-47E5-A3fCDDABD97AA966" nedarbosies.
  2. Ņemiet vērā, ka iestatīšanas () metodē "battery.begin (true);" aicina "ble.reset ();" automātiski. Ja neizmantojat akumulatora pakalpojumu, kā es, jums ir jāatiestata ble modulis (izmantojiet "ble.reset ();"), kur man ir komanda "battery.begin (true);".
  3. Iestatīšanas () metodē, ja vēlaties atkļūdot, mainiet "if (! Ble.begin (false))" uz "if (! Ble.begin (true))".

Šis kods ir diezgan pašsaprotams. Es iekļāvu katras pielāgotās metodes aprakstus. Iestatīšanas metode ļauj BLE modulim darboties kā GATT serverim. Cilpas metode iet caur akselerometra žiroskopa moduļa (AGM) viltotu slaucīšanu un ģenerē nejaušu skaitli no 1 līdz 100 šīm vērtībām. Lai simulētu akumulatora lietošanu, akumulators ir izlādējies par 1%. Jūs varat viegli nomainīt šo kodu ar faktiskajām sensora vērtībām. Šis kods pieņem, ka jūs pārsūtīsit AGM datu masīvu, 6 mērījumu garumā, nevis vienu mērījumu, jo AGM datu loga analīze, iespējams, ir lietderīgāka nekā viens datu punkts. Ja maināt masīva lielumu, ņemiet vērā, ka Android studijas kodā būs nepieciešamas izmaiņas. Lai iegūtu datu masīvu, jums jānodod skaitītājs kopā ar datiem, kurus plānojat nosūtīt. Šis skaitītājs ļauj jums atrast atrašanās vietu logā no android studio lietojumprogrammas, lai jūs varētu gaidīt, lai noklausītos trūkstošos datu punktus logā. Bez skaitītāja vai ar cita izmēra masīvu android studijas projekts vai nu palaidīs garām datu punktus, vai arī iestrēgs cilpā, gaidot atlikušos datu punktus.

3. darbība. Android Studio kods

Šeit ir mans repo šim projektam. Pilnu Android Studio kodu varat skatīt šeit.

PĀRSKATS

Es turpināšu to atjaunināt ar rūpīgāku pārskatu par to, kā arduino un android kods darbojas detalizēti … Lietotne ir pilnībā funkcionāla, tāpēc tikmēr varat brīvi aplūkot kodu.

4. solis: galīgais pieteikums

Galīgais pieteikums
Galīgais pieteikums
Galīgais pieteikums
Galīgais pieteikums
Galīgais pieteikums
Galīgais pieteikums

Apsveicam! Jūsu lietojumprogramma tiek lejupielādēta tālrunī, un valkājamā ierīce tiek uzlādēta un pārsūta datus.

SĀKT APP

Lai sāktu darbu, noklikšķiniet uz lietojumprogrammas palaišanas ikonas.

PIEŠĶIRT ATĻAUJAS

Lai lietotne darbotos pareizi, jums būs jāapstiprina dažu atļauju izmantošana.

SKENĒT IERĪCES

Pēc tam noklikšķiniet uz pogas "Skenēt" lietotnes augšējā kreisajā stūrī.

IZVĒLIETIES Nēsājamo ierīci

Pēc tam pieejamo BLE ierīču sarakstā atlasiet savu valkājamo ierīci. Tās nosaukums ir "BLE Arduino Hardware". IEGŪT DATUS Pagaidiet, kamēr lietotne iegūst AGM datus un nosaka, kur lietotājs joprojām atrodas vai pārvietojas. SKATĪT SAVUS REZULTĀTUS Pārbaudiet rezultātus ekrānā! Noklikšķiniet uz sinhronizācijas pogas, lai iegūtu citu datu nolasījumu.

Ieteicams: