Talaan ng mga Nilalaman:

Bumuo ng isang Nakasuot na Tracker ng Paggalaw (BLE Mula sa Arduino sa isang Pasadyang Android Studio App): 4 na Hakbang
Bumuo ng isang Nakasuot na Tracker ng Paggalaw (BLE Mula sa Arduino sa isang Pasadyang Android Studio App): 4 na Hakbang

Video: Bumuo ng isang Nakasuot na Tracker ng Paggalaw (BLE Mula sa Arduino sa isang Pasadyang Android Studio App): 4 na Hakbang

Video: Bumuo ng isang Nakasuot na Tracker ng Paggalaw (BLE Mula sa Arduino sa isang Pasadyang Android Studio App): 4 na Hakbang
Video: 35 видео со страшными призраками: мегасборник 2023 года [V1] 2024, Hulyo
Anonim
Bumuo ng isang Nakasuot na Tracker ng Paggalaw (BLE Mula sa Arduino sa isang Pasadyang Android Studio App)
Bumuo ng isang Nakasuot na Tracker ng Paggalaw (BLE Mula sa Arduino sa isang Pasadyang Android Studio App)

Ang Bluetooth Low Energy (BLE) ay isang uri ng mababang kapangyarihan na komunikasyon sa Bluetooth. Ang mga naisusuot na aparato, tulad ng matalinong kasuotan na tinutulungan ko sa disenyo sa Predictive Wear, ay dapat na limitahan ang pagkonsumo ng kuryente hangga't maaari upang mapahaba ang buhay ng baterya, at madalas na magamit ang BLE. Tinutukoy ng Bluetooth Special Interes Group (SIG) ang ilang mga pagtutukoy na dapat ipatupad ng isang aparato upang makipag-ugnay sa isang aparatong Bluetooth, na tinawag nilang "mga profile". Karamihan sa mga profile ng application ay gumagamit ng Pangkalahatang Katangian ng Profile (GATT) upang magpadala ng data sa isang link na BLE. Mayroong tatlong pangunahing konsepto sa BLE: mga profile, serbisyo, at katangian.

Na-standardize ng Bluetooth SIG ang maraming mga karaniwang profile, serbisyo, at katangian. Gayunpaman, kapag lumilikha ng pasadyang hardware madalas may pangangailangan na lumikha ng mga pasadyang serbisyo at katangian at walang magagamit na mga tutorial. Upang gawing mas mahirap ang mga usapin, ang Adafruit ay hindi nagbibigay ng anumang patnubay sa pagdidisenyo ng mga mobile application upang ipares sa kanilang mga module na BLE at ang source code para sa kanilang mga aplikasyon ay mahirap i-reverse engineer.

Nilalayon ng tutorial na ito na ipaliwanag:

  1. Paano mag-disenyo ng mga pasadyang serbisyo at katangian ng GATT
  2. Paano i-program ang Adafruit Bluefruit LE SPI Friend upang kumilos bilang isang GATT server para sa mga pasadyang serbisyo at katangian na ito
  3. Paano magprogram ng isang Android device upang kumilos bilang client ng GATT upang mabasa ang data mula sa GATT server

Ang tutorial na ito ay hindi inilaan upang maisasalin sa isang handa nang produksyon - ito ay simpleng pagpapakilala sa BLE.

Pagbasa sa Background:

  • Dokumentasyon ng Adafruit Bluefruit LE SPI Kaibigan
  • Kung hindi ka pamilyar sa GATT o BLE

Mga gamit

  • 1x - Isang Arduino aparato (ginagamit ko ang UNO para sa tutorial na ito)
  • 1x - Adafruit Bluefruit LE SPI Kaibigan
  • 8x - male to male jumper wires
  • Pangunahing kagamitan sa paghihinang (sa mga solder header pin sa SPI Friend)
  • Isang computer (upang mai-program ang Arduino device at ang android device)

Hakbang 1: Disenyo ng Mga Pasadyang Serbisyo at Katangian

PANIMULA

Ang artikulong ito ay mahusay na trabaho na nagpapaliwanag kung paano mag-disenyo ng mga pasadyang serbisyo at katangian. Masidhing inirerekumenda kong basahin ang artikulong ito. Nagbibigay ako ng isang napaka-simpleng pangkalahatang ideya sa ibaba na pinapabayaan ang mga subtleties sa pabor ng pagiging simple.

Ang Mga Serbisyo ng GATT ay isang koleksyon ng mga katangian.

Naglalaman ang GATT Mga Katangian ng isang pag-aari, isang halaga, at zero o higit pang mga naglalarawan.

  • Pag-aari: kung paano ang data ay dapat hawakan ng client (Android App) hal. basahin, isulat, isulat nang walang tugon, abisuhan, at ipahiwatig.
  • Halaga: ang aktwal na halaga ng katangian hal. 1089
  • Mga Descriptor: ito ay impormasyon tungkol sa halagang hal. ang yunit, milliseconds

DESIGN

Okay, ngayon alam mo kung ano ang mga serbisyo at katangian, kailangan nating malaman kung paano magdisenyo ng ilang mga serbisyo at katangian upang makuha ang aming pasadyang data at ipadala ito mula sa aming GATT server (Arduino) sa client (Android App). Isaalang-alang natin ang isang Arduino aparato na nangongolekta ng data mula sa isang module ng accelerometer-gyroscope (AGM). Nais naming kolektahin ang mga sukat ng gyroscope at acceleration mula sa tatlong spatial axes at sa oras na kinuha ang mga pagsukat na ito at ipadala ang data na ito sa aming mobile application. Nais din naming malaman kung kailan namin kailangang singilin ang aparato, kaya nais naming basahin ang antas ng baterya at ipadala iyon sa aming mobile application.

1. Maaari ba nating magamit ang alinman sa karaniwang mga serbisyo at katangian?

Ang Bluetooth SIG ay nag-standardize ng maraming mga karaniwang serbisyo at katangian. Una, suriin ang mga ito upang makita kung maaari kang pumili ng anuman sa mga na-standardize na serbisyo at katangian. Ang karaniwang mga serbisyo at katangian ay maaaring gumamit ng mas maliit na mga packet ng data dahil ang Universally Unique Identifier (UUID) ay 16 bits habang ang mga pasadyang serbisyo at katangian ay dapat gumamit ng 128 bits para sa kanilang mga UUID. Higit pa sa UUIDs mamaya. Mula sa aming paghahanap, nakakita kami ng isang pamantayan na "serbisyo sa baterya" na naglalaman ng isang katangian na "antas ng baterya".

2. Paghiwalayin ang lahat ng mga halaga ng data na nais mong ipadala sa paglipas ng BLE sa mga katangian at serbisyo

Maaari naming masira ang aming mga pasadyang puntos ng data sa pitong pasadyang mga katangian sa loob ng isang pasadyang serbisyo. Tatawagan namin ang serbisyong ito na "serbisyong AGM". Maglalaman ito ng 7 mga katangian: x-acceleration, y-acceleration, z-acceleration, x-gyroscope, y-gyroscope, z-gyroscope, at isang oras na sanggunian.

3. Tukuyin ang mga katangiang kinakailangan para sa bawat katangian

Mayroong maraming mga pag-aari na maaaring magkaroon ng isang katangian.

  1. Basahin: ang Client (Android App) ay maaaring basahin ang isang halaga mula sa GATT Server (Arduino)
  2. Isulat: maaaring baguhin ng Client ang isang halaga mula sa GATT Server
  3. Ipahiwatig: ang Client ay aabisuhan kung ang isang halaga ay nagbago mula sa GATT Server at ang kliyente ay inaasahang magpadala ng kumpirmasyon sa GATT Server
  4. Abisuhan: ang Client ay aabisuhan kung ang isang halaga ay nagbago mula sa GATT Server at ang kliyente ay hindi inaasahang magpadala ng kumpirmasyon sa GATT Server

Para sa tutorial na ito, itatakda namin ang lahat ng aming mga katangian upang mabasa, maliban sa antas ng baterya na magkakaroon ng parehong abisuhan at basahin ang mga katangian.

4. Bumuo ng mga UUID para sa mga pasadyang serbisyo at katangian at makahanap ng mga karaniwang UUID

Tulad ng panandaliang nabanggit ko nang mas maaga, ang mga pamantayan ng Bluetooth SIG na pamantayan at serbisyo ay gumagamit ng 16 bit UUID habang ang mga pasadyang serbisyo at katangian ay gumagamit ng 128 bit UUIDs. Halimbawa, tingnan ang naitalagang numero ng serbisyo sa baterya sa Bluetooth SIG. Ang nakatalagang numero na 0x180F ay kumakatawan sa 128 bit UUID "0000180F-0000-1000-8000-00805F9B34FB". Ang apat na mga digit (16 na piraso) na naka-bold ay natatangi sa partikular na istandardisadong serbisyo o katangian habang ang iba pang mga character ay nakatipid sa pagitan ng lahat ng mga pamantayan at serbisyo na katangian. Dahil alam ng kapwa client at GATT server na ang standardized na mga serbisyo at katangian ay nag-iiba lamang sa pamamagitan ng naka-bold na mga digit, ang mga laki ng packet ng data ay maaaring mabawasan nang malaki. Gayunpaman, ang mga pasadyang serbisyo at katangian ay hindi maaaring gumana sa ilalim ng parehong palagay na ito.

Sa halip, ang mga pasadyang serbisyo at katangian ay dapat na gumamit ng hindi binigkas na 128 bit UUIDs. Narito ang isang online UUID generator. Anumang UUID maliban sa pamantayan ng UUID ay katanggap-tanggap para sa isang pasadyang UUID. Gayunpaman, ang isang tipikal na kombensyon sa pagpapangalan ay upang magpahiwatig ng isang pasadyang serbisyo 00000001-… at mga katangian sa loob ng pasadyang serbisyo na 00000002-…

Narito ang isang buod ng spreadsheet ng mga serbisyo at katangian na ipapatupad namin kasama ang kanilang mga UUID

Hakbang 2: Arduino Code

I-UPDATE ANG BLUEFRUIT LE SPI FRIEND

Una, i-hook up ang Adafruit Bluefruit LE SPI Friend na tinukoy nila sa kanilang gabay sa hookup at paganahin ang Arduino aparato. Tiyaking mahahanap mo ang Adafruit Bluefruit LE SPI Friend sa iyong android device kapag nag-scan para sa mga Bluetooth device. I-download ang Bluefruit Connect app, kumonekta sa Adafruit Bluefruit LE SPI Friend at payagan itong i-update ang firmware sa aparato. Mahalaga ang hakbang na ito. Kung hindi mo i-update ang firmware, ang mga utos na inilalabas mo ang aparato sa pamamagitan ng Arduino ay malamang na mabibigo at walang halatang error para sa iyo upang matuklasan kung ano ang problema.

Narito ang aking repo para sa proyektong ito. Maaari mong makita ang buong Arduino code dito.

PAGTATAYA

Ilang mahahalagang bagay na dapat tandaan:

  1. Sa paraan ng pag-setup (), ang lahat ng mga pasadyang UUID ay dapat maglaman ng "-" sa pagitan ng bawat dalawang character. Halimbawa, gagana ang "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" ay hindi gagana.
  2. Tandaan na sa pag-setup () na paraan, "baterya.begin (totoo);" tawag sa "ble.reset ();" awtomatiko Kung hindi mo ginagamit ang serbisyo ng baterya tulad ng mayroon ako, kailangan mong i-reset ang module ng ble (gamitin ang "ble.reset ();") kung saan mayroon akong utos na "baterya.begin (totoo);".
  3. Sa paraan ng pag-setup (), baguhin ang "kung (! Ble.begin (false))" sa "kung (! Ble.begin (totoo))" kung nais mong i-debug.

Ang code na ito ay medyo nagpapaliwanag. Nagsama ako ng mga paglalarawan ng bawat pasadyang pamamaraan. Hinahanda ng pamamaraang pag-setup ang module na BLE na kumilos bilang server ng GATT. Ang pamamaraang loop ay dumaan sa isang pekeng pagwawalis ng accelerometer gyroscope module (AGM) at bumubuo ng isang random na numero mula 1 hanggang 100 para sa mga halagang ito. Ang baterya ay pinatuyo ng 1% upang gayahin ang paggamit ng baterya. Maaari mong palitan ang code na ito ng mga aktwal na halaga ng sensor nang madali. Ipinapalagay ng code na ito na magpapadala ka ng isang hanay ng data ng AGM, 6 na sukat ang haba, sa halip na isang solong pagsukat habang ang pag-aaral ng isang window ng data ng AGM ay malamang na mas kapaki-pakinabang kaysa sa isang solong punto ng data. Kung binago mo ang laki ng array, tandaan na magkakaroon ng mga pagbabago na kinakailangan sa android studio code. Upang makuha ang isang hanay ng data, dapat kang pumasa sa isang counter kasama ang data na nais mong ipadala. Pinapayagan ka ng counter na ito na mahanap kung nasaan ka sa window mula sa application ng android studio upang maghintay ka upang makinig sa mga nawawalang puntos ng data sa window. Nang walang counter o may iba't ibang laki ng sukat, ang proyekto ng android studio ay maaaring makaligtaan ang mga puntos ng data o ma-stuck sa isang loop na naghihintay para sa natitirang mga puntos ng data na inaasahan nito.

Hakbang 3: Android Studio Code

Narito ang aking repo para sa proyektong ito. Maaari mong makita ang buong code ng Android Studio dito.

PAGTATAYA

Patuloy kong maa-update ito sa isang mas masusing pangkalahatang ideya ng kung paano gumana nang detalyado ang arduino at android code … Ang app ay ganap na gumagana kaya huwag mag-atubiling tingnan ang code sa iyong pansamantala.

Hakbang 4: Pangwakas na Paglalapat

Pangwakas na Paglalapat
Pangwakas na Paglalapat
Pangwakas na Paglalapat
Pangwakas na Paglalapat
Pangwakas na Paglalapat
Pangwakas na Paglalapat

Binabati kita! Ang iyong application ay nai-download sa iyong telepono at ang iyong naisusuot na aparato ay sisingilin at nagpapadala ng data.

Ilunsad ang APP

Upang magsimula, mag-click sa icon ng launcher para sa application.

MAGBIGAY NG MGA Pahintulot

Kakailanganin mong aprubahan ang paggamit ng ilang mga pahintulot para sa app na gumana nang maayos.

I-SCAN PARA SA DEVICES

Susunod, mag-click sa pindutang "I-scan" sa kaliwang sulok sa itaas ng app.

PILIIN ANG IYONG NAKAKARAMIT NA DEVICE

Susunod, piliin ang iyong naisusuot na aparato mula sa listahan ng mga magagamit na mga BLE device. Ang pangalan nito ay "BLE Arduino Hardware". GET DATAWait habang ang app ay nakakakuha ng data ng AGM at tumutukoy kung saan ang gumagamit ay pa rin o gumagalaw. TINGNAN ANG IYONG MGA RESULTA Suriin ang mga resulta sa screen! I-click ang pindutan ng pag-sync upang makakuha ng isa pang pagbabasa ng data.

Inirerekumendang: