Բովանդակություն:

Կառուցեք wearable Motion Tracker (BLE Arduino- ից մինչև Android Studio- ի հատուկ ծրագիր). 4 քայլ
Կառուցեք wearable Motion Tracker (BLE Arduino- ից մինչև Android Studio- ի հատուկ ծրագիր). 4 քայլ

Video: Կառուցեք wearable Motion Tracker (BLE Arduino- ից մինչև Android Studio- ի հատուկ ծրագիր). 4 քայլ

Video: Կառուցեք wearable Motion Tracker (BLE Arduino- ից մինչև Android Studio- ի հատուկ ծրագիր). 4 քայլ
Video: Gopro hero 9 vlog տեղադրման պարզ պարագաներ 2024, Նոյեմբեր
Anonim
Կառուցեք wearable Motion Tracker (BLE Arduino- ից մինչև Android Studio- ի հատուկ ծրագիր)
Կառուցեք wearable Motion Tracker (BLE Arduino- ից մինչև Android Studio- ի հատուկ ծրագիր)

Bluetooth Low Energy (BLE) - ը ցածր էներգիայի Bluetooth հաղորդակցության ձև է: Հագանելի սարքերը, ինչպես խելացի հագուստները, որոնց ես օգնում եմ նախագծել Predictive Wear- ում, պետք է հնարավորինս սահմանափակեն էներգիայի սպառումը, որպեսզի երկարացնեն մարտկոցի կյանքը և հաճախ օգտագործեն BLE: Bluetooth- ի հատուկ հետաքրքրությունների խումբը (SIG) սահմանում է մի քանի բնութագրեր, որոնք սարքը պետք է իրականացնի Bluetooth սարքի հետ փոխգործակցության համար, որոնք նրանք անվանում են «պրոֆիլներ»: Դիմումի պրոֆիլների մեծ մասն օգտագործում է Ընդհանուր հատկանիշների պրոֆիլը (GATT) ՝ տվյալները BLE հղումով ուղարկելու համար: BLE- ում կա երեք հիմնական հասկացություն `պրոֆիլներ, ծառայություններ և հատկանիշներ:

Bluetooth SIG- ը ստանդարտացրել է բազմաթիվ ընդհանուր պրոֆիլներ, ծառայություններ և հատկանիշներ: Այնուամենայնիվ, անհատական սարքավորումներ ստեղծելիս հաճախ կարիք կա ստեղծել հատուկ ծառայություններ և հատկանիշներ, և շատ ձեռնարկներ չկան: Բարդությունն ավելի բարդացնելու համար Adafruit- ը որևէ ուղեցույց չի տալիս բջջային հավելվածների նախագծման վերաբերյալ, որոնք զուգակցվում են իրենց BLE մոդուլների հետ, և նրանց ծրագրերի աղբյուրի կոդը դժվար է հակադարձել:

Այս ձեռնարկը նպատակ ունի բացատրել

  1. Ինչպես նախագծել անհատականացված GATT ծառայություններ և բնութագրեր
  2. Ինչպես ծրագրավորել Adafruit Bluefruit LE SPI Friend- ը ՝ որպես GATT սերվեր այս անհատական ծառայությունների և բնութագրերի համար
  3. Ինչպես ծրագրավորել Android սարքը ՝ հանդես գալու որպես GATT հաճախորդ ՝ GATT սերվերից տվյալները կարդալու համար

Այս ձեռնարկը նախատեսված չէ թարգմանվել արտադրության համար պատրաստ հավելվածի. Սա պարզապես BLE- ի ներածություն է:

Նախապատմության ընթերցում

  • Adafruit Bluefruit LE SPI Ընկերոջ փաստաթղթերը
  • Եթե ծանոթ չեք GATT- ին կամ BLE- ին

Պարագաներ

  • 1x - Arduino սարք (ես այս ձեռնարկի համար օգտագործում եմ ՄԱԿ -ը)
  • 1x - Adafruit Bluefruit LE SPI Ընկեր
  • 8x - արականից տղամարդ ցատկող լարեր
  • Soldոդման հիմնական սարքավորումներ (SPI Friend- ում գլխագիծ կապելու համար)
  • Համակարգիչ (Arduino սարքը և android սարքը ծրագրավորելու համար)

Քայլ 1. Նախագծեք անհատական ծառայություններ և բնութագրեր

ՆԵՐԱՈԹՅՈՆ

Այս հոդվածը հիանալի աշխատանք է կատարում ՝ բացատրելով, թե ինչպես ձևավորել հատուկ ծառայություններ և բնութագրեր: Ես խորհուրդ եմ տալիս կարդալ այս հոդվածը: Ստորև ներկայացնում եմ մի շատ պարզ ակնարկ, որը անտեսում է նրբությունները հօգուտ պարզության:

GATT ծառայությունները բնութագրերի հավաքածու են:

GATT- ի բնութագրերը պարունակում են հատկություն, արժեք և զրո կամ ավելի նկարագրիչ:

  • Հատկություն. Ինչպես պետք է տվյալները մշակվեն հաճախորդի կողմից (Android հավելված), օրինակ. կարդալ, գրել, գրել առանց պատասխանի, ծանուցել և նշել:
  • Արժեք. Բնութագրի իրական արժեքը, օրինակ. 1089 թ
  • Նկարագրիչներ. Սա տեղեկատվություն է արժեքի մասին, օրինակ. միավորը, միլիվայրկյաններ

ԴԻIGԱՅՆ

Լավ, հիմա դուք գիտեք, թե ինչ են ծառայություններն ու բնութագրերը, մենք պետք է պարզենք, թե ինչպես ձևավորել որոշ ծառայություններ և բնութագրեր ՝ մեր անհատական տվյալները ստանալու համար և դրանք ուղարկել մեր GATT սերվերից (Arduino) հաճախորդին (Android հավելված): Դիտարկենք Arduino սարք, որը տվյալներ է հավաքում արագացուցիչ-գիրոսկոպի մոդուլից (AGM): Մենք ցանկանում ենք հավաքել գիրոսկոպ և արագացման չափումներ երեք տարածական առանցքներից և այդ չափումների կատարման ժամանակից և փոխանցել այս տվյալները մեր բջջային հավելվածին: Մենք նաև ցանկանում ենք իմանալ, թե երբ պետք է լիցքավորենք սարքը, ուստի ցանկանում ենք կարդալ մարտկոցի մակարդակը և դա փոխանցել մեր բջջային հավելվածին:

1. Կարո՞ղ ենք օգտագործել ստանդարտ ծառայություններից և բնութագրերից որևէ մեկը:

Bluetooth SIG- ը ստանդարտացրել է բազմաթիվ ընդհանուր ծառայություններ և բնութագրեր: Նախ, ստուգեք դրանք ՝ տեսնելու, թե արդյոք կարող եք համատեղել ստանդարտացված ծառայություններից և բնութագրերից որևէ մեկը: Ստանդարտ ծառայություններն ու բնութագրերը կարող են օգտագործել շատ ավելի փոքր տվյալների փաթեթներ, քանի որ ունիվերսալ եզակի նույնացուցիչը (UUID) 16 բիթ է, մինչդեռ մաքսային ծառայություններն ու բնութագրերը պետք է օգտագործեն 128 բիթ իրենց UUID- ների համար: UUID- ների մասին ավելի ուշ: Մեր որոնումից մենք գտանք ստանդարտացված «մարտկոցի ծառայություն», որը պարունակում է մեկ բնորոշ «մարտկոցի մակարդակ»:

2. Առանձնացրեք տվյալների բոլոր արժեքները, որոնք ցանկանում եք ուղարկել BLE- ի միջոցով բնութագրերի և ծառայությունների մեջ

Մենք կարող ենք մեր անհատական տվյալների կետերը բաժանել յոթ անհատական բնութագրի մեկ մաքսային ծառայության շրջանակներում: Մենք այս ծառայությունը կանվանենք «AGM ծառայություն»: Այն պարունակում է 7 բնութագիր ՝ x- արագացում, y- արագացում, z- արագացում, x- գիրոսկոպ, y- գիրոսկոպ, z- գիրոսկոպ և ժամանակի հղում:

3. Որոշեք յուրաքանչյուր բնութագրի համար անհրաժեշտ հատկությունները

Կան մի քանի հատկություններ, որոնք բնութագիրը կարող է ունենալ:

  1. Կարդալ. Հաճախորդը (Android հավելված) կարող է կարդալ արժեքը GATT սերվերից (Arduino)
  2. Գրեք. Հաճախորդը կարող է փոխել արժեքը GATT սերվերից
  3. Նշեք. Հաճախորդը կտեղեկացվի, եթե արժեքը փոխվի GATT սերվերից, և սպասվում է, որ Հաճախորդը հաստատում կուղարկի GATT սերվերին:
  4. Տեղեկացնել. Հաճախորդը կտեղեկացվի, եթե արժեքը փոխվի GATT սերվերից, և չի սպասվում, որ Հաճախորդը հաստատում կուղարկի GATT սերվերին:

Այս ձեռնարկի համար մենք կկարգավորենք ընթերցման մեր բոլոր բնութագրերը, բացառությամբ մարտկոցի մակարդակի, որը կունենա ինչպես ծանուցման, այնպես էլ կարդալու հատկություններ:

4. Ստեղծեք UUID- ներ ՝ հատուկ ծառայությունների և բնութագրերի համար և գտեք ստանդարտ UUID- ներ

Ինչպես համառոտ նշեցի ավելի վաղ, Bluetooth SIG ստանդարտացված ծառայություններն ու բնութագրերը օգտագործում են 16 բիթանոց UUID, մինչդեռ հատուկ ծառայություններն ու բնութագրերը օգտագործում են 128 բիթանոց UUID- ներ: Օրինակ, տեսեք Bluetooth SIG- ի մարտկոցի ծառայության համարը: Նշանակված 0x180F համարը ներկայացնում է 128 բիթանոց UUID «0000180F-0000-1000-8000-00805F9B34FB»: Չորս թվանշանները (16 բիթ) համարձակ հատուկ են որոշակի ստանդարտացված ծառայության կամ բնութագրի համար, մինչդեռ մյուս նիշերը պահպանվում են բոլոր ստանդարտացված ծառայությունների և բնութագրերի միջև: Քանի որ և՛ հաճախորդը, և՛ GATT սերվերը գիտեն, որ ստանդարտացված ծառայություններն ու բնութագրերը տարբերվում են միայն համարձակ թվանշաններով, տվյալների փաթեթների չափերը կարող են էապես կրճատվել: Այնուամենայնիվ, մաքսային ծառայությունները և բնութագրերը չեն կարող գործել նույն ենթադրության ներքո:

Փոխարենը, մաքսային ծառայությունները և բնութագրերը պետք է օգտագործեն չկրճատված 128 բիթանոց UUID- ներ: Ահա առցանց UUID գեներատոր: Ստանդարտացված UUID- ից բացի ցանկացած UUID ընդունելի է սովորական UUID- ի համար: Այնուամենայնիվ, անվանման տիպիկ պայմանագիրը նշանակում է մաքսային ծառայություն 00000001-… և այդ մաքսային ծառայության 00000002-…

Ահա այն ծառայությունների և բնութագրերի ամփոփ աղյուսակը, որոնք մենք կիրականացնենք դրանց UUID- ների հետ միասին:

Քայլ 2: Arduino կոդ

ԹԱՐՄԱՆԵԼ BLUEFRUIT LE SPI ԸՆԿԵՐ

Նախ, միացրեք Adafruit Bluefruit LE SPI Friend- ը, քանի որ նրանք նշում են իրենց միացման ուղեցույցում և միացրեք Arduino սարքը: Bluetooth սարքեր փնտրելիս համոզվեք, որ կարող եք գտնել Adafruit Bluefruit LE SPI Friend- ը ձեր android սարքում: Ներբեռնեք Bluefruit Connect ծրագիրը, միացեք Adafruit Bluefruit LE SPI Friend- ին և թույլ տվեք նրան թարմացնել սարքի որոնվածը: Այս քայլը կարևոր է: Եթե դուք չեք թարմացնում որոնվածը, ապա Arduino- ի միջոցով սարքը թողարկող հրամանները, ամենայն հավանականությամբ, ձախողվելու են, և ձեզ համար ակնհայտ սխալ չի լինի ՝ պարզելու, թե որն է խնդիրը:

Ահա իմ ռեպոն այս նախագծի համար: Arduino- ի ամբողջական ծածկագիրը կարող եք տեսնել այստեղ:

ԱՌԱVIՆՈԹՅՈՆ

Մի քանի կարևոր բան, որ պետք է նշել.

  1. Setup () մեթոդում բոլոր սովորական UUID- ները պետք է պարունակեն «-» յուրաքանչյուր երկու նիշերի միջև: Օրինակ, «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» չի աշխատի:
  2. Նկատի ունեցեք, որ setup () մեթոդում «battery.begin (true);»: կոչ է անում "ble.reset ();" ինքնաբերաբար: Եթե դուք չեք օգտագործում մարտկոցի ծառայությունը, ինչպես ես եմ, դուք պետք է վերակայեք ble մոդուլը (օգտագործեք «ble.reset ();»;)), որտեղ ես ունեմ «battery.begin (true);» հրամանը:
  3. Setup () մեթոդում փոխեք «if (! Ble.begin (false))» - ը «if (! Ble.begin (true))», եթե ցանկանում եք կարգաբերել:

Այս ծածկագիրը բավականին ինքնուրույն բացատրելի է: Ես ներառեցի յուրաքանչյուր հարմարեցված մեթոդի նկարագրություններ: Կարգավորման մեթոդը BLE մոդուլը պատրաստ է գործելու որպես GATT սերվեր: Օղակի մեթոդը անցնում է արագացուցիչի գիրոսկոպի մոդուլի (AGM) կեղծ մաքրմամբ և այդ արժեքների համար ստեղծում է պատահական թիվ 1 -ից 100 -ի: Մարտկոցը լիցքաթափվում է 1% -ով `մարտկոցի օգտագործումը նմանեցնելու համար: Դուք կարող եք հեշտությամբ փոխարինել այս ծածկագիրը սենսորների իրական արժեքներով: Այս ծածկագիրը ենթադրում է, որ դուք կփոխանցեք AGM տվյալների զանգված, 6 չափման երկարությամբ, և ոչ թե մեկ չափում, քանի որ AGM տվյալների պատուհանի վերլուծությունը, ամենայն հավանականությամբ, ավելի օգտակար է, քան տվյալների մեկ կետը: Եթե դուք փոխում եք զանգվածի չափը, նշեք, որ փոփոխություններ կպահանջվեն android ստուդիայի կոդում: Տվյալների զանգված հավաքելու համար դուք պետք է փոխանցեք հաշվիչ այն տվյալների հետ, որոնք մտադիր եք ուղարկել: Այս հաշվիչը թույլ է տալիս Android- ի ստուդիայի հավելվածից գտնել պատուհանի տեղը, որպեսզի կարողանաք սպասել պատուհանում բաց թողնված տվյալների կետերին լսելու համար: Առանց հաշվիչի կամ այլ չափի զանգվածի, android ստուդիայի նախագիծը կամ բաց կթողնի տվյալների կետերը, կամ կխրվի հանգույցի մեջ ՝ սպասելով մնացած տվյալների կետերին, որոնք ակնկալում է:

Քայլ 3: Android Studio կոդ

Ահա իմ ռեպոն այս նախագծի համար: Android Studio- ի ամբողջական կոդը կարող եք տեսնել այստեղ:

ԱՌԱVIՆՈԹՅՈՆ

Ես կշարունակեմ դա թարմացնել ՝ ավելի մանրամասն ակնարկով, թե ինչպես են աշխատում arduino և android ծածկագրերը մանրամասնորեն … Հավելվածը լիովին գործում է, այնպես որ միևնույն ժամանակ ազատ զգալ ինքներդ նայեք ծածկագրին:

Քայլ 4: Վերջնական հայտ

Վերջնական հայտ
Վերջնական հայտ
Վերջնական հայտ
Վերջնական հայտ
Վերջնական հայտ
Վերջնական հայտ

Շնորհավորում եմ: Ձեր դիմումը ներբեռնվում է ձեր հեռախոսում, իսկ ձեր կրելի սարքը լիցքավորվում և փոխանցում է տվյալները:

Գործարկել ծրագիրը

Սկսելու համար կտտացրեք ծրագրի գործարկիչի պատկերակին:

ԹՈMՅԼ ԹՈMՅԼՈԹՅՈՆՆԵՐ

Հավելվածի ճիշտ աշխատանքի համար անհրաժեշտ կլինի հաստատել որոշ թույլտվությունների օգտագործումը:

ՍԱՆ ՍԱՐՔԵՐԻ ՀԱՄԱՐ

Հաջորդը, կտտացրեք «Սկան» կոճակին ՝ ծրագրի վերին ձախ անկյունում:

ԸՆՏՐԵՔ ՁԵՐ ՀԱՍԱ ՍԱՐՔԸ

Հաջորդը, ընտրեք ձեր կրելի սարքը առկա BLE սարքերի ցանկից: Նրա անունն է «BLE Arduino Hardware»: ՍՏԱԵՔ ՏՎՅԱԼՆԵՐ Սպասեք, մինչ ծրագիրը կստանա AGM- ի տվյալները և որոշի, թե որտեղ է կամ որտեղ է շարժվում օգտվողը: Տեսեք ձեր արդյունքները: Ստուգեք արդյունքները էկրանին: Կտտացրեք համաժամացման կոճակին ՝ տվյալների մեկ այլ ընթերցում ստանալու համար:

Խորհուրդ ենք տալիս: