إن استخدام تطبيق Microsoft Soundscape (لسبب ما متاح فقط لنظام التشغيل iOS) ، والذي يسمح للمكفوفين بالتنقل في الفضاء ومعرفة ما حولهم ، باستخدام المطالبات الصوتية ، سيكون أكثر ملاءمة إذا قمت بإنشاء جهاز تحكم عن بعد خارجي بستة أزرار اقترحه ثلاثة مؤلفين تعليمات - جاز أنج ، أنا ليو وفينكاتيش بوتلوري.
بالمعنى الدقيق للكلمة ، Soundscape ليس تطورًا لشركة Microsoft Corporation نفسها ، ولكن تقسيمها تحت اسم Microsoft Research ، الذي يشارك في التجارب والأبحاث في مختلف المجالات. ويعتقد أنه حتى الجو الداخلي هناك يختلف تمامًا عن بقية الشركة.
الأزرار الموجودة على جهاز التحكم عن بعد:
1 - بدء / إيقاف تشغيل ملف صوتي أو فيديو ، وعندما يتم تشغيل تطبيق Soundsdape وتشغيله في الخلفية ، فإنه يقوم أيضًا بتشغيل / إيقاف تشغيل الإشعارات الصوتية من هذا البرنامج.
2 - صوت تشغيل / إيقاف كامل ، تناظري لزر كتم الصوت في جهاز التحكم عن بُعد الخاص بالتلفزيون.
3 - انتقل إلى المسار التالي في مشغل الصوت أو الفيديو ، وفي برنامج Soundscape - انتقل إلى الإعلام الصوتي التالي.
4 - انتقل إلى المسار السابق أو الإخطار الصوتي.
5- يكرر زر الصفحة الرئيسية.
6- التحكم في وضع "وحدة التحكم الافتراضية" لنظام التشغيل iOS (يسمح لك باستخدام أجهزة التحكم عن بعد الخارجية كما هو موضح).
كما يتبين من الرسم البياني محلية الصنع، تم تجميعها في برنامج Fritzing ، الأزرار ، التي يتم استكمال كل منها بمقاوم سحب 10 kΩ ، متصلة بالأطراف 11 و 7 و 15 و 16 و 27 و 25 من لوحة Adafruit Feather nRF52 Bluefruit LE باهظة الثمن ، والتي تتوافق مع اردوينو IDE ويحتوي على وحدة بلوتوث. عند استخدام الجهاز ، يتم تشغيل هذه اللوحة بواسطة كابل Micro USB قياسي من بنك الطاقة ، وعند البرمجة - من جهاز كمبيوتر. يرجى ملاحظة أن العديد من بنوك الطاقة تتوقف تلقائيًا عندما يكون الاستهلاك الحالي منخفضًا جدًا ، ويعتمد حد الإغلاق على الطراز.
بعد تجميع التصميم وفقًا للمخطط ، يقوم المعالجات بتكوين Arduino IDE للعمل مع هذه اللوحة ، كما هو موضح في اللقطتين التاليتين:
بعد تكوين كل شيء ، يقوم الأساتذة بملء الرسم في اللوحة:
# تشمل
#define CONTROL_PLAY_PAUSE 0x00CD
#define CONTROL_SCAN_NEXT 0x00B5
#define CONTROL_SCAN_PREVIOUS 0x00B6
# تحديد CONTROL_MUTE 0x00E2
# تعريف AC_FORWARD 0x0225
# تعريف AC_BACK 0x0224
#define CONSUMER_BROWSER_HOME 0x0223
بليديس بليديس.
أفروت بليهيد ؛
منطقي hasKeyPressed = خطأ ؛
// توصيل الدبابيس في اللوحة
int playpauseButtonPin = 11 ؛
int muteButtonPin = 7 ؛
int nextButtonPin = 15 ؛
int backButtonPin = 16 ؛
int homeButtonPin = 27 ؛
int switchControlButtonPin = 25 ؛
إعداد باطل ()
{
pinMode (playpauseButtonPin ، INPUT) ؛
pinMode (muteButtonPin ، INPUT) ؛
pinMode (nextButtonPin ، INPUT) ؛
pinMode (backButtonPin ، INPUT) ؛
pinMode (homeButtonPin ، INPUT) ؛
pinMode (switchControlButtonPin ، INPUT) ؛
المسلسل يبدأ (115200) ؛
بينما (! Serial) تأخير (10) ؛ // لـ nrf52840 مع USB أصلي
Bluefruit.begin () ؛
Bluefruit.setTxPower (4) ؛ // تحقق من bluefruit.h لمعرفة القيم المدعومة
Bluefruit.setName ("TESTArroundMeBluefruit52") ؛
// تكوين وبدء تشغيل خدمة معلومات الجهاز
bledis.setManufacturer ("Adafruit Industries") ؛
bledis.setModel ("Bluefruit Feather 52") ؛
bledis.begin () ؛
/ * ابدأ تشغيل BLE HID
* ملاحظة: تتطلب Apple أن يكون جهاز BLE أقل فاصل زمني للاتصال> = 20m
* (كلما كان الفاصل الزمني أصغر ، كان بإمكاننا إرسال البيانات بشكل أسرع).
* ومع ذلك ، بالنسبة لأجهزة HID و MIDI ، يمكن أن تقبل Apple الحد الأدنى لفاصل الاتصال
* حتى 11.25 مللي ثانية. لذلك سيحاول BLEHidAdafruit :: start () تعيين الحد الأدنى والحد الأقصى
* فاصل اتصال يصل إلى 11.25 مللي ثانية و 15 مللي ثانية على التوالي للحصول على أفضل أداء.
* /
blehid.begin () ؛
/ * تعيين فاصل الاتصال (الحد الأدنى ، الأقصى) إلى القيمة المفضلة لديك.
* ملاحظة: تم ضبطه بالفعل بواسطة BLEHidAdafruit :: تبدأ () على 11.25 مللي ثانية - 15 مللي ثانية
* دقيقة = 9 * 1.25 = 11.25 مللي ثانية ، بحد أقصى = 12 * 1.25 = 15 مللي ثانية
* /
/ * Bluefruit.Periph.setConnInterval (9 ، 12) ؛ * /
// قم بإعداد وبدء الإعلان
startAdv () ؛
}}
الفراغ startAdv (باطل)
{
// الحزمة الإعلانية
Bluefruit.Advertising.addFlags (BLE_GAP_ADV_FLAGS_LE_ONLY_GENERAL_DISC_MODE) ؛
Bluefruit.Advertising.addTxPower () ؛
Bluefruit.Advertising.addAppearance (BLE_APPEARANCE_HID_KEYBOARD) ،
// تضمين خدمة BLE HID
Bluefruit.Advertising.addService (blehid) ؛
// هناك مساحة كافية لاسم مطور البرامج في حزمة الإعلانات
Bluefruit.Advertising.addName () ؛
/ * ابدأ الإعلان
* - تمكين الإعلان التلقائي في حالة قطع الاتصال
* - الفاصل الزمني: الوضع السريع = 20 مللي ثانية ، الوضع البطيء = 152.5 مللي ثانية
* - مهلة الوضع السريع 30 ثانية
* - ابدأ (مهلة) مع مهلة = 0 سيعلن إلى الأبد (حتى يتم الاتصال)
*
* للفاصل الإعلاني الموصى به
* https://developer.apple.com/library/content/qa/qa1931/_index.html
* /
Bluefruit.Advertising.restartOnDisconnect (true) ؛
Bluefruit.Advertising.setInterval (32 ، 244) ؛ // بوحدة 0.625 مللي ثانية
Bluefruit.Advertising.setFastTimeout (30) ؛ // عدد الثواني في الوضع السريع
Bluefruit.Advertising.start (0) ؛ // 0 = لا توقف الإعلان بعد n ثانية
}}
// باستخدام هذه الوظيفة للتحكم في الهاتف
void sendCommand (أمر uint16_t) {
// تأكد من أننا متصلون ومربوطون / متزاوجون
for (uint16_t conn_hdl = 0؛ conn_hdl متصل () && اتصال-> مقترن ())
{
// شغّل LED الأحمر عند بدء إرسال البيانات
الكتابة الرقمية (LED_RED ، 1) ؛
Serial.println ("أمر الإرسال ...") ؛
// إرسال الضغط على مفتاح
blehid.consumerKeyPress (conn_hdl ، أمر) ؛
// تأخير قليلاً بين التقارير
تأخير (10) ؛
// أرسل إصدار المفتاح
blehid.consumerKeyRelease (conn_hdl) ؛
// أوقف تشغيل مؤشر LED الأحمر
الكتابة الرقمية (LED_RED ، 0) ؛
Serial.println ("تم إرسال الأمر!") ؛
}}
}}
تأخير (250) ؛
}}
// باستخدام هذه الوظيفة للتهيئة باستخدام التحكم بالتبديل
void sendSwitchControl (أمر سلسلة) {
for (int i = 0؛ i
من جانب نظام التشغيل iOS ، تقوم المعالجات أولاً بإعداد الاقتران مع وحدة التحكم عن بعد عبر Bluetooth:
ثم - وظائف جميع الأزرار في قسم إمكانية الوصول:
بعد التأكد من عمل كل شيء ، يضغط زر طباعة المعالجات على طابعة ثلاثية الأبعاد ومشاركة الملفات الضرورية مع القراء على شيء ما مرخص بموجب CC-BY 3.0. يمكن صنع هذه الأجزاء بطرق أخرى ، أو عدم صنعها على الإطلاق.
يُظهر الفيديوان التاليان كيف يختبر المعلمون جهاز التحكم عن بُعد أثناء العمل:
يبقى إعادة بناء جهاز التحكم عن بعد بنفس الطريقة ، ولكن عن طريق اللحام ، ووضع النتيجة في الحالة ، وفي نظام iOS ، قم بتثبيت تطبيق Soundscape وتشغيله في الخلفية ، ويمكنك استخدام الجهاز.