INHOUDSOPGAWE:

Bou 'n draagbare bewegingsopspoorder (BLE van Arduino tot 'n pasgemaakte Android Studio -app): 4 stappe
Bou 'n draagbare bewegingsopspoorder (BLE van Arduino tot 'n pasgemaakte Android Studio -app): 4 stappe

Video: Bou 'n draagbare bewegingsopspoorder (BLE van Arduino tot 'n pasgemaakte Android Studio -app): 4 stappe

Video: Bou 'n draagbare bewegingsopspoorder (BLE van Arduino tot 'n pasgemaakte Android Studio -app): 4 stappe
Video: 12 Top coole nieuwe gadgets van de nieuwste technologie 2024, November
Anonim
Bou 'n draagbare bewegingsopspoorder (BLE van Arduino tot 'n pasgemaakte Android Studio -app)
Bou 'n draagbare bewegingsopspoorder (BLE van Arduino tot 'n pasgemaakte Android Studio -app)

Bluetooth Low Energy (BLE) is 'n vorm van lae krag Bluetooth -kommunikasie. Draagbare toestelle, soos die slim kledingstukke wat ek help om by Predictive Wear te ontwerp, moet die kragverbruik waar moontlik beperk om die batterylewe te verleng en gereeld BLE te gebruik. Die Bluetooth Special Interest Group (SIG) definieer verskeie spesifikasies wat 'n toestel moet implementeer om met 'n Bluetooth -toestel te kommunikeer, wat hulle 'profiele' noem. Die meeste toepassingsprofiele gebruik die General Attribute Profile (GATT) om data oor 'n BLE -skakel te stuur. Daar is drie fundamentele konsepte in BLE: profiele, dienste en eienskappe.

Bluetooth SIG het baie algemene profiele, dienste en eienskappe gestandaardiseer. By die skep van pasgemaakte hardeware is dit egter dikwels nodig om aangepaste dienste en eienskappe te skep, en daar is nie baie tutoriale beskikbaar nie. Om sake moeiliker te maak, bied Adafruit geen leiding oor die ontwerp van mobiele toepassings om met hul BLE -modules te koppel nie, en die bronkode vir hul toepassings is moeilik om te verander.

Hierdie tutoriaal het ten doel om te verduidelik:

  1. Hoe om persoonlike GATT -dienste en -kenmerke te ontwerp
  2. Hoe om die Adafruit Bluefruit LE SPI Friend te programmeer om as 'n GATT -bediener vir hierdie persoonlike dienste en eienskappe op te tree
  3. Hoe om 'n Android -toestel te programmeer om as die GATT -kliënt op te tree om die data van die GATT -bediener te lees

Hierdie handleiding is nie bedoel om vertaal te word in 'n produksieklare toepassing nie - dit is bloot 'n inleiding tot BLE.

Agtergrondlesing:

  • Adafruit Bluefruit LE SPI Vriend dokumentasie
  • As u nie vertroud is met GATT of BLE nie

Voorrade

  • 1x - 'n Arduino -toestel (ek gebruik die UNO vir hierdie tutoriaal)
  • 1x - Adafruit Bluefruit LE SPI Friend
  • 8x - manlike tot manlike draaddrade
  • Basiese soldeertoerusting (om kopstukke op die SPI Friend te soldeer)
  • 'N Rekenaar (om die Arduino -toestel en die Android -toestel te programmeer)

Stap 1: Ontwerp persoonlike dienste en eienskappe

INLEIDING

Hierdie artikel lewer 'n uitstekende taak om te verduidelik hoe u persoonlike dienste en eienskappe kan ontwerp. Ek beveel sterk aan om hierdie artikel deur te lees. Ek gee hieronder 'n baie eenvoudige oorsig wat die subtiliteite in die guns van eenvoud veronagsaam.

GATT Services is 'n versameling kenmerke.

GATT -eienskappe bevat 'n eienskap, 'n waarde en nul of meer beskrywers.

  • Eiendom: hoe die data deur die kliënt (Android App) hanteer moet word, bv. lees, skryf, skryf sonder reaksie, stel in kennis en dui aan.
  • Waarde: die werklike waarde van die eienskap bv. 1089
  • Beskrywers: dit is inligting oor die waarde, bv. die eenheid, millisekondes

ONTWERP

Goed, nou weet u wat dienste en kenmerke is, ons moet uitvind hoe ons dienste en eienskappe kan ontwerp om ons persoonlike data te kry en dit van ons GATT -bediener (Arduino) na die kliënt (Android -app) te stuur. Kom ons kyk na 'n Arduino-toestel wat data versamel uit 'n versnellingsmeter-gyroscoopmodule (AJV). Ons wil gyroscoop- en versnellingsmetings van drie ruimtelike asse en die tyd wat hierdie metings geneem is, versamel en hierdie data na ons mobiele toepassing oordra. Ons wil ook weet wanneer ons die toestel moet laai, daarom wil ons die batteryniveau lees en dit na ons mobiele toepassing oordra.

1. Kan ons enige van die standaard dienste en eienskappe gebruik?

Bluetooth SIG het baie algemene dienste en eienskappe gestandaardiseer. Kyk eers na hierdie om te sien of u een van die gestandaardiseerde dienste en kenmerke kan kies. Die standaard dienste en kenmerke kan baie kleiner datapakkies gebruik, aangesien die Universally Unique Identifier (UUID) 16 bisse is, terwyl pasgemaakte dienste en eienskappe 128 bisse vir hul UUID's moet gebruik. Meer oor UUID's later. Uit ons soektog het ons 'n gestandaardiseerde 'batterydiens' gevind wat 'n kenmerkende 'batteryniveau' bevat.

2. Skei alle datawaardes wat u oor BLE wil stuur, in eienskappe en dienste

Ons kan ons persoonlike datapunte in een persoonlike diens verdeel in sewe persoonlike eienskappe. Ons sal hierdie diens die "AJV -diens" noem. Dit sal 7 eienskappe bevat: x-versnelling, y-versnelling, z-versnelling, x-gyroscoop, y-gyroscoop, z-gyroscoop en 'n tydsverwysing.

3. Bepaal die eienskappe wat nodig is vir elke eienskap

Daar is verskeie eienskappe wat 'n kenmerk kan hê.

  1. Lees: die kliënt (Android -app) kan 'n waarde van die GATT -bediener (Arduino) lees
  2. Skryf: die kliënt kan 'n waarde van die GATT -bediener verander
  3. Dui aan: die kliënt sal in kennis gestel word as 'n waarde van die GATT -bediener verander en daar van die kliënt verwag word om 'n bevestiging aan die GATT -bediener te stuur
  4. Stel in kennis: die kliënt sal in kennis gestel word as 'n waarde van die GATT -bediener verander en daar nie van die kliënt verwag word om 'n bevestiging aan die GATT -bediener te stuur nie

Vir hierdie tutoriaal stel ons al ons eienskappe voor, met die uitsondering van die batteryniveau, wat beide kennisgewings- en leeseienskappe het.

4. Genereer UUID's vir persoonlike dienste en eienskappe en vind standaard UUID's

Soos ek vroeër genoem het, gebruik Bluetooth SIG -gestandaardiseerde dienste en kenmerke 'n 16 -bits UUID, terwyl persoonlike dienste en eienskappe 128 -bits UUID's gebruik. Sien byvoorbeeld die nommer van die batterydiens wat op die Bluetooth SIG toegeken is. Die toegewysde nommer 0x180F verteenwoordig die 128-bits UUID "0000180F-0000-1000-8000-00805F9B34FB". Die vier syfers (16 bisse) in vetdruk is uniek vir die spesifieke gestandaardiseerde diens of kenmerk, terwyl die ander karakters tussen alle gestandaardiseerde dienste en eienskappe behoue bly. Aangesien beide die kliënt en die GATT -bediener weet dat gestandaardiseerde dienste en kenmerke slegs met die vetgedrukte syfers verskil, kan die pakkies groottes data aansienlik verminder word. Aangepaste dienste en eienskappe kan egter nie onder dieselfde aanname werk nie.

In plaas daarvan moet pasgemaakte dienste en kenmerke gebruik maak van onverkorte 128 bit UUID's. Hier is 'n aanlyn UUID -kragopwekker. Enige UUID anders as die gestandaardiseerde UUID is aanvaarbaar vir 'n pasgemaakte UUID. 'N Tipiese benamingskonvensie is egter om 'n pasgemaakte diens 00000001- … en kenmerke binne die aangepaste diens 00000002- …

Hier is 'n samevattende sigblad van die dienste en eienskappe wat ons saam met hul UUID's sal implementeer

Stap 2: Arduino -kode

OPDATEER DIE BLUEFRUIT LE SPI -VRIEND

Koppel eers die Adafruit Bluefruit LE SPI Friend aan soos hulle in hul aanmeldgids spesifiseer en skakel die Arduino -toestel aan. Maak seker dat u die Adafruit Bluefruit LE SPI Friend op u Android -toestel kan vind as u na Bluetooth -toestelle soek. Laai die Bluefruit Connect -app af, maak verbinding met die Adafruit Bluefruit LE SPI Friend en laat dit toe om die firmware op die toestel op te dateer. Hierdie stap is belangrik. As u nie die firmware opdateer nie, misluk die opdragte wat u die toestel via Arduino uitreik, en daar sal nie 'n duidelike fout wees om te ontdek wat die probleem is nie.

Hier is my repo vir hierdie projek. U kan die volledige Arduino -kode hier sien.

OORSIG

'N Paar belangrike dinge om op te let:

  1. In die setup () -metode moet alle aangepaste UUID's "-" tussen elke twee karakters bevat. Byvoorbeeld, "AT+GATTADDCHAR = UUID128 = 00-00-00-05-62-7E-47-E5-A3-FC-DD-AB-D9-7A-A9-66" werk. "AT+GATTADDCHAR = UUID128 = 00000005-627E-47E5-A3fCDDABD97AA966" werk nie.
  2. Let op dat "battery.begin (true) in die opset () -metode;" noem "ble.reset ();" outomaties. As u nie die batterydiens gebruik soos ek het nie, moet u die ble -module herstel (gebruik "ble.reset ();") waar ek die opdrag "battery.begin (true);") het.
  3. In die setup () -metode, verander "as (! Ble.begin (vals))" na "if (! Ble.begin (waar))" "as u wil ontfout.

Hierdie kode is redelik selfverduidelikend. Ek het beskrywings van elke pasgemaakte metode ingesluit. Die opstelmetode maak die BLE -module gereed om as die GATT -bediener op te tree. Die lusmetode gaan deur 'n valse sweep van die versnellingsmeter -gyroscoopmodule (AGM) en genereer 'n ewekansige getal van 1 tot 100 vir hierdie waardes. Die battery word met 1% leeggemaak om die gebruik van die battery na te boots. U kan hierdie kode maklik vervang met die werklike sensorwaardes. Hierdie kode veronderstel dat u 'n verskeidenheid AGM -data, 6 metings lank, eerder as 'n enkele meting sal oordra, aangesien die ontleding van 'n venster AGM -data waarskynlik meer bruikbaar is as 'n enkele punt data. As u die skikkinggrootte verander, let op dat daar veranderinge in die Android -ateljeekode nodig sal wees. Om 'n verskeidenheid data op te neem, moet u 'n teller deurgee saam met die data wat u van plan is om te stuur. Met hierdie toonbank kan u in die venster vind waar u is, sodat u kan wag om na die ontbrekende datapunte in die venster te luister. Sonder die toonbank of met 'n ander grootte skikking, mis die Android -studio -projek datapunte of sit dit vas in 'n lus en wag vir die oorblywende datapunte wat dit verwag.

Stap 3: Android Studio -kode

Hier is my repo vir hierdie projek. U kan die volledige Android Studio -kode hier sien.

OORSIG

Ek sal dit aanhou bywerk met 'n meer deeglike oorsig van hoe die arduino- en Android -kode in detail werk … Die app is volledig funksioneel, so kyk gerus intussen self na die kode.

Stap 4: Laaste aansoek

Finale aansoek
Finale aansoek
Finale aansoek
Finale aansoek
Finale aansoek
Finale aansoek

Baie geluk! U aansoek word na u telefoon afgelaai en u drabare toestel word gehef en data gestuur.

LAANS DIE APP

Om te begin, klik op die lanseerder -ikoon vir die toepassing.

TOELATINGS TOESTEMMINGS

U sal 'n paar toestemmings moet goedkeur om die program behoorlik te laat werk.

SKANDEER NA TOESTELLE

Klik vervolgens op die knoppie "Scan" in die linker boonste hoek van die app.

KIES U DRAAGBARE TOESTEL

Kies vervolgens u draagbare toestel uit die lys van beskikbare BLE -toestelle. Die naam is "BLE Arduino Hardware". KRY DATA Wag terwyl die app die AJV -data kry en bepaal waarheen die gebruiker stilstaan of beweeg. KYK U RESULTATE Kyk na die resultate op die skerm! Klik op die sync -knoppie om nog 'n lesing van data te kry.

Aanbeveel: