Sadržaj:

Izradite nosivi uređaj za praćenje kretanja (BLE od Arduina do prilagođene aplikacije za Android Studio): 4 koraka
Izradite nosivi uređaj za praćenje kretanja (BLE od Arduina do prilagođene aplikacije za Android Studio): 4 koraka

Video: Izradite nosivi uređaj za praćenje kretanja (BLE od Arduina do prilagođene aplikacije za Android Studio): 4 koraka

Video: Izradite nosivi uređaj za praćenje kretanja (BLE od Arduina do prilagođene aplikacije za Android Studio): 4 koraka
Video: Gadgets, Gizmos & The New World of Syncope - Dr. Blair Grubb 2024, Studeni
Anonim
Napravite nosivi alat za praćenje kretanja (BLE od Arduina do prilagođene aplikacije za Android Studio)
Napravite nosivi alat za praćenje kretanja (BLE od Arduina do prilagođene aplikacije za Android Studio)

Bluetooth Low Energy (BLE) je oblik Bluetooth komunikacije niske snage. Nosivi uređaji, poput pametnih odjevnih predmeta koje pomažem dizajnirati na Predictive Wearu, moraju ograničiti potrošnju energije kad god je to moguće za produljenje trajanja baterije i često koristiti BLE. Bluetooth grupa za posebne interese (SIG) definira nekoliko specifikacija koje bi uređaj trebao implementirati za interakciju s Bluetooth uređajem, koje nazivaju "profili". Većina profila aplikacija koristi Opći profil atributa (GATT) za slanje podataka putem BLE veze. U BLE -u postoje tri temeljna koncepta: profili, usluge i atributi.

Bluetooth SIG standardizirao je mnoge uobičajene profile, usluge i atribute. Međutim, pri stvaranju prilagođenog hardvera često postoji potreba za stvaranjem prilagođenih usluga i atributa i nema mnogo dostupnih vodiča. Da stvar bude još teža, Adafruit ne daje nikakve smjernice o dizajniranju mobilnih aplikacija za uparivanje s njihovim BLE modulima, a izvorni kod za njihove aplikacije teško je preokrenuti.

Ovaj vodič ima za cilj objasniti:

  1. Kako dizajnirati prilagođene usluge i karakteristike GATT -a
  2. Kako programirati Adafruit Bluefruit LE SPI prijatelja da djeluje kao GATT poslužitelj za ove prilagođene usluge i karakteristike
  3. Kako programirati Android uređaj da djeluje kao GATT klijent za čitanje podataka s GATT poslužitelja

Ovaj vodič ne namjerava se prevesti u aplikaciju spremnu za proizvodnju - ovo je jednostavno uvod u BLE.

Pozadinsko čitanje:

  • Dokumentacija prijatelja Adafruit Bluefruit LE SPI prijatelja
  • Ako niste upoznati s GATT -om ili BLE -om

Pribor

  • 1x - Arduino uređaj (za ovaj vodič koristim UNO)
  • 1x - Adafruit Bluefruit LE SPI prijatelj
  • 8x - žice kratkospojnika muški na muški
  • Osnovna oprema za lemljenje (za lemljenje igala zaglavlja na SPI Friend)
  • Računalo (za programiranje Arduino uređaja i android uređaja)

Korak 1: Dizajnirajte prilagođene usluge i karakteristike

UVOD

Ovaj članak sjajno objašnjava objašnjavanje načina dizajniranja prilagođenih usluga i karakteristika. Toplo preporučujem čitanje ovog članka. U nastavku donosim vrlo jednostavan pregled koji zanemaruje suptilnosti u korist jednostavnosti.

GATT usluge su skup karakteristika.

Karakteristike GATT -a sadrže svojstvo, vrijednost i nulu ili više deskriptora.

  • Svojstvo: kako klijent treba postupati s podacima (aplikacija za Android), npr. čitati, pisati, pisati bez odgovora, obavijestiti i naznačiti.
  • Vrijednost: stvarna vrijednost karakteristike npr. 1089
  • Deskriptori: ovo su podaci o vrijednosti npr. jedinica, milisekunde

OBLIKOVATI

U redu, sada znate koje su usluge i karakteristike. Moramo smisliti kako osmisliti neke usluge i karakteristike kako bismo dobili prilagođene podatke i poslali ih s našeg GATT poslužitelja (Arduino) klijentu (Android aplikacija). Razmotrimo Arduino uređaj koji prikuplja podatke iz modula akcelerometra-žiroskopa (AGM). Želimo prikupiti mjerenja žiroskopa i ubrzanja s tri prostorne osi te vrijeme izvršenja tih mjerenja i prenijeti te podatke u našu mobilnu aplikaciju. Također želimo znati kada trebamo napuniti uređaj pa želimo očitati razinu napunjenosti baterije i prenijeti to u našu mobilnu aplikaciju.

1. Možemo li koristiti bilo koju od standardnih usluga i karakteristika?

Bluetooth SIG standardizirao je mnoge uobičajene usluge i karakteristike. Najprije ih provjerite kako biste vidjeli možete li kooptirati bilo koju od standardiziranih usluga i karakteristika. Standardne usluge i karakteristike mogu koristiti mnogo manje pakete podataka jer je Univerzalni jedinstveni identifikator (UUID) 16 bita, dok prilagođene usluge i karakteristike moraju koristiti 128 bita za svoje UUID -ove. Više o UUID -ovima kasnije. Iz našeg pretraživanja pronašli smo standardizirani "servis baterije" koji sadrži jednu karakterističnu "razinu baterije".

2. Odvojite sve vrijednosti podataka koje želite poslati preko BLE -a u karakteristike i usluge

Naše prilagođene podatkovne točke možemo podijeliti na sedam prilagođenih karakteristika unutar jedne prilagođene usluge. Ovu ćemo uslugu nazvati "AGM usluga". Sadržat će 7 karakteristika: x-ubrzanje, y-ubrzanje, z-ubrzanje, x-žiroskop, y-žiroskop, z-žiroskop i vremensku referencu.

3. Odredite potrebna svojstva za svaku karakteristiku

Karakteristika može imati nekoliko svojstava.

  1. Pročitajte: klijent (aplikacija za Android) može pročitati vrijednost s GATT poslužitelja (Arduino)
  2. Napiši: Klijent može promijeniti vrijednost s GATT poslužitelja
  3. Navedite: Klijent će biti obaviješten ako se promijeni vrijednost s GATT poslužitelja i očekuje se da će klijent poslati potvrdu na GATT poslužitelj
  4. Obavijesti: Klijent će biti obaviješten ako se promijeni vrijednost s GATT poslužitelja i ne očekuje se da će klijent poslati potvrdu GATT poslužitelju

Za ovaj vodič ćemo postaviti sve naše karakteristike za čitanje, s izuzetkom razine napunjenosti baterije koja će imati obavještenja i svojstva čitanja.

4. Generirajte UUID -ove za prilagođene usluge i karakteristike i pronađite standardne UUID -ove

Kao što sam ukratko spomenuo ranije, standardizirane usluge i karakteristike Bluetooth SIG -a koriste 16 -bitni UUID, dok prilagođene usluge i karakteristike koriste 128 -bitne UUID -ove. Na primjer, pogledajte dodijeljeni broj usluge baterije na Bluetooth SIG -u. Dodijeljeni broj 0x180F predstavlja 128-bitni UUID "0000180F-0000-1000-8000-00805F9B34FB". Četiri znamenke (16 bita) podebljane su jedinstvene za određenu standardiziranu uslugu ili karakteristiku, dok su ostali znakovi sačuvani između svih standardiziranih usluga i karakteristika. Budući da i klijent i GATT poslužitelj znaju da se standardizirane usluge i karakteristike razlikuju samo podebljanim znamenkama, veličina paketa podataka može se značajno smanjiti. Međutim, prilagođene usluge i karakteristike ne mogu funkcionirati pod istom pretpostavkom.

Umjesto toga, prilagođene usluge i karakteristike moraju koristiti neokraćene 128 -bitne UUID -ove. Ovdje je mrežni generator UUID -a. Bilo koji UUID osim standardnog UUID -a prihvatljiv je za prilagođeni UUID. Međutim, tipična konvencija imenovanja označava prilagođenu uslugu 00000001-… i karakteristike unutar te prilagođene usluge 00000002-…

Evo sažete proračunske tablice usluga i karakteristika koje ćemo implementirati zajedno s njihovim UUID -ovima

Korak 2: Arduino kod

AŽURIRAJ BLUEFRUIT LE SPI PRIJATELJ

Prvo spojite Adafruit Bluefruit LE SPI prijatelja kako je navedeno u njihovom vodiču za spajanje i uključite Arduino uređaj. Prilikom skeniranja Bluetooth uređaja provjerite možete li pronaći Adafruit Bluefruit LE SPI prijatelja na svom Android uređaju. Preuzmite aplikaciju Bluefruit Connect, povežite se s Adafruit Bluefruit LE SPI prijateljem i dopustite joj da ažurira firmver na uređaju. Ovaj korak je važan. Ako ne ažurirate firmver, naredbe koje izdajete uređaju putem Arduina vjerojatno neće uspjeti i nećete imati očitu pogrešku da otkrijete u čemu je problem.

Evo mog repoa za ovaj projekt. Cijeli Arduino kod možete vidjeti ovdje.

PREGLED

Treba napomenuti nekoliko važnih stvari:

  1. U metodi setup () svi prilagođeni UUID-ovi moraju sadržavati "-" između svaka dva znaka. Na primjer, "AT+GATTADDCHAR = UUID128 = 00-00-00-05-62-7E-47-E5-A3-FC-DD-AB-D9-7A-A9-66" će raditi. "AT+GATTADDCHAR = UUID128 = 00000005-627E-47E5-A3fCDDABD97AA966" neće raditi.
  2. Imajte na umu da u metodi setup () "battery.begin (true);" poziva "ble.reset ();" automatski. Ako ne koristite uslugu baterije kao ja, morate resetirati ble modul (upotrijebite "ble.reset ();") gdje imam naredbu "battery.begin (true);".
  3. U metodi setup () promijenite "if (! Ble.begin (false))" u "if (! Ble.begin (true))" ako želite otkloniti pogreške.

Ovaj je kôd prilično jasan. Uključio sam opise svake prilagođene metode. Način postavljanja sprema BLE modul da djeluje kao GATT poslužitelj. Metoda petlje prolazi kroz lažni zamah modula žiroskopa akcelerometra (AGM) i generira slučajni broj od 1 do 100 za te vrijednosti. Baterija je ispražnjena za 1% radi simulacije korištenja baterije. Ovaj kod možete jednostavno zamijeniti stvarnim vrijednostima senzora. Ovaj kôd pretpostavlja da ćete prenijeti niz AGM podataka, dugih 6 mjerenja, a ne jedno mjerenje jer je analiza prozora AGM podataka vjerojatno korisnija od jedne točke podataka. Ako promijenite veličinu niza, imajte na umu da će biti potrebne promjene u kodu Android studija. Da biste snimili niz podataka, morate proslijediti brojač zajedno s podacima koje namjeravate poslati. Ovaj brojač omogućuje vam da pronađete aplikaciju u prozoru iz aplikacije Android studio, pa možete čekati da poslušate nedostajuće podatkovne točke u prozoru. Bez brojača ili s nizom druge veličine, projekt android studija će ili propustiti podatkovne točke ili će se zaglaviti u petlji čekajući preostale podatkovne točke koje očekuje.

Korak 3: Kôd Android Studija

Evo mog repoa za ovaj projekt. Cijeli kôd za Android Studio možete vidjeti ovdje.

PREGLED

Nastavit ću to ažurirati detaljnijim pregledom rada arduino i android koda u detaljima … Aplikacija je potpuno funkcionalna pa slobodno u međuvremenu pogledajte sami kôd.

Korak 4: Konačna prijava

Konačna prijava
Konačna prijava
Konačna prijava
Konačna prijava
Konačna prijava
Konačna prijava

Čestitamo! Vaša se aplikacija preuzima na vaš telefon, a vaš nosivi uređaj puni i prenosi podatke.

POKRENITE APLIKACIJU

Za početak kliknite ikonu pokretača za aplikaciju.

IZDAVAJTE DOZVOLE

Morat ćete odobriti korištenje nekih dopuštenja da bi aplikacija radila ispravno.

SKENIRAJTE UREĐAJE

Zatim kliknite gumb "Skeniraj" u gornjem lijevom kutu aplikacije.

ODABERITE SVOJ UREĐAJ

Zatim odaberite svoj nosivi uređaj s popisa dostupnih BLE uređaja. Njegovo ime je "BLE Arduino Hardware". GET DATADekajte dok aplikacija dobije AGM podatke i odredi gdje se korisnik još nalazi ili se kreće. POGLEDAJTE SVOJE REZULTATEProvjerite rezultate na ekranu! Pritisnite gumb za sinkronizaciju da biste ponovno pročitali podatke.

Preporučeni: