Indholdsfortegnelse:
- Forbrugsvarer
- Trin 1: Design tilpassede tjenester og egenskaber
- Trin 2: Arduino -kode
- Trin 3: Android Studio -kode
- Trin 4: Endelig ansøgning
Video: Byg en bærbar bevægelsessporer (BLE fra Arduino til en brugerdefineret Android Studio App): 4 trin
2024 Forfatter: John Day | [email protected]. Sidst ændret: 2024-01-30 08:25
Bluetooth Low Energy (BLE) er en form for lavstrøm Bluetooth -kommunikation. Bærbare enheder, ligesom de smarte beklædningsgenstande, jeg hjælper med at designe på Predictive Wear, skal begrænse strømforbruget, hvor det er muligt, for at forlænge batteriets levetid og ofte bruge BLE. Bluetooth Special Interest Group (SIG) definerer flere specifikationer, en enhed skal implementere for at interagere med en Bluetooth -enhed, som de kalder "profiler". De fleste applikationsprofiler anvender GATT (General Attribute Profile) til at sende data via et BLE -link. Der er tre grundlæggende begreber i BLE: profiler, tjenester og attributter.
Bluetooth SIG har standardiseret mange almindelige profiler, tjenester og attributter. Når du opretter brugerdefineret hardware, er der imidlertid ofte et behov for at oprette brugerdefinerede tjenester og attributter, og der er ikke mange tutorials til rådighed. For at gøre sagen vanskeligere giver Adafruit ingen vejledning om design af mobilapplikationer, der skal parres med deres BLE -moduler, og kildekoden til deres applikationer er vanskelig at bakke om.
Denne vejledning har til formål at forklare:
- Sådan designes brugerdefinerede GATT -tjenester og egenskaber
- Sådan programmeres Adafruit Bluefruit LE SPI Friend til at fungere som en GATT -server for disse brugerdefinerede tjenester og egenskaber
- Sådan programmeres en Android -enhed til at fungere som GATT -klienten til at læse dataene fra GATT -serveren
Denne vejledning er ikke beregnet til at blive oversat til en produktionsklar applikation - dette er simpelthen en introduktion til BLE.
Baggrundslæsning:
- Adafruit Bluefruit LE SPI Friend dokumentation
- Hvis du ikke er bekendt med GATT eller BLE
Forbrugsvarer
- 1x - En Arduino -enhed (jeg bruger UNO til denne vejledning)
- 1x - Adafruit Bluefruit LE SPI Friend
- 8x - han- til hanstrømper
- Grundlæggende loddeudstyr (til lodningsspidser på SPI Friend)
- En computer (til at programmere Arduino -enheden og Android -enheden)
Trin 1: Design tilpassede tjenester og egenskaber
INTRODUKTION
Denne artikel gør et godt stykke arbejde med at forklare, hvordan man designer tilpassede tjenester og egenskaber. Jeg anbefaler stærkt at læse denne artikel igennem. Jeg giver et meget enkelt overblik herunder, der forsømmer finesser til fordel for enkelhed.
GATT Services er en samling af egenskaber.
GATT -egenskaber indeholder en egenskab, en værdi og nul eller flere deskriptorer.
- Ejendom: hvordan dataene skal håndteres af klienten (Android App) f.eks. læse, skrive, skrive uden svar, give besked og angive.
- Værdi: den faktiske værdi af karakteristikken f.eks. 1089
- Descriptors: dette er information om værdien f.eks. enheden, millisekunder
DESIGN
Okay, nu ved du, hvad tjenester og egenskaber er, vi skal finde ud af at designe nogle tjenester og egenskaber for at få vores tilpassede data og sende dem fra vores GATT -server (Arduino) til klienten (Android App). Lad os overveje en Arduino-enhed, der indsamler data fra et accelerometer-gyroskopmodul (AGM). Vi ønsker at indsamle gyroskop- og accelerationsmålinger fra tre rumakser og den tid, disse målinger blev taget og overføre disse data til vores mobilapplikation. Vi vil også vide, hvornår vi skal oplade enheden, så vi vil læse batteriniveauet og overføre det til vores mobilapplikation.
1. Kan vi bruge nogen af standardtjenesterne og -egenskaberne?
Bluetooth SIG har standardiseret mange almindelige tjenester og egenskaber. Kontroller først disse for at se, om du kan co-optage nogen af de standardiserede tjenester og egenskaber. Standardtjenesterne og -egenskaberne kan udnytte meget mindre datapakker, da Universally Unique Identifier (UUID) er 16 bits, mens brugerdefinerede tjenester og egenskaber skal bruge 128 bit til deres UUID'er. Mere om UUID'er senere. Fra vores søgning fandt vi en standardiseret "batteriservice", som indeholder et karakteristisk "batteriniveau".
2. Adskil alle dataværdier, du vil sende over BLE, til egenskaber og tjenester
Vi kan opdele vores brugerdefinerede datapunkter i syv tilpassede egenskaber inden for en brugerdefineret service. Vi kalder denne service "AGM service". Det vil indeholde 7 egenskaber: x-acceleration, y-acceleration, z-acceleration, x-gyroskop, y-gyroskop, z-gyroskop og en tidsreference.
3. Bestem de egenskaber, der er nødvendige for hver egenskab
Der er flere egenskaber, en egenskab kan have.
- Læs: Klienten (Android App) kan læse en værdi fra GATT -serveren (Arduino)
- Skriv: Klienten kan ændre en værdi fra GATT -serveren
- Angiv: Kunden får besked, hvis en værdi ændres fra GATT -serveren, og klienten forventes at sende bekræftelse til GATT -serveren
- Meddel: Klienten får besked, hvis en værdi ændres fra GATT -serveren, og klienten ikke forventes at sende bekræftelse til GATT -serveren
Til denne vejledning sætter vi alle vores karakteristika til at læse, med undtagelse af batteriniveauet, der vil have både meddelelses- og læseegenskaber.
4. Generer UUID'er til brugerdefinerede tjenester og egenskaber, og find standard UUID'er
Som jeg kort nævnte tidligere, bruger Bluetooth SIG -standardiserede tjenester og egenskaber en 16 bit UUID, mens brugerdefinerede tjenester og egenskaber anvender 128 bit UUID'er. Se f.eks. Det tildelte nummer til batteritjenesten på Bluetooth SIG. Det tildelte nummer 0x180F repræsenterer 128 bit UUID "0000180F-0000-1000-8000-00805F9B34FB". De fire cifre (16 bits) med fed skrift er unikke for den særlige standardiserede tjeneste eller egenskab, mens de andre tegn er bevaret mellem alle standardiserede tjenester og egenskaber. Da både klienten og GATT -serveren ved, at standardiserede tjenester og egenskaber kun varierer med fed skrift, kan pakkestørrelserne for data reduceres betydeligt. Brugerdefinerede tjenester og egenskaber kan imidlertid ikke fungere under samme antagelse.
I stedet skal brugerdefinerede tjenester og egenskaber anvende ikke -forkortede 128 bit UUID'er. Her er en online UUID generator. Enhver anden UUID end den standardiserede UUID er acceptabel for en brugerdefineret UUID. En typisk navngivningskonvention er imidlertid at betegne en brugerdefineret service 00000001-… og egenskaber inden for den brugerdefinerede service 00000002-…
Her er et sammenfattende regneark over de tjenester og egenskaber, vi vil implementere sammen med deres UUID'er
Trin 2: Arduino -kode
OPDATER BLUEFRUIT LE SPI -VENNEN
Tilslut først Adafruit Bluefruit LE SPI Friend, som de angiver i deres tilslutningsguide, og start Arduino -enheden. Sørg for, at du kan finde Adafruit Bluefruit LE SPI Friend på din Android -enhed, når du scanner efter Bluetooth -enheder. Download Bluefruit Connect -appen, opret forbindelse til Adafruit Bluefruit LE SPI Friend, og lad den opdatere firmwaren på enheden. Dette trin er vigtigt. Hvis du ikke opdaterer firmwaren, vil de kommandoer, du udsteder enheden via Arduino, sandsynligvis mislykkes, og der vil ikke være en åbenbar fejl for dig at opdage, hvad problemet er.
Her er min repo for dette projekt. Du kan se den fulde Arduino -kode her.
OVERSIGT
Et par vigtige ting at bemærke:
- I setup () -metoden skal alle brugerdefinerede UUID'er indeholde "-" mellem hvert andet tegn. For eksempel fungerer "AT+GATTADDCHAR = UUID128 = 00-00-00-05-62-7E-47-E5-A3-FC-DD-AB-D9-7A-A9-66". "AT+GATTADDCHAR = UUID128 = 00000005-627E-47E5-A3fCDDABD97AA966" fungerer ikke.
- Bemærk, at i setup () -metoden "battery.begin (true);" kalder "ble.reset ();" automatisk. Hvis du ikke bruger batteritjenesten som jeg har, skal du nulstille ble -modulet (brug "ble.reset ();"), hvor jeg har kommandoen "battery.begin (true);".
- I metoden setup () skal du ændre "if (! Ble.begin (false))" til "if (! Ble.begin (true))" ", hvis du vil fejlsøge.
Denne kode er temmelig selvforklarende. Jeg inkluderede beskrivelser af hver brugerdefineret metode. Opsætningsmetoden gør BLE -modulet klar til at fungere som GATT -serveren. Loop -metoden går gennem en falsk fejning af accelerometer -gyroskopmodulet (AGM) og genererer et tilfældigt tal fra 1 til 100 for disse værdier. Batteriet aflades med 1% for at simulere batteriforbrug. Du kan nemt erstatte denne kode med de aktuelle sensorværdier. Denne kode forudsætter, at du sender en række AGM -data, 6 målinger lange, frem for en enkelt måling, da analyse af et vindue med AGM -data sandsynligvis er mere nyttig end et enkelt datapunkt. Hvis du ændrer matrixstørrelsen, skal du bemærke, at der vil være nødvendige ændringer i Android -studiekoden. For at fange en matrix af data skal du sende en tæller sammen med de data, du har til hensigt at sende. Denne tæller giver dig mulighed for at finde, hvor du befinder dig i vinduet fra Android Studio -applikationen, så du kan vente med at lytte til de manglende datapunkter i vinduet. Uden tælleren eller med en anden størrelse array, vil android studio -projektet enten savne datapunkter eller sidde fast i en loop og vente på de resterende datapunkter, det forventer.
Trin 3: Android Studio -kode
Her er min repo for dette projekt. Du kan se den fulde Android Studio -kode her.
OVERSIGT
Jeg vil blive ved med at opdatere dette med et mere grundigt overblik over, hvordan arduino- og android -koden fungerer i detaljer … Appen er fuldt funktionel, så kig gerne selv på koden imens.
Trin 4: Endelig ansøgning
Tillykke! Din applikation downloades til din telefon, og din bærbare enhed oplades og sender data.
LASCHER APPEN
For at komme i gang skal du klikke på ikonet til launcher for applikationen.
TILLADELSETILLADELSER
Du skal godkende brugen af nogle tilladelser for at appen fungerer korrekt.
SCAN efter enheder
Klik derefter på knappen "Scan" i øverste venstre hjørne af appen.
VÆLG DIN BÆRBARE ENHED
Vælg derefter din bærbare enhed fra listen over tilgængelige BLE -enheder. Dens navn er "BLE Arduino Hardware". HENT DATA Vent, mens appen får AGM -dataene og bestemmer, hvor brugeren stadig er eller bevæger sig. SE DINE RESULTATER Tjek resultaterne på skærmen! Klik på synkroniseringsknappen for at få en anden læsning af data.
Anbefalede:
Sådan opretter du en Android -app med Android Studio: 8 trin (med billeder)
Sådan opretter du en Android -app med Android Studio: Denne vejledning lærer dig det grundlæggende i, hvordan du opbygger en Android -app ved hjælp af Android Studio -udviklingsmiljøet. Efterhånden som Android -enheder bliver mere og mere almindelige, vil efterspørgslen efter nye apps kun stige. Android Studio er en let at bruge (en
Byg denne 5Hz til 400KHz LED Sweep Signal Generator fra kits: 8 trin
Byg denne 5Hz til 400KHz LED Sweep Signal Generator fra kits: Byg denne nemme fejesignalgenerator fra let tilgængelige kits. Hvis du havde kigget på min sidste instruerbare (Make Professional Looking Front Panels), havde jeg muligvis undladt, hvad jeg arbejdede på på det tidspunkt, som var en signalgenerator. Jeg ville have en
Sådan installeres en brugerdefineret rom til Android -telefoner: 5 trin
Sådan installeres en brugerdefineret rom til Android -telefoner: Denne vejledning viser dig, hvordan du installerer en brugerdefineret rom på din Android -enhed TING, DU SKAL VIDE, FØR DU STARTER NOGET !: Jeg er ikke ansvarlig for nogen form for skade, du gør på din Android enhed (Dette betyder ikke rigtigt, at du vil beskadige din
Byg en brugerdefineret skærm i LCD Studio (til G15 -tastatur og LCD -skærme) .: 7 trin
Byg en brugerdefineret skærm i LCD Studio (til G15 -tastatur og LCD -skærme).: Ok, hvis du lige har fået dit G15 -tastatur og er meget imponeret over de grundlæggende skærme, der fulgte med det, vil jeg tage dig igennem det grundlæggende ved brug af LCD Studio at lave dit eget. Dette eksempel er at lave et display, der kun viser basen
Byg en hjemmebiograf -pc fra en ødelagt bærbar computer og en Tivo: 10 trin
Byg en hjemmebiograf -pc fra en ødelagt bærbar computer og en Tivo: I denne instruktive viser jeg dig, hvordan du laver en hjemmebiograf -pc ud af en (noget) ødelagt bærbar computer og et stort set tomt Tivo -chassis. Dette er en fantastisk måde at score en hjemmebiografcomputer (eller extender), der ser godt ud og fungerer bedre end en