Sadržaj:
- Supplies
- Korak 1: Dizajnirajte prilagođene usluge i karakteristike
- Korak 2: Arduino kod
- Korak 3: Kôd za Android Studio
- Korak 4: Konačna prijava
Video: Napravite nosivi alat za praćenje kretanja (BLE od Arduina do prilagođene aplikacije za Android Studio): 4 koraka
2024 Autor: John Day | [email protected]. Zadnja izmjena: 2024-01-30 08:04
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:
- Kako dizajnirati prilagođene GATT usluge i karakteristike
- Kako programirati Adafruit Bluefruit LE SPI prijatelja da djeluje kao GATT server za ove prilagođene usluge i karakteristike
- 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.
- Pročitajte: Klijent (aplikacija za Android) može pročitati vrijednost s GATT servera (Arduino)
- Napišite: Klijent može promijeniti vrijednost sa GATT servera
- 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
- 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:
- 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 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
Č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:
Sistem za praćenje kretanja glave za VR: 8 koraka
Head Motion Motion Tracking System za VR: Moje ime je Sam KODO, U ovom tutorijalu ću vas korak po korak naučiti kako koristiti Arduino IMU senzore za izgradnju sistema za praćenje glave za VR. U ovom projektu trebat će vam: - LCD zaslon HDMI : https: //www.amazon.com/Elecrow-Capacitive-interfac…- An
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 pokreta koji ima ugrađen troosni akcelerometar i troosni žiroskop. Ovaj senzor je sposoban za efikasno praćenje tačne pozicije i lokacije objekta u trodimenzionalnoj ravni. Može se zaposliti u
Praćenje kretanja pomoću MPU-6000 i Arduino Nano: 4 koraka
Praćenje kretanja pomoću MPU-6000 i Arduino Nano: MPU-6000 je 6-osni senzor za praćenje pokreta koji ima ugrađen troosni akcelerometar i troosni žiroskop. Ovaj senzor je sposoban za efikasno praćenje tačne pozicije i lokacije objekta u trodimenzionalnoj ravni. Može se zaposliti u
Izrada Android aplikacije za mala preduzeća pomoću aplikacije MIT i Google Fusion Table: 7 koraka
Izrada Android aplikacije za mala preduzeća koristeći MIT APP i Google Fusion Table: Jeste li ikada poželjeli napraviti vlastitu aplikaciju koja može biti dostupna u google play trgovini !!! Ako imate posao, ovaj vodič će vam promijeniti život. Nakon što ovo pažljivo pročitate, moći ćete napraviti vlastitu aplikaciju. Befo
IoT sistem za praćenje kućnog vremena sa podrškom za Android aplikacije (Mercury Droid): 11 koraka
IoT sistem za nadzor kućnog vremena sa podrškom za Android aplikacije (Mercury Droid): UvodMercury Droid je jedna vrsta ugrađenog sistema IoT (Internet stvari) zasnovanog na Android mobilnoj aplikaciji Mercury Droid. Koji je u stanju izmjeriti & nadzirati vremenske aktivnosti kod kuće. To je vrlo jeftin sistem za praćenje vremena kod kuće