USB мышка на базе акселерометра

Сегодня давайте рассмотрим ещё одну функцию HID для микроконтроллера AT90USB162. На этот раз сделаем на основе этого микроконтроллера HID совместимую мышь, но не простую, а на основе датчика акселерометра ADXL345. Программная часть проекта будет писаться на CodeVisionAVR, соответственно функции будут использоваться те же, что и в статье про акселерометр ADXL345, но переписанные под CodeVisionAVR. Схему такой мыши будет не трудно собрать начинающим радиолюбителям и поэтому главный упор полезности заключается именно в интересе сделать что-то подобное самому, повысить свой уровень в сборке схем, ну и, конечно, узнать, как же сделать мышь своими руками.

Сначала электрическая схема мышки:

Схема построена на основе микроконтроллера AVR AT90USB162, который поддерживает USB интерфейс на аппаратном уровне. Схема питается от USB порта компьютера или ноутбука – напряжение питания 5 вольт, но для работы датчика акселерометра необходимо напряжение 3,3 вольта, поэтому дополнительно используется стабилизатор напряжения AMS1117 на 3,3 вольта. Если такого не имеется можно заменить на любой другой стабилизатор на данное напряжение или на крайний случай заменить вовсе на стабилитрон номиналом 3,3 вольта, потому что потребление тока ADXL345 очень небольшое. Сам микроконтроллер питается от USB порта напрямую от 5 вольт, в связи с этим кварцевый резонатор используется на максимальную частоту, поддерживаемую микроконтроллером – 16 МГц. Можно, конечно, использовать и кварц на 8 МГц, но тогда нужно будет перекомпилировать прошивку с такими настройками. Я использовал для изготовления данной схемы уже ранее изготовленную отладочную плату на основе микроконтроллера AT90USB162 и модуль акселерометра ADXL345, на котором уже присутствует стабилизатор для питания датчика. Кнопки S1 и S2 используются как правая и левая клавиши компьютерной мышки. Кнопки S3 и S4 необходимы для управления микроконтроллером, а именно использования пользовательской прошивки или bootloader’a для загрузки пользовательской прошивки посредством USB интерфейса. Если вы хотите сменить прошивку микроконтроллера, то для этого необходимо проделать следующие манипуляции: нажать и удерживать кнопку reset, далее нажать и удерживать вторую кнопку – HWB, далее отпустить кнопку reset и наконец, отпустить кнопку HWB. Так активируется bootloader и можно загрузить новую прошивку, после загрузки нажать reset или выключить и включить питание схемы и тогда активируется снова пользовательская прошивка. Резисторы R5 и R6 подтягивают плюс питания к выводам, к которым подключены кнопки для корректной их работы, в процессе основной работы подтягивающий резистор кнопки reset исключает самопроизвольное перезапускание микроконтроллера при наличии помех на этом выводе. В схеме используется два светодиода – LED1 и LED2. LED1 нужен лишь для индикации наличия напряжения на плате. Второй светодиод LED2 можно использовать для пользовательской индикации в данной прошивке он задействован как индикатор успешной инициализации всех функций схемы устройства – несколько раз моргает при успешном старте. При желании можно функционал поменять. Перемычкой Jmp1 можно светодиод включать и отключать на плате. Резисторы R1 и R4 ограничивают ток, проходящий через светодиоды, чтобы они не сгорели в процессе. Если используются яркие светодиоды, то номиналы этих резисторов можно делать достаточно большими, потому что для свечения таким светодиодам достаточно уже тока в единицы миллиампер. Для подключения микроконтроллера к шине данных USB необходимо использовать резисторы R2 и R3 номиналом 22 Ом согласно документации (даташиту). Обмен информацией между акселерометром и микроконтроллером происходит через шину I2C. Встроенная библиотека программного I2C CodeVisionAVR имеет ограничение по скорости в 100 кГц. Этого вполне достаточно и схема работает стабильно, хотя возможности акселерометра позволяют поднять частоту до 400 кГц и ускорить обмен данными. Резисторы R8 и R9 необходимы для работы I2C интерфейса – они формируют логическую единицу на линиях передачи информации. Номиналы этих резисторов можно брать смело в районе 4,7 – 10 кОм.

Со схемой разобрались, теперь можно собирать устройство, как отмечалось, я использовал отладочную плату на AT90USB162 и модуль датчика акселерометра ADXL345:

Кнопки правого и левого кликов вынесены также на отдельном модуле 4-х кнопок.

Для прошивки микроконтроллер используется софт от компании Atmel – Flip, посредством которого можно прошивать микроконтроллеры через USB напрямую. Процесс прошивки данным методом описан в статье, посвященной отладочной плате AT90USB162.

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

CodeVisionAVR выбран в качестве компилятора по причине того, что он на стандартном уровне содержит библиотеки для работы с USB устройствами, что упрощает проектирование несложных устройств с применением этого интерфейса. Также плюсом является генератор начального кода для микроконтроллеров, что также в некоторой степени упрощает работу.

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

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


Список радиоэлементовОбозначение
Тип
Номинал
Количество
ПримечаниеМагазинМой блокнот

IC1
МК AVR 8-битAT90USB1621
IC2
АкселерометрADXL3451
VR1
Линейный регуляторAMS1117-3.31
LED1
СветодиодКрасный1
LED2
СветодиодЗеленый1
R1
Резистор1.5 кОм1
R2, R3
Резистор22 Ом2
R4
Резистор1 кОм1
R5, R6, R8, R9
Резистор10 кОм4
R7, R10
Резистор4.7 кОм2
C1, C6
Конденсатор1 мкФ2
C2, C7, C9
Конденсатор0.1 мкФ3
C3, C4
Конденсатор22 пФ2
C5
Конденсатор10 мкФ1
C8
Электролитический конденсатор220 мкФ1
C10
Электролитический конденсатор10 мкФ1
S1, S2
Тактовая кнопкаTC-A1092
S3, S4
Тактовая кнопкаIT-1127-5-160G-G2
X1
РазъемminiUSB1
Jmp1, Jmp2
ПеремычкаДжемпер2
Z1
Кварцевый резонатор16 МГц1

Штыревое соединениеPLS-2 угловой2
Добавить все

Скачать список элементов (PDF)

Прикрепленные файлы:

Добавить комментарий

Ваш адрес email не будет опубликован.