Мыши: W-Mouse

16 октября 2009, пятница 04:36
serj для раздела Лаборатория
Третья часть, последняя.
Первая часть: Мыши: оптический датчик
Вторая часть: Мыши: бессмысленный тест

Оглавление

Вступление

Это проект по созданию мышки с улучшенными характеристиками. Информация, файлы и документация получены от автора проекта Walkie и публикуются с его любезного разрешения.

Суть идеи заключается в замене контроллера мышки и установке собственного программного обеспечения. В начале проект ориентировался на доработку мышек фирмы А4, но может быть выполнен на любой лазерной мышке с датчиком ADNS-6010 или ADNS-6090. Контроллер поддерживает две основные кнопки, кнопку скроллинга и сам скроллинг, кнопку переключения DPI (она переключает профили), две кнопки на боку мышки и могут быть добавлены еще две дополнительные кнопки. В принципе, количество кнопок, как и функциональность, может быть увеличено, для этого есть резервы.

На мышке имеется двухцветный светодиод, он тоже управляется контроллером. Что и как им индицируется - зависит от редакции программного обеспечения. Сам контроллер эмулирует два устройства - мышь и клавиатуру, что позволяет назначить кнопкам коды клавиатуры, это помогает в старых играх, которые поддерживают только стандартный кнопки мыши. Подробнее о функционале W-Mouse Вы можете узнать у автора в его теме, проект постоянно развивается. Например, в последних редакциях ПО появилась функция интеллектуальной работы скроллинга. Полную спецификацию проекта Вы можете в теме обсуждения, ссылка в конце статьи.

Что надо для того, чтобы подключиться к проекту? Да не особо много - мышку с совместимым датчиком, несколько недорогих компонентов и потратить несколько вечеров на сборку. И в результате Вы получите мышку весьма высокого качества.

Этапы сборки схемы

Этап 1

Необходимо приобрести некоторые компоненты - контроллер Atmel AT90USB162 в корпусе TSOP32, кварцевый резонатор на 16MHz и немного мелочишки. И лучше выбрать эту мелочь в SMD исполнении, так проще монтировать. Стоимость комплекта вряд ли превысит 100 рублей. У автора проекта есть трассировка двухсторонних печатных плат в формате PCAD для мышки A4 X-750F и, кажется, 730-ой модели. Я этим не пользовался, а просто произвел доработку имеющейся мышки, о чём и собираюсь рассказать.

Этап 2

Необходимо сделать небольшую плату под микропроцессор AT90USB162 и его компоненты.

Обращаю внимание - вначале надо открыть мышку и найти место для установки этой платы! Если вначале ее спаять, а потом пытаться запихнуть в мышку, то могут возникнуть большие проблемы. Например, мой вариант размещения под модель 730:

Для 750-ой модели я поставил плату прямо поверх датчика ADNS-6010 на ее выводы, там позволяет место.

К самой плате. Здесь могут быть несколько вариантов - можно взять одностороннюю универсальную печатную плату 'из одних дырок' и распаять на ней микропроцессор, либо изготовить более-менее нормальный переходник под корпус TSOP32. Пока о втором варианте, но лично я так не делал - мороки много, а особого смысла нет. Однако. Для изготовления платы надо взять лист фольгированного стеклотекстолита, приклеить микросхему (или просто прижать) и обвести иголкой ее выводы. Потом берется рейсфедер с нитрокраской или водостойкий фломастер и рисуются трассы по этим рискам в разные стороны от микросхемы, веерообразно. К концам этих трасс будут припаиваться проводники, это надо учесть - на концах лучше сделать утолщения. Потом можно или вытравливать или вырезать резаком. Один момент - крайне желательно соединить между собой все выводы цепей GND и 5В, а также нарисовать контактные посадочные места под конденсаторы и резисторы - это очень упростит последующий монтаж. Перед тем, как будете делать, не забудьте прикинуть рисунок на бумаге. После вырезания или вытравливания плату надо зачистить очень мелкой шкуркой и облудить. Для этого весьма подходит плетенка от экрана коаксиального кабеля или что-то подобное. Канифоли побольше, а вот припоя поменьше. Хоть я и применял подобный технологии для домашних конструкций, но в данном случае считаю его нерациональным и детально не описываю. Сами разберетесь, это не сложно. Лично я взял плату 'из одних дырок', такую относительно легко купить, и сделал переходник на проводах под TSOP32. Проблем не возникает, но требует некоторой аккуратности.

Естественно, на плату из дырок распаять планарную микросхему с столь частым шагом нельзя. Будем извращаться. Идея вот в чём - микросхема приклеивается с той стороны, где нет металлизации, а от стандартного ряда отверстий к выводам припаиваются тоненькие проводники. Примерная модель выглядит так:

Точки - отверстия. Зеленые линии - проводники к выводам микросхемы. Я собрал две таких платы, не слишком хлопотно. Но есть большая нагрузка на глаза. Для облегчения жизни можно использовать различные виды луп, особенно часовых. Для уменьшения возможных проблем я бы попросил четко придерживаться методики изготовления.

1. Вырезать плату нужного размера

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

Ну, положим, удалось.

3. Взять спирт или другой растворитель и вычистить остатки флюса с микросхемы. Старый флюс уже сгорел и приносит только проблемы.

4. Берите лампу, лупу и начинайте проверять, нет ли где залипов и волосков. Если нашли, то - флюс плюс паяльник, никаких иголок. Потом повторная чистка от флюса. Проверять надо с обеих сторон микросхемы, в том числе и на просвет.

5. Для монтажа нужны тонкие проводники. Для этого очень хорошо подходят жилки от провода МГТФ. Чем тоньше будут проволочки, тем меньше шанс их отпайки при монтаже. Дело тут в том, что толстые проволочки передают тепло и при нагреве в одном месте они могут отпаяться в другом. После разделения МГТФ на проволочки, их надо опаять. При опайке убедитесь, что они действительно опаялись по всей длине, но припой не образовал на них существенных утолщений.

6. Микросхему приклеить на плату, причем по бокам микросхемы будут 4 отверстия - надо отцентроваться. Клей можно использовать любой, но обязательно проследите, чтоб он не затек под выводы. Приклеивать надо по той причине, что при монтаже микросхема может сдвинуться и порвать/смять уже припаянные проводники.

7. Если у Вас нормальный паяльник, то можно сразу перейти к пункту 8. А вот если у Вас что-то 'большое и несуразное', которое не подходит для столь тонкой работы, то это не беда, сейчас полечим. Чтобы осуществить столь тонкий монтаж нам нужно очень тонкое жало. Стачивать имеющееся в паяльнике глупо, проще сделать времянку. Для чего на жало плотно наматывается одножильный медный провод диаметром около миллиметра. Ее конец надо сточить на угол и опаять. Так вот, паять будем этой проволочкой. Как-то мне пришлось воспользоваться этим способом и искренне сочувствую тем, кто вынужден будет поступить именно так. Но 'что ж'. Сами понимаете, отвод провода от намотки не должен быть слишком длинным, на нем теряется температура.

8. Процесс припайки проводников. Т.к. мы опаяли микросхему и проводники, то эта, самая трудная, операция будет максимально облегчена - нам не нужно пользоваться припоем, он уже нанесен на выводы и проводники. А значит, остается только обильно смочить все флюсом и начать поочередно припаивать эти самые проволочки. Я поступал так - вначале продевал проволоку, потом ее укладывал нужной формой и длиной на вывод микросхемы и тыкал концом паяльника в вывод микросхемы - провод припаивался. Дальше остаётся вытянуть лишний провод в обратную сторону и запаять с той стороны. Причем, один момент - при запаивании наливайте больше припоя, это пригодиться при последующем припаивании проводов к этому контакту. И еще, не забывайте после припаивания очищать жало от остатков припоя. Иначе при следующем 'тыке' в вывод микросхемы этот припой может залить выводы и проблем станет сразу ой как много-много... Спешить не стоит, не тот случай.

9. Проведите визуальный контроль смонтированного, залипов и замыканий быть не должно. Лучше перепроверить еще раз с лупой и хорошим освещением.

10. Возьмите лист бумаги, нарисуйте расположение контактных площадок и поставьте номера им соответствующих выводов микросхемы. Без этого Вам придется постоянно крутить плату, чтоб вспомнить, какая контактная площадка за что отвечает.

11. Соедините цепи GND (обозначенных полосатым треугольником) и 5В. Схема будет приведена ниже.

12. Возьмите тестер и прозвоните цепи относительно GND. Прозвонку надо осуществлять на пределе 'диод' и вывод тестера "+" соединить с цепью GND. На всех трассах Вы должны увидеть примерно одно и тоже значение, исключение будет на цепи 5В (и, кажется, reset, вывод 24). Если есть аномалии, то проверяйте, прозванивайте с соседними выводами.

13. На схему монтируются несколько компонентов, необходимых для начального прописывания загрузчика. Схема приведена на следующем этапе.

Этап 3

Программное обеспечение в W-Mouse обновляется через интерфейс USB. Но вот беда, для обновления в микроконтроллере должна быть хотя бы простейшая программа, а на данный момент в микросхеме ничего нет. Придется прошивать, как это ни печально. Можно воспользоваться CodeVisionAVR и прописать загрузчик. Самым простым будет воспользоваться интерфейсом LPT, для чего паяется такая схема:

Не забудьте соединить корпус разъема с GND (выводами 18-24), это уменьшит вероятность сгорания LPT при подключении/отоединении разъема.

Замечание - у меня был случай, когда этот вариант подключения не работал. Я потратил некоторое время, пока не понял, что резисторы R1-R4 слишком большого номинала. Замена их на 100 Ом решила проблему. Напряжение +5V можно взять с кабеля USB. В отличии от 5 В с компьютерного блока питания, напряжение USB имеет внутреннюю защиту от короткого замыкания и 'если что' не приведет к особо неприятным последствиям. Еще один момент, теперь уже по программе - CodeVisionAVR в DEMO режиме записывает только файлы очень маленькой длины. Загрузчик имеет бОльшую длину и DEMO вариант не пройдет.

После запуска программы откроется ее окно. Идете в настройку аппаратуры и выставляете режим работы - LPT.

Если у Вас LPT имеет другой адрес, то его можно/нужно поменять.

Если все хорошо, то можете втыкать разъем в LPT порт компьютера и подавать напряжение питания 5 вольт. Подключать надо строго в такой последовательность - вначале разъем LPT, а уж затем питание. Отключение делать в обратной последовательности - вначале отключать питание, а уж затем вынимать разъем LPT.

После подключения можно запустить программу и попробовать достучаться до микросхемы. Для чего открываете в CodeVisionAVR раздел программатора. Кстати, та версия программы, что применял я, не работала на Windows версии x64. Итак, первое, что надо сделать, это прочитать сигнатуру. Должно быть такое окно:

Если в верхнем ряду цифры 0FFh, 0FFh, 0FFh, то вы не подали питание 5 вольт. Проверяйте, бывает.

Но может выскочить такое сообщение:

Проверьте питание 5 вольт. Если не в нем дело, то - может Вы забыли включить устройство LPT в BIOS?

Идем в BIOS, смотрим настройки аппаратуры. Если LPT выключен, а по умолчанию он включен, то включаем его. Для улучшения работы и повышения надежности крайне рекомендую переключить режим работы с SPP на EPP. По всем параметрам он полностью совместим с SPP, но увеличивает ток буферных каскадов, что резко снижает шанс убить LPT. Фактически, у меня на моем тестовом оборудовании не сгорел ни один порт LPT в режиме EPP, а вот с режимом SPP случаи бывали и не один. И дело не в криворукости, кабель может вылететь сам по себе в самый подходящий момент. (и не всегда его затягиваешь, коммутация часто делается 'на пару минут'). Положим, этот шаг пройден удачно и переходим к следующему.

  • загружаем файл FirmLoad.hex в Flash в режиме Intel HEX;
  • устанавливаете настройки fuse как на картинке:

  • делаете полное стирание микросхемы. Если это пропустить, то fuse не пропишутся;
  • прошиваете flash и fuse.
  • При прошивке не должно быть никаких ошибок и предупреждений.

    После этого надо отключить питание и отсоединить разъем LPT. Отпаивайте провода к LPT и резисторы R1-R4, они больше не потребуются.

    Этап 4

    Теперь надо собирать всю схему. Часть деталей стоит расположить прямо на платке, а часть, особенно крупных, удобнее вынести и закрепить на плате мышки. Это относится к кварцевому резонатору. Полная схема прилагается в файле прошивки, здесь я приведу и буду говорить об упрощенной схеме, в которой убрано всё то, чего не надо переделывать.

    В начале доработки Вы должны отсоединить трассы от элементов, которые будут подключены к новому контроллеру. Это касается всех кнопок, переключателя скролла, двух выводов светодиода (от них отходят трассы к резисторам, достаточно удалить эти резисторы) и два сигнальных вывода USB (они выходят через резисторы, их можно просто снять). Обращаю внимание, выводы земли и 5В должны остаться подключенными - через них запитается стабилизатор 3.3В на печатной плате. По микросхеме датчика - от него надо отключить все трассы, которые подходят к выводам 1,2,3,6,7. Будьте внимательны, кроме датчика к этим трассам подключена микросхема памяти в корпусе SO8. Я случайно оставил подключенной одну из цепей и мышка работала весьма странно.

    После отключения компонентов от трассировки, необходимо произвести коммутацию под новый контроллер. Для этого вначале подключите выводы кнопок на землю, это уменьшит нахлесты проводов. По переключателю скроллинга - в нём не понятно, где первый вывод и где третий. Это просто, третий вывод, который соединяется с цепью GND, находится ближе к центру платы.

    Резистор R11 лучше припаять прямо на контактные площадки или на выводы датчика, а вывод 7 соединить проводом с выводом 18 датчика. Немного о компонентах.

    Блокировочные конденсаторы можно поставить любые, любого размера и емкости. Если есть 'убитое' устройство с SMD монтажом, то оттуда берутся самые большие конденсаторы и ставятся на место С1 и С2. Можно поставить несколько конденсаторов. Конденсаторы С3 и С4 обеспечивают устойчивое возбуждение кварцевого генератора. Их номинал должен бы выбираться из конкретной модели кварцевого резонатора .... но если есть проблемы с приобретением, то попробуйте их пока вообще не ставить. Думаю, и так будет работать нормально.

    Резисторы R1 и R2 можно использовать те, что были ранее сняты с этих цепей платы мышки. Номинал может несколько отличаться, но это не особо существенно. Резисторы R3 и R4 задают яркость свечения светодиода. Если слишком ярко, то их сопротивление надо увеличить. Если тускло, но уменьшить. Для моделей мышек, в которых светодиод подсвечивает прозрачное колесико скроллинга, необходимо устанавить бОльшую яркость, поэтому номинал резисторов R3 и R4 нужно уменьшить до 330 ом. Для этого можно использовать резисторы, уже присутствующие на плате мышки.

    Резисторы R5, R7, R9 и R6, R8, R10 задают делитель для согласования уровней микроконтроллера (5 вольт) и датчика (3.3 вольта). Их ставить обязательно, иначе датчик сгорит (по опыту автора проекта). Номинал не столь существенен, но взаимное отношение верхних резисторов к нижним должно сохраниться, хотя бы примерно. Резистор R11 может быть весьма произвольной величины. По расположению кнопок.

  • B1 - кнопка под левый палец
  • B2 - кнопка под правый палец
  • B3 - средняя кнопка, под колесом скроллинга
  • B4 - боковая кнопка, дальше от провода USB
  • B5 - боковая кнопка, ближе к проводу USB
  • B6 - кнопка "х2"
  • B7 и B8 - кнопки отсутствуют в оригинальной мышке A4 моделей 730 и 750.
  • DPI - кнопка переключения чувствительности на верху мышки.
  • Этап 5

    После сборки надо проверить правильность монтажа, отсутствие замыканий и измерить сопротивление цепи 5 вольт на землю, замыкания быть не должно. Если все в порядке, то можно подключить разъем USB к компьютеру и посмотреть результат. Windows должен найти новое устройство и не выдать предупреждения, что устройство работает неправильно. Если Вы все же получили такое сообщение, то поменяйте местами провода подключения USB2 и USB3. При включении мышка должна поморгать красным-зеленым, что говорит о работе мышки в режиме загрузчика. Затем надо запустить программу обновления программного обеспечения Wfirm. В одном каталоге с программой должен лежать файл прошивки Wmouse.hex. После записи программы надо вынуть и вставить кабель USB, программа запустится в режиме "мышка". Если нужно перевести мышку в режим "загрузка", то при подключении разъема USB надо удерживать нажатым колесико скроллинга. Мышка загрузится, моргнув несколько раз зеленым. Все, дальше ею можно пользоваться. Для настройки параметров мышки служит программа Wcontrol.

    Программа настройки W-Control

    У меня для модели 750 это выглядит так:

    Current - ток лазера. Обычное значение чуть меньше 8 мА. Как правило, оптимальные значения находятся в диапазоне 9-10 мА. В данном случае установлено 12 мА, что вызвано проблемами с оптикой. Не рекомендуется просто так 'задирать' ток, лазер может помереть. Хотя, при 12 мА это вряд-ли случится. Shutter - настройка блока управления матрицей.

    Center - та величина, вокруг которой будет меняться параметры приемной матрицы для поддержания высокого качества картинки. В лично моей версии, которая и прикладывается к статье, параметр "Center" работает иначе, он просто устанавливает фиксированное значение без какой-либо авто настройки.

    AG - авто настройку параметров делает сам датчик ADNS-6010, параметр "Center" игнорируется.

    Value - текущее значение "Center"

    Max Pixel - количество пикселей с максимумом. Чем больше, тем контрастнее картинка, тем лучше работает датчик на этой поверхности.

    Surface - качество поверхности.

    Lock, UnLock - пороги триггера на включение и выключение движения мышки от величины Surface (качество поверхности). Если качество падает слишком низко, что обычно случается при подъеме мышки, то срабатывает триггер и останавливает движение. Это один из приемов, которые позволяют W-Mouse уменьшать высоту отрыва.

    Profile - раздел по настройке нескольких профилей. Сами профили переключаются по кнопке DPI на верху мышки. Лично в моей версии прошивки с этой кнопки снята функция переключения профилей и эта кнопка работает в обычном виде, как и все другие. Профиль можно переключать или 'руками' через программу Wcontrol или путем создания профилей запуска приложений и добавления в параметры запуск программы Wcontrol с числом нужного профиля. Тогда при запуске приложения автоматически будет ставится тот профиль, который нужен именно для этой программы. Т.о., кнопка переключения профиля на мышке не обязательна, а вот рабочих кнопок всегда не хватает.

    Curve - вид кривой динамического ускорителя. 0 соответствует линейной зависимости.

    Smooth - дополнительный фильтр с частотой среза 30 Герц, повышает устойчивость мышки с минимальным вредом.

    S min, S max - порог минимальной и максимальной чувствительности мышки

    V min, V max - порог минимальной и максимальной скорости

    V - текущая скорость перемещения мышки. За результирующее значение берется модуль вектора по обоим осям без фильтрации шума, поэтому значения могут быть несколько больше действительного перемещения. Например, я получал устойчивое число 2100 мм/сек на переделанной мышке 750, при этом мышка находилась на стенде и 'перемещалась' со скоростью 1700 мм/сек. Хотя, при этом было небольшое перемещение по оси Y, порядка 200 единиц.

    Whell - раздел по настройке скроллинга.

    Reverse - колесико можно инвертировать, если Вы случайно перепутали выводы переключателя или просто привычнее прокручивать колесико в противоположном направлении.

    Accel - степень ускорения колесика. Идея та же, что и у динамического ускорителя движения мышки - чем энергичнее Вы крутите колесико, тем быстрее оно крутится. Вряд ли это пригодится в играх, ну только если сделать 'пулемет' из пистолета, а вот при просмотре страниц в интернете может оказаться полезным. Верхний правый угол - при нажатии на окошко делается снимок поверхности. Для того, чтобы на картинке сразу были заметны насыщения, эти места выделяются цветом. Верхний нижний угол - на кнопки мышки можно назначить действие по 'нажатию' кнопок на клавиатуре.

    Крайне рекомендуется хоть раз нажать кнопку "Unbind ALL", иначе могут быть фантомные глюки с переключателями. Не забывайте нажимать кнопки TEST и SAVE.

    Выражаю благодарность Walkie за интересный проект.

    Комплект документации по проекту W-Mouse.

    Проект W-Mouse обсуждается в теме 'Лазерный оптический сенсор'.

    serj

    Теги