Mündəricat:

Geyilə bilən Hərəkət İzləyicisi yaradın (Arduinodan Xüsusi Android Studio Tətbiqinə BLE): 4 addım
Geyilə bilən Hərəkət İzləyicisi yaradın (Arduinodan Xüsusi Android Studio Tətbiqinə BLE): 4 addım

Video: Geyilə bilən Hərəkət İzləyicisi yaradın (Arduinodan Xüsusi Android Studio Tətbiqinə BLE): 4 addım

Video: Geyilə bilən Hərəkət İzləyicisi yaradın (Arduinodan Xüsusi Android Studio Tətbiqinə BLE): 4 addım
Video: Test izahı (məcburi və məlumatverici nişanlar) 2024, Noyabr
Anonim
Geyilə bilən Hərəkət İzləyicisi yaradın (Arduinodan Xüsusi Android Studio Tətbiqinə BLE)
Geyilə bilən Hərəkət İzləyicisi yaradın (Arduinodan Xüsusi Android Studio Tətbiqinə BLE)

Bluetooth Aşağı Enerji (BLE), aşağı güclü Bluetooth ünsiyyət formasıdır. Predictive Wear -da dizayn etməyimə kömək edən ağıllı geyimlər kimi geyilə bilən cihazlar, batareyanın ömrünü uzatmaq üçün mümkün olduğu qədər enerji istehlakını məhdudlaşdırmalı və BLE -dən tez -tez istifadə etməlidir. Bluetooth Xüsusi Maraq Qrupu (SIG), bir cihazın "profillər" adlandırdıqları bir Bluetooth cihazı ilə qarşılıqlı əlaqə qurmaq üçün tətbiq etməli olduğu bir neçə spesifikasiyanı təyin edir. Əksər tətbiq profilləri BLE linki üzərindən məlumat göndərmək üçün Ümumi Xüsusiyyət Profilindən (GATT) istifadə edir. BLE -də üç əsas anlayış var: profillər, xidmətlər və atributlar.

Bluetooth SIG bir çox ümumi profilləri, xidmətləri və atributları standartlaşdırmışdır. Bununla birlikdə, xüsusi avadanlıq yaratarkən çox vaxt xüsusi xidmətlər və atributlar yaratmağa ehtiyac olur və çoxlu dərsliklər yoxdur. Məsələləri daha da çətinləşdirmək üçün Adafruit, BLE modulları ilə əlaqələndirmək üçün mobil tətbiqlərin dizaynına dair heç bir təlimat vermir və tətbiqləri üçün mənbə kodunu tərsinə çevirmək çətindir.

Bu təlimat izah etmək məqsədi daşıyır:

  1. Xüsusi GATT xidmətləri və xüsusiyyətlərini necə tərtib etmək olar
  2. Adafruit Bluefruit LE SPI Friend -ı bu xüsusi xidmətlər və xüsusiyyətlər üçün GATT serveri kimi fəaliyyət göstərmək üçün necə proqramlaşdırmaq olar.
  3. GATT serverindən məlumatları oxumaq üçün GATT müştəri kimi çıxış etmək üçün bir Android cihazını necə proqramlaşdırmaq olar

Bu dərslik istehsal üçün hazır bir tətbiqə çevrilə bilməz - bu sadəcə BLE -yə girişdir.

Arxa fonda oxu:

  • Adafruit Bluefruit LE SPI Friend sənədləri
  • GATT və ya BLE ilə tanış deyilsinizsə

Təchizat

  • 1x - Arduino cihazı (bu dərs üçün UNO -dan istifadə edirəm)
  • 1x - Adafruit Bluefruit LE SPI Dostu
  • 8x - kişidən kişiyə keçid telləri
  • Əsas lehimləmə avadanlığı (SPI Dostundakı başlıq pinlərinə)
  • Kompüter (Arduino cihazını və android cihazını proqramlaşdırmaq üçün)

Addım 1: Xüsusi Xidmətlər və Xüsusiyyətlər Dizaynı

GİRİŞ

Bu məqalə, xüsusi xidmətlərin və xüsusiyyətlərin necə dizayn ediləcəyini izah edən əla bir işdir. Bu məqaləni oxumağı çox tövsiyə edirəm. Aşağıda sadəliyin xeyrinə olan incəlikləri laqeyd edən çox sadə bir baxış təqdim edirəm.

GATT Xidmətləri xüsusiyyətlər toplusudur.

GATT Xüsusiyyətləri bir xüsusiyyət, bir dəyər və sıfır və ya daha çox təsviri ehtiva edir.

  • Mülkiyyət: məlumatların müştəri tərəfindən necə idarə olunacağı (Android Tətbiqi) məs. oxumaq, yazmaq, cavab vermədən yazmaq, bildirmək və göstərmək.
  • Dəyər: xarakteristikanın həqiqi dəyəri, məs. 1089
  • Təsvirçilər: bu dəyər haqqında məlumatdır, məsələn. vahid, milisaniyə

DİZAYN

Tamam, indi xidmətlərin və xüsusiyyətlərin nə olduğunu bilirsiniz, xüsusi məlumatlarımızı əldə etmək və GATT serverimizdən (Arduino) müştəriyə (Android Tətbiqi) göndərmək üçün bəzi xidmətlərin və xüsusiyyətlərin necə dizayn ediləcəyini anlamalıyıq. Bir accelerometer-gyroscope modulundan (AGM) məlumat toplayan bir Arduino cihazını nəzərdən keçirək. Giroskop və sürət ölçmələrini üç fəza oxundan və bu ölçülərin alınma vaxtından toplamaq və bu məlumatları mobil tətbiqimizə ötürmək istəyirik. Cihazı nə vaxt doldurmalı olduğumuzu da bilmək istəyirik, buna görə batareya səviyyəsini oxumaq və onu mobil tətbiqimizə ötürmək istəyirik.

1. Standart xidmətlərdən və xüsusiyyətlərdən istifadə edə bilərikmi?

Bluetooth SIG bir çox ümumi xidmətləri və xüsusiyyətlərini standartlaşdırmışdır. Əvvəlcə standart xidmətlərdən və xüsusiyyətlərdən hər hansı birini seçə biləcəyinizi yoxlamaq üçün bunları yoxlayın. Standart xidmətlər və xüsusiyyətlər daha kiçik məlumat paketlərindən istifadə edə bilər, çünki Ümumdünya Bənzərsiz Tanımlayıcı (UUID) 16 bitdir, xüsusi xidmətlər və xüsusiyyətlər isə UUID -ləri üçün 128 bit istifadə etməlidir. UUID haqqında daha sonra. Axtarışımızdan bir xarakterik "batareya səviyyəsi" olan standartlaşdırılmış "batareya xidməti" tapdıq.

2. BLE üzərindən göndərmək istədiyiniz bütün məlumat dəyərlərini xüsusiyyətlərə və xidmətlərə ayırın

Xüsusi məlumat nöqtələrimizi bir xüsusi xidmət daxilində yeddi xüsusi xüsusiyyətə bölə bilərik. Bu xidmətə "AGM xidməti" deyəcəyik. 7 xüsusiyyətdən ibarət olacaq: x-sürətləndirmə, y-sürətləndirmə, z-sürətləndirmə, x-giroskop, y-giroskop, z-giroskop və vaxt arayış.

3. Hər bir xüsusiyyət üçün lazım olan xüsusiyyətləri müəyyənləşdirin

Bir xüsusiyyətə sahib ola biləcək bir neçə xüsusiyyət var.

  1. Oxuyun: Müştəri (Android Tətbiqi) GATT Serverindən (Arduino) bir dəyəri oxuya bilər
  2. Yazın: Müştəri GATT Server -dən bir dəyəri dəyişə bilər
  3. Göstərin: GATT Serverdən bir dəyər dəyişərsə və Müştərinin GATT Serverə təsdiq göndərməsi gözlənilirsə Müştəri xəbərdar ediləcək.
  4. Bildir: GATT Serverdən bir dəyər dəyişərsə və Müştərinin GATT Serverə təsdiq göndərməsi gözlənilməzsə Müştəri xəbərdar ediləcək.

Bu təlimat üçün, həm xəbər vermə, həm də oxuma xüsusiyyətlərinə malik olan batareya səviyyəsi istisna olmaqla, bütün xüsusiyyətlərimizi oxumaq üçün təyin edəcəyik.

4. Xüsusi xidmətlər və xüsusiyyətlər üçün UUID yaradın və standart UUID tapın

Qısaca qeyd etdiyim kimi, Bluetooth SIG standartlaşdırılmış xidmətlər və xüsusiyyətlər 16 bit UUID, xüsusi xidmətlər və xüsusiyyətlər isə 128 bit UUID istifadə edir. Məsələn, Bluetooth SIG -də batareya xidmətinin təyin edilmiş nömrəsinə baxın. Təyin olunmuş 0x180F nömrəsi "0000180F-0000-1000-8000-00805F9B34FB" 128 bit UUID-ni təmsil edir. Qalın dörd rəqəm (16 bit) xüsusi standart xidmət və ya xarakterikdir, digər simvollar isə bütün standart xidmətlər və xüsusiyyətlər arasında qorunur. Həm müştəri, həm də GATT serveri standart xidmətlərin və xüsusiyyətlərin yalnız qalın rəqəmlərə görə dəyişdiyini bildiyindən, məlumatların paket ölçüləri əhəmiyyətli dərəcədə azaldıla bilər. Bununla birlikdə, xüsusi xidmətlər və xüsusiyyətlər eyni fərziyyə ilə işləyə bilməz.

Bunun əvəzinə, xüsusi xidmətlər və xüsusiyyətlər qısaldılmamış 128 bit UUID istifadə etməlidir. Budur onlayn bir UUID generatoru. Xüsusi UUID üçün standart UUID -dən başqa hər hansı bir UUID qəbul edilə bilər. Bununla birlikdə, tipik bir adlandırma konvensiyası 00000001-… xüsusi xidmətini və bu xüsusi xidmətin xüsusiyyətlərini 00000002-…

UUID'ləri ilə birlikdə tətbiq edəcəyimiz xidmətlərin və xüsusiyyətlərin xülasə cədvəli

Addım 2: Arduino Kodu

BLUEFRUIT LE SPI DOSTUNU GÜNCƏLƏNDİRİN

Birincisi, Adafruit Bluefruit LE SPI Dostunu bağlama təlimatında göstərdikləri kimi bağlayın və Arduino cihazını işə salın. Bluetooth cihazlarını axtararkən Android cihazınızda Adafruit Bluefruit LE SPI Dostunu tapa biləcəyinizə əmin olun. Bluefruit Connect tətbiqini yükləyin, Adafruit Bluefruit LE SPI Friend -ə qoşulun və cihazdakı proqram təminatını yeniləməsinə icazə verin. Bu addım vacibdir. Firmware -ni yeniləməsəniz, cihazı Arduino vasitəsi ilə verdiyiniz əmrlər çox güman ki uğursuz olacaq və problemin nə olduğunu öyrənmək üçün açıq bir səhv olmayacaq.

Bu layihə üçün repo burada. Tam Arduino kodunu burada görə bilərsiniz.

Baxış

Diqqət etməli olduğunuz bir neçə vacib şey:

  1. Setup () metodunda bütün xüsusi UUID-lərdə hər iki simvol arasında "-" işarəsi olmalıdır. Məsələn, "AT+GATTADDCHAR = UUID128 = 00-00-00-05-62-7E-47-E5-A3-FC-DD-AB-D9-7A-A9-66" işləyəcək. "AT+GATTADDCHAR = UUID128 = 00000005-627E-47E5-A3fCDDABD97AA966" işləməyəcək.
  2. Qeyd edək ki, setup () metodunda "battery.begin (true);" zənglər "ble.reset ();" avtomatik olaraq. Batareya xidmətini mənim kimi istifadə etmirsinizsə, "battery.begin (doğru);" əmrinə sahib olduğumda ble modulunu sıfırlamalısınız ("ble.reset ();" istifadə edin).
  3. Setup () metodunda, debug etmək istəyirsinizsə "if (! Ble.begin (false))" "if (! Ble.begin (true))" olaraq dəyişdirin.

Bu kod olduqca özünü izah edir. Hər bir xüsusi metodun təsvirini daxil etdim. Quraşdırma metodu BLE modulunu GATT serveri kimi fəaliyyətə hazır vəziyyətə gətirir. Döngü metodu, akselerometr gyroscope modulunun (AGM) saxta bir taramasından keçir və bu dəyərlər üçün 1 -dən 100 -ə qədər təsadüfi bir rəqəm yaradır. Batareya istifadəsini simulyasiya etmək üçün batareya 1% boşaldılır. Bu kodu həqiqi sensor dəyərləri ilə asanlıqla əvəz edə bilərsiniz. Bu kod, AGM məlumatlarının bir pəncərəsini təhlil etmək, ehtimal ki, bir məlumat nöqtəsindən daha faydalı olduğu üçün tək bir ölçüdən çox, 6 ölçü uzunluğunda bir AGM məlumatı ötürəcəyinizi güman edir. Dizinin ölçüsünü dəyişdirsəniz, Android studiya kodunda tələb olunan dəyişikliklərin olacağını unutmayın. Bir sıra məlumatları ələ keçirmək üçün göndərmək istədiyiniz məlumatlarla birlikdə sayğacdan keçməlisiniz. Bu sayğac, android studiya tətbiqetməsindən pəncərədə harada olduğunuzu tapmağa imkan verir, beləliklə pəncərədə itkin məlumat nöqtələrini dinləmək üçün gözləyə bilərsiniz. Sayğac olmadan və ya fərqli ölçülü bir sıra ilə, Android studiya layihəsi ya məlumat nöqtələrini əldən verəcək, ya da gözlədiyi qalan məlumat nöqtələrini gözləyən bir döngədə ilişəcək.

Addım 3: Android Studio Kodu

Bu layihə üçün repo burada. Tam Android Studio kodunu burada görə bilərsiniz.

Baxış

Arduino və android kodlarının necə işlədiyini daha ətraflı araşdırmaqla bunu yeniləməyə davam edəcəyəm … Tətbiq tam işləkdir, bu arada koda özünüz baxın.

Addım 4: Son müraciət

Son müraciət
Son müraciət
Son müraciət
Son müraciət
Son müraciət
Son müraciət

Təbrik edirik! Tətbiq telefonunuza endirilir və geyilə bilən cihazınız doldurulur və məlumat ötürülür.

Tətbiqi işə salın

Başlamaq üçün tətbiqin başlatma simgesini vurun.

İZNLƏRİ Qrant edin

Tətbiqin düzgün işləməsi üçün bəzi icazələrin istifadəsini təsdiqləməlisiniz.

CİHAZLARI ARA

Sonra, tətbiqin sol üst küncündəki "Tarama" düyməsini basın.

GÜZƏLƏNƏN CİHAZINIZI SEÇİN

Sonra, mövcud BLE cihazları siyahısından geyilə bilən cihazınızı seçin. Adı "BLE Arduino Hardware" dir. Tətbiq AGM məlumatlarını alarkən və istifadəçinin hələ də harada olduğunu və ya hərəkət etdiyini təyin edərkən məlumatları gözləyin. NƏTİCƏLƏRİNİZƏ baxın Ekranda nəticələri yoxlayın! Başqa bir məlumat oxumaq üçün sinxronizasiya düyməsini basın.

Tövsiyə: