Зачем?
Несколько месяцев назад мне в руки попалась хорошая эргономичная мышь. В руке лежала как влитая, и была удобна настолько, что убирать руку с нее не хотелось.Однако программисты работают пальцами по клавиатуре (и еще немного головой - в нее они пьют пиво).
Перенося руку с мыши на клаву и обратно, я стал задавать себе вопросы:
- wat$^&*ck
- и how^#%& it
И в конце концов сформировал несколько требований к своему будущему устройству ввода:
- оно должно совмещать мышь и клавиатуру,
- все действия должны выполняться не глядя на устройство и на собственные руки,
- пальцы должны лежать естественно в максимально удобной позиции,
- движения должны быть минимальными и удобными.
Принцип работы.
На столе лежат два мышеобразных корпуса, соединенных проводом.
Каждый палец лежит на своей кнопке.
Каждую кнопку можно нажимать как кнопку фотоаппарата - на два уровня:
- при слабом нажатии вводится алфавитно-цировой символ,
- если продолжать нажатие сбольшей силой, произойдет еще один щелчок, так вводятся служебные кнопки, F-кнопки, стрелки и т.д).
Корпус устройства можно двигать по столу, но не как мышь, а скорее как стик игровой приставки - при уменьшении толкающего усилия корпус возвращается на место.
В "среднем" нейтральном положении десять кнопок дают символы среднего ряда обычной клавиатуры "ASDFG HJKL;".
Если отклонить корпус вверх, его кнопки дадут верхний ряд - "QWERT" слева, и "YUIOP" справа.
Аналогично, при отклонении корпусов вниз получаем "ZXCVB" и "NM,./".
Сдвигая корпуса друг к другу, получаем цифры: "12345" и "67890".
Оттодвигая корпус в противоположных направлениях, получаем Win, Alt, Ctrl, Shift, Space слева и зеркально отображенные Space, Shift, Ctrl, Alt, Win справа.
Сильное нажатие кнопки под указательным пальцем включает режим мыши, в котором перемещение корпуса соответствет перемещению мыши.
Сильное нажатие кнопки под большим пальцем включает режим стрелок, когда перемещение мыши работает как нажатие стрелки в указанном направлении.
Контроллер и электроника
Мозгом устройства стал 8-битный AVR.
Я использовал готовую плату с контроллером, mini-USB и программатором Teensy-2.0.
Все, что оставалось - припаять горсть кнопок, датчик движения и написать прошивку.
Кнопки должны были стабатывать на два уровня нажатия. Поискав на mouser.com, ebay и alibaba, я не нашел переключаетелей с приемлимыми параметрами, поэтому под каждой кнопкой у меня стояли два одинарных переключателя с небольшим зазором.
В инетернете можно легко найти можество переключателей, если поискать "6x6 Tactile Switch".
Кстати еще один секрет:
Жесткость срабатывания выключаетеля можно легко регулировать.
В качестве датчика движения я использовал стик от PSP, который был прикручен к копусу снизу и упирался в стол своим рычажком, который был для лчшего контакта обклеен резиной.достаточно отрезать заклепки (1), снять железную крышку (2), вытащить стальную мембрану (3) и ножницами отрезать от нее пару узких полосок по краям. Чем больше будет срезано, тем мягче будет нажиматься кнопка.
Прошивка для контроллера не преставляет собой ничего интересного, единственная часть, которая может оказаться кому-то полезной - код для поддержки одноврменно USB-Mouse + USB-Keyboard + HUD-устройства для вывода отладочной информации usb_keyboard_mouse_debug.zip.
Это слегка модифицированный код примера сайта pjrc.com.
CAD, 3D-printing
Это был мой первый опыт CAD и 3D печати.Корпус был нарисован в небезызвестной программе от Alibre, экспортирован в STL и заказан в printing service i-materialize. Причем левая половина напечатана полиамидным порошком а правая - фотополимерным материалом - high-detail-resin.
Этот проект многому меня научил:
- 3D печать - это несложно, недорого и весьма качественно.
- CAD от Алибра (по крайней мере бесплатная ознакомительная версия) - противоестественное постоянно вылетающее поделие, котрое может навсегда отбить охоту что-то моделировать. Или я не умею его готовить. Нужно искать альтернативы.
- Экcпортированный STL нужно проверять в какой-нибудь сторонней программе, я использовал NetFabb studio.
- Большинство пресс-бюро имеют онлайн форму, в которую можно загрузить ваш STL-файл, выбрать материал и узнать цену. Там же можно узнать о потенциальных проблемах вашего STL в выбранном материале.
Подробнее о материалах:
Полиамид
Прекрасный материал для прототипирования.- Не очень точен в мелких деталях, все что меньше 0.3 мм - пропадет.
- Крепкий. Стенки 2.3 мм будут жесткими. Не боится ударов.
- Эластичный в тонких элементах. Стенки 1 - 1.5 мм будут гибкими.
- Изделие получается на 0.1 мм больше во все стороны.
- Неплохо сверлится и точится.
- Длинный элемент может отломиться, если в сечении он меньше 2х2 мм.
- На ощупь - как мелкозернистый пенопласт.
- Материал пористый. При окраске будет впитывать краску. Пропускает воздух. Можно пропитать клеем.
- При нагреве - плавится.
- Мелкие отверстия, полости, проточки нужно будет прочистить от порошка иголкой или маленькой отверткой.
- Хорошо клеится клеем J-B PlasticWeld.
Фотополимер
Хорош для статуэток, но совершенно не приспособлен для прототипирования:
- Передает даже мелкие детали.
- Хрупкий, при попытке согнуть - раскалывается,
- Детали получаются на треть миллиметра больше во все стороны.
- Попытка отбработки приводит к трещинам и откалыванию частей.
- Верхняя сторона гладкая глянцевая. Нижняя - матовая.
Итоги эксплуатации.
Устройство неудобное:
По итогам работы я решил сделать новое устройство. О нем - в следующий раз.
- Нажатия клавиш должны делаться сверху вниз, чтобы им противостояла реакция опоры стола. В моем устройстве кнопки приходится нажимать "к себе", когда палец движется к ладони. При этом, ладонь играет роль опоры и мышь смещается по столу.
- Каким бы легким ни был корпус мыши, его смещение - медленная операция. "Дотянуться" до верхнего ряда клавиш - несложно, но постоянно переклчюаться между верхним и нижним рядами, цифрами и шифтами - никогда не получится быстро.
- Стик PSP - очень неточное устройство. 12-битный ADC встроенный в AVR шумел на младших 5 битах, оставляя диапазон -64..63. Предельные уровни отклонения стика давали диапазон -40..30. Это достаточно для упрваления в играх, но не позволяет управлять мышиным курсором.
Время портачено не зря, я проект дал мне массу новых идей, я разобрался с 3D-печатью. AVR (без Arduino) оказался простым удобным устройством.
По итогам работы я решил сделать новое устройство. О нем - в следующий раз.
No comments:
Post a Comment