Բովանդակություն:
- Պարագաներ
- Քայլ 1. Նախագծեք անհատական ծառայություններ և բնութագրեր
- Քայլ 2: Arduino կոդ
- Քայլ 3: Android Studio կոդ
- Քայլ 4: Վերջնական հայտ
Video: Կառուցեք wearable Motion Tracker (BLE Arduino- ից մինչև Android Studio- ի հատուկ ծրագիր). 4 քայլ
2024 Հեղինակ: John Day | [email protected]. Վերջին փոփոխված: 2024-01-30 09:45
Bluetooth Low Energy (BLE) - ը ցածր էներգիայի Bluetooth հաղորդակցության ձև է: Հագանելի սարքերը, ինչպես խելացի հագուստները, որոնց ես օգնում եմ նախագծել Predictive Wear- ում, պետք է հնարավորինս սահմանափակեն էներգիայի սպառումը, որպեսզի երկարացնեն մարտկոցի կյանքը և հաճախ օգտագործեն BLE: Bluetooth- ի հատուկ հետաքրքրությունների խումբը (SIG) սահմանում է մի քանի բնութագրեր, որոնք սարքը պետք է իրականացնի Bluetooth սարքի հետ փոխգործակցության համար, որոնք նրանք անվանում են «պրոֆիլներ»: Դիմումի պրոֆիլների մեծ մասն օգտագործում է Ընդհանուր հատկանիշների պրոֆիլը (GATT) ՝ տվյալները BLE հղումով ուղարկելու համար: BLE- ում կա երեք հիմնական հասկացություն `պրոֆիլներ, ծառայություններ և հատկանիշներ:
Bluetooth SIG- ը ստանդարտացրել է բազմաթիվ ընդհանուր պրոֆիլներ, ծառայություններ և հատկանիշներ: Այնուամենայնիվ, անհատական սարքավորումներ ստեղծելիս հաճախ կարիք կա ստեղծել հատուկ ծառայություններ և հատկանիշներ, և շատ ձեռնարկներ չկան: Բարդությունն ավելի բարդացնելու համար Adafruit- ը որևէ ուղեցույց չի տալիս բջջային հավելվածների նախագծման վերաբերյալ, որոնք զուգակցվում են իրենց BLE մոդուլների հետ, և նրանց ծրագրերի աղբյուրի կոդը դժվար է հակադարձել:
Այս ձեռնարկը նպատակ ունի բացատրել
- Ինչպես նախագծել անհատականացված GATT ծառայություններ և բնութագրեր
- Ինչպես ծրագրավորել Adafruit Bluefruit LE SPI Friend- ը ՝ որպես GATT սերվեր այս անհատական ծառայությունների և բնութագրերի համար
- Ինչպես ծրագրավորել 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. Որոշեք յուրաքանչյուր բնութագրի համար անհրաժեշտ հատկությունները
Կան մի քանի հատկություններ, որոնք բնութագիրը կարող է ունենալ:
- Կարդալ. Հաճախորդը (Android հավելված) կարող է կարդալ արժեքը GATT սերվերից (Arduino)
- Գրեք. Հաճախորդը կարող է փոխել արժեքը GATT սերվերից
- Նշեք. Հաճախորդը կտեղեկացվի, եթե արժեքը փոխվի GATT սերվերից, և սպասվում է, որ Հաճախորդը հաստատում կուղարկի GATT սերվերին:
- Տեղեկացնել. Հաճախորդը կտեղեկացվի, եթե արժեքը փոխվի 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ՆՈԹՅՈՆ
Մի քանի կարևոր բան, որ պետք է նշել.
- 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» չի աշխատի:
- Նկատի ունեցեք, որ setup () մեթոդում «battery.begin (true);»: կոչ է անում "ble.reset ();" ինքնաբերաբար: Եթե դուք չեք օգտագործում մարտկոցի ծառայությունը, ինչպես ես եմ, դուք պետք է վերակայեք ble մոդուլը (օգտագործեք «ble.reset ();»;)), որտեղ ես ունեմ «battery.begin (true);» հրամանը:
- 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- ի տվյալները և որոշի, թե որտեղ է կամ որտեղ է շարժվում օգտվողը: Տեսեք ձեր արդյունքները: Ստուգեք արդյունքները էկրանին: Կտտացրեք համաժամացման կոճակին ՝ տվյալների մեկ այլ ընթերցում ստանալու համար:
Խորհուրդ ենք տալիս:
Ինչպես ստեղծել Android ծրագիր Android Studio- ով. 8 քայլ (նկարներով)
Ինչպես ստեղծել Android ծրագիր Android Studio- ով. Այս ձեռնարկը կսովորեցնի ձեզ Android Studio- ի զարգացման միջավայրի միջոցով Android հավելված ստեղծելու հիմունքները: Քանի որ Android սարքերը դառնում են ավելի տարածված, նոր ծրագրերի պահանջարկը միայն կաճի: Android Studio- ն հեշտ օգտագործման համար է (
Կառուցեք տանկի ծավալի ընթերցող ՝ մինչև $ 30 -ով ՝ օգտագործելով ESP32 ՝ 5 քայլ (նկարներով)
Կառուցեք տանկի ծավալի ընթերցող ՝ մինչև $ 30 -ով ՝ օգտագործելով ESP32- ը. Իրերի ինտերնետը նախկինում բարդ սարքերի բազմաթիվ ծրագրեր է բերել բազմաթիվ արհեստագործ գարեջրագործների և գինեգործների տներ: Մակարդակի տվիչներով դիմումները տասնամյակներ շարունակ օգտագործվում են խոշոր նավթավերամշակման գործարաններում, ջրի մաքրման կայաններում և քիմիական
Կառուցեք այս 5Hz- ից մինչև 400KHz LED ազդանշանի մաքրման գեներատորը հավաքածուներից. 8 քայլ
Կառուցեք այս 5Hz- ից մինչև 400KHz LED Sweep ազդանշանի գեներատորը հավաքածուներից. Կառուցեք այս հեշտ մաքրման ազդանշանի գեներատորը մատչելի հավաքածուներից: Եթե դուք նայեիք իմ վերջին հրահանգավորին (Կատարեք մասնագիտական տեսք առջևի վահանակներ), ես գուցե խուսափեի այն բանից, ինչի վրա աշխատում էի: այն ժամանակ, որը ազդանշան գեներատոր էր: Ես ուզում էի
Պարզ IOS ծրագիր BLE մոդուլների համար. 4 քայլ
Պարզ IOS հավելված BLE մոդուլների համար. Այս հրահանգը ցույց է տալիս, թե ինչպես կարող եք ստեղծել iOS ծրագիր ՝ շատ հիմնական ֆունկցիոնալությամբ: Այս Instructable- ը չի անցնի iOS BLE հավելված պատրաստելու ամբողջ գործընթացով: Այն միայն բարձր մակարդակի ակնարկ կտա որոշ կարևոր տարրերի հետ
Կառուցեք երկակի 15 Վ էլեկտրամատակարարում ՝ դարակից անջատված մոդուլների միջոցով ՝ մինչև $ 50: 10 քայլ (նկարներով)
Կառուցեք երկակի 15 Վ էլեկտրամատակարարում ՝ օգտագործելով պահարանի մոդուլները 50 դոլարից ցածր արժեքով. Ներածություն. Եթե դուք զբաղվում եք ձայնագրությամբ զբաղվող հոբբիստով, ապա ձեզ ծանոթ կլինեն երկկողմանի էլեկտրասնուցման աղբյուրները: Lowածր էներգիայի աուդիո տախտակների մեծ մասը, ինչպիսիք են նախալարերը, պահանջում են ցանկացած վայրից +/- 5V- ից +/- 15V: Երկակի լարման էլեկտրամատակարարում ունենալը դա դարձնում է այդքան