השימוש ביישום Soundscape של מיקרוסופט (מסיבה כלשהי זמין רק עבור מערכת ההפעלה iOS), המאפשר לעיוורים לנווט בחלל ולגלות מה יש סביבם, באמצעות הנחיות קוליות, יהיה נוח עוד יותר אם אתה מבצע שלט רחוק חיצוני בן שישה כפתורים המוצע על ידי שלושה מחברים הניתנים להוראות - ג'אז. אנג, אנה ליו ונקטש פוטורלי.
באופן קפדני, Soundscape אינה פיתוח של חברת מיקרוסופט עצמה, אלא החטיבה שלה בשם Microsoft Research העוסקת בניסויים ומחקר במגוון רחב של תחומים. ההערכה היא שאפילו האווירה הפנימית שם שונה לחלוטין משאר התאגיד.
הכפתורים בשלט רחוק:
1 - התחל / הפסק לנגן קובץ שמע או וידאו, וכאשר יישום ה- Soundsdape פועל ופועל ברקע, הוא גם מאפשר / מבטל התראות קוליות מתוכנית זו.
2 - צליל הפעלה / כיבוי מלא, אנלוגי של כפתור ההשתקה בשלט הטלוויזיה.
3 - עבור לרצועה הבאה בנגן האודיו או הווידיאו, ובתוכנית Soundscape - עבור להתראה הקולית הבאה.
4 - עבור לרצועה הקודמת או להתראה קולית.
5 - משכפל את כפתור הבית.
6 - שליטה במצב "בקר וירטואלי" של מערכת ההפעלה iOS (מאפשרת להשתמש מרחוק חיצוני כמתואר).
כפי שניתן לראות בתרשים תוצרת בית, שנערך בתוכנית Fritzing, הכפתורים, שכל אחד מהם משולב בנגר מושך של 10 קילו, מחוברים למסופים 11, 7, 15, 16, 27 ו 25 בלוח Adafruit Feather nRF52 Bluefruit LE היקר, התואם ל ארדואינו IDE ומכיל מודול Bluetooth. בעת השימוש במכשיר, לוח זה מופעל על ידי כבל מיקרו USB רגיל מבנק חשמל, וכאשר הוא מתכנת - ממחשב. שימו לב כי בנקים חשמליים רבים נכבים אוטומטית כאשר הצריכה הנוכחית נמוכה מדי, וסף הכיבוי תלוי בדגם.
לאחר שהרכיבו את העיצוב בהתאם לתכנית, הקוסמים מגדירים את ה- Arduino IDE לעבוד עם לוח זה, כפי שמוצג בשני צילומי המסך הבאים:
לאחר התצורה של הכל, המאסטרים ממלאים את הסקיצה ללוח:
# כלול
# הגדר CONTROL_PLAY_PAUSE 0x00CD
# הגדר CONTROL_SCAN_NEXT 0x00B5
# הגדר CONTROL_SCAN_PREVIOUS 0x00B6
# הגדר CONTROL_MUTE 0x00E2
# הגדר AC_FORWARD 0x0225
# הגדר AC_BACK 0x0224
# הגדר את CONSUMER_BROWSER_HOME 0x0223
BLEDis bledis;
BLEHidAdafruit blehid;
bool 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);
Serial.begin (115200);
בזמן (! סידורי) עיכוב (10); // עבור nrf52840 עם USB מקומי
Bluefruit.begin ();
Bluefruit.setTxPower (4); // בדוק bluefruit.h אם יש ערכים נתמכים
Bluefruit.setName ("TESTArroundMeBluefruit52");
// קבע את התצורה והתחל שירות מידע על מכשירים
bledis.setProdusent ("תעשיות אדפרויט");
bledis.setModel ("נוצת Bluefruit 52");
bledis.begin ();
/ * התחל BLE HID
* הערה: Apple דורשת כי מכשיר BLE חייב להיות מרווח חיבור מינימלי> = 20 מ '
* (ככל שמרווח החיבור קטן יותר נוכל לשלוח נתונים מהר יותר).
* עם זאת עבור מכשירי HID ו- MIDI, אפל יכולה לקבל מרווח חיבור מינימלי
* עד 11.25 שניות. לכן BLEHidAdafruit :: begin () ינסה להגדיר את המקסימום והמקסימום
* מרווח חיבור ל- 11.25 שניות ו- 15 שניות בהתאמה לקבלת הביצועים הטובים ביותר.
* /
blehid.begin ();
/ * הגדר את מרווח החיבור (דקות, מקסימום) לערך המוקצב שלך.
* הערה: זה מוגדר כבר על ידי BLEHidAdafruit :: begin () ל- 11.25ms - 15ms
* דקות = 9 * 1.25 = 11.25 שניות, מקסימום = 12 * 1.25 = 15 שניות
* /
/ * Bluefruit.Periph.setConnInterval (9, 12); * /
// הגדר והתחל לפרסם
startAdv ();
}
void startAdv (void)
{
// מנות פרסום
Bluefruit.Advertising.add Flags (BLE_GAP_ADV_FLAGS_LE_ONLY_GENERAL_DISC_MODE);
Bluefruit.Advertising.addTxPower ();
Bluefruit.Advertising.add מראה (BLE_APPEARANCE_HID_KEYBOARD);
// כלול שירות BLE HID
Bluefruit.Advertising.addService (blehid);
// יש מספיק מקום לשם החבילה בחבילת הפרסום
Bluefruit.Advertising.addName ();
/ * התחל לפרסם
* - אפשר פרסום אוטומטי אם לא מנותק
* - מרווח: מצב מהיר = 20 ms, מצב איטי = 152.5 ms
* - פסק זמן למצב מהיר הוא 30 שניות
* - התחל (פסק זמן) עם פסק זמן = 0 יפרסם לנצח (עד להתחברות)
*
* למרווח פרסום מומלץ
* https://developer.apple.com/library/content/qa/qa1931/_index.html
* /
Bluefruit.Advertising.restartOnDisconnect (נכון);
Bluefruit.Advertising.setInterval (32, 244); // ביחידה של 0.625 שניות
Bluefruit.Advertising.setFastTimeout (30); // מספר שניות במצב מהיר
Bluefruit.Advertising.start (0); // 0 = אל תפסיק לפרסם אחרי n שניות
}
// באמצעות פונקציה זו לשליטה בטלפון
בטל sendCommand (פקודה uint16_t) {
// וודא שאנחנו מחוברים וקשורים / מזווגים
עבור (uint16_t conn_hdl = 0; conn_hdl מחובר () וחיבור-> מזווג ())
{
// הפעל נורית אדום כאשר אנו מתחילים לשלוח נתונים
digitalWrite (LED_RED, 1);
Serial.println ("שולח פקודה ...");
// לחץ על מקש שלח
blehid.consumerKeyPress (conn_hdl, פקודה);
// לעכב מעט בין הדוחות
עיכוב (10);
// שלח שחרור מקשים
blehid.consumerKeyRelease (conn_hdl);
// כבה את הנורית האדומה
digitalWrite (LED_RED, 0);
Serial.println ("הפקודה נשלחה!");
}
}
עיכוב (250);
}
// באמצעות פונקציה זו להגדרת תצורה עם בקרת מתגים
בטל sendSwitchControl (פקודת מחרוזת) {
עבור (int i = 0; i
מהצד של מערכת ההפעלה iOS, הקוסמים הקימו לראשונה התאמה עם השלט באמצעות Bluetooth:
ואז - הפונקציות של כל הכפתורים בקטע הנגישות:
לאחר שהוודאת שהכל עובד, לוחצים על כפתורי האשפים על מדפסת תלת מימד ומשתפים את הקבצים הדרושים עם הקוראים על דבר מה מורשה תחת CC-BY 3.0. ניתן לייצר חלקים אלה בדרכים אחרות, או לא לייצר אותם כלל.
שני הסרטונים הבאים מראים כיצד אדונים בודקים את השלט בפעולה:
נותר לבנות מחדש את השלט רחוק באותו אופן, אך על ידי הלחמה, ולשים את התוצאה במקרה, וב- iOS התקן את אפליקציית Soundscape והפעל אותה ברקע, ותוכל להשתמש במכשיר.