Sadržaj:
- Pribor
- Korak 1: Dizajnirajte prilagođene usluge i karakteristike
- Korak 2: Arduino kod
- Korak 3: Kôd Android Studija
- Korak 4: Konačna prijava
Video: Izradite nosivi uređaj za praćenje kretanja (BLE od Arduina do prilagođene aplikacije za Android Studio): 4 koraka
2024 Autor: John Day | [email protected]. Zadnja promjena: 2024-01-30 09:32
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:
- Kako dizajnirati prilagođene usluge i karakteristike GATT -a
- Kako programirati Adafruit Bluefruit LE SPI prijatelja da djeluje kao GATT poslužitelj za ove prilagođene usluge i karakteristike
- 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.
- Pročitajte: klijent (aplikacija za Android) može pročitati vrijednost s GATT poslužitelja (Arduino)
- Napiši: Klijent može promijeniti vrijednost s GATT poslužitelja
- 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
- 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:
- 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.
- 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);".
- 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
Č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:
Izradite prilagođene karte za svoj Garmin GPS: 8 koraka (sa slikama)
Izradite prilagođene karte za svoj Garmin GPS: Ako imate Garmin GPS dizajniran za planinarenje i druge aktivnosti na otvorenom (uključujući niz drugih GPSMAP, eTrex, Colorado, Dakota, Oregon i Montana), ne morate zadovoljiti se kartama golih kostiju koje su na njega bile prethodno učitane. E
Praćenje kretanja pomoću MPU-6000 i fotona čestica: 4 koraka
Praćenje kretanja pomoću MPU-6000 i fotona čestica: MPU-6000 je 6-osni senzor za praćenje kretanja koji ima ugrađen troosni akcelerometar i troosni žiroskop. Ovaj senzor sposoban je učinkovito pratiti točan položaj i lokaciju objekta u trodimenzionalnoj ravnini. Može se zaposliti u
Izradite prilagođene radnje za Google asistenta: 12 koraka
Izradite prilagođene radnje za Google pomoćnika: Uvidjevši potencijal Google asistenta kako je predstavljen u Google I/O 18, kao i Volvo automobile u njihovom infotainment sustavu, nisam mogao odoljeti da ga ne isprobam. Ponovno sam upotrijebio jedan od svojih starijih projekata, VasttraPi i povezao ga s Google asistentom
Izrada Android aplikacije za mala poduzeća pomoću aplikacije MIT i Google Fusion Table: 7 koraka
Izrada Android aplikacije za mala poduzeća pomoću MIT APP -a i Google Fusion Table: Jeste li ikada poželjeli napraviti svoju vlastitu aplikaciju koja može biti dostupna u google play trgovini !!! Ako imate posao, ovaj će vam vodič promijeniti život. Nakon što ovo pažljivo pročitate, moći ćete izraditi vlastitu aplikaciju. Prije
IoT sustav za praćenje kućnog vremena s podrškom za Android aplikacije (Mercury Droid): 11 koraka
IoT sustav kućnog praćenja vremena s Android aplikacijskom podrškom (Mercury Droid): Uvod Mercury Droid jedna je od vrsta ugrađenog sustava IoT (Internet of Things) koji se temelji na mobilnoj aplikaciji Android Mercury Droid. Što je u stanju izmjeriti & nadzirati vremenske aktivnosti kod kuće. To je vrlo jeftin sustav kućnog praćenja vremena