» Elektronica » Arduino »Toepassing met zes knoppen op het bedieningspaneel Microsoft Soundscape

Configuratiescherm van Microsoft Soundscape-app met zes knoppen




Configuratiescherm van Microsoft Soundscape-app met zes knoppen


Het gebruik van de Microsoft Soundscape-applicatie (om de een of andere reden alleen beschikbaar voor het iOS-besturingssysteem), waarmee blinden in de ruimte kunnen navigeren en kunnen ontdekken wat er om hen heen is, met behulp van gesproken aanwijzingen, zal nog handiger zijn als je een externe afstandsbediening met zes knoppen maakt, voorgesteld door drie auteurs Instructables - Jazz Ang, Ana Liu en Venkatesh Potluri.

Strikt genomen is Soundscape geen ontwikkeling van Microsoft Corporation zelf, maar de divisie genaamd Microsoft Research, die zich bezighoudt met experimenten en onderzoek op een groot aantal verschillende gebieden. Er wordt aangenomen dat zelfs de interne atmosfeer daar totaal anders is dan in de rest van het bedrijf.

De knoppen op de afstandsbediening:

1 - start / stop het afspelen van een audio- of videobestand, en wanneer de Soundsdape-applicatie op de achtergrond draait en draait, zet het ook spraakmeldingen van dit programma aan / uit.

2 - volledig aan / uit geluid, een analoog van de Mute-knop op de afstandsbediening van de tv.

3 - ga naar het volgende nummer in de audio- of videospeler en in het Soundscape-programma - ga naar de volgende spraakmelding.

4 - ga naar het vorige nummer of gesproken melding.

5 - dupliceert de Home-knop.

6 - controle van de "Virtual controller" -modus van het iOS-besturingssysteem (stelt u in staat externe afstandsbedieningen te gebruiken zoals beschreven).

Zoals te zien is in het diagram zelfgemaakt, samengesteld in het Fritzing-programma, zijn de knoppen, die elk worden aangevuld met een 10 kΩ pull-up-weerstand, verbonden met de klemmen 11, 7, 15, 16, 27 en 25 van het vrij dure Adafruit Feather nRF52 Bluefruit LE-bord, dat compatibel is met Arduino IDE en bevat een bluetooth-module. Bij gebruik van het apparaat wordt dit bord gevoed door een standaard Micro USB-kabel van de powerbank en tijdens het programmeren - vanaf een pc. Houd er rekening mee dat veel powerbanks automatisch worden uitgeschakeld wanneer het stroomverbruik te laag is en de uitschakeldrempel afhankelijk is van het model.



Nadat het ontwerp volgens het schema is samengesteld, configureren de wizards de Arduino IDE om met dit bord te werken, zoals te zien is in de volgende twee schermafbeeldingen:




Nadat ze alles hebben geconfigureerd, vullen de meesters de schets in op het bord:

#include 

#define CONTROL_PLAY_PAUSE 0x00CD
#define CONTROL_SCAN_NEXT 0x00B5 definiëren
#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;
// verbind pinnen in het bord
int playpauseButtonPin = 11;
int muteButtonPin = 7;
int nextButtonPin = 15;
int backButtonPin = 16;
int homeButtonPin = 27;
int switchControlButtonPin = 25;

ongeldige setup ()
{
  pinMode (playpauseButtonPin, INPUT);
  pinMode (muteButtonPin, INPUT);
  pinMode (nextButtonPin, INPUT);
  pinMode (backButtonPin, INPUT);
  pinMode (homeButtonPin, INPUT);
  pinMode (switchControlButtonPin, INPUT);
  
  Serial.begin (115200);
  terwijl (! Seriële) vertraging (10); // voor nrf52840 met native usb

  Bluefruit.begin ();
  Bluefruit.setTxPower (4); // Controleer bluefruit.h voor ondersteunde waarden
  Bluefruit.setName ("TESTArroundMeBluefruit52");

  // Configureer en start Device Information Service
  bledis.setManufacturer ("Adafruit Industries");
  bledis.setModel ("Bluefruit Feather 52");
  bledis.begin ();

  / * Start BLE HID
   * Opmerking: Apple vereist dat het BLE-apparaat een minimaal verbindingsinterval> = 20 m heeft
   * (Hoe kleiner het verbindingsinterval, hoe sneller we gegevens kunnen verzenden).
   * Maar voor HID- en MIDI-apparaten kon Apple een min. Verbindingsinterval accepteren
   * tot 11,25 ms. Daarom zal BLEHidAdafruit :: begin () proberen de min en max in te stellen
   * verbindingsinterval tot respectievelijk 11,25 ms en 15 ms voor de beste prestaties.
   * /
  blehid.begin ();

  / * Stel het verbindingsinterval (min, max) in op uw gewenste waarde.
   * Opmerking: het is al ingesteld door BLEHidAdafruit :: begin () op 11,25 ms - 15 ms
   * min = 9 * 1,25 = 11,25 ms, max = 12 * 1,25 = 15 ms
   * /
  / * Bluefruit.Periph.setConnInterval (9, 12); * /

  // Opzetten en beginnen met adverteren
  startAdv ();
}

nietig startAdv (nietig)
{
  // Advertentiepakket
  Bluefruit.Advertising.addFlags (BLE_GAP_ADV_FLAGS_LE_ONLY_GENERAL_DISC_MODE);
  Bluefruit.Advertising.addTxPower ();
  Bluefruit.Advertising.addAppearance (BLE_APPEARANCE_HID_KEYBOARD);
  
  // Inclusief BLE HID-service
  Bluefruit.Advertising.addService (blehid);

  // Er is genoeg ruimte voor de dev-naam in het advertentiepakket
  Bluefruit.Advertising.addName ();
  
  / * Begin met adverteren
   * - Schakel automatisch adverteren in als de verbinding is verbroken
   * - Interval: snelle modus = 20 ms, langzame modus = 152,5 ms
   * - Time-out voor snelle modus is 30 seconden
   * - Start (time-out) met time-out = 0 zal voor altijd adverteren (tot verbonden)
   *
   * Voor aanbevolen advertentie-interval
   * https://developer.apple.com/library/content/qa/qa1931/_index.html
   * /
  Bluefruit.Advertising.restartOnDisconnect (waar);
  Bluefruit.Advertising.setInterval (32, 244); // in een eenheid van 0,625 ms
  Bluefruit.Advertising.setFastTimeout (30); // aantal seconden in snelle modus
  Bluefruit.Advertising.start (0); // 0 = Stop niet met adverteren na n seconden
}

// deze functie gebruiken om de telefoon te bedienen
ongeldig sendCommand (opdracht uint16_t) {
  // Zorg ervoor dat we verbonden en verbonden / gekoppeld zijn
  voor (uint16_t conn_hdl = 0; conn_hdl  verbonden () & & verbinding-> gekoppeld ())
    {
      // Schakel rode LED in wanneer we beginnen met het verzenden van gegevens
      digitalWrite (LED_RED, 1);
      Serial.println ("Opdracht verzenden ...");

      // Verzend toetsaanslag
      blehid.consumerKeyPress (conn_hdl, commando);

      // Vertraag een beetje tussen rapporten
      vertraging (10);

      // Stuur sleutelrelease
      blehid.consumerKeyRelease (conn_hdl);

      // Schakel de rode LED uit
      digitalWrite (LED_RED, 0);
      Serial.println ("Command verzonden!");
    }
  }

  vertraging (250);
}

// deze functie gebruiken om te configureren met schakelaarbesturing
ongeldig sendSwitchControl (String-opdracht) {
  voor (int i = 0; i 


Vanaf de zijkant van het iOS-besturingssysteem configureren de wizards eerst de koppeling met de afstandsbediening via Bluetooth:



Dan - de functies van alle knoppen in het toegankelijkheidsgedeelte:





Nadat ze ervoor hebben gezorgd dat alles werkt, printen de wizards knopdrukkers op een 3D-printer en delen ze de benodigde bestanden met lezers op thingiverse gelicentieerd onder CC-BY 3.0. Deze onderdelen kunnen op andere manieren worden gemaakt of helemaal niet.

De volgende twee video's laten zien hoe meesters de afstandsbediening in actie testen:





Het blijft om de afstandsbediening op dezelfde manier opnieuw op te bouwen, maar door te solderen en het resultaat in de behuizing te plaatsen, en in iOS de Soundscape-applicatie te installeren en op de achtergrond uit te voeren, en je kunt het apparaat gebruiken.
0
0
0

Voeg een opmerking toe

    • lachglimlachtxaxaokweet het nietyahoonea
      baaskrabbendwaasjaja-jaagressiefgeheim
      sorrydansdance2dance3pardonhulpdrankjes
      stopvriendengoedgoedfluitjebezwijmdtong
      rookklappencrayverklarenbeledigenddon-t_mentiondownloaden
      hittebooslach1mdavergaderingmoskingnegatief
      not_ipopcornstraffenlezenschrikschriktzoeken
      bespottendankjewelditto_clueUmnikacuutmee eens
      slechtbeeeblack_eyeblum3: oopscheppenverveling
      gecensureerdbeleefdheidgeheim2bedreigenoverwinningyusun_bespectacled
      shokrespektlolvoorgekomenwelkomkrutoyya_za
      ya_dobryihelperne_huliganne_othodifludverbodsluiten
2 commentaar
Om iets dat op een breadboard is gemonteerd als een afgewerkt apparaat te plaatsen, nou, ik weet het niet ...
U kunt dit "vrij dure bord" bijvoorbeeld vervangen door een ESP32 Mini ter waarde van ongeveer 320 roebel. En van de breadboard om al deze economie op zijn minst over te dragen naar de pay-off board.

We raden je aan om te lezen:

Geef het voor de smartphone ...