Sadržaj:

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

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

Video: Napravite nosivi alat za praćenje kretanja (BLE od Arduina do prilagođene aplikacije za Android Studio): 4 koraka
Video: Leap Motion SDK 2024, Juli
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 u dizajniranju na lokaciji Predictive Wear, moraju ograničiti potrošnju energije kad god je to moguće kako bi se produžio vijek trajanja baterije i često koriste BLE. Bluetooth grupa za posebne interese (SIG) definira nekoliko specifikacija koje bi uređaj trebao implementirati za interakciju s Bluetooth uređajem, koje oni nazivaju "profili". Većina profila aplikacija koristi opći profil atributa (GATT) za slanje podataka putem BLE veze. Postoje tri osnovna koncepta u BLE -u: profili, usluge i atributi.

Bluetooth SIG je standardizirao 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 je teško preokrenuti.

Ovaj vodič ima za cilj objasniti:

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

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

Čitanje u pozadini:

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

Supplies

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

Korak 1: Dizajnirajte prilagođene usluge i karakteristike

UVOD

Ovaj članak odlično obavlja posao objašnjavajući kako dizajnirati prilagođene usluge i karakteristike. Toplo preporučujem da pročitate ovaj članak. U nastavku donosim vrlo jednostavan pregled koji zanemaruje suptilnosti u korist jednostavnosti.

GATT usluge su skup karakteristika.

GATT karakteristike 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 informacije o vrijednosti npr. jedinica, milisekunde

DIZAJN

U redu, sada znate koje su usluge i karakteristike, moramo smisliti kako dizajnirati neke usluge i karakteristike kako bismo dobili naše prilagođene podatke i poslali ih s našeg GATT servera (Arduino) klijentu (Android aplikacija). Razmotrimo Arduino uređaj koji prikuplja podatke iz akcelerometra-žiroskopskog modula (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 proč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 je standardizirao mnoge uobičajene usluge i karakteristike. Prvo ih provjerite kako biste provjerili 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 tačke podataka 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

Postoji nekoliko svojstava koje jedna karakteristika može imati.

  1. Pročitajte: Klijent (aplikacija za Android) može pročitati vrijednost s GATT servera (Arduino)
  2. Napišite: Klijent može promijeniti vrijednost sa GATT servera
  3. Navedite: Klijent će biti obaviješten ako se promijeni vrijednost sa GATT servera i od klijenta se očekuje da pošalje potvrdu na GATT server
  4. Obavijesti: Klijent će biti obaviješten ako se promijeni vrijednost sa GATT servera i od klijenta se ne očekuje da pošalje potvrdu GATT serveru

Za ovaj vodič ćemo postaviti sve naše karakteristike za čitanje, s izuzetkom nivoa napunjenosti baterije koji ć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 server znaju da se standardizirane usluge i karakteristike razlikuju samo podebljanim znamenkama, veličina 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 neabrevirane 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 FRIEND

Prvo spojite Adafruit Bluefruit LE SPI prijatelja kako je navedeno u njihovom vodiču za povezivanje 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će biti očite greške da otkrijete u čemu je problem.

Evo mog repo za ovaj projekat. 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 greške.

Ovaj kôd je 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 ove vrijednosti. Baterija je ispražnjena za 1% kako bi se simulirala upotreba baterije. Ovaj kod možete lako zamijeniti stvarnim vrijednostima senzora. Ovaj kôd pretpostavlja da ćete prenijeti niz AGM podataka, dužine 6 mjerenja, umjesto jednog mjerenja jer je analiza prozora AGM podataka vjerovatno korisnija od jedne tač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, tako da možete čekati da preslušate nedostajuće podatke u prozoru. Bez brojača ili s nizom različite veličine, Android studijski projekt ć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 za Android Studio

Evo mog repo za ovaj projekat. Cijeli kôd Android Studia možete vidjeti ovdje.

PREGLED

Nastavit ću ažurirati ovo detaljnijim pregledom načina na koji arduino i android kod radi detaljno … 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 aplikacija se preuzima na vaš telefon, a vaš nosivi uređaj se puni i prenosi podatke.

POKRENITE APLIKACIJU

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

IZDAVAJTE DOZVOLE

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

SKENIRAJTE UREĐAJE

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

ODABERITE SVOJ Nosivi 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 REZULTATEProvjerite rezultate na ekranu! Pritisnite dugme za sinhronizaciju da biste ponovo pročitali podatke.

Preporučuje se: