INHOUDSOPGAWE:
- Voorrade
- Stap 1: Ontwerp persoonlike dienste en eienskappe
- Stap 2: Arduino -kode
- Stap 3: Android Studio -kode
- Stap 4: Laaste aansoek
Video: Bou 'n draagbare bewegingsopspoorder (BLE van Arduino tot 'n pasgemaakte Android Studio -app): 4 stappe
2024 Outeur: John Day | [email protected]. Laas verander: 2024-01-30 07:23
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:
- Hoe om persoonlike GATT -dienste en -kenmerke te ontwerp
- Hoe om die Adafruit Bluefruit LE SPI Friend te programmeer om as 'n GATT -bediener vir hierdie persoonlike dienste en eienskappe op te tree
- 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ê.
- Lees: die kliënt (Android -app) kan 'n waarde van die GATT -bediener (Arduino) lees
- Skryf: die kliënt kan 'n waarde van die GATT -bediener verander
- 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
- 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:
- 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.
- 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.
- 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
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:
Hergebruik van ou skootrekenaaronderdele om 'n goedkoop draagbare stelsel te bou: 3 stappe (met foto's)
Hergebruik van ou skootrekenaaronderdele om 'n goedkoop draagbare stelsel te bou: Onlangs is my ou skootrekenaar dood en ek moes 'n nuwe een koop (RIP! 5520 sal u gemis word). Die moederbord van die skootrekenaar is dood en die skade is herstelbaar Tot onlangs het ek Framboospastei gebring en met IOT -sutff begin peuter, maar ek het 'n spesiale
Hoe om 'n grijperarm met 'n robot -beheerde bou te bou via Nrf24l01 Arduino: 3 stappe (met foto's)
Hoe om 'n gryparm -robot -beheerde robot gebou te word via Nrf24l01 Arduino: die instruksie " Hoe om 'n gryparm te volg, word 'n robot gestuur deur Nrf24l01 Arduino " sal verduidelik hoe u 'n drie -vryheidsgreeparm kan bou wat geïnstalleer is op 'n wiel met wiel aangedryf deur 'n L298N -module met dubbele motor met behulp van MEG
Draagbare pasgemaakte ligpaneel (tegnologie -verkenningskursus - TfCD - Tu Delft): 12 stappe (met foto's)
Drabare pasgemaakte ligpaneel (tegnologie -verkenningskursus - TfCD - Tu Delft): In hierdie instruksie leer u hoe u u eie verligte beeld kan maak wat u kan dra! Dit word gedoen deur die gebruik van EL -tegnologie bedek met 'n vinieldekaal en bande daaraan vasmaak sodat u dit om u arm kan dra. U kan ook dele van hierdie bladsy verander
Bou 'n pasgemaakte skerm in LCD Studio (vir G15 -sleutelbord en LCD -skerms): 7 stappe
Bou 'n pasgemaakte skerm in LCD Studio (vir G15 -sleutelbord en LCD -skerms).: Ok, as u pas u G15 -sleutelbord gekry het en baie onaangenaam is met die basiese skerms wat dit meegebring het, sal ek u deur die basiese beginsels van die gebruik van LCD Studio neem. om u eie te maak. Hierdie voorbeeld is die maak van 'n skerm wat slegs die bas
Hoe om 'n pasgemaakte rekenaar te bou (OPGEDOPTE !!): 7 stappe
Hoe om 'n pasgemaakte rekenaar te bou (OPGEDOED !!): Goed, so dit is weer MrNintendo. Ek het amper al my modding (behalwe case mods en dinge) laat val en oorgeskakel na rekenaarontwerp/opgradering/herstel. Ek het 'n paar instruksies gesien oor hoe om 'n rekenaar te bou, maar dit verduidelik nie regtig nie