Gamit ang application ng Microsoft Soundscape (sa ilang kadahilanan magagamit lamang para sa operating system ng iOS), na nagpapahintulot sa mga bulag na mag-navigate sa espasyo at malaman kung ano ang nasa paligid nila, gamit ang mga boses na boses, ay magiging mas maginhawa kung gumawa ka ng isang panlabas na anim na pindutan na remote control na iminungkahi ng tatlong may-akda na Mga Tagagamit - Jazz Ang, Ana Liu at Venkatesh Potluri.
Matindi ang pagsasalita, ang Soundscape ay hindi isang pag-unlad ng Microsoft Corporation mismo, ngunit ang dibisyon nito na tinatawag na Microsoft Research, na nakikibahagi sa mga eksperimento at pananaliksik sa isang iba't ibang mga lugar. Ito ay pinaniniwalaan na kahit na ang panloob na kapaligiran ay may ganap na naiiba kaysa sa iba pang mga korporasyon.
Ang mga pindutan sa remote control:
1 - simulan / itigil ang pag-playback ng isang audio o video file, at kapag ang application ng Soundsdape ay tumatakbo at tumatakbo sa background, lumiliko din ito / off ang mga abiso sa boses mula sa programang ito.
2 - buong on / off na tunog, isang analogue ng pindutan ng I-mute sa remote na TV.
3 - pumunta sa susunod na track sa audio o video player, at sa programa ng Soundscape - pumunta sa susunod na abiso ng boses.
4 - pumunta sa nakaraang abiso ng track o boses.
5 - Doblehin ang pindutan ng Home.
6 - kontrol ng mode na "Virtual controller" ng operating system ng iOS (nagbibigay-daan sa iyo na gumamit ng mga panlabas na remote tulad ng inilarawan).
Tulad ng makikita mula sa diagram gawang bahay, naipon sa programang Fritzing, ang mga pindutan, bawat isa ay pupunan ng isang 10 kOhm pull-up resistor, ay konektado sa mga terminal 11, 7, 15, 16, 27 at 25 ng medyo mahal na Adafruit Feather nRF52 Bluefruit LE board, na katugma sa Arduino IDE at naglalaman ng isang bluetooth module. Kapag ginagamit ang aparato, ang board na ito ay pinalakas ng isang karaniwang Micro USB cable mula sa power bank, at kapag nagprograma - mula sa isang PC. Mangyaring tandaan na maraming mga bangko ng kuryente ang awtomatikong naka-off kapag ang kasalukuyang pagkonsumo ay masyadong mababa, at ang pagsara ng threshold ay nakasalalay sa modelo.
Ang pagkakaroon ng tipunin ang disenyo ayon sa scheme, isinaayos ng mga wizards ang Arduino IDE upang gumana sa board na ito, tulad ng ipinapakita sa sumusunod na dalawang screenshot:
Ang pagkakaroon ng na-configure ang lahat, ang mga masters ay punan ang sketch sa board:
#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;
BLEHidAdafruit blehid;
bool hasKeyPressed = maling;
// kumonekta ang mga pin sa board
int playpauseButtonPin = 11;
int muteButtonPin = 7;
int kasunod sa ButtonPin = 15;
int backButtonPin = 16;
int homeTatayanPin = 27;
int switchControlButtonPin = 25;
walang pag-setup ()
{
pinMode (playpauseButtonPin, INPUT);
pinMode (muteButtonPin, INPUT);
pinMode (kasunod na ButtonPin, INPUT);
pinMode (backButtonPin, INPUT);
pinMode (homeButtonPin, INPUT);
pinMode (switchControlButtonPin, INPUT);
Serial.begin (115200);
habang (! Serial) pagkaantala (10); // para sa nrf52840 na may katutubong usb
Bluefruit.begin ();
Bluefruit.setTxPower (4); // Suriin ang bluefruit.h para sa mga suportadong halaga
Bluefruit.setName ("TESTArroundMeBluefruit52");
// I-configure at Simulan ang Serbisyo ng Impormasyon ng Device
bledis.setManufacturer ("Adafruit Industries");
bledis.setModel ("Bluefruit Feather 52");
bledis.begin ();
/ * Simulan ang BLE HID
* Tandaan: Kinakailangan ng Apple ang aparato ng BLE ay dapat magkaroon ng agwat ng koneksyon sa min. = = 20m
* (Mas maliit ang agwat ng koneksyon ng mas mabilis na maipadala namin ang data).
* Gayunpaman para sa aparato ng HID at MIDI, maaaring tanggapin ng Apple ang min pagitan ng koneksyon
* hanggang sa 11.25 ms. Samakatuwid BLEHidAdafruit :: magsimula () ay susubukan na itakda ang min at max
* pagitan ng koneksyon sa 11.25 ms at 15 ms ayon sa pagkakabanggit para sa pinakamahusay na pagganap.
* /
blehid.begin ();
/ * Itakda ang agwat ng koneksyon (min, max) sa iyong perished na halaga.
* Tandaan: Nakatakda na ito ng BLEHidAdafruit :: magsimula () hanggang 11.25ms - 15ms
* min = 9 * 1.25 = 11.25 ms, max = 12 * 1.25 = 15 ms
* /
/ * Bluefruit.Periph.setConnInterval (9, 12); * /
// I-set up at simulan ang advertising
startAdv ();
}
walang bisa StartAdv (walang bisa)
{
// Pakete ng advertising
Bluefruit.Advertising.addFlags (BLE_GAP_ADV_FLAGS_LE_ONLY_GENERAL_DISC_MODE);
Bluefruit.Advertising.addTxPower ();
Bluefruit.Advertising.addAppearance (BLE_APPEARANCE_HID_KEYBOARD);
// Isama ang serbisyo sa BLE HID
Bluefruit.Advertising.addService (blehid);
// Mayroong sapat na silid para sa pangalan ng dev sa packet ng advertising
Bluefruit.Advertising.addName ();
/ * Simulan ang Advertising
* - Paganahin ang auto advertising kung naka-disconnect
* - Interval: mabilis na mode = 20 ms, mabagal na mode = 152.5 ms
* - Ang timeout para sa mabilis na mode ay 30 segundo
* - Start (timeout) na may timeout = 0 mai-advertise magpakailanman (hanggang konektado)
*
* Para sa inirekumendang agwat ng advertising
* https://developer.apple.com/library/content/qa/qa1931/_index.html
* /
Bluefruit.Advertising.restartOnDisconnect (totoo);
Bluefruit.Advertising.setInterval (32, 244); // sa yunit ng 0.625 ms
Bluefruit.Advertising.setFastTimeout (30); // bilang ng mga segundo sa mabilis na mode
Bluefruit.Advertising.start (0); // 0 = Huwag itigil ang advertising pagkatapos ng n segundo
}
// gamit ang function na ito upang makontrol ang telepono
walang bisa sendCommand (uint16_t utos) {
// Siguraduhin na kami ay konektado at naka-bonding / ipinares
para sa (uint16_t conn_hdl = 0; conn_hdl konektado () && koneksyon-> ipinares ()
{
// I-on ang pulang LED kapag sinimulan namin ang pagpapadala ng data
digitalWrite (LED_RED, 1);
Serial.println ("Nagpapadala ng utos ...");
// Magpadala ng pindutin ang key
blehid.consumerKeyPress (conn_hdl, utos);
// Mag-antala ng kaunti sa pagitan ng mga ulat
pagkaantala (10);
// Magpadala ng key release
blehid.consumerKeyRelease (conn_hdl);
// I-off ang pulang LED
digitalWrite (LED_RED, 0);
Serial.println ("Ipinadala ang Utos!");
}
}
pagkaantala (250);
}
// gamit ang function na ito upang i-configure ang switch control
walang bisa sendSwitchControl (String command) {
para sa (int i = 0; i
Mula sa gilid ng operating system ng iOS, unang nagtataguyod ang mga wizards sa pagpapares kasama ang remote control sa pamamagitan ng Bluetooth:
Pagkatapos - ang mga pag-andar ng lahat ng mga pindutan sa seksyon ng pag-access:
Matapos tiyakin na gumagana ang lahat, ang mga pindutan ng pag-print ng mga wizards sa isang 3D printer at ibahagi ang mga kinakailangang file sa mga mambabasa sa bagay na bagay lisensyado sa ilalim ng CC-BY 3.0. Ang mga bahaging ito ay maaaring gawin sa iba pang mga paraan, o hindi ginawa.
Ang sumusunod na dalawang video ay nagpapakita kung paano sinubukan ng mga masters ang malayong pagkilos:
Ito ay nananatiling muling maitayo ang remote control sa parehong paraan, ngunit sa pamamagitan ng paghihinang, at ilagay ang resulta sa kaso, at sa iOS i-install ang Soundscape application at patakbuhin ito sa background, at maaari mong gamitin ang aparato.