Innholdsfortegnelse:

Bygg en bærbar bevegelsessporer (BLE fra Arduino til en tilpasset Android Studio -app): 4 trinn
Bygg en bærbar bevegelsessporer (BLE fra Arduino til en tilpasset Android Studio -app): 4 trinn

Video: Bygg en bærbar bevegelsessporer (BLE fra Arduino til en tilpasset Android Studio -app): 4 trinn

Video: Bygg en bærbar bevegelsessporer (BLE fra Arduino til en tilpasset Android Studio -app): 4 trinn
Video: Sett mer minne i en bærbar pc 2024, November
Anonim
Bygg en bærbar bevegelsessporer (BLE fra Arduino til en tilpasset Android Studio -app)
Bygg en bærbar bevegelsessporer (BLE fra Arduino til en tilpasset Android Studio -app)

Bluetooth Low Energy (BLE) er en form for lav effekt Bluetooth -kommunikasjon. Bærbare enheter, som de smarte plaggene jeg hjelper til med å designe på Predictive Wear, må begrense strømforbruket der det er mulig for å forlenge batterilevetiden, og ofte bruke BLE. Bluetooth Special Interest Group (SIG) definerer flere spesifikasjoner en enhet bør implementere for å samhandle med en Bluetooth -enhet, som de kaller "profiler". De fleste applikasjonsprofiler bruker General Attribute Profile (GATT) til å sende data over en BLE -lenke. Det er tre grunnleggende begreper i BLE: profiler, tjenester og attributter.

Bluetooth SIG har standardisert mange vanlige profiler, tjenester og attributter. Imidlertid er det ofte behov for å lage tilpassede tjenester og attributter når du lager tilpasset maskinvare, og det er ikke mange opplæringsprogrammer tilgjengelig. For å gjøre saken vanskeligere, gir Adafruit ingen veiledning om utforming av mobilapplikasjoner som skal parres med BLE -modulene, og kildekoden for applikasjonene er vanskelig å reversere.

Denne opplæringen tar sikte på å forklare:

  1. Hvordan designe tilpassede GATT -tjenester og egenskaper
  2. Hvordan programmere Adafruit Bluefruit LE SPI Friend til å fungere som en GATT -server for disse tilpassede tjenestene og egenskapene
  3. Hvordan programmere en Android -enhet til å fungere som GATT -klienten for å lese dataene fra GATT -serveren

Denne opplæringen er ikke ment å kunne oversettes til en produksjonsklar applikasjon - dette er ganske enkelt en introduksjon til BLE.

Bakgrunnslesning:

  • Adafruit Bluefruit LE SPI Vennedokumentasjon
  • Hvis du ikke er kjent med GATT eller BLE

Rekvisita

  • 1x - En Arduino -enhet (jeg bruker UNO for denne opplæringen)
  • 1x - Adafruit Bluefruit LE SPI Friend
  • 8x - mannlige til mannlige jumperledninger
  • Grunnleggende loddeutstyr (til loddetopphoder på SPI Friend)
  • En datamaskin (for å programmere Arduino -enheten og Android -enheten)

Trinn 1: Design tilpassede tjenester og egenskaper

INTRODUKSJON

Denne artikkelen gjør en god jobb med å forklare hvordan du designer tilpassede tjenester og egenskaper. Jeg anbefaler på det sterkeste å lese gjennom denne artikkelen. Jeg gir en veldig enkel oversikt nedenfor som forsømmer finesser til fordel for enkelhet.

GATT Services er en samling av egenskaper.

GATT -egenskaper inneholder en egenskap, en verdi og null eller flere beskrivelser.

  • Eiendom: hvordan dataene skal håndteres av klienten (Android App) f.eks. lese, skrive, skrive uten svar, varsle og indikere.
  • Verdi: den faktiske verdien av karakteristikken f.eks. 1089
  • Descriptors: dette er informasjon om verdien f.eks. enheten, millisekunder

DESIGN

Ok, nå vet du hva tjenester og egenskaper er, vi må finne ut hvordan vi designer noen tjenester og egenskaper for å få tilpassede data og sende dem fra vår GATT -server (Arduino) til klienten (Android App). La oss vurdere en Arduino-enhet som samler data fra en akselerometer-gyroskopmodul (AGM). Vi ønsker å samle gyroskop- og akselerasjonsmålinger fra tre romlige akser og tiden disse målingene ble tatt og overføre disse dataene til vår mobilapplikasjon. Vi vil også vite når vi må lade enheten, så vi vil lese batterinivået og overføre det til mobilappen vår.

1. Kan vi bruke noen av standardtjenestene og egenskapene?

Bluetooth SIG har standardisert mange vanlige tjenester og egenskaper. Sjekk først disse for å se om du kan velge mellom noen av de standardiserte tjenestene og egenskapene. Standardtjenestene og -egenskapene kan bruke mye mindre datapakker ettersom Universally Unique Identifier (UUID) er 16 bits, mens tilpassede tjenester og egenskaper må bruke 128 bits for sine UUID -er. Mer om UUID senere. Fra søket vårt fant vi en standardisert "batteriservice" som inneholder ett karakteristisk "batterinivå".

2. Skill alle dataverdier du vil sende over BLE til egenskaper og tjenester

Vi kan dele våre egendefinerte datapunkter ned i syv egendefinerte egenskaper innenfor en tilpasset tjeneste. Vi vil kalle denne tjenesten "AGM -tjenesten". Den vil inneholde 7 egenskaper: x-akselerasjon, y-akselerasjon, z-akselerasjon, x-gyroskop, y-gyroskop, z-gyroskop og en tidsreferanse.

3. Bestem egenskapene som trengs for hver egenskap

Det er flere egenskaper en egenskap kan ha.

  1. Les: Klienten (Android -appen) kan lese en verdi fra GATT -serveren (Arduino)
  2. Skriv: Klienten kan endre en verdi fra GATT -serveren
  3. Angi: Kunden vil bli varslet hvis en verdi endres fra GATT -serveren og det forventes at klienten sender bekreftelse til GATT -serveren
  4. Varsle: Kunden vil bli varslet hvis en verdi endres fra GATT -serveren og det ikke forventes at klienten sender bekreftelse til GATT -serveren

For denne opplæringen vil vi sette alle våre egenskaper til å lese, med unntak av batterinivået som vil ha både varslings- og leseegenskaper.

4. Generer UUID -er for tilpassede tjenester og egenskaper, og finn standard UUID -er

Som jeg kort nevnte tidligere, bruker Bluetooth SIG -standardiserte tjenester og egenskaper en 16 -bits UUID mens tilpassede tjenester og egenskaper bruker 128 -biters UUID -er. Se for eksempel batteritjenestetildelt nummer på Bluetooth SIG. Det tildelte nummeret 0x180F representerer 128-biters UUID "0000180F-0000-1000-8000-00805F9B34FB". De fire sifrene (16 bits) i fet skrift er unike for den spesifikke standardiserte tjenesten eller egenskapen, mens de andre tegnene er bevart mellom alle standardiserte tjenester og egenskaper. Siden både klienten og GATT -serveren vet at standardiserte tjenester og egenskaper bare varierer med fet skrift, kan pakkestørrelsene til data reduseres vesentlig. Tilpassede tjenester og egenskaper kan imidlertid ikke fungere under samme forutsetning.

I stedet må tilpassede tjenester og egenskaper benytte 128 -biters UUID -er som ikke er forkortet. Her er en online UUID -generator. Enhver UUID enn den standardiserte UUID er akseptabel for en tilpasset UUID. Imidlertid er en typisk navnekonvensjon å betegne en egendefinert tjeneste 00000001- … og egenskaper i den tilpassede tjenesten 00000002- …

Her er et oppsummerende regneark over tjenestene og egenskapene vi skal implementere sammen med deres UUID -er

Trinn 2: Arduino -kode

OPPDATER BLUEFRUIT LE SPI -VENNEN

Koble først til Adafruit Bluefruit LE SPI Friend slik de angir i tilkoblingsguiden og slå på Arduino -enheten. Sørg for at du kan finne Adafruit Bluefruit LE SPI Friend på din Android -enhet når du søker etter Bluetooth -enheter. Last ned Bluefruit Connect -appen, koble til Adafruit Bluefruit LE SPI Friend og la den oppdatere fastvaren på enheten. Dette trinnet er viktig. Hvis du ikke oppdaterer fastvaren, vil kommandoene du utsteder enheten via Arduino sannsynligvis mislykkes, og det vil ikke være en åpenbar feil for deg å finne ut hva problemet er.

Her er min repo for dette prosjektet. Du kan se hele Arduino -koden her.

OVERSIKT

Noen viktige ting å merke seg:

  1. I metoden setup () må alle egendefinerte UUID-er inneholde "-" mellom hvert annet tegn. For eksempel vil "AT+GATTADDCHAR = UUID128 = 00-00-00-05-62-7E-47-E5-A3-FC-DD-AB-D9-7A-A9-66" fungere. "AT+GATTADDCHAR = UUID128 = 00000005-627E-47E5-A3fCDDABD97AA966" fungerer ikke.
  2. Vær oppmerksom på at i setup () metoden, "battery.begin (true);" kaller "ble.reset ();" automatisk. Hvis du ikke bruker batteritjenesten slik jeg har, må du tilbakestille ble -modulen (bruk "ble.reset ();") der jeg har kommandoen "battery.begin (true);".
  3. I metoden setup () endrer du "if (! Ble.begin (false))" til "if (! Ble.begin (true))" "hvis du vil feilsøke.

Denne koden er ganske selvforklarende. Jeg inkluderte beskrivelser av hver tilpassede metode. Oppsettmetoden gjør BLE -modulen klar til å fungere som GATT -serveren. Sløyfemetoden går gjennom en falsk feiing av akselerometer -gyroskopmodulen (AGM) og genererer et tilfeldig tall fra 1 til 100 for disse verdiene. Batteriet tømmes med 1% for å simulere batteribruk. Du kan enkelt erstatte denne koden med de faktiske sensorverdiene. Denne koden forutsetter at du vil overføre en rekke AGM -data, 6 målinger lange, i stedet for en enkelt måling, ettersom å analysere et vindu med AGM -data sannsynligvis er mer nyttig enn et enkelt datapunkt. Hvis du endrer matrisestørrelsen, må du merke deg at det vil være endringer som kreves i android studio -koden. For å fange en rekke data må du sende en teller sammen med dataene du har tenkt å sende. Denne telleren lar deg finne hvor du er i vinduet fra android studio -applikasjonen, slik at du kan vente med å lytte til de manglende datapunktene i vinduet. Uten telleren eller med en annen størrelse, vil android studio -prosjektet enten gå glipp av datapunkter eller bli sittende fast i en sløyfe og vente på de gjenværende datapunktene det forventer.

Trinn 3: Android Studio Code

Her er min repo for dette prosjektet. Du kan se hele Android Studio -koden her.

OVERSIKT

Jeg vil fortsette å oppdatere dette med en mer grundig oversikt over hvordan arduino- og android -koden fungerer i detalj … Appen er fullt funksjonell, så se på koden selv i mellomtiden.

Trinn 4: Sluttapplikasjon

Endelig søknad
Endelig søknad
Endelig søknad
Endelig søknad
Endelig søknad
Endelig søknad

Gratulerer! Søknaden din lastes ned til telefonen, og den bærbare enheten lades og overfører data.

LANSER APPEN

For å komme i gang, klikk på startprogrammet for programmet.

TILBUD TILLATELSER

Du må godkjenne bruken av noen tillatelser for at appen skal fungere skikkelig.

SKANNE FOR ENHETER

Klikk deretter på "Scan" -knappen øverst til venstre i appen.

VELG DEN Bærbare enheten

Velg deretter den bærbare enheten fra listen over tilgjengelige BLE -enheter. Navnet er "BLE Arduino Hardware". HENT DATA Vent mens appen får AGM -dataene og bestemmer hvor brukeren er fremdeles eller beveger seg. SE RESULTATENE Sjekk resultatene på skjermen! Klikk på synkroniseringsknappen for å få en ny lesing av data.

Anbefalt: