Мышь для людей с ограниченными возможностями

в 21:49, , рубрики: HID, stm32, usb, гаджеты, здоровье, инвалиды, Компьютерное железо, мышь. манипулятор, программирование микроконтроллеров

Речь в данной статье пойдет про проектирование оборудования, которое упрощает работу за компьютером. Предыстория моего небольшого проекта связана, совершенно неожиданно, со спектрумами, apple 2 и прочей ретрокомпьютерной техникой. Есть увлечение такое — ковыряться во всяком старье. Плюс делать это в прямом эфире на YouTube. Коллективный разум помогает чинить. После одного из стримов обратился подписчик с весьма необычной просьбой. Зовут его Александр и у него ДЦП. Соответственно, ему трудно работать на компьютере. А желание работать имеется, что не может не радовать.

Проблему работы с клавиатурой он решил самостоятельно ещё достаточно давно и в данный момент пытается развивать свой небольшой проект. Если в двух словах, то это накладка на клавиатуру, которая не позволяет нажимать одновременно несколько клавиш. Решение простое, но весьма эффективное.

Вернемся к просьбе. Она была весьма странной. Нужно попробовать переделать сломанный пульт от моторизированного кресла так, чтобы он управлял курсором.

Внешний вид пульта до доработки (хотя и после он выглядит так же)
Внешний вид пульта до доработки (хотя и после он выглядит так же)

Пока шла посылка, бегло изучил рынок. Цены на подобные устройства слегка очень сильно большие. И это при внешней примитивности решений.

SimplyWorks Joystick
SimplyWorks Joystick

Я их видел всего два: палка (25к рублей) и трекбол (13к рублей). Трекбол вообще стандартная штука. Разница только в форме корпуса, где вместо дизайна сделали упор на прочность. Вариант с палкой, при первом просмотре, показался мне тоже крайне примитивным, но, как выяснилось позднее, там были применены некоторые решения, упрощающие взаимодействие. А именно, кнопки были утоплены и имели форму конуса. В таком случае человек пальцем попадает в относительно большую область и "скатывается" к самой кнопке по этому конусу. Я пробовал обращаться в центр социальной поддержки с целью пощупать подобные устройства, но, увы, получил отказ. Их просто нет в наших краях. Тут появились первые мысли о разработке собственного варианта мыши.

Но пока про доработку. Пульт от моторизированного кресла очень похож на пульт от небольшого погрузчика. Десяток кнопок, лампочек и джойстик. Палка оказалась аналоговой, что позволяет узнать угол отклонения от центрального положения. Достаточно полезная функция, но дорогая. Ради совместимости с корпусом родную плату пришлось оставить, но все кнопки "оторвать" от схемы.

То, что скрыто от глаз
То, что скрыто от глаз

Всякие Arduino костыли с последовательным портом и софтом для преобразования команд в движение - не вариант. Надо делать правильно, USB HID. Это позволит использовать устройство без предварительных настроек в операционной системе с использованием стандартного драйвера. В том числе и на планшете с Android. Да даже в UEFI оно заведется. Справедливости ради, на Arduino такой вариант вполне можно сделать, но с аппаратными доработками (три резистора, два стабилитрона). Никто не мешает ногодрыгом общаться по USB, что вполне успешно делают те же usbasp (программатор AVR) и digispark (отладочная плата). Но есть более интересный вариант: микроконтроллер STM32F103C8T6. И на отладочной плате уже есть все, что нужно. Это были ещё те времена, когда их было легко достать и за недорого... За целых 15 минут (из которых 10 я качал и устанавливал среду для разработки) был накликан проект, который уже корректно определялся компьютером. Но пока ничего полезного не делал.

Процесс отладки на макетке
Процесс отладки на макетке

В данной статье рассказывать технические подробности с примерами кода я не буду. Как-нибудь в другой раз. Так что пропускаем процесс отладки кода. Скажу только то, что в первую очередь я отладил работу загрузчика (через USB), чтобы при обнаружении ошибки владельцем устройства была возможность удаленно её исправить. Ну и вход в загрузчик осуществлялся не аккордом из кнопок при подключении к USB провода, а просто долгим (10 секунд) нажатием на одну из кнопок.

Теперь поведаю о том, как в голове сформировалась картинка развития проекта. Нужно дешевое, прочное и, в идеале, ремонтопригодное изделие из доступных компонентов. Подходящие компоненты были найдены очень быстро. Тут нам помогают производители комплектующих к аркадным автоматам. Все ведь видели автоматы с игрушками в магазинах? Так эти аппараты выдерживают удары (один или два...) обиженных игроков, когда клешня опять все уронила. Эти джойстики и кнопки идеальное ведь решение! Подходят по всем критериям. Остается только заказать пару комплектов деталек и, пока оно едет, придумать корпус.

Джойстики от аркадных автоматов - это 4 микропереключателя, которые нажимаются при отклонении палки. Имеем максимум 8 направлений. Я предложил "заказчику" опробовать подобное дискретное управление на своем устройстве (сделал переключение режимов). Если в аналоговом режиме скорость движения курсора зависела от угла отклонения от центрального положения, то в дискретном уже от времени. Отзыв был положительный. Не знаю в плюсы это записывать или же в минусы, но стик издает характерные щелчки при срабатывании. Для пользователя это, скорее всего, плюс, а вот для окружающих… Не такой уж он и громкий, на самом деле.

Корпус, на самом деле, та ещё проблема. И я не говорю про дизайн. Из чего его делать то? Были мысли о фанере для прототипов и гибке металла для "серийного" образца. Но это уже похоже на "Создавать себе трудности и героически с ними бороться". Просто у меня был страх перед 3D печатью больших объектов. В начале пути DIY-щика побился головой о стену с принтером ANET A8. Сейчас то уже все отлажено, особенности знаем. Да и принтер посерьезнее появился. В общем начал проектировать корпус в tinkercad. По образцу пульта от моторизированного кресла: вертикально расположенный стик и кнопки на наклонной поверхности.

Процесс печати
Процесс печати

Расположение кнопок в пульте от кресла мне не понравилось от слова совсем. Если на основном своем месте работы они использовались относительно редко, то в мыши должны нажиматься постоянно.

Какая у мыши основная функция, кроме перемещения курсора? Клик левой кнопкой. Значит делаем её больше остальных. А сколько кнопок вообще нужно? Левая, правая, колесико. К слову, в заводских устройствах по три кнопки. Но ведь есть ещё прокрутка колесиком. Представьте сколько времени нужно, чтобы отвести курсор до полосы прокрутки, нажать на перемещение и вернуть курсор обратно? Много. Значит делаем ещё две дополнительных кнопки. Это не сильно увеличит итоговую стоимость устройства, но комфорт прибавить вполне может.

Мышь для людей с ограниченными возможностями - 6

Корпус разделен на две части. Основная причина, разумеется. монтаж компонентов и обслуживание. Должен быть удобный доступ к начинке. Но разделение выбрано именно таким образом, чтобы при минимуме времени и ресурсов можно было экспериментировать с расположением кнопок. Вполне вероятно, что мое представление об удобстве будет отличаться от тех, для кого ведется разработка.

Итоговый вид прототипа получился следующим.

Мышь для людей с ограниченными возможностями - 7

Пока нет ни схемы, ни печатной платы. Все держится на МГТФ. Да и код показывать пока стыдно, но линк на репозиторий все же оставлю.

Тут минутка внезапной почти рекламной интеграции. На конференции «Свободное программное обеспечение в высшей школе», которая в июне 2021 проходила в городе Переславле-Залесском (ИПС им. А.К. Айламазяна РАН), нашел заинтересованных людей, к которым на тестирование отправился один из экземпляров устройства. Посещать конференции - крайне полезно. Новые знакомства и вообще непонятно в каком направлении пойдет обсуждение в перерывах между докладами.

Разумеется, надо озвучить примерную стоимость устройства.

  • Аркадный стик — 600 руб.

  • Комплект кнопок — 200 руб.

  • Отладочная плата с STM32F103C8T6 — не хочу даже смотреть актуальную цену. 2021, хватит...

  • Провода, разъемы — 200 рублей.

  • 20 часов печати принтера

Теперь о планах. Прототип работает, но все настройки в данный момент прописаны жестко. И это надо исправлять. А настроек, на самом деле, не так уж и мало. От смены функций клавиш до тонкой подстройки скоростей курсора (ограничение максимальной скорости, сброс скорости при смене направления, ускорение...). Все это нужно нужно прописывать приложением на компьютере и хранить в самом устройстве. Соответственно, мышь должна дорасти до комозитного USB устройства, состоящего из минимум двух: мыши и Custom HID для управления. Возможно, стоит добавить ещё режим джойстика. По форме оно вполне подходит, а иногда развлекаться хотят все.

Разумеется, в комментариях приветствуется идеи и конструктивная критика.

Автор: Sergey V. Karpesh

Источник


* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js