Accessibility device из Arduino
- Войдите на сайт для отправки комментариев
Сб, 13/03/2021 - 23:51
Красиво писать с первого раза не умею, поэтому первый пост пропущу.
Красиво писать с первого раза не умею, поэтому первый пост пропущу.
Прошу не цитировать этот пост, планируется доработка описательной части по технологиям доступа Switch Access и TalkBack, Switch Control, VoiceOver и др.
Введение
Многие владельцы устройств на Android, наверняка, обращали внимание на функциональный блок "Специальные возможности", а, быть может, активно или периодически ей пользуются. Эта часть операционной системы содержит набор программных сервисов и настроек, с помощью которых цифровые устройства становятся доступнее людям с ограниченными возможностями, такими, как, например, дисфункции конечностей, ослабленное зрение или его отсутствие.
Частью этого раздела являются такие программы, как Switch Access и TalkBack.
Switch Access - функция, позволяющая людям, имеющим двигательные нарушения, управлять устройством Android с помощью специальных переключателей, заменяющих сенсорный экран. Подробнее о ней можно узнать в разделе "Switch Access" справки по блоку "Специальные возможности". Зачастую для этого необходима только одна кнопка.
TalkBack – это программа чтения с экрана от Google, позволяющая взаимодействовать с устройством с помощью аудиоподсказок. Благодаря озвучиванию текста и действий вы можете пользоваться устройством, не глядя на экран. Подробнее о ней можно узнать в разделе "TalkBack" справки по блоку "Специальные возможности". Однако, взаимодействие с сенсорным экраном не всегда бывает удобным по ряду причин. Например - при наличии проблем с мелкой моторикой.
Для пользователей устройств от Apple тоже существуют аналогичные функции операционной системы: VoiceOver и Switch Control("Виртуальный контроллер" в переводе на русский), являющиеся частями пакета "Универсальный доступ"
VoiceOver - это функция (технология), встроенная в операционную систему Mac OS X, а так же IOS. Используя VoiceOver, пользователь может управлять своим компьютером, используя речь и клавиатуру. Эта функция была разработана, чтобы улучшить управление компьютером пользователям с плохим зрением. Она реализована в виде встроенной программы чтения экрана, которая озвучивает информацию на экране компьютера: произнося текст, содержащийся в документах и окнах.
Switch Control / "Виртуальный контроллер" - с помощью данной функции вы можете выбирать, нажимать или перетаскивать элементы, печатать и даже создавать произвольные рисунки, используя переключатели. Например, с помощью переключателя можно выбрать объект или область на экране, а затем выбрать действие с помощью этого переключателя.
Для облегчения взаимодействия с цифровым устройством выпускаются выпускаются разнообразные устройства управления, например для функции Switch Access:
Несомненно, что проблемы управления можно решить Bluetooth клавиатурой/мышью/джойстиком. Но данный метод зачастую недешев, а так же излишне гибок в одном аспекте и недостаточно - в другом. Так, например, для работы со Switch Access необходима одна, но большая кнопка, а не множество мелких, как на стандартной клавиатуре. Для TalkBack же клавиатурные "аккорды" могут быть очень устрашающими - Alt-Ctrl-Shift-Return для запуска последовательного чтения экрана. Привыкнуть, конечно, можно, но...
...но можно и иначе - создать относительно недорогое и простое в сборке устройство, к которому подключаются кнопки любого размера (для Switch Access), и/или передающее Android сложные клавиатурные комбинации по нажатию одной физической кнопки (для TalkBack).
Так, как тут собрались "самопальщики", то и делать подобный девайс будем преимущественно из того, что есть под рукой. Первый предлагаемый мной вариант - это DIY Accessibility Keypad на базе ESP32. Это не совсем "Arduino", но в нем есть Bluetooth и BLE, а стало быть - подключение ко множеству разномастных Android-устройств можно осуществить достаточно просто и однотипно.
Сборка
Сборка очень незамысловата и доступна практически любому человеку, который дружит с собственными руками. Минимально необходимо иметь:
- Плату с контроллером ESP32 в подходящем формате;
- Удовлетворяющее задумке количество кнопок;
- Провода.
Устанавливаем кнопки между выходами GPIO контроллера, и пином GND. В моём прототипе использован MH-ET Live ESP32 MiniKit (в формате Wemos Mini D1) и пять кнопок. Резисторы на плате относятся к подсветке кнопок, и не являются обязательными деталями для конструкции без светодиодов.
Кнопки подключаются абсолютно любые - большие аркадные или какой-нибудь "грибок", мимо которого уже не промажешь.
Затем загружаем с Github набор исходных текстов прошивки с рабочим названием AccessibilityKeypadBLE. Открываем их в Arduino IDE (1.8.9 справляется отлично) с установленным в нем Espressif Arduino core for the ESP32 (я использовал 1.0.4) и назначаем необходимые клавиатурные сочетания номерам GPIO, к которым подключены физические кнопки. Компилируем и заливаем в микроконтроллер.
Использование
После загрузки прошивки в контроллер в эфире должно появиться BLE-клавиатура c именем "AccessPad BLE". Добавляем данное устройство в разделе Bluetooth ОС Android. В последующие включения "AccessPad BLE" будет присоединяться к автоматически.
Если вы планируете использовать функцию Access Switch, следует назначить кнопку/кнопки определенным действиям в соответствующем. разделе "Специальных возможностей". TalkBack сразу подчиняется тем "аккордам", которые заданы в скетче. С доступными для назначения "аккордами" можно ознакомится в разделе "Use TalkBack keyboard shortcuts" справки Android.
Включать сразу обе технологии не стоит - при их комбинировании есть неочевидные моменты, которые выглядят, как баг.
Далее - нажимаете на физическую кнопку, получаете результат - управляете вашим цифровым устройством на базе Android.
Демонстрация работы
Видеодемонстрация (извините, youtube-аккаунта не имею, положил к себе на Яндекс-диск):
1) Switch Access - управление Android одной физической кнопкой: https://disk.yandex.ru/i/3fdQErfvR5eRiA
2) TalkBack - управление Android несколькими физическими кнопками без сложных аккордов : https://disk.yandex.ru/i/9Y6lEsrZRnFS5w
Надеюсь, что данная разработка поможет в новом "цифровом" мире тем, кому и так не просто.
Отлично!!!
Малофункциональный прототип постепенно превратился в многофункциональный.
Желающих приглашаю потестировать: Accessibility Keypad BLE / OTA Ready release
Сейчас на борту имеется:
Фото девайса сделаю при нормальном свете, а пока несколько скриншотов интерфейса:
Улучшенный прототип AccessPad BLE. Как видите - никаких дорогущих комплектующих для девайса не требуется, если руки откуда надо растут - собирается на "раз-два".
Раскладка для этого кейпада:
ESC- TalkBack start/stop
"F1" - Browser
"F2" - Assistent
"F3" - Notifications
"7" - First item
"8" - Home screen
"9" - Read from top item
"<-" - Tab
"4" - Previous item
"5" - Click on focused
"6" - Next item
"F4" - Previous heading
"Enter" - Next heading
"1" - Back
"2" - Previous window
"9" - Read from next item
"0" - Stop TalkBack speech
"Dot" - TalkBack menu
Использование Accessibility Keypad с технологией SwitchAccess - подключена одна внешняя кнопка.
Как можно понять из скриншота, девайс научился слать коды multimeda-клавиш (а так же притворяться гарнитурой), что позволяет физическими кнопками отвечать на входящие звонки, либо отклонять их и т.д.. Управление медиа-плеерами, само-собой тоже доступно. Так что на базе этой прошивки уже можно собрать какую-нить Bluetooth(LE) управлялку андроидом в автомобиль или для TV-Box.
** Применение USB-разъёмов является чистой случайностью. В коробке с надписью "полезный хлам" была обнаружена хренотень, которая отсылала URL рекламируемой конторы в браузер. Подключалась она по USB, внутри имеет пару кнопок. Небольшая модификация, заключающаяся в открыживании VCC и заведении кнопок на D+ с последующим прокидыванием их на ESP32, позволила получить неплохо выглядящий однокнопочный контрол, заведенный на GPIO.
После ритуального обряда с киданием сушеной жабы в кисель из плесени Accessibility Keypad таки удалось подключить к iPhone/iPad и непродолжительно потестировать технологии VoiceOver и Switch Control от Apple.
Субъективно мне показалось, что Apple VoiceOver более проработан, нежели TalkBack от Google в плане озвучки, но более заморочен с точки зрения клавиатурного управления. Switch Control от Apple тоже существенно отличается от гугловского Switch Access и так же непривычен. Но, вроде как, по областям выделения скакать с ним проще.
Пока не могу определиться, что радикально лучше - TalkBack или VoiceOver, так как на тестовом стареньком iPhone 4s (IOS 9) не работает часть клавиатурных сокращений, а софта, который помог бы в отладке под IOS, я не нашёл. На данный момент приходится активировать режим проброса незадействованных клавиш PS/2 клавиатуры в целевую OS, тупо тыкать в клавиши и смотреть на реакцию смартфона.
Кстати, не знаю, захочется ли владельцам дорогих мобильных устройств подключать к ним старинную PS/2 клавиатуру, но возможность такая есть, как оказалось.