การใช้แอปพลิเคชั่น Microsoft Soundscape (ด้วยเหตุผลบางอย่างเท่านั้นสำหรับระบบปฏิบัติการ iOS) ซึ่งช่วยให้คนตาบอดนำทางไปในอวกาศและค้นหาสิ่งที่อยู่รอบตัวพวกเขาโดยใช้เสียงเตือนจะสะดวกยิ่งขึ้นถ้าคุณทำการควบคุมระยะไกลหกปุ่มภายนอกที่เสนอโดยผู้เขียนสามคน อังอาน่าหลิวและเว็นเคเตช Potluri
Soundscape พูดอย่างเคร่งครัดไม่ใช่การพัฒนาของ Microsoft Corporation แต่เป็นแผนกที่เรียกว่า Microsoft Research ซึ่งมีส่วนร่วมในการทดลองและการวิจัยในหลากหลายสาขา เชื่อว่าแม้บรรยากาศภายในจะมีความแตกต่างอย่างสมบูรณ์กว่าในส่วนที่เหลือของ บริษัท
ปุ่มบนรีโมทคอนโทรล:
1 - เริ่ม / หยุดการเล่นไฟล์เสียงหรือวิดีโอและเมื่อแอปพลิเคชั่น Soundsdape กำลังทำงานและทำงานในพื้นหลังก็เปิด / ปิดการใช้งานการแจ้งเตือนด้วยเสียงจากโปรแกรมนี้
2 - เสียงเปิด / ปิดเต็มรูปแบบอะนาล็อกของปุ่มปิดเสียงที่รีโมททีวี
3 - ไปที่แทร็กถัดไปในเครื่องเล่นเสียงหรือวิดีโอและในโปรแกรม Soundscape - ไปที่การแจ้งเตือนด้วยเสียงถัดไป
4 - ไปที่แทร็กก่อนหน้าหรือการแจ้งเตือนด้วยเสียง
5 - ทำซ้ำปุ่มโฮม
6 - การควบคุมโหมด "ตัวควบคุมเสมือน" ของระบบปฏิบัติการ iOS (อนุญาตให้คุณใช้รีโมทภายนอกตามที่อธิบายไว้)
ดังที่เห็นได้จากแผนภาพ ทำที่บ้านซึ่งรวบรวมในโปรแกรม Fritzing ปุ่มแต่ละปุ่มเสริมด้วยตัวต้านทานแบบดึงขึ้น 10 kOhm เชื่อมต่อกับขั้ว 11, 7, 15, 16, 27 และ 25 ของบอร์ด Adafruit Feather nRF52 Bluefruit LE ที่เข้ากันได้กับ Arduino IDE และมีโมดูลบลูทู ธ เมื่อใช้อุปกรณ์บอร์ดนี้ใช้พลังงานจากสายเคเบิล Micro USB มาตรฐานจากธนาคารพลังงานและเมื่อตั้งโปรแกรม - จากพีซี โปรดทราบว่าธนาคารพลังงานหลายแห่งจะปิดโดยอัตโนมัติเมื่อปริมาณการใช้ปัจจุบันต่ำเกินไปและเกณฑ์การปิดเครื่องขึ้นอยู่กับรุ่น
เมื่อประกอบการออกแบบตามแบบแผนแล้วพ่อมดจะกำหนดค่า Arduino IDE ให้ทำงานกับบอร์ดนี้ดังที่แสดงในภาพหน้าจอสองภาพต่อไปนี้:
หลังจากกำหนดค่าทุกอย่างแล้วอาจารย์จะเติมร่างลงในกระดาน:
#include
#define CONTROL_PLAY_PAUSE 0x00CD
#define CONTROL_SCAN_NEXT 0x00B5
#define CONTROL_SCAN_PREVIOUS 0x00B6
#define CONTROL_MUTE 0x00E2
#define AC_FORWARD 0x0225
#define AC_BACK 0x0224
#define CONSUMER_BROWSER_HOME 0x0223
BLEDis bledis;
BLEHid ผลไม้ที่มีเลือดออก
บูล hasKeyPressed = false;
// เชื่อมต่อพินในกระดาน
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.setManufacturer ("อุตสาหกรรม Adafruit");
bledis.setModel ("Bluefruit Feather 52");
bledis.begin ();
/ * เริ่ม BLE HID
* หมายเหตุ: Apple ต้องการอุปกรณ์ BLE ต้องมีช่วงเวลาการเชื่อมต่อขั้นต่ำ> = 20m
* (ยิ่งช่วงเวลาเชื่อมต่อน้อยลงเท่าไหร่เราก็สามารถส่งข้อมูลได้เร็วขึ้น)
* อย่างไรก็ตามสำหรับอุปกรณ์ HID และ MIDI Apple สามารถยอมรับช่วงเวลาการเชื่อมต่อขั้นต่ำได้
* สูงถึง 11.25 ms ดังนั้น BLEHidAdafruit :: start () จะพยายามตั้งค่า min และ max
* ช่วงเวลาการเชื่อมต่อถึง 11.25 ms และ 15 ms ตามลำดับเพื่อประสิทธิภาพที่ดีที่สุด
* /
blehid.begin ();
/ * ตั้งค่าช่วงเวลาเชื่อมต่อ (ขั้นต่ำสูงสุด) เป็นค่าที่คุณได้รับ
* หมายเหตุ: ตั้งค่าโดย BLEHidAdafruit :: เริ่มต้น () ถึง 11.25ms - 15ms
* min = 9 * 1.25 = 11.25 ms, สูงสุด = 12 * 1.25 = 15 ms
* /
/ * Bluefruit.Periph.setConnInterval (9, 12); * /
// ตั้งค่าและเริ่มโฆษณา
startAdv ();
}
void 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);
// มีพื้นที่เพียงพอสำหรับชื่อ dev ในแพ็คเก็ตโฆษณา
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 ms
Bluefruit.Advertising.setFastTimeout (30); // จำนวนวินาทีในโหมดรวดเร็ว
Bluefruit.Advertising.start (0); // 0 = อย่าหยุดการโฆษณาหลังจาก n วินาที
}
// ใช้ฟังก์ชั่นนี้เพื่อควบคุมโทรศัพท์
ถือเป็นโมฆะ sendCommand (คำสั่ง uint16_t) {
// ตรวจสอบให้แน่ใจว่าเราเชื่อมต่อและผูกมัด / จับคู่แล้ว
สำหรับ (uint16_t conn_hdl = 0; conn_hdl เชื่อมต่อ () && การเชื่อมต่อ -> จับคู่ ())
{
// เปิด LED สีแดงเมื่อเราเริ่มส่งข้อมูล
digitalWrite (LED_RED, 1);
Serial.println ("กำลังส่งคำสั่ง ... ");
// กดปุ่มส่ง
blehid.consumerKeyPress (คำสั่ง conn_hdl);
// หน่วงเวลาระหว่างรายงานเล็กน้อย
ล่าช้า (10);
// ส่งการปล่อยกุญแจ
blehid.consumerKeyRelease (conn_hdl);
// ปิดไฟ LED สีแดง
digitalWrite (LED_RED, 0);
Serial.println ("ส่งคำสั่งแล้ว!");
}
}
ล่าช้า (250);
}
// ใช้ฟังก์ชันนี้เพื่อกำหนดค่าด้วยสวิตช์ควบคุม
ถือเป็นโมฆะ sendSwitchControl (คำสั่ง String) {
สำหรับ (int i = 0; i
จากด้านข้างของระบบปฏิบัติการ iOS ตัวช่วยสร้างตั้งค่าการจับคู่กับรีโมทควบคุมผ่านบลูทู ธ ก่อน:
จากนั้น - ฟังก์ชั่นของปุ่มทั้งหมดในส่วนการเข้าถึง:
หลังจากตรวจสอบให้แน่ใจว่าทุกอย่างใช้งานได้ปุ่มพิมพ์พ่อมดก็จะกดบนเครื่องพิมพ์ 3D และแชร์ไฟล์ที่จำเป็นกับผู้อ่าน ในสิ่งต่าง ๆ ได้รับอนุญาตภายใต้ CC-BY 3.0 ชิ้นส่วนเหล่านี้สามารถทำในวิธีอื่นหรือไม่ทำเลยก็ได้
วิดีโอสองรายการต่อไปนี้แสดงวิธีที่นายทดสอบการทำงานของรีโมท:
มันยังคงสร้างรีโมตคอนโทรลในลักษณะเดียวกัน แต่โดยการบัดกรีและใส่ผลลัพธ์ในเคสและใน iOS ให้ติดตั้งแอปพลิเคชั่น Soundscape แล้วรันในพื้นหลังและคุณสามารถใช้อุปกรณ์ได้