Удобный манипулятор вместо Мыши

Разговоры на любые темы: вы можете обсудить здесь какой-либо сайт, найти единомышленников или просто пообщаться...
Proxy
Профессор VB наук
Профессор VB наук
Аватара пользователя
 
Сообщения: 2855
Зарегистрирован: 31.08.2007 (Пт) 4:41

Удобный манипулятор вместо Мыши

Сообщение Proxy » 27.07.2016 (Ср) 20:31

Доброго времени суток.

Впечатлился тут фотографией одного устройства (во вложении) и решил попробоваь собрать нечто подобное.
Купил Arduino Nano + Джойстик (во вложении тоже), потратил один вечер и задумался о том, что возможно мышь и не является таким уж хорошим манипулятором.

Пока рано говорить, выйдет ли у меня что-то из того, что я на данный момент собрал (пока это чистый Nano с висящем на 5 проводах джойстиком и кнопкой; фото не буду делать), но такие открытия одного потраченного вечера:
1. Arduino Nano не поддерживает HID профиль. Но пока Nano отправляет через эмулируемый COM-порт 3 величины (2 оси и состояние кнопки), вся логика реализована софтварно на Windows (и тут даже есть некоторые плюсы).
2. Джойстики бывают разные. Тот, что я купил имеет ряд изъянов: мертвая зона прямоугольной формы в центральной позиции, 2 пружины вместо одной (отсюда стремление "прилипнуть к оси"), усилие кнопки зависит от положения джойстика, 2% от полного хода (18/1024) не возвращается пружинами (люфт в средних позициях).

Изначально пытался подойти к решению задачи "в лоб". Но быстро понял, что требуется калибровка (+), нелинейная зависимость скорости перемещения от положения джойстика (+; 1 дуга на графике зависимости — идеально: при малых углах скорость минимальна, при средних ближе к минимальной, при максимуме максимум), требуется круглая мертвая зона в центре (иначе клик приводит к перемещению курсора и некоторые элементы графического интерфейса ведут себя не так, как ожидалось), в итоге даже стало получаться нарисовать в Paint нечто, отдаленно напоминающее круг (во вложении; один из кругов нарисован мышью).

Промежуточный итог:
При чтении веб-страниц удобнее мыши (руки совсем расслаблены, лежат на подлокотниках, спина расслаблена, нет нужды тянуться к мыши, которая работает только на столе), с другими задачами не справляется (во всяком случае в текущей реализации).
Сам джойстик куплен совсем не подходящий (но позволил определиться с требованиями к комплектующим).
Корпуса нет, но даже без корпуса уже более-менее ясно, что в итоге получится.
Провод несколько мешает, нужно делать без проводов. В идеале взять за основу конструктор с bluetooth и поддержкой HID (стоит поискать, может существует что-нибудь такое).
Нужна кнопка для переключения в режим скроллинга (не средняя кнопка мыши, а именно переход в режим эмуляции мышиного скроллера для вертикальной и горизонтальной прокрутки), прокручивать что-либо джойстиком гораздо удобнее, нежели колесиком.
После того, как переходишь на мышь, некоторое время чувствуешь дискомфорт (это примерно как с велосипедом, у которого руль поворачивает колесо в обратную сторону: если научился ездить на таком, то вернуться к обычному быстро не выйдет, привычка теряется).
После 20-30 минут использования чтобы попасть по какому-либо элементу интерфейса уже не требуется делать повторные попытки и возвраты, однако времени всё же занимает больше, чем с мышью.
Идеальное место для такого манипулятора — монтаж в подлокотник кресла.
Чем больше кнопок — тем лучше.
Колесико мыши — совсем слабый элемент в плане эргономики (встречал парные колесики и колесики с качанием влево-вправо, но это всё ещё хуже обычного).

P.S. А вот мышь с встроенными джойстиками — было бы отличное устройство (один для перемещения курсора, другой для прокрутки вместо колеса). Но такую видеть не довелось. Есть ещё мыши с сенсорной областью прокрутки, но тоже в живую не видел.
P.P.S. В общем-то наверное поставленная цель выполнена, джойстик вместо мыши проверен. Далее наверное стоит прицелиться создать такой манипуляфтор, который подходил бы для чтения веб-страниц и просмотра видеоконтента (с соответствующим набором органов управления). Но пока всё упирается в поиск комплектующих. Возможно придется собирать джойстик с нуля из энкодеров, пружин, осей и т.д. А вот его форма уже точно определена: как на фото того промышленного манипулятора.
Вложения
hs_01_270x196_pc.jpg
hs_01_270x196_pc.jpg (33.24 Кб) Просмотров: 1708
512-04.jpg
f12g.png
f12g.png (51.83 Кб) Просмотров: 1708
Follow the white rabbit.

Proxy
Профессор VB наук
Профессор VB наук
Аватара пользователя
 
Сообщения: 2855
Зарегистрирован: 31.08.2007 (Пт) 4:41

Re: Удобный манипулятор вместо Мыши

Сообщение Proxy » 29.07.2016 (Пт) 19:11

Замечание N: калибровка по центральной точке не требуется.
Идея такая: с каждого АЦП возвращается величина от 0 до 1023. Если джой длительное время (1000мс+) находится в позиции, расстояние (?) от которой до центра (положим 512), то эту точку и берем за откалиброванный центр. Далее берем границы за 50 и 973 (50* точек от каждой границы), условно считаем, что джой не выйдет за эти значения. Но вот если выйдет, то новые предельные значения и берем за новые границы (возникнет однократный неощутимый клиппинг, но никто даже не заметит). И вот теперь от занудной калибровки можно избавиться.

Замечание N+1: если джойстик, который по y возвращал в покое +18 (вместо 0) полежал непродолжительное время на боку, то он спокойно может начать возвращать в покое -5 по этой же оси. Сохранять данные калибровки смысла нет, всё равно утратят актуальность через сутки.

Замечание N+2: если беспроводная клавиатура начала глючить, подвисаь и пропускать нажатия, то отдалите вашу поделку от неё подальше и клавиатура "починится". Вообще сложно представить, что Nano с 5 проводами и джойстиком может как-то влиять на клавиатуру. Но вот влияет. Первоначально думал, что проблема в USB, но "поделка" вешает клавиатуру, даже будучи подключена к аккумулятору. "Радиус поражения" порядка 30см.

*50 единиц взято наобум. Просто оказалось, что хватает. С другой конструкцией джойстика или с другими характеристиками АЦП выйдет иначе само-собой.
Follow the white rabbit.

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16116
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Удобный манипулятор вместо Мыши

Сообщение Хакер » 03.08.2016 (Ср) 9:24

Proxy писал(а):1. Arduino Nano не поддерживает HID профиль. Но пока Nano отправляет через эмулируемый COM-порт 3 величины (2 оси и состояние кнопки), вся логика реализована софтварно на Windows (и тут даже есть некоторые плюсы).

Не нужно рассматривать Arduino Nano как артефакт с неба и говорить об этой плане как о цельном и неделимом.

Это просто ATMega168 с предварительно прошитим бутлоадером в бут-секцию и интерфейсный чип FT232RL.
В микроконтроллер можно прошить что угодно, можно зашить и собственный бутлоадер, можно полностью стереть чип и помнять фьюзы и лок-биты. Что угодно.
В EEPROM чипа FT232RL тоже можно зашить любую конфигурацию, зашить любую пару VID+PID, настроить десктриптор, свои строки описания.

Хотя невозможно поменять USB-класс, возвращаемый чипом FT232RL при перечислении, возможность зашить свой VID+PID позволяет подкинуть свой собственный драйвер-фильтр, который превратит устройство в HID.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Proxy
Профессор VB наук
Профессор VB наук
Аватара пользователя
 
Сообщения: 2855
Зарегистрирован: 31.08.2007 (Пт) 4:41

Re: Удобный манипулятор вместо Мыши

Сообщение Proxy » 04.08.2016 (Чт) 17:58

Хакер писал(а):Не нужно рассматривать Arduino Nano как артефакт с неба и говорить об этой плане как о цельном и неделимом

Хотелось сосредоточиться на джойстике (такова изначальная задумка), Nano не позволила, следовательно с поставленной задачей справилась так себе. Если бы было желание повозиться с FT232RL, то можно было и вовсе не брать nano, а взять рассыпухой (пусть даже и дороже в итоге) и собрать на изготовленной по ЛУТ плате (или с помощью фоторезиста, не суть, хотя до фоторезиста у меня так руки и не дошли: ЛУТ от чего-то совсем без брака стал получаться), кастомизировав плату под контроллер джойстика (как минимум nano занимает многовато места, хотя большая часть разведенных дорожек не используется тут).
Боюсь, что игрушка и так отняла слишком много времени. Сейчас всё застопорилось на монтаже в корпус (нужно раздобыть кое-какие метизы, не хочется слишком кустарно собирать). Когда будет уже что-нибудь более-менее готовое, тогда и будет смысл заняться настоящим HID.
P.S. Вообще есть ещё мысль использовать останки беспроводной мыши и таки сделать 2-в-1: позиционирование курсора и движением по поверхности и наклоном джойстика, скроллинг отдельным джойстиком (чтобы не было избыточного переключения режимов). Тогда nano потребуется только чтобы формировать сигнал для передачи на входы контроллера из мыши, USB не будет нужен. Вот только джойстик аля Sony PS в корпус мыши никак не поместить. В общем это всё в копилку дел, которым не суждено завершиться.
Follow the white rabbit.

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16116
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Удобный манипулятор вместо Мыши

Сообщение Хакер » 04.08.2016 (Чт) 19:52

Proxy писал(а): Если бы было желание повозиться с FT232RL, то можно было и вовсе не брать nano, а взять рассыпухой (пусть даже и дороже в итоге) и собрать на изготовленной по ЛУТ плате (или с помощью фоторезиста, не суть, хотя до фоторезиста у меня так руки и не дошли: ЛУТ от чего-то совсем без брака стал получаться),


Логики не вижу. FT232RL и так запаяна на плате с Nano. Для того, чтобы «возиться» с ней, никакий паяльных (читай — схемотехнических) правок не требуется, всё на уровне софта. А если всё на уровне софта, то какая разница, своя плата и рассыпуха, или готовая Arduino Nano?

При том, что я сам, хоть и имею Arduino Nano, никогда не буду делать на ней готовое устройство, а предпочту под конкретное устройство спроектировать специализированную плату, я не вижу именно логике в аргументации против твикинга настроек FT232RL, входящей в состав платы Arduino Nano.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Proxy
Профессор VB наук
Профессор VB наук
Аватара пользователя
 
Сообщения: 2855
Зарегистрирован: 31.08.2007 (Пт) 4:41

Re: Удобный манипулятор вместо Мыши

Сообщение Proxy » 05.08.2016 (Пт) 19:09

Хакер писал(а):А если всё на уровне софта, то какая разница, своя плата и рассыпуха, или готовая Arduino Nano?

Ну тут скорее речь про сравнение решения с готовым HID и тем, куда следует потратить время. В моем случае пока на всё я потратил порядка 2-3 часов.
А в сравнении nano vs diy, первое решение проигрывает как минимум в габаритах, а так же в том, что не имеет на одной плате никакого беспроводного интерфейса, не умеет контролировать зарядку/разрядку АКБ (на самом деле умеет, но желательно TP4056 или что-то вроде иметь на плате), а большая часть платы занята неиспользуемыми в данном приложении дорожками.
Хакер писал(а):При том, что я сам, хоть и имею Arduino Nano, никогда не буду делать на ней готовое устройство

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

я не вижу именно логике в аргументации против твикинга настроек FT232RL

Я лишь хочу сказать, что не готов пока на это потратить время. С реализацией управления через виртуальный последовательный интерфейс у меня вышло быстрее (с этим я сталкивался, по крайней мере).
Follow the white rabbit.


Вернуться в Народный треп

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 9

    TopList