Բովանդակություն:
- Քայլ 1. Մի փոքր Bluetooth ցածր էներգիայի (BLE) մասին
- Քայլ 2. Սկանավորում և միացման ցուցիչներ
- Քայլ 3. Jոյստիկի և կոճակի իրադարձությունների վերծանումը:
- Քայլ 4: VR տուփի շահագործում. Ջոյստիկ
- Քայլ 5: VR տուփի շահագործում. Գործարկեք կոճակներ
- Քայլ 6: VR տուփի շահագործում. A/B կոճակներ
- Քայլ 7: VR տուփի շահագործում. C/D կոճակներ
- Քայլ 8: Եզրակացություն
Video: ESP32 Bluetooth BLE Հեռակառավարիչ ՝ 8 քայլ
2024 Հեղինակ: John Day | [email protected]. Վերջին փոփոխված: 2024-01-30 09:50
Այս նախագիծը օրինակ է, թե ինչպես կարելի է միացնել էժան Bluetooth BLE ճոպանուղին ESP32- ին: Կոդը գրվել է օգտագործելով Arduino IDE Ver 1.8.5 ՝ ESP32 հավելումով: Օգտագործված BLE ջոյսթիկը առևտրային սարք է, որը կարող եք գնել ինտերնետից 20,00 դոլարից պակաս գնով կամ ձեր տեղական հինգBELoW խանութից 5,00 դոլարով:
Այս նախագծի համար օգտագործված ջոյսթիկը Spektrum VR Control Bluetooth հեռակառավարիչ է: Այն վաճառվում է որպես Android և IOS պլանշետների հետ աշխատող ՝ որպես ջոյսթիկ/մկնիկ ՝ VR ականջակալներով օգտագործելու համար:
VR Control Bluetooth հեռակառավարման վահանակն ունի մեկ և մեկական ջոյսթիք X և Y առանցքներով, առջևի երկու կոճակ և բռնակի վեց կոճակ: Կոճակներից երկուսը միացման/անջատման և ռեժիմի կառավարման համար են: Մնացած չորս կոճակները կարող են օգտագործվել այն ամենի համար, ինչ ցանկանում եք: Այս նախագիծը կմախք կամ շրջանակ է, որը կարգավորում է Bluetooth- ի բոլոր կոճակների և ջոստիկի ինտերֆեյսը և վերծանումը: Մնում է միայն գործառույթի կանչեր ավելացնել ՝ կարգավորելու այն, ինչ ցանկանում եք կոճակներն ու ջոյսթիկը: Այս շրջանակն օգտագործելու համար պետք չէ որևէ բան իմանալ Bluetooth- ի մասին:
Կան բազմաթիվ վեբ կայքեր ՝ Arduino IDE- ի և ESP32 հավելումը տեղադրելու մանրամասն հրահանգներով: Ես չեմ պատրաստվում այստեղ կրկնել այդ տեղեկատվությունը: Google- ում և հետևեք հրահանգներին:
Շրջանակը IoT Sharing- ի կողմից հրապարակված BLE հաճախորդի օրինակի ադապտացիան է: Այն կարող եք գտնել այստեղ: Դուք կարող եք ուսումնասիրել այս ծածկագիրը `պատկերացում կազմելու համար, թե ինչպես է աշխատում BLE- ն: Expressif- ն ունի ամբողջական օրինակ GATT BLE հաճախորդի համար և մանրամասն բացատրում է գործողությունը (գրված չէ Arduino IDE- ի համար): Դուք կարող եք այն ստանալ այստեղ:
Սա BLE ձեռնարկ չէ: Ես մանրամասն չեմ բացատրի, թե ինչպես է աշխատում կոդը: Ես կօգտագործեմ BLE տերմինաբանությունը `նկարագրելու ջոյսթիկի որոշ առանձնահատկություններ: Կոդի այն մասը, որը դուք պետք է փոփոխեք ձեր նախագծի համար, մանրամասն կբացատրվի, որը կօգնի ձեզ այն փոփոխել: Այս հրահանգը կարճ պահելու և ջոյսթիք օգտագործելու վրա կենտրոնացած լինելու շրջանակը սահմանափակ է:
Քայլ 1. Մի փոքր Bluetooth ցածր էներգիայի (BLE) մասին
Սա նախատեսված չէ որպես BLE- ի ձեռնարկ: Երբ ես սկսեցի այս նախագիծը, ես չգիտեի BLE- ի և Classic Bluetooth- ի միջև տարբերությունը: Ես պարզապես ուզում էի տեսնել, թե արդյոք կարո՞ղ եմ ձեռք բերել գնված ջիստիկը աշխատել ESP32- ի հետ: Հետևյալ տեքստում ես օգտագործում եմ BLE տերմինաբանությունը ՝ պարզեցված ակնարկ տալու համար, թե ինչպես է աշխատում BLE- ն:
BLE- ն օգտագործում է հաճախորդ/սերվեր ճարտարապետություն: Մեկ սարքը սերվեր է, որը մատուցում է ծառայություններ: Մյուս սարքը ծառայություններ սպառող հաճախորդ է: Էլեկտրաէներգիայի պահանջները ցածր պահելու համար BLE- ն փոխանցում է միայն տեղեկատվության փոքր փաթեթներ, երբ փոփոխություն է տեղի ունենում: Joyոյսթիկի դեպքում ջոյսթիք սարքը սերվեր է: Որպես սերվեր, այն գովազդում է ինքն իրեն և հարցման դեպքում կփոխանցի իր մատուցած ծառայությունների ցանկը: Joyոյսթիք սարքը գովազդում է հինգ ծառայություն: Մեզ հետաքրքրող միակ ծառայությունը BLE HID (Մարդկային միջերեսային սարք) ծառայությունն է: BLE ծառայությունն ունի այն, ինչ հայտնի է որպես դրա հետ կապված բնութագրեր: Բնութագիրը սովորաբար տվյալների աղբյուր է: Theոյսթիկի HID ծառայությունն ունի տասը բնութագիր: Բնութագրերից մի քանիսը կրկնօրինակ են և անտեսված: Մեզ հետաքրքրում են միայն BLE հաշվետվության բնութագրերը, որոնք ունեն Read and Notify հնարավորություններ: Բնութագրերից երեքը համապատասխանում են այս պահանջներին և տալիս են տվյալներ ջոյսթիկի դիրքի և կոճակների վիճակի մասին: Երբ ծանուցումը միացված է, սերվերը կուղարկի տվյալների փաթեթներ, երբ համապատասխան բնութագրում փոփոխություն հայտնաբերվի:
Շրջանակը հաստատում է, որ իր գտած սերվերն ունի BLE HID ծառայություն և այնուհետև հնարավորություն կտա ծանուցումներ երեք հաշվետվությունների բնութագրերի վերաբերյալ, որոնք ապահովում են ջոյստիկի և կոճակի վիճակի տեղեկատվություն: Այնուհետև, երբ կոճակը սեղմվում կամ բաց է թողնվում կամ ջոյսթիկը տեղափոխվում է, ESP32- ը ստանում է տվյալների փաթեթ, որը տեղեկացնում է, թե որն է նոր ջոստիկի դիրքը և/կամ որոշ կոճակների վիճակը:
Քայլ 2. Սկանավորում և միացման ցուցիչներ
Շրջանակը սահմանում է երկու LEDS, GREENLED և BLUELED և դրանք վերագրում է ESP32- ի GPIO երկու կապում: GREENLED- ը լուսավորվում է, երբ ESP32- ը փնտրում է BLE ժոշտիկը: Երբ ջոյսթիկը գտնվի, GREENLED- ն անջատված է, և BLUELED- ը լուսավորված է ՝ նշելու համար, որ կապը հաստատված է, և դուք պատրաստ եք գնալ: Եթե կապը կորած է, BLUELED- ն անջատված է, ESP32- ը վերակայված է, GREENLED- ը լուսավորված է և սկանավորումը նորից սկսվում է: Եթե ջոյսթիկը չի գտնվում երեսուն վայրկյանի ընթացքում, ապա սկանավորումը դադարում է, իսկ GREENLED- ն անջատվում է: Հինգ վայրկյանից հետո սկանավորումը նորից սկսվում է, և GENENLED- ը միացված է:
Վերջնական արդյունքն այն է, որ ESP32- ը կշարունակի փնտրել ջոյսթիկը, մինչև այն չգտնի: Միացումն ավարտվելուց հետո, եթե այն այնուհետև կորչի, ESP32- ը ինքնաբերաբար կվերականգնվի և նորից կսկսի սկանավորել: ESP32- ը վերակայված է, քանի որ չկան ESP32 SDK գործառույթներ, որոնք կարող են վերականգնել Bluetooth- ը ՝ սկանավորումը վերսկսելու համար:
Քայլ 3. Jոյստիկի և կոճակի իրադարձությունների վերծանումը:
ESP32- ի հետադարձ կապի մեկ իրադարձություն սերվերից երեք տարբեր տվյալների փաթեթ է ստանում այն երեք բնութագրերի համար, որոնք ստեղծվել են ificationsանուցումներ տրամադրելու համար: Մեկ փաթեթը չորս բայթ է: Բայթերից երեքը պարունակում են X առանցքի դիրքը, Y առանցքի դիրքը և ձգան կոճակները, որոնք բիթում պատկերված են բիթերով: Մյուս երկու փաթեթները յուրաքանչյուրը երկու բայթ են և ունեն մեկ բայթ, որն ունի բիտ քարտեզագրված կոճակի վիճակ: Ստացված փաթեթները վերծանվում և պատճենվում են հիշողության մեջ բայթ զանգվածի մեջ: Joyոյսթիկի առանցքի տվյալները մտնում են X և Y տվյալների բայթերի մեջ, և երեք բիթ քարտեզագրված կոճակներից յուրաքանչյուրը ուղղվում է այդ կոճակների համար համապատասխան բայթին:
Ստեղծվում է FreeRTOS առաջադրանք ՝ ծանուցումների միջոցով ստացված տվյալների մշակման համար: Մեկ առաջադրանք ջոյսթիկի և ձգան կոճակների համար, մեկ առաջադրանք A & B կոճակների և մեկ առաջադրանք C & D կոճակների համար: Այս առաջադրանքներից յուրաքանչյուրը հստակորեն նշում է այն տարածքները, որտեղ դուք պետք է ավելացնեք ձեր ծածկագիրը `իրադարձության հետ ձեր ուզածն անելու համար: Փնտրեք «// ===== ավելացրեք ձեր կոդը այստեղ =====» մեկնաբանությունը առաջադրանքի հիմնական մասում և դրանից հետո ավելացրեք ձեր ծածկագիրը: Յուրաքանչյուր առաջադրանք ունի մեկնաբանություն, որը ցույց է տալիս, թե ինչի համար է այն օգտագործվում և օգտագործում է Serial.println () ՝ իրադարձության մասին հաղորդագրություն տպելու համար:
Ահա օրինակ A/B կոճակի առաջադրանքից.
void taskButtonAB (void *պարամետր) {uint8_t կոճակներ;
// ===== եթե առաջադրանքը պահանջում է մեկանգամյա նախաստորագրում, տեղադրեք այստեղ =====
մինչ (ճշմարիտ) {// հրաժարվել պրոցեսորից, սպասել նոր տվյալների vTaskSuspend (NULL); // մենք պարզապես արթնացանք, նոր տվյալներ կան կոճակներ = VrBoxData [VB_BTNAB]; Serial.printf ("A/B կոճակներ. %02X / n", կոճակներ); if (կոճակներ & VB_BUTTON_A) {// կոճակը A սեղմված կամ պահված է Serial.println («Կոճակ Ա»); // ===== ավելացնել ձեր կոդը այստեղ =====}
եթե (կոճակներ և VB_BUTTON_B)
{// կոճակը B սեղմված է կամ պահված է Serial.println («Կոճակ B»);
// ===== ավելացնել ձեր կոդը այստեղ =====
}} // for} // taskButtonAB
Քայլ 4: VR տուփի շահագործում. Ջոյստիկ
Եթե ջոյսթիկը մնում է կենտրոնական դիրքում, ապա ջոյստիկի մասին ծանուցումներ չեն ուղարկվում: Երբ ջոյսթիկը տեղափոխվում է կենտրոնից, յուրաքանչյուր 15 մՍ -ի մասին ուղարկվում է ծանուցման հաղորդագրություն `ջոյստիկի տվյալներով և ձգան կոճակի տվյալներով: Երբ ջոյսթիկը նորից տեղափոխվում է կենտրոն, ծանուցում, որ այն տեղափոխվել է կենտրոն, չի ուղարկվում: Այլ կերպ ասած, այն ձեզ ասում է, որ ջոիստիկը տեղափոխվել է կենտրոնից, բայց ոչ այն, որ այն տեղափոխվել է կենտրոն: Վերջնական արդյունքն այն է, որ դուք ստանում եք հաղորդագրություններ, որոնք ցույց են տալիս, որ ջիստիկը շարժվում է դեպի կենտրոն, բայց ոչ այն, որ այն հասել է կենտրոն: Շատ նյարդայնացնող: Երկու ձգան կոճակները ներառված են ջոյսթիկի տվյալներով: Theոյսթիկը կենտրոն վերադարձնելուց հետո ձգան կոճակներից մեկին սեղմելը ջոյսթիկի դիրքը զրոյի կբերի: The Framework- ում ներկառուցված է ժամանակի սպառման ժամանակաչափ, որը ավտոմատ կերպով նմանակում է ջոյսթիկի ծանուցման հաղորդագրությունը կարճ ժամանակ անց այն բանից հետո, երբ բոլոր joystick/trigger կոճակի ծանուցման հաղորդագրությունները դադարում են ժամանել: Timամաչափը ժոյսթիկը զրոյի է դնում: Joyոյսթիկը յուրաքանչյուր առանցքի վրա ունի մոտ +/- 25 միջակայք:
Քայլ 5: VR տուփի շահագործում. Գործարկեք կոճակներ
Գործարկման կոճակները մեկ անգամ սեղմելիս և նորից բաց թողնելիս կուղարկեն ծանուցման հաղորդագրություն: Սեղմված ծանուցման հաղորդագրությունը ցույց կտա սեղմված կոճակը: Թողարկման ծանուցման հաղորդագրությունը ցույց է տալիս, որ երկու կոճակներն էլ բաց են թողնված:
Ստորին ձգան կոճակը պահելը թույլ չի տա սերվերին հայտնաբերել, որ վերին ձգան կոճակը սեղմված է: Վերին ձգան կոճակը պահելը և ներքևի ձգան կոճակը սեղմելը հանգեցնում է նրան, որ սերվերը ծանուցում է ուղարկում ստորին ձգան կոճակը սեղմված լինելու մասին (վերին ձգան կոճակը կլինի զրո): Ստորին ձգան կոճակի թողարկումը կհանգեցնի նրան, որ սերվերը կուղարկի ծանուցում այն մասին, որ վերին ձգան կոճակը սեղմված է, իսկ ներքևի ձգանը ՝ ազատված:
Այլ կերպ ասած, ստորին ձգան կոճակը գերակշռում է վերին ձգան կոճակի վրա և երկուսն էլ սեղմելիս այն կփոխարինի: Դուք պետք է որոշեք, թե ինչպես վարվել երկու կոճակների սեղմման դեպքում:
Քայլ 6: VR տուփի շահագործում. A/B կոճակներ
A և B կոճակները գործում են որպես ջոյսթիք և անընդհատ ծանուցման հաղորդագրություններ են ուղարկում, երբ սեղմվում և պահվում են: Հաղորդագրությունները դադարում են, երբ կոճակը բաց է թողնվում: A և B կոճակները գործում են Trigger կոճակների նման, որովհետև A կոճակը գերակշռում է B կոճակը, ինչպես ստորին ձգան կոճակը գերակշռում է ձգանի վերին կոճակը:
Քայլ 7: VR տուփի շահագործում. C/D կոճակներ
C և D կոճակները մեկ անգամ ծանուցման հաղորդագրություն են ուղարկում սեղմելիս և նորից բաց թողնելիս: Դադարեցման դեպքում այլ հաղորդագրություններ չեն ուղարկվում, մինչև դրանք չթողարկվեն: C կամ D կոճակներից որևէ մեկին պահելը թույլ չի տա սերվերին հայտնաբերել մյուս կոճակի գործունեությունը:
Քայլ 8: Եզրակացություն
Կոճակների գործարկումը, իմ կարծիքով, մի փոքր աղոտ է: Շրջանակը նախատեսում է այն վայրերը, որտեղ ձեր կոդը գործի է դնում կոճակը սեղմելիս: Եթե դուք նույնպես պետք է հայտնաբերեք կոճակների թողարկումները, ապա ձեզ մնում է պարզել, թե ինչպես դա անել:
Լիովին ձեզնից է կախված, թե ինչ եք ուզում անել յուրաքանչյուր կոճակի համար և ինչ պետք է անի շարժիչը: Ինչպես եք կարգավորում ձգանի, A & B- ի և C&D կոճակների տարբերությունները, դա ձեզն է:
Կոդում փնտրեք; taskJoyStick (), taskButtonAB (), taskButtonCD () գործառույթները և ավելացրեք ձեր կոդը «// ===== ձեր կոդը այստեղ =====» մեկնաբանությունից հետո:
Theոյսթիքին (առաջ, հետ, աջ և ձախ) գործածելու համար ձեզ հարկավոր կլինի մինչև չորս գործառույթ և տարբեր կոճակները կարգավորելու համար մինչև վեց գործառույթ: Իրականացրեք դրանք բոլորը կամ պարզապես այն, ինչ ձեզ հարկավոր է: Ընտրությունը ձերն է:
Եթե դուք օգտագործում եք այս շրջանակը: Ես շատ կցանկանայի գոռալ այն մասին, թե ինչի համար եք այն օգտագործել, և եթե ձեզ համար հեշտ է օգտագործել այն:
Եթե ունեք հարցեր, թե ինչպես է այն աշխատում կամ օգնության կարիք ունեք այն աշխատելու համար, դիմեք ինձ:
Կոդը հասանելի է GitHub- ում այստեղ:
Վայելեք:
Խորհուրդ ենք տալիս:
Ոտնաթաթի ոտնակի փակման հեռակառավարիչ + ձգան ՝ 6 քայլ (նկարներով)
Foot Pedal Shutter Remote + Trigger. Այս ոտնակով հեռակառավարիչը կատարյալ է անիմատորների, լուսանկարների արխիվագետների, բլոգերների և այն մասնագետների համար, ովքեր անընդհատ չեն կարողանում հասնել իրենց տեսախցիկի փակման կոճակին կամ արագ աշխատելու սեղանի վրա `տեսախցիկով տեղադրված: բարձր գլխավերևում: 2020 թվականի դեկտեմբեր ամսվա թարմացում. E
IR հեռակառավարիչ ՝ 12 քայլ
IR հեռակառավարիչ. Ինֆրակարմիր հեռակառավարման ցուցիչը հիմնական էլեկտրոնային բաղադրիչն է, որը գրեթե օգտագործվում է բոլոր տեսակի սարքերում `լինի դա կենցաղային, թե մասնագիտական սարք: Այս տվիչները գործում են ինֆրակարմիր ճառագայթների լույս արձակող կամ հայտնաբերող սկզբունքով: Երբ ազդանշանը
Փայտե Bluetooth հեռակառավարիչ Lego Duplo գնացքի համար. 3 քայլ (նկարներով)
Փայտե Bluetooth հեռակառավարիչ Lego Duplo գնացքի համար. Իմ երեխաները սիրում էին այս փոքրիկ Lego Duplo գնացքը, հատկապես իմ ամենափոքրը, ով պայքարում է բառերի հետ շփվելու համար, ուստի ես ուզում էի նրան կառուցել մի բան, որը կօգնի նրան խաղալ գնացքի հետ անկախ մեծահասակներից կամ հեռախոսներից/պլանշետներից: Մի բան, որ
DIY Android Bluetooth հեռակառավարիչ. 4 քայլ
DIY Android Bluetooth Remote. Նրանք շատ փխրուն են և անհետանում են ամեն անգամ: Այսպիսով, ես մտածեցի կառուցել իմ սեփական Mobile Bluetooth հեռակառավարիչը Cu- ով
«Retro Future» Bluetooth հեռակառավարիչ ՝ 9 քայլ (նկարներով)
«Retro Future» Bluetooth հեռակառավարիչ. Ինձ միշտ դուր է եկել " վաղվա աշխարհի " տեսքը: մեզ ներկայացվեցին կեսդարյա գիտաֆանտաստիկ և կոնցեպտուալ արտադրանք: Լավ, դա ճիշտ չէ: Երբ երիտասարդ էի, ես կարծում էի, որ Star Trek- ի եռագույնները տգեղ և անշնորհք են, բայց