» Elektronika » Arduino »Aplikacja z sześcioprzyciskowym panelem sterowania Microsoft Soundscape

Sześcioprzyciskowy panel sterowania aplikacji Microsoft Soundscape




Sześcioprzyciskowy panel sterowania aplikacji Microsoft Soundscape


Korzystanie z aplikacji Microsoft Soundscape (z jakiegoś powodu dostępnej tylko dla systemu operacyjnego iOS), która pozwala niewidomym poruszać się w przestrzeni i dowiedzieć się, co jest wokół nich, za pomocą komunikatów głosowych, będzie jeszcze wygodniejsze, jeśli wykonasz zewnętrzny pilot z sześcioma przyciskami zaproponowany przez trzech autorów Instructables - Jazz Ang, Ana Liu i Venkatesh Potluri.

Ściśle mówiąc, Soundscape nie jest rozwinięciem samej korporacji Microsoft Corporation, ale jej działem o nazwie Microsoft Research, który zajmuje się eksperymentami i badaniami w wielu różnych obszarach. Uważa się, że nawet wewnętrzna atmosfera jest zupełnie inna niż w pozostałej części korporacji.

Przyciski na pilocie:

1 - rozpoczęcie / zatrzymanie odtwarzania pliku audio lub wideo, a gdy aplikacja Soundsdape działa i działa w tle, włącza / wyłącza powiadomienia głosowe z tego programu.

2 - pełny dźwięk wł / wył, analog przycisku wyciszenia na pilocie telewizora.

3 - przejdź do następnego utworu w odtwarzaczu audio lub wideo, a w programie Soundscape - przejdź do następnego powiadomienia głosowego.

4 - przejdź do poprzedniego utworu lub powiadomienia głosowego.

5 - duplikuje przycisk Początek.

6 - kontrola trybu „kontrolera wirtualnego” systemu operacyjnego iOS (pozwala na korzystanie z zewnętrznych pilotów, jak opisano).

Jak widać na schemacie domowej roboty, skompilowane w programie Fritzing, przyciski, z których każdy jest uzupełniony rezystorem podciągającym 10 kΩ, są podłączone do zacisków 11, 7, 15, 16, 27 i 25 dość drogiej płyty Adafruit Feather nRF52 Bluefruit LE, która jest kompatybilna z Arduino IDE i zawiera moduł bluetooth. Podczas korzystania z urządzenia ta płyta jest zasilana standardowym kablem Micro USB z power banku, a podczas programowania - z komputera. Należy pamiętać, że wiele banków energii wyłącza się automatycznie, gdy pobór prądu jest zbyt niski, a próg wyłączenia zależy od modelu.



Po złożeniu projektu zgodnie ze schematem, czarodzieje konfigurują Arduino IDE do pracy z tą płytą, jak pokazano na dwóch poniższych zrzutach ekranu:




Po skonfigurowaniu wszystkiego mistrzowie wypełniają szkic na tablicy:

#include 

# zdefiniować CONTROL_PLAY_PAUSE 0x00CD
# zdefiniować CONTROL_SCAN_NEXT 0x00B5
# zdefiniować CONTROL_SCAN_PREVIOUS 0x00B6
# zdefiniować CONTROL_MUTE 0x00E2
# zdefiniować AC_FORWARD 0x0225
# zdefiniować AC_BACK 0x0224
# zdefiniować DOMYŚLNY_BROWSER_HOME 0x0223

BLEDis bledis;
BLEHidAdafruit blehid;

bool hasKeyPressed = false;
// połącz piny w płycie
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);
  while (! Serial) delay (10); // dla nrf52840 z natywnym USB

  Bluefruit.begin ();
  Bluefruit.setTxPower (4); // Sprawdź bluefruit.h pod kątem obsługiwanych wartości
  Bluefruit.setName („TESTArroundMeBluefruit52”);

  // Skonfiguruj i uruchom usługę informacji o urządzeniu
  bledis.setManufacture („Adafruit Industries”);
  bledis.setModel („Bluefruit Feather 52”);
  bledis.begin ();

  / * Uruchom BLE HID
   * Uwaga: Apple wymaga, aby urządzenie BLE miało minimalny odstęp między połączeniami> = 20 m
   * (Im krótszy interwał połączenia, tym szybciej możemy wysłać dane).
   * Jednak w przypadku urządzeń HID i MIDI Apple może zaakceptować minimalny interwał połączenia
   * do 11,25 ms. Dlatego BLEHidAdafruit :: begin () spróbuje ustawić min i max
   * interwał połączenia odpowiednio do 11,25 ms i 15 ms dla najlepszej wydajności.
   * /
  blehid.begin ();

  / * Ustaw interwał połączenia (min., Maks.) Na preferowaną wartość.
   * Uwaga: Jest już ustawiony przez BLEHidAdafruit :: begin () na 11.25ms - 15ms
   * min = 9 * 1,25 = 11,25 ms, maks. = 12 * 1,25 = 15 ms
   * /
  / * Bluefruit.Periph.setConnInterval (9, 12); * /

  // Skonfiguruj i zacznij reklamować
  startAdv ();
}

void startAdv (void)
{
  // Pakiet reklamowy
  Bluefruit.Advertising.addFlags (BLE_GAP_ADV_FLAGS_LE_ONLY_GENERAL_DISC_MODE);
  Bluefruit.Advertising.addTxPower ();
  Bluefruit.Advertising.addAppearance (BLE_APPEARANCE_HID_KEYBOARD);
  
  // Dołącz usługę BLE HID
  Bluefruit.Advertising.addService (blehid);

  // W pakiecie reklamowym jest wystarczająco dużo miejsca na nazwę programisty
  Bluefruit.Advertising.addName ();
  
  / * Rozpocznij reklamę
   * - Włącz automatyczne wyświetlanie reklam, jeśli jest odłączone
   * - Interwał: tryb szybki = 20 ms, tryb wolny = 152,5 ms
   * - Limit czasu dla trybu szybkiego wynosi 30 sekund
   * - Start (limit czasu) z limitem czasu = 0 będzie reklamować się na zawsze (do momentu połączenia)
   *
   * Dla zalecanego okresu reklamowego
   * https://developer.apple.com/library/content/qa/qa1931/_index.html
   * /
  Bluefruit.Advertising.restartOnDisconnect (prawda);
  Bluefruit.Advertising.setInterval (32, 244); // w jednostce 0,625 ms
  Bluefruit.Advertising.setFastTimeout (30); // liczba sekund w trybie szybkim
  Bluefruit.Advertising.start (0); // 0 = Nie przestawaj reklamować się po n sekundach
}

// użycie tej funkcji do sterowania telefonem
void sendCommand (polecenie uint16_t) {
  // Upewnij się, że jesteśmy połączeni i powiązani / sparowani
  dla (uint16_t conn_hdl = 0; conn_hdl  połączone () i& połączenie-> sparowane ())
    {
      // Włącz czerwoną diodę LED, gdy zaczniemy wysyłać dane
      digitalWrite (LED_RED, 1);
      Serial.println („Wysyłanie polecenia ...”);

      // Wyślij klawisz naciśnij
      blehid.consumerKeyPress (conn_hdl, polecenie);

      // Opóźnij trochę między raportami
      opóźnienie (10);

      // Wyślij klucz wydania
      blehid.consumerKeyRelease (conn_hdl);

      // Wyłącz czerwoną diodę LED
      digitalWrite (LED_RED, 0);
      Serial.println („Polecenie wysłane!”);
    }
  }

  opóźnienie (250);
}

// użycie tej funkcji do skonfigurowania sterowania przełącznikiem
void sendSwitchControl (polecenie String) {
  for (int i = 0; i 


Od strony systemu operacyjnego iOS, kreatory najpierw konfigurują parowanie z pilotem przez Bluetooth:



Następnie - funkcje wszystkich przycisków w sekcji dostępności:





Po upewnieniu się, że wszystko działa, kreatory drukują popychacze przycisków na drukarce 3D i udostępniają niezbędne pliki czytelnikom na różne tematy licencjonowany na licencji CC-BY 3.0. Części te mogą być wykonane w inny sposób lub wcale.

Poniższe dwa filmy pokazują, jak mistrzowie testują pilota w akcji:





Pozostaje odbudować pilota w ten sam sposób, ale lutując i umieszczając wynik w etui, a na iOS zainstaluj aplikację Soundscape i uruchom ją w tle, a będziesz mógł korzystać z urządzenia.
0
0
0

Dodaj komentarz

    • uśmiechnij sięuśmiecha sięxaxaoknie wiemyahoonea
      szefiezadrapaniegłupiectaktak-takagresywnysekret
      przepraszamtańczyćdance2dance3przebaczeniepomocnapoje
      przestańprzyjacieledobrzegoodgoodgwizdaćomdlećjęzyk
      palićklaskanierakdeklarowaćdrwiącydon-t_mentionpobierz
      ciepłożałujęśmiech 1mdaspotkaniemoskingnegatywne
      niepopcornukaraćczytaćprzestraszyćstraszyszukaj
      drwinadziękujętoto_clueumnikostryzgadzam się
      źlepszczołablack_eyeblum3rumienić sięchwalić sięnuda
      ocenzurowaneuprzejmośćsekret2grozićzwycięstwoyusun_bespectacled
      shokrespektlolprevedwitamykrutoyya_za
      ya_dobryipomocnikne_huliganne_othodifludzakazzamknij
2 komentarz
Aby ustawić coś zmontowanego na płycie chlebowej jako gotowe urządzenie, cóż, nie wiem ...
Możesz zastąpić tę „dość drogą płytkę” na przykład ESP32 Mini o wartości około 320 rubli. I z płyty głównej, aby przenieść całą tę gospodarkę przynajmniej do tablicy wypłat.

Radzimy przeczytać:

Podaj go do smartfona ...