Orodha ya maudhui:

ESP32 Bluetooth BLE Udhibiti wa Kijijini: Hatua 8
ESP32 Bluetooth BLE Udhibiti wa Kijijini: Hatua 8

Video: ESP32 Bluetooth BLE Udhibiti wa Kijijini: Hatua 8

Video: ESP32 Bluetooth BLE Udhibiti wa Kijijini: Hatua 8
Video: How to use ESP32 WiFi and Bluetooth with Arduino IDE full details with examples and code 2024, Novemba
Anonim
ESP32 Bluetooth BLE Udhibiti wa Kijijini
ESP32 Bluetooth BLE Udhibiti wa Kijijini
ESP32 Bluetooth BLE Udhibiti wa Kijijini
ESP32 Bluetooth BLE Udhibiti wa Kijijini
ESP32 Bluetooth BLE Udhibiti wa Kijijini
ESP32 Bluetooth BLE Udhibiti wa Kijijini
ESP32 Bluetooth BLE Udhibiti wa Kijijini
ESP32 Bluetooth BLE Udhibiti wa Kijijini

Mradi huu ni mfano wa jinsi ya kuunganisha kifurushi cha bei nafuu cha Bluetooth BLE na ESP32. Nambari iliandikwa kwa kutumia Arduino IDE Ver 1.8.5 na kiambatisho cha ESP32. Joystick ya BLE iliyotumiwa ni kifaa cha kibiashara ambacho unaweza kununua kwenye mtandao chini ya $ 20.00 au kutoka duka lako la tanoBELoW kwa $ 5.00.

Furaha ambayo nilitumia kwa mradi huu ni Kidhibiti cha Kijijini cha Bluetooth cha Spektrum VR. Inauzwa kama kufanya kazi na vidonge vya Android na IOS kama fimbo / kipanya cha kutumiwa na vichwa vya kichwa vya VR.

Kidhibiti cha mbali cha Bluetooth cha Udhibiti wa VR kina fimbo moja ya kufurahisha na mhimili wa X na Y, vifungo viwili vya vichocheo mbele na vifungo sita kwenye mpini. Vifungo viwili ni vya kuzima / kuzima na kudhibiti hali. Vifungo vingine vinne vinaweza kutumika kwa chochote unachotaka. Mradi huu ni mifupa au mfumo ambao unashughulikia unganisho lote la Bluetooth na usanidi wa vitufe na fimbo ya kufurahisha. Unachohitajika kufanya ni kuongeza simu za kushughulikia kushughulikia kile unachotaka vifungo na fimbo ya kufurahisha ifanye. Huna haja ya kujua chochote kuhusu Bluetooth kutumia mfumo huu.

Kuna tovuti nyingi zilizo na maagizo ya kina ya kusanikisha IDE ya Arduino na nyongeza ya ESP32. Sitajaribu kurudia habari hiyo hapa. Google na kufuata maelekezo.

Mfumo huo ni mabadiliko ya mfano wa mteja wa BLE iliyochapishwa na IoT Sharing. Unaweza kuipata hapa. Unaweza kusoma nambari hii kupata wazo la jinsi BLE inavyofanya kazi. Expressif ina mfano kamili kwa mteja wa GATT BLE na anaelezea operesheni hiyo kwa undani (haijaandikwa kwa Arduino IDE). Unaweza kuipata hapa.

Hii sio mafunzo ya BLE. Sitakuwa nikielezea jinsi nambari inavyofanya kazi kwa undani. Nitatumia istilahi ya BLE kuelezea baadhi ya huduma za fimbo ya furaha. Sehemu ya nambari ambayo unahitaji kurekebisha kwa mradi wako itaelezwa kwa undani kukusaidia kuibadilisha. Upeo ni mdogo kuweka hii inayoweza kufundishwa fupi na inazingatia utumiaji wa fimbo ya furaha.

Hatua ya 1: Kidogo Kuhusu Nishati ya chini ya Bluetooth (BLE)

Hii haikusudiwi kuwa mafunzo juu ya BLE. Nilipoanza mradi huu, sikujua tofauti kati ya BLE na Classic Bluetooth. Nilitaka tu kuona ikiwa ningeweza kupata kibarua nilichonunua ili kufanya kazi na ESP32. Katika maandishi yafuatayo ninatumia istilahi ya BLE kutoa muhtasari rahisi wa jinsi BLE inavyofanya kazi.

BLE hutumia usanifu wa mteja / seva. Kifaa kimoja ni seva inayotoa huduma. Kifaa kingine ni mteja ambaye hutumia huduma. Ili kuweka mahitaji ya umeme chini, BLE hupeleka tu pakiti ndogo za habari wakati mabadiliko yanatokea. Katika kesi ya fimbo ya kufurahisha, kifaa cha kufurahisha ni seva. Kama seva, inajitangaza na itasambaza orodha ya huduma ambazo hutoa wakati inaulizwa. Kifaa cha joystick kinatangaza huduma tano. Huduma pekee ambayo tunavutiwa nayo ni huduma ya BLE HID (Kifaa cha Kiungio cha Binadamu). Huduma ya BLE ina kile kinachojulikana kama Sifa zinazohusiana nayo. Tabia kawaida ni chanzo cha data. Huduma ya kujificha ya shangwe ina Sifa kumi. Baadhi ya Sifa ni marudio na hupuuzwa. Tunavutiwa tu na Tabia za Ripoti ya BLE ambazo zimesoma na Kuarifu uwezo. Tabia tatu zinakidhi mahitaji haya na hutoa data juu ya msimamo wa kifurushi na hali ya vifungo. Wakati arifu imewezeshwa, seva itatuma pakiti za data mabadiliko yakigunduliwa kwenye tabia inayohusiana.

Mfumo huo unathibitisha kuwa seva inayopata ina huduma ya BLE HID na kisha itawezesha Arifa juu ya Tabia tatu za Ripoti ambazo hutoa habari ya furaha na kifungo cha hali. Halafu, kitufe kinapobanwa au kutolewa au fimbo ya kufurahisha inahamishwa, ESP32 inapokea pakiti ya data ikiiambia ni nini nafasi mpya ya faraja na / au hali ya vifungo kadhaa.

Hatua ya 2: Viashiria vya Kutambaza na Uunganisho

Mfumo huo unafafanua LED mbili, KIJIVUA na BLUELED na kuzipa pini mbili za ESP32 za GPIO. KIJINGA kimewashwa wakati ESP32 inatafuta fimbo ya kufurahisha ya BLE. Wakati kiboreshaji cha furaha kinapatikana CHIJANI kimezimwa na BLUELED imewashwa kuashiria kwamba unganisho limeanzishwa na uko tayari kwenda. Ikiwa muunganisho unapotea, BLUELED imezimwa, ESP32 imewekwa upya, KIWANGO kimewashwa na skanning huanza tena. Ikiwa kiboreshaji cha furaha hakipatikani ndani ya sekunde thelathini basi skanning inaacha na KIWANGO KIZIMA huzima. Baada ya sekunde tano, skanning huanza tena na KIWANGO KIMEWASHWA kimewashwa.

Matokeo ya mwisho ni kwamba ESP32 itaendelea kuchanganua kiboreshaji cha furaha hadi itakapopata. Uunganisho ukishafanywa, ikiwa imepotea, ESP32 itajiweka upya na kuanza kutambaza tena. ESP32 imewekwa upya kwa sababu hakuna kazi za ESP32 SDK kuweka upya stack ya Bluetooth ili kuanza tena skanning.

Hatua ya 3: Kufafanua Matukio ya Joystick na Kitufe

Tukio moja la kupigiwa simu kwenye ESP32 hupokea pakiti tatu tofauti za data kutoka kwa seva kwa Tabia tatu ambazo ziliwekwa ili kutoa Arifa. Pakiti moja ina ka nne kwa muda mrefu. Baiti tatu zina nafasi ya mhimili wa X, nafasi ya mhimili Y na vitufe vya vichocheo, ambavyo vimepangwa kwenye baiti. Pakiti zingine mbili ni ka mbili kila moja na ina baiti moja ambayo ina hali ya kifungo kidogo. Pakiti zilizopokelewa zimesimbwa na kunakiliwa katika safu ndogo ya kumbukumbu. Takwimu za mhimili wa shangwe huingia kwenye kaiti za data za X na Y na kila moja ya baiti tatu za ramani imeelekezwa kwenye baiti inayofaa kwa vifungo hivyo.

Kazi ya FreeRTOS imeundwa kushughulikia data iliyopokelewa na arifa. Jukumu moja la vifungo vya kufurahisha na kuchochea, kazi moja kwa vifungo vya A & B na kazi moja kwa vifungo vya C & D. Kila moja ya majukumu haya yameweka wazi maeneo ambayo unapaswa kuongeza nambari yako kufanya unachotaka na hafla hiyo. Tafuta maoni ya "// ===== ongeza nambari yako hapa =====" maoni katika mwili wa kazi na ongeza nambari yako baada yake. Kila kazi ina maoni inayoonyesha ni nini inatumiwa na hutumia Serial.println () kuchapisha ujumbe kuhusu tukio lililotokea.

Hapa kuna mfano kutoka kwa kitufe cha A / B;

batili taskButtonAB (batili * parameter) vifungo {uint8_t;

// ===== ikiwa kazi inahitaji uanzishaji wa wakati mmoja, iweke hapa =====

wakati (kweli) {// toa CPU, subiri data mpya vTaskSuspend (NULL); // tumeamka tu, data mpya inapatikana vifungo = VrBoxData [VB_BTNAB]; Serial.printf ("Vifungo vya A / B:% 02X / n", vifungo); ikiwa (vifungo & VB_BUTTON_A) {// kifungo A imesisitizwa au inashikiliwa chini Serial.println ("Kitufe A"); // ===== ongeza nambari yako hapa =====}

ikiwa (vifungo & VB_BUTTON_B)

{// kifungo B kimesisitizwa au kinashikiliwa chini Serial.println ("Button B");

// ===== ongeza nambari yako hapa =====

}} // kwa} // taskButtonAB

Hatua ya 4: Operesheni ya Sanduku la VR: Joystick

Ikiwa kifurushi kimeachwa katikati, hakuna arifa za starehe zinazotumwa. Mara tu kifurushi kimehamishwa katikati, ujumbe wa arifa na data ya shangwe na data ya kitufe cha kuchochea hutumwa karibu kila 15mS. Wakati kiboreshaji cha furaha kimehamishwa hadi katikati, arifa kwamba imehamia katikati haitumwa. Kwa maneno mengine, inakuambia furaha ya starehe imeondoka katikati, lakini sio kwamba imehamia katikati. Matokeo ya mwisho ni kwamba unapokea ujumbe unaoonyesha fimbo ya furaha inaelekea katikati, lakini sio kwamba imefikia katikati. Inakera sana. Vifungo viwili vya vichocheo vimejumuishwa na data ya starehe. Kubonyeza kitufe kimoja cha vichocheo baada ya kurudisha kitovu cha furaha katikati kitasasisha nafasi ya faraja kuwa sifuri. Mfumo huo una kipima muda cha kujengwa ambacho huiga moja kwa moja ujumbe wa arifu ya starehe kwa muda mfupi baada ya ujumbe wote wa kitufe cha kufurahisha / kuchochea kitufe kuacha kuwasili. Kipima muda huweka fimbo ya furaha kuwa sifuri. Fimbo ya kufurahisha ina anuwai ya karibu +/- 25 kwenye kila mhimili.

Hatua ya 5: Uendeshaji wa Sanduku la VR: Vifungo vya Kuchochea

Vifungo vya kuchochea vitatuma ujumbe wa arifa mara moja wakati wa kubonyeza na tena utakapotolewa. Ujumbe wa arifa uliobanwa utaonyesha kitufe ambacho kilibanwa. Ujumbe wa arifa ya kutolewa unaonyesha kuwa vifungo vyote vimetolewa.

Kushikilia kitufe cha chini cha kuzuia itazuia seva kugundua kuwa kitufe cha juu cha kushinikiza kimesisitizwa. Kushikilia kitufe cha juu cha kubonyeza na kubonyeza kitufe cha chini kinachosababisha seva kutuma ujumbe wa arifa kwamba kitufe cha chini cha kushinikiza kimeshinikizwa (kitufe cha juu cha kuchochea kitakuwa sifuri!). Kutoa kitufe cha chini cha kichocheo kutasababisha seva kutuma arifa kwamba kitufe cha juu cha kubonyeza kimeshinikizwa na kichocheo cha chini kinatolewa.

Kwa maneno mengine, kitufe cha chini cha kuchochea kinatawala juu ya kitufe cha juu cha kuchochea na kitapita wakati wote wamebanwa. Lazima uamua jinsi ya kushughulikia kesi ya vitufe vyote viwili vinavyobanwa.

Hatua ya 6: Uendeshaji wa Sanduku la VR: Vifungo vya A / B

Vifungo vya A na B hufanya kama fimbo ya kufurahisha na huendelea kutuma ujumbe wa arifu wakati wa kubanwa na kushikiliwa chini. Ujumbe huacha wakati kitufe kinatolewa. Vifungo vya A na B hufanya kazi sawa na vifungo vya Kuchochea kwa kuwa kitufe cha A kinatawala kitufe cha B kama vile kitufe cha chini kinachotawala kitufe cha juu.

Hatua ya 7: Operesheni ya Sanduku la VR: Vifungo vya C / D

Vifungo vya C na D hutuma ujumbe wa arifa mara moja wakati wa kubonyeza na tena wakati umetolewa. Ikiwa imeshikiliwa, hakuna ujumbe zaidi unaotumwa hadi itolewe. Kushikilia kitufe chochote cha C au D kutazuia seva kugundua shughuli kwenye kitufe kingine.

Hatua ya 8: Hitimisho

Uendeshaji wa vifungo kwa maoni yangu ni wonky kidogo. Mfumo huo hutoa nafasi za kuweka nambari yako ya sheria wakati kitufe kinabanwa. Ikiwa unahitaji pia kugundua vifungo, hiyo imebaki kwako kujua jinsi ya kufanya.

Ni juu yako mwenyewe kuamua ni nini unataka kila kitufe kufanya na ni nini kinasonga starehe ya furaha. Jinsi unavyoshughulikia tofauti katika kichocheo, A & B na vifungo vya C & D ni juu yako.

Angalia nambari kwa; taskJoyStick (), taskButtonAB (), taskButtonCD () kazi na ongeza nambari yako baada ya maoni ya "// ===== ongeza nambari yako hapa =====".

Utahitaji hadi kazi nne kushughulikia fimbo ya furaha (mbele, nyuma, kulia na kushoto) na hadi kazi sita kushughulikia vifungo anuwai. Zitekeleze zote au tu kile unachohitaji. Chaguo ni lako.

Ikiwa unatumia mfumo huu. Ningependa kupiga kelele juu ya kile ulichokitumia na ikiwa unapata kuwa rahisi kutumia.

Ikiwa una maswali juu ya jinsi inavyofanya kazi au unahitaji msaada kuifanya ifanye kazi, wasiliana nami.

Nambari hiyo inapatikana kwenye GitHub hapa.

Furahiya.

Ilipendekeza: