ዝርዝር ሁኔታ:

ESP32 ብሉቱዝ BLE የርቀት መቆጣጠሪያ 8 ደረጃዎች
ESP32 ብሉቱዝ BLE የርቀት መቆጣጠሪያ 8 ደረጃዎች

ቪዲዮ: ESP32 ብሉቱዝ BLE የርቀት መቆጣጠሪያ 8 ደረጃዎች

ቪዲዮ: ESP32 ብሉቱዝ BLE የርቀት መቆጣጠሪያ 8 ደረጃዎች
ቪዲዮ: ESP32 Tutorial 38 - Controling RGB LED from your mobile phone | SunFounder's ESP32 IoT Learnig kit 2024, ህዳር
Anonim
ESP32 ብሉቱዝ BLE የርቀት መቆጣጠሪያ
ESP32 ብሉቱዝ BLE የርቀት መቆጣጠሪያ
ESP32 ብሉቱዝ BLE የርቀት መቆጣጠሪያ
ESP32 ብሉቱዝ BLE የርቀት መቆጣጠሪያ
ESP32 ብሉቱዝ BLE የርቀት መቆጣጠሪያ
ESP32 ብሉቱዝ BLE የርቀት መቆጣጠሪያ
ESP32 ብሉቱዝ BLE የርቀት መቆጣጠሪያ
ESP32 ብሉቱዝ BLE የርቀት መቆጣጠሪያ

ይህ ፕሮጀክት ርካሽ የብሉቱዝ ብሌይ ጆይስቲክን ከ ESP32 ጋር እንዴት ማገናኘት እንደሚቻል ምሳሌ ነው። ኮዱ የተፃፈው አርዱዲኖ አይዲኢ Ver 1.8.5 በመጠቀም ከ ESP32 addon ጋር ነው። ጥቅም ላይ የዋለው BLE ጆይስቲክ በበይነመረብ ላይ ከ $ 20.00 ባነሰ ወይም ከአካባቢዎ አምስትBELoW መደብር በ 5.00 ዶላር መግዛት የሚችሉት የንግድ መሣሪያ ነው።

ለዚህ ፕሮጀክት የተጠቀምኩት ጆይስቲክ የ Spektrum VR መቆጣጠሪያ የብሉቱዝ የርቀት መቆጣጠሪያ ነው። ከቪአር ማዳመጫዎች ጋር ለመጠቀም እንደ ጆይስቲክ/አይጥ ከ Android እና ከ IOS ጡባዊዎች ጋር አብሮ በመስራት ለገበያ ቀርቧል።

የ VR ቁጥጥር የብሉቱዝ የርቀት መቆጣጠሪያ በ X እና Y ዘንግ ፣ ሁለት ቀስቃሽ አዝራሮች ከፊት ለፊት እና በመያዣው ላይ ስድስት አዝራሮች ያሉት አንድ ጆይስቲክ አለው። ሁለቱ አዝራሮች ለኃይል ማብሪያ/ማጥፊያ እና ለሞድ ቁጥጥር ናቸው። ሌሎቹ አራት አዝራሮች ለሚፈልጉት ሁሉ ጥቅም ላይ ሊውሉ ይችላሉ። ይህ ፕሮጀክት ሁሉንም አዝራሮች እና ጆይስቲክን የብሉቱዝ መስተጋብር እና ዲኮዲንግ የሚይዝ አጽም ወይም ማዕቀፍ ነው። እርስዎ ማድረግ የሚጠበቅብዎት አዝራሮቹን እና ጆይስቲክ እንዲያደርጉ የሚፈልጉትን ለማስተናገድ የተግባር ጥሪዎችን ማከል ነው። ይህንን ማዕቀፍ ለመጠቀም ስለ ብሉቱዝ ምንም ማወቅ አያስፈልግዎትም።

የአርዱዲኖ አይዲኢ እና የ ESP32 አዶን ለመጫን ዝርዝር መመሪያዎች ያላቸው ብዙ የድር ጣቢያዎች አሉ። ያንን መረጃ እዚህ ለመድገም አልሞክርም። ጉግል ያድርጉት እና መመሪያዎቹን ይከተሉ።

ማዕቀፉ በ IoT ማጋራት የታተመ የ BLE ደንበኛ ምሳሌ ማመቻቸት ነው። እዚህ ሊያገኙት ይችላሉ። BLE እንዴት እንደሚሰራ ሀሳብ ለማግኘት ይህንን ኮድ ማጥናት ይችላሉ። Expressif ለ GATT BLE ደንበኛ የተሟላ ምሳሌ አለው እና ክዋኔውን በዝርዝር ያብራራል (ለአርዱዲኖ አይዲኢ አልተፃፈም)። እዚህ ሊያገኙት ይችላሉ።

ይህ BLE አጋዥ አይደለም። ኮዱ እንዴት እንደሚሠራ በዝርዝር አልገልጽም። አንዳንድ የጆይስቲክ ባህሪያትን ለመግለጽ የ BLE ቃላትን እጠቀማለሁ። እርስዎ ለፕሮጀክትዎ መለወጥ የሚያስፈልግዎት የኮዱ ክፍል እርስዎ እንዲሻሻሉ ለማገዝ በዝርዝር ይብራራል። ይህ አስተማሪ አጭር እና ጆይስቲክን በመጠቀም ላይ ያተኮረ እንዲሆን ወሰን የተገደበ ነው።

ደረጃ 1 ስለ ብሉቱዝ ዝቅተኛ ኃይል (ቢኤሌ) ትንሽ

ይህ በ BLE ላይ አጋዥ ለመሆን የታሰበ አይደለም። ይህንን ፕሮጀክት ስጀምር በ BLE እና Classic Bluetooth መካከል ያለውን ልዩነት አላውቅም ነበር። ከ ESP32 ጋር ለመስራት የገዛሁትን ጆይስቲክ ማግኘት እችል እንደሆነ ለማየት ፈልጌ ነበር። በሚከተለው ጽሑፍ ውስጥ BLE እንዴት እንደሚሠራ ቀለል ያለ አጠቃላይ እይታ ለመስጠት የ BLE ቃላትን እጠቀማለሁ።

BLE የደንበኛ/የአገልጋይ ሥነ ሕንፃን ይጠቀማል። አንድ መሣሪያ አገልግሎቶችን የሚሰጥ አገልጋይ ነው። ሌላው መሣሪያ አገልግሎቶችን የሚጠቀም ደንበኛ ነው። የኃይል መስፈርቶችን ወደ ታች ለማቆየት ፣ BLE ለውጥ በሚከሰትበት ጊዜ አነስተኛ የመረጃ ጥቅሎችን ብቻ ያስተላልፋል። በጆይስቲክ ሁኔታ ፣ ጆይስቲክ መሳሪያው አገልጋይ ነው። እንደ አገልጋይ እራሱን ያስተዋውቃል እና ሲጠየቅ የሚሰጠውን የአገልግሎቶች ዝርዝር ያስተላልፋል። ጆይስቲክ መሳሪያው አምስት አገልግሎቶችን ያስተዋውቃል። እኛ የምንፈልገው ብቸኛው አገልግሎት BLE HID (የሰው በይነገጽ መሣሪያ) አገልግሎት ነው። የ BLE አገልግሎት ከእሱ ጋር የተዛመዱ ባህሪዎች በመባል የሚታወቁት አሉት። ባህርይ በተለምዶ የውሂብ ምንጭ ነው። የጆይስቲክ የኤችአይዲ አገልግሎት አሥር ባህሪዎች አሉት። አንዳንድ ባህርያት የተባዙ እና ችላ ይባላሉ። እኛ ፍላጎት ያለን የማንበብ እና የማሳወቅ ችሎታ ባላቸው የ BLE ሪፖርት ባህሪዎች ላይ ብቻ ነው። ሦስቱ ባህሪዎች እነዚህን መስፈርቶች ያሟላሉ እና ስለ ጆይስቲክ አቀማመጥ እና የአዝራሮቹ ሁኔታ መረጃ ይሰጣሉ። ማሳወቂያ ሲነቃ ፣ ተጓዳኝ ባህሪው ላይ ለውጥ ሲታወቅ አገልጋዩ የውሂብ እሽጎችን ይልካል።

ማዕቀፉ የሚያገኘው አገልጋይ የ BLE HID አገልግሎት እንዳለው ያረጋግጣል እና ከዚያ ጆይስቲክ እና የአዝራር ሁኔታ መረጃን በሚሰጡ በሦስቱ የሪፖርት ባህሪዎች ላይ ማሳወቂያዎችን ያነቃል። ከዚያ ፣ አንድ ቁልፍ ሲጫን ወይም ሲለቀቅ ወይም ጆይስቲክ ሲንቀሳቀስ ፣ ESP32 አዲሱ ጆይስቲክ አቀማመጥ ምን እንደሆነ እና/ወይም የአንዳንድ አዝራሮች ሁኔታ የሚነግረው የውሂብ ፓኬት ይቀበላል።

ደረጃ 2 የመቃኘት እና የግንኙነት ጠቋሚዎች

ማዕቀፉ ሁለት ኤልኢዲዎችን ፣ አረንጓዴ እና ብሉዴሽንን ይገልፃል እና ለሁለት የ ESP32 ጂፒኦ ፒኖች ይመድባል። ESP32 BLE ጆይስቲክን በሚፈልግበት ጊዜ አረንጓዴው ያበራል። ጆይስቲክ ሲገኝ አረንጓዴው ተዘግቶ ብሉሉድ መብራቱ ግንኙነቱ እንደተመሠረተ እና እርስዎ ለመሄድ ዝግጁ እንደሆኑ ለማሳየት ነው። ግንኙነቱ ከጠፋ ፣ BLUELED ጠፍቷል ፣ ESP32 ዳግም ተጀምሯል ፣ አረንጓዴው በርቷል እና መቃኘት እንደገና ይጀምራል። ጆይስቲክ በሰላሳ ሰከንዶች ውስጥ ካልተገኘ መቃኘት ይቆማል እና አረንጓዴው ይጠፋል። ከአምስት ሰከንዶች በኋላ ፣ መቃኘት እንደገና ይጀምራል እና GREENLED በርቷል።

የመጨረሻው ውጤት ESP32 እስኪያገኘው ድረስ ጆይስቲክን መቃኘቱን ይቀጥላል። አንዴ ግንኙነቱ ከተደረገ ፣ ከዚያ ከጠፋ ፣ ESP32 እራሱን እንደገና ያስጀምራል እና እንደገና መቃኘት ይጀምራል። መቃኘትን እንደገና ለመጀመር የብሉቱዝ ቁልል ዳግም ለማስጀመር ESP32 ኤስዲኬ ተግባራት ስለሌለ ESP32 ዳግም ተጀምሯል።

ደረጃ 3 የጆይስቲክ እና የአዝራር ዝግጅቶችን መለየት።

በ ESP32 ላይ አንድ የመደወያ ክስተት ማሳወቂያዎችን ለማቀናበር ለተዘጋጁት ሶስት ባህሪዎች ከአገልጋዩ ሦስት የተለያዩ የውሂብ ጥቅሎችን ይቀበላል። አንድ ፓኬት አራት ባይት ርዝመት አለው። በባይቶች ውስጥ ሦስቱ የ X ዘንግ አቀማመጥ ፣ የ Y ዘንግ አቀማመጥ እና የመቀስቀሻ ቁልፎቹን ይይዛሉ ፣ እነሱ በባይት ውስጥ በካርታ ተቀርፀዋል። ሌሎቹ ሁለት ፓኬቶች እያንዳንዳቸው ሁለት ባይት ናቸው እና የቢት ካርታ አዝራር ሁኔታ ያለው አንድ ባይት አላቸው። የተቀበሉት እሽጎች ዲኮዲድ ይደረጋሉ እና በማስታወሻ ውስጥ ወደ ባይት ድርድር ይገለበጣሉ። የጆይስቲክ ዘንግ መረጃ ወደ X እና Y የውሂብ ባይት ይሄዳል እና እያንዳንዱ ሶስት ቢት ካርታ አዘራር ባይት ለእነዚያ አዝራሮች ወደ ተገቢ ባይት ይመራል።

በማሳወቂያዎች የተቀበለውን መረጃ ለማስተናገድ የ FreeRTOS ተግባር ይፈጠራል። ለጆይስቲክ እና ቀስቅሴ ቁልፎች አንድ ተግባር ፣ ለኤ እና ለ አዝራሮች አንድ ተግባር እና ለሲ እና ዲ ቁልፎች አንድ ተግባር። እያንዳንዳቸው ተግባራት በክስተቱ የፈለጉትን ለማድረግ ኮድዎን ማከል ያለብዎት ቦታዎችን በግልጽ ምልክት አድርገዋል። በተግባሩ አካል ውስጥ "// ===== ኮድዎን እዚህ ይጨምሩ =====" የሚለውን አስተያየት ይፈልጉ እና ከዚያ በኋላ ኮድዎን ያክሉ። እያንዳንዱ ተግባር ስለተጠቀመበት ክስተት መልእክት ለማተም Serial.println () የሚጠቀምበትን የሚጠቁም አስተያየት አለው እና ይጠቀማል።

ከኤ/ቢ አዝራር ተግባር ምሳሌ እዚህ አለ።

ባዶ ተግባር ButtonAB (ባዶ *መለኪያ) {uint8_t አዝራሮች;

// ===== ተግባሩ ማንኛውንም የአንድ ጊዜ ማስነሻ የሚፈልግ ከሆነ እዚህ አስቀምጠው =====

(እውነት) {// ሲፒዩውን ይተው ፣ አዲስ ውሂብ vTaskSuspend (NULL) ይጠብቁ ፤ // እኛ ከእንቅልፋችን ነቅተናል ፣ አዲስ ውሂብ ይገኛል አዝራሮች = VrBoxData [VB_BTNAB]; Serial.printf ("A/B አዝራሮች %02X / n" ፣ አዝራሮች); ከሆነ (አዝራሮች እና VB_BUTTON_A) {// አዝራር ተጭኗል ወይም ተይ Serል Serial.println ("አዝራር ሀ"); // ===== ኮድዎን እዚህ ይጨምሩ =====}

ከሆነ (አዝራሮች እና VB_BUTTON_B)

{// አዝራር ቢ ተጭኗል ወይም ተይ Serል Serial.println ("Button B");

// ===== ኮድዎን እዚህ ይጨምሩ =====

}} // ለ} // taskButtonAB

ደረጃ 4: የ VR ሣጥን አሠራር - ጆይስቲክ

ጆይስቲክ በማዕከላዊው ቦታ ላይ ከተተወ ፣ ምንም የጆይስቲክ ማሳወቂያዎች አይላኩም። አንዴ ጆይስቲክ ከመሃል ላይ ከተወገደ ፣ ከጆይስቲክ መረጃ እና የማስነሻ ቁልፍ መረጃ ጋር የማሳወቂያ መልእክት በየ 15 ሚአሰ ያህል ይላካል። ጆይስቲክ ወደ መሃል ሲመለስ ፣ ወደ ማእከሉ የተዛወረ ማሳወቂያ አይላክም። በሌላ አነጋገር ፣ ጆይስቲክ ከመሃል እንደወጣ ይነግርዎታል ፣ ግን ወደ መሃል ተዛውሯል ማለት አይደለም። የመጨረሻው ውጤት ጆይስቲክ ወደ ማእከል እየሄደ መሆኑን የሚጠቁሙ መልዕክቶችን መቀበል ነው ፣ ግን ወደ ማእከሉ ደርሷል ማለት አይደለም። በጣም የሚረብሽ። ሁለቱ ቀስቃሽ አዝራሮች ከጆይስቲክ መረጃ ጋር ተካትተዋል። ጆይስቲክን ወደ ማእከል ከተመለሰ በኋላ አንዱን ቀስቅሴ ቁልፎች መጫን የጆይስቲክን አቀማመጥ ወደ ዜሮ ያዘምናል። ማዕቀፉ ሁሉም የጆይስቲክ/ቀስቃሽ አዝራር የማሳወቂያ መልዕክቶች መምጣታቸውን ካቆሙ በኋላ በአጭር ጊዜ ውስጥ የጆይስቲክ ማሳወቂያ መልዕክትን በራስ-ሰር የሚያስመስልበት የጊዜ ገደብ አለው። ሰዓት ቆጣሪው ጆይስቲክን ወደ ዜሮ ያዘጋጃል። ጆይስቲክ በእያንዳንዱ ዘንግ ላይ +/- 25 ገደማ አለው።

ደረጃ 5: የ VR ሣጥን አሠራር - ቀስቅሴ አዝራሮች

የማስነሻ ቁልፎቹ አንድ ጊዜ ሲጫኑ እና እንደገና ሲለቀቁ የማሳወቂያ መልእክት ይልካሉ። የተጫነው የማሳወቂያ መልእክት የተጫነበትን ቁልፍ ይጠቁማል። የመልቀቂያው የማሳወቂያ መልእክት የሚያመለክተው ሁለቱም አዝራሮች እንደተለቀቁ ነው።

የታችኛውን ቀስቃሽ አዝራር መያዝ አገልጋዩ የላይኛው የማስነሻ ቁልፍ እንደተጫነ እንዳይታወቅ ይከላከላል። የላይኛውን ቀስቅሴ ቁልፍ መያዝ እና የታችኛው ቀስቅሴ ቁልፍን መጫን አገልጋዩ የታችኛው የማስነሻ ቁልፍ እንደተጫነ የማሳወቂያ መልእክት መላክን ያስከትላል (የላይኛው የማስነሻ ቁልፍ ዜሮ ይሆናል!)። የታችኛው ቀስቅሴ አዝራር መልቀቅ አገልጋዩ የላይኛው የማስነሻ ቁልፍ ተጭኖ እና የታችኛው ቀስቅሴ እንደሚለቀቅ ማሳወቂያ እንዲልክ ያደርገዋል።

በሌላ አገላለጽ ፣ የታችኛው ቀስቅሴ ቁልፍ በላይኛው ቀስቃሽ ቁልፍ ላይ የበላይ ሲሆን ሁለቱም ሲጫኑ ይሽረዋል። የሁለቱም አዝራሮች ተጭነው ጉዳዩን እንዴት እንደሚይዙ መወሰን አለብዎት።

ደረጃ 6: የ VR ሣጥን አሠራር - የኤ/ቢ አዝራሮች

የ A እና B አዝራሮች እንደ ጆይስቲክ ሆነው ይሠራሉ እና ተጭነው ሲቆዩ የማሳወቂያ መልዕክቶችን ያለማቋረጥ ይልካሉ። አዝራሩ ሲለቀቅ መልእክቶቹ ይቆማሉ። የታችኛው እና ቀስቃሽ አዝራሩ የላይኛውን ቀስቃሽ ቁልፍ እንደሚቆጣጠር ሁሉ የ A እና B አዝራሮች እንደ ቀስቅሴ አዝራሮች ተመሳሳይ ይሰራሉ።

ደረጃ 7 የ VR ሣጥን አሠራር - ሲ/ዲ አዝራሮች

ሲ እና ዲ ቁልፎች አንድ ጊዜ ሲጫኑ እና ሲለቀቁ የማሳወቂያ መልእክት ይልካሉ። ወደ ታች ከተያዙ ፣ እስኪለቀቁ ድረስ ምንም ተጨማሪ መልዕክቶች አይላኩም። ከ C ወይም D አዝራሮች አንዱን ወደ ታች መያዝ አገልጋዩ በሌላኛው አዝራር ላይ እንቅስቃሴን እንዳያገኝ ይከላከላል።

ደረጃ 8 መደምደሚያ

የአዝራሮቹ አሠራር በእኔ አስተያየት ትንሽ ጨካኝ ነው። ማዕቀፉ አንድ ቁልፍ ሲጫን ኮድዎን እንዲሠራባቸው ቦታዎችን ይሰጣል። እንዲሁም የአዝራር ልቀቶችን መለየት ከፈለጉ ፣ እንዴት ማድረግ እንዳለብዎ ለማወቅ ይህ ይቀራል።

እያንዳንዱ ቁልፍ ምን ማድረግ እንደሚፈልግ እና ጆይስቲክ ማንቀሳቀስ ምን ማድረግ እንዳለበት መወሰን የእርስዎ ብቻ ነው። በመቀስቀሻ ውስጥ ያሉትን ልዩነቶች እንዴት እንደሚይዙ ፣ A & B እና C & D አዝራሮች የእርስዎ ናቸው።

ለኮዱ ውስጥ ይመልከቱ; taskJoyStick () ፣ taskButtonAB () ፣ taskButtonCD () ተግባራት እና “// ===== ኮድዎን እዚህ =====” አስተያየት ከሰጡ በኋላ ኮድዎን ያክሉ።

የተለያዩ ቁልፎችን ለመያዝ ጆይስቲክን (ወደ ፊት ፣ ወደ ኋላ ፣ ወደ ቀኝ እና ወደ ግራ) እና እስከ ስድስት ተግባሮችን ለማስተናገድ እስከ አራት ተግባራት ያስፈልግዎታል። ሁሉንም ወይም የሚፈልጉትን ብቻ ይተግብሩ። ምርጫው የእርስዎ ነው።

ይህንን ማዕቀፍ ከተጠቀሙ። እርስዎ ስለ ተጠቀሙበት እና ለመጠቀም ቀላል ሆኖ ካገኙት ጩኸት እወዳለሁ።

እንዴት እንደሚሰራ ጥያቄዎች ካሉዎት ወይም ወደ ሥራው እንዲገባ እርዳታ ከፈለጉ ፣ ያነጋግሩኝ።

ኮዱ እዚህ በ GitHub ላይ ይገኛል።

ይደሰቱ።

የሚመከር: