Главная » Компьютерная электроника
Призовой фонд
на июль 2017 г.
1. Осциллограф DSO138
Паяльник
2. Регулируемый паяльник 60 Вт
Паяльник
3. 200 руб.
От пользователей

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:

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

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

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

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

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

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

Список радиоэлементов

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

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

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

Теги:

Опубликована: Изменена: 08.03.2016 0 3
Я собрал 1 4
x

Оценить статью

  • Техническая грамотность
  • Актуальность материала
  • Изложение материала
  • Полезность устройства
  • Повторяемость устройства
  • Орфография
0

Средний балл статьи: 5 Проголосовало: 4 чел.

Комментарии (14) | Я собрал (0) | Подписаться

0
BARS_ #
16 МГц не максимальная частота. Спокойно работает и 20 и 24 МГц
Ответить
0

[Автор]
Gauss #
Но USB на этом МК с такими кварцами может и не заработать, а сам МК не сомневаюсь даже, что спокойно работает
Ответить
0
Дима #
Спасибо интересная статья. Подскажите в каком кодвижене компилировали? Файла нет или он должен быть в кодвижене - Error: can't open #include file: usb_device.h
Ответить
0

[Автор]
Gauss #
Да - в старых версиях нет такого, у меня версия 3,2 (это библиотека кодвижена)
Ответить
0
Андрей #
Интересно, а можно по указанному принципу сделать джойстик, для авиосимулятора?
Ответить
0

[Автор]
Gauss #
Можно все
Ответить
0
Hork112 #
А как реализовать что-то похожее на mega8?
Ответить
0

[Автор]
Gauss #
Тут нужно софтовый USB делать, так как на мега8 нет аппаратного
Ответить
0
Tig #
Подойдет ли датчик adxl335?
Ответить
0

[Автор]
Gauss #
Нужно сверять с даташитом, это же акселерометр с аналоговым выходом, поэтому нет
Ответить
0
Alex71 #
Собрал но не на отладочной плате, а сразу на своей. Всё работает, не хватает колеса прокрутки, хотелось бы реализовать. Копаюсь в исходнике, думаю. Кстати, контроллер пришел без бутлоадера, пришлось прошить сначала его, а уж потом воспользовался Flip-ом.
Ответить
0

[Автор]
Gauss #
Это все наверно в какой-то корпус, в какое-то оформление пойдет? Интересно заценить
Собирал для прикола или для постоянного пользования какого?
Ответить
0
Zheckiss #
Для начинающих, конечно, прогу-то можно было бы и закомментить. Что такое константы step и как выбираются? Или если даже для начинающих это само собой разумеющиеся вещи, то где об этом дополнительно прочитать. Потом можно и инициализацию ADXL345 расписать в комментах.
Ответить
0

[Автор]
Gauss #
Это промежуток времени между передвижениями курсора мыши - чем больше наклон, тем больше значение от акселерометра, тем меньше это значение, тем быстрее передвигается курсор, и это значение передается в задержку времени
Ответить
Добавить комментарий
Имя:
E-mail:
не публикуется
Текст:
Защита от спама:
В чем измеряется электрическое сопротивление?
Файлы:
 
Для выбора нескольких файлов использйте CTRL

USB-реле (2 канала)
USB-реле (2 канала)
Солнечная панель 10Вт 12В поликристаллическая ELM327 OBD II — адаптер с поддержкой CAN
вверх