L'utilisation de l'application Microsoft Soundscape (pour une raison quelconque uniquement disponible pour le système d'exploitation iOS), qui permet aux aveugles de naviguer dans l'espace et de découvrir ce qui les entoure, à l'aide d'invites vocales, sera encore plus pratique si vous créez une télécommande externe à six boutons proposée par trois auteurs Instructables - Jazz Ang, Ana Liu et Venkatesh Potluri.
À proprement parler, Soundscape n'est pas un développement de Microsoft Corporation lui-même, mais sa division sous le nom de Microsoft Research, qui est engagée dans des expériences et des recherches dans divers domaines. On pense que même l'atmosphère interne y est complètement différente de celle du reste de l'entreprise.
Les boutons de la télécommande:
1 - démarrer / arrêter la lecture d'un fichier audio ou vidéo, et lorsque l'application Soundsdape s'exécute et s'exécute en arrière-plan, elle active / désactive également les notifications vocales de ce programme.
2 - son marche / arrêt complet, un analogue du bouton Muet de la télécommande du téléviseur.
3 - allez à la piste suivante dans le lecteur audio ou vidéo, et dans le programme Soundscape - allez à la prochaine notification vocale.
4 - allez à la piste précédente ou à la notification vocale.
5 - duplique le bouton Accueil.
6 - contrôle du mode "Virtual controller" du système d'exploitation iOS (vous permet d'utiliser des télécommandes externes comme décrit).
Comme le montre le diagramme fait maison, compilé dans le programme Fritzing, les boutons, dont chacun est complété par une résistance de rappel de 10 kΩ, sont connectés aux bornes 11, 7, 15, 16, 27 et 25 de la carte assez coûteuse Adafruit Feather nRF52 Bluefruit LE, qui est compatible avec Arduino IDE et contient un module bluetooth. Lorsque vous utilisez l'appareil, cette carte est alimentée par un câble micro USB standard de la banque d'alimentation et lors de la programmation - à partir d'un PC. Veuillez noter que de nombreuses banques d'alimentation s'éteignent automatiquement lorsque la consommation actuelle est trop faible et que le seuil d'arrêt dépend du modèle.
Après avoir assemblé la conception selon le schéma, les assistants configurent l'IDE Arduino pour fonctionner avec cette carte, comme indiqué dans les deux captures d'écran suivantes:
Après avoir tout configuré, les maîtres remplissent le croquis dans le tableau:
#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 = false;
// connecter des broches dans la carte
int playpauseButtonPin = 11;
int muteButtonPin = 7;
int nextButtonPin = 15;
int backButtonPin = 16;
int homeButtonPin = 27;
int switchControlButtonPin = 25;
void setup ()
{
pinMode (playpauseButtonPin, INPUT);
pinMode (muteButtonPin, INPUT);
pinMode (nextButtonPin, INPUT);
pinMode (backButtonPin, INPUT);
pinMode (homeButtonPin, INPUT);
pinMode (switchControlButtonPin, INPUT);
Serial.begin (115200);
tandis que (! Serial) retard (10); // pour nrf52840 avec usb natif
Bluefruit.begin ();
Bluefruit.setTxPower (4); // Vérifiez bluefruit.h pour les valeurs prises en charge
Bluefruit.setName ("TESTArroundMeBluefruit52");
// Configurer et démarrer le service d'informations sur les périphériques
bledis.setManufacturer ("Adafruit Industries");
bledis.setModel ("Bluefruit Feather 52");
bledis.begin ();
/ * Démarrer BLE HID
* Remarque: Apple requiert que l'appareil BLE ait un intervalle de connexion minimal> = 20 m
* (Plus l'intervalle de connexion est petit, plus nous pourrions envoyer de données rapidement).
* Cependant, pour les appareils HID et MIDI, Apple pourrait accepter un intervalle de connexion minimum
* jusqu'à 11,25 ms. Par conséquent, BLEHidAdafruit :: begin () essaiera de définir les valeurs min et max
* intervalle de connexion à 11,25 ms et 15 ms respectivement pour de meilleures performances.
* /
blehid.begin ();
/ * Réglez l'intervalle de connexion (min, max) à votre valeur préférée.
* Remarque: il est déjà défini par BLEHidAdafruit :: begin () à 11,25 ms - 15 ms
* min = 9 * 1,25 = 11,25 ms, max = 12 * 1,25 = 15 ms
* /
/ * Bluefruit.Periph.setConnInterval (9, 12); * /
// Configurer et commencer la publicité
startAdv ();
}
void startAdv (void)
{
// Paquet publicitaire
Bluefruit.Advertising.addFlags (BLE_GAP_ADV_FLAGS_LE_ONLY_GENERAL_DISC_MODE);
Bluefruit.Advertising.addTxPower ();
Bluefruit.Advertising.addAppearance (BLE_APPEARANCE_HID_KEYBOARD);
// Inclut le service BLE HID
Bluefruit.Advertising.addService (blehid);
// Il y a assez de place pour le nom du développeur dans le paquet publicitaire
Bluefruit.Advertising.addName ();
/ * Commencer la publicité
* - Activer la publicité automatique en cas de déconnexion
* - Intervalle: mode rapide = 20 ms, mode lent = 152,5 ms
* - Le délai d'attente pour le mode rapide est de 30 secondes
* - Démarrer (timeout) avec timeout = 0 fera de la publicité pour toujours (jusqu'à ce qu'il soit connecté)
*
* Pour l'intervalle publicitaire recommandé
* https://developer.apple.com/library/content/qa/qa1931/_index.html
* /
Bluefruit.Advertising.restartOnDisconnect (true);
Bluefruit.Advertising.setInterval (32, 244); // en unité de 0,625 ms
Bluefruit.Advertising.setFastTimeout (30); // nombre de secondes en mode rapide
Bluefruit.Advertising.start (0); // 0 = Ne pas arrêter la publicité après n secondes
}
// utiliser cette fonction pour contrôler le téléphone
void sendCommand (commande uint16_t) {
// Assurez-vous que nous sommes connectés et liés / appariés
pour (uint16_t conn_hdl = 0; conn_hdl connecté () && connexion-> jumelé ())
{
// Allumez la LED rouge lorsque nous commençons à envoyer des données
digitalWrite (LED_RED, 1);
Serial.println ("Commande d'envoi ...");
// Appuyez sur la touche Envoyer
blehid.consumerKeyPress (conn_hdl, commande);
// Retard un peu entre les rapports
retard (10);
// Envoyer la libération de la clé
blehid.consumerKeyRelease (conn_hdl);
// Éteignez la LED rouge
digitalWrite (LED_RED, 0);
Serial.println ("Commande envoyée!");
}
}
retard (250);
}
// utiliser cette fonction pour configurer avec le contrôle du commutateur
void sendSwitchControl (commande String) {
for (int i = 0; i
Du côté du système d'exploitation iOS, les assistants ont d'abord configuré le couplage avec la télécommande via Bluetooth:

Ensuite - les fonctions de tous les boutons de la section d'accessibilité:



Après s'être assuré que tout fonctionne, les assistants impriment des poussoirs de bouton sur une imprimante 3D et partagent les fichiers nécessaires avec les lecteurs sur thingiverse sous licence CC-BY 3.0. Ces pièces peuvent être réalisées d'autres manières, ou pas du tout.
Les deux vidéos suivantes montrent comment les maîtres testent la télécommande en action:
Il reste à reconstruire la télécommande de la même manière, mais en soudant, et en mettant le résultat dans le boîtier, et dans iOS installez l'application Soundscape et exécutez-la en arrière-plan, et vous pouvez utiliser l'appareil.