html текст
All interests
  • All interests
  • Design
  • Food
  • Gadgets
  • Humor
  • News
  • Photo
  • Travel
  • Video
Click to see the next recommended page
Like it
Don't like
Add to Favorites

Mouse Track — виртуальность становится реальнее из песочницы



Статья №2
Статья №3

Здравствуйте. Сегодня я хочу поделиться с вами своим, не побоюсь этого слова, достижением. Я сделал необычную мышь. Это манипулятор в виде перчатки, имеющий 5 клавиш и акселерометр. Но обо всем по порядку. Сначала небольшая предыстория.

Проект «Arduino»

Все началось с того, что я узнал о проекте «Arduino». «Arduino» — это аппаратная вычислительная платформа, основными компонентами которой являются простая плата ввода/вывода и среда разработки на языке Processing/Wiring. Arduino может использоваться как для создания автономных интерактивных объектов, так и подключаться к программному обеспечению, выполняемому на компьютере (например,Macromedia Flash, Processing, Max/MSP, Pure Data, SuperCollider). — говорит нам википедия. Немного объясню. По сути, Arduino — это отладочная плата на базе микроконтроллеров фирмы Atmel. Конечно, купить платку ардуино намного дороже, чем купить микроконтроллер (далее МК) и сделать отладочную плату самому. Но, в этом проекте есть один большой плюс (думаю, за этот плюс стоить заплатить) для больших новичков в программировании, который упрощает процесс написание программ и прошивки МК — это среда разработки Arduino IDE, которая включает в себя основные библиотеки для работы с периферийными устройствами МК. Язык разработки Wiring — это тот же С++, только с библиотеками и функциями для работы с МК (стандартные функции языка, конечно же, доступны).

Итак, мне стало интересно и я заказал себе отладочную плату на базе МК Atmega 1280. А позже и две маленькие платки на базе МК Atmega 328. Но сейчас не об этом. Попробовав свои силы в небольших «проектах», я решил сделать что-то действительно интересное. А интересно было сделать мышь — перчатку.

Акселерометр и идея перчатки

Недолго думая, я заказал акселерометр MMA7260QR2. Думал реализовать движение мыши именно при помощи акселерометра. Но после экспериментов с ним понял, что принцип его действия не позволит сделать именно перемещение курсора мыши. Поэтому я решил применить его для другой функции — он заменит ролик мыши, а так же некоторые другие действия. Но опять же, обо всем по порядку.

Идея такова: на перчатке расположено устройство с 5ю кнопками и акселерометром. Данные передаются МК-ом в компьютер по компорту (моя плата ардуино подключается по mini-usb, то есть ком порт реализован на шине usb при помощи микросхемы-конвертера FTDI, поэтому компьютер видит ардуино как ком порт), программа на компьютере обрабатывает принятые данные и действует в зависимости от них. Перемещение курсора я решил реализовать при помощи веб-камеры и светодиода на перчатке, так как с акселерометром не получилось бы. Свободно распространяемая программа FreeTrack позволяет это реализовать. Вкратце, это свободно распорстраняемая программа, которая обрабатывает видео с веб-камеры и получает данные о расположении светодиода (или нескольких светодиодов) в пространстве. Программа предназначена для трэкинга в -авиа, -авто симуляторах, шутерах и так далее. Имеет функцию «эмулировать мышь», которой я и воспользовался.

Посетив местный магазин радиотоваров я купил 5 микропереключателей («микрики» в народе) от мышек и принялся разрабатывать плату (платформу, которую позже помещу на перчатку), на которой должны быть расположены:
1) плата микроконтроллера;
2) 5 «микриков»;
3) светодиод инфракрасный;
4) акселерометр.

Акселерометр нужно было «посадить» на собственную платку (его размеры составляют 6х6 мм), что я с папой и сделал. По мануалу к акселерометру я вычертил плату в программе «Sprint Layout» и по технологии изготовления печатных плат в домашних условиях (при помощи лазерного принтера и утюга) мы с папой вытравили эту маленькую платку дома. После чего я подключил его к МК и экспериментировал с ним.

Arduino nano: описание

Микроконтроллер
ATmega328
Рабочее напряжение (логическая уровень)
5 В
Входное напряжение (рекомендуемое)
7-12 В
Входное напряжение (предельное)
6-20 В
Аналоговый ввод
8 линий. АЦП 10-ти битный
Цифровые Входы/Выходы
14 (6 из которых могут использоваться как выходы ШИМ)
Постоянный ток через вход/выход
40 мА
Флеш-память
32 Кб (ATmega328) при этом 2 Кб используются для загрузчика
ОЗУ
2 Кб
EEPROM
1 Кб
Тактовая частота
16 МГц
Размеры
1.85 см x 4.2 см



Изготовление платы — платформы

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

Итак, имея все необходимое для сборки девайса, я принялся за разработку схемы подключения всего этого к МК. Честно говоря, сложного ничего нет. Но мне приходилось не один раз перечерчивать схему. Закончив схему, я обратился к папе за помощью в изготовлении печатной платы всё по той же технологии изготовления печатных плат в домашних условиях. После того, как изготовили плату, я увидел один промах — место для акселерометра получилось не там, где планировалось, изза того, что при черчении схемы платы не учел габаритные размеры кнопок. Ну что ж, на своих ошибках учатся.

Пайка платы — платформы

Этот этап для меня был самым сложным, так как я плохо паяю. Но, после того, как папа показал как правильно это делается и помог мне, паять мне стало легче. Подробно расписывать этот этап не буду. Покажу лишь результат — плату с распаянными МК и деталями на ней.
Вот так выглядит плата в сборе.

Прошивка МК

Я опишу лишь принцип действия прошивки (программы в памяти МК). Итак, к МК подключены 5 клавиш, акселерометр и светодиод. Все, что мне нужно, это получать данные о состоянии кнопок (нажата или нет) и данные от акселерметра (в какую сторону наклонен и насколько наклонен). Все это происходит в бесконечном цикле (это принцип действия МК — выполнять программу циклично, пока он включен). Данные отсылаются по ком — порту компьютеру.

Могу сказать, что имея базовые знания языка С++ и принципов программирования, прошивку написать несложно. Этому способствует и среда разработки Arduino IDE, благодаря которой не приходится часами читать даташиты на МК и выяснять какой регистр отвечает за какую функцию МК. Но и это, конечно, тоже несложно, и это нужно знать хотя бы для себя, знать с чем имеешь дело. Но ардуино позволяет сделать «быстрый старт» не углубляясь в тонкости программировани МК, чем я и пользуюсь.

Программа «Mouse Track» для приема данных от перчатки

Принцип действия: в отдельном потоке в бесконечном цикле опрашивается нужный ком — порт. Программа получает данные от перчатки (от МК) и выполняет соответствующие действия. Например, если нажата кнопка1, то это сообщается по ком-порту программе и она осуществляет действие «кнопка1 нажата». Если кнопка1 отпущена — сообщается «кнопка1 отпущена». Программу я написал на Delphi 7. Реализовал следущее — на каждый палец можно присвоить одно из 5ти действий мыши (ЛКМ, СКМ, ПКМ, ролик вверх, ролик вних) либо одно из 4х действий с окном (закрыть, свернуть, переместить, максимизировать/восстановить). С акселерометром та же ситуация — на наклоны вправо, влево, вперед, назад можно назначить те же функции. Также регулируется «мертвая зона» акселерометра. Наклон акселерометра я измеряю от 0% до 100%. Так вот, порог срабатывания команды акселерометра по наклону можно регулировать. Например, команда будет выполняться, если порог будет выставлен 50%, то есть если акселерометр наклонится наполовину. И так для каждой оси. Кстати о осях. В акселерометре, что я использовал, их 3 — это x, y, z. Но я задействовал только x и y.



Во вкладках «эмуляция мыши» такие функции: ЛКМ, СКМ, ПКМ, прокрутить ролик вверх/вниз. Во вкладках «Действие с окном» такие функции: переместить окно, закрыть окно, свернуть окно, максимизировать/восстановить окно.



Также можно использовать «Горячие клавиши» перчатки. То есть сочетания некоторых клавиш для вызова присвоенной программы.



Конструкция и внешний вид

Нажатие пальцами клавишь я придумал следущее — палец сгибается, тянет провод, припаянный (в моем случае посаженый на силикон) к нажиму кнопки и таким образом кнопка нажимается. Такой простой способ. Вот так это все выглядит.

1 — плата Arduino nano на базе МК Atmega328; 2 — кнопка; 3 — инфракрасный светодиод; 4 — акселерометр MMA7260QR2; 5 — направляющая (из велосипедного тормозного троса); 6 — «липучка»



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


UPD
Облегчил внешний вид и отказался от перчатки (неудобно печатать на клавиатуре, потому что плотная ткань и не чувствуется касания)


Статья №2
Статья №3
Читать дальше
Twitter
Одноклассники
Мой Мир

материал с habrahabr.ru

3

      Add

      You can create thematic collections and keep, for instance, all recipes in one place so you will never lose them.

      No images found
      Previous Next 0 / 0
      500
      • Advertisement
      • Animals
      • Architecture
      • Art
      • Auto
      • Aviation
      • Books
      • Cartoons
      • Celebrities
      • Children
      • Culture
      • Design
      • Economics
      • Education
      • Entertainment
      • Fashion
      • Fitness
      • Food
      • Gadgets
      • Games
      • Health
      • History
      • Hobby
      • Humor
      • Interior
      • Moto
      • Movies
      • Music
      • Nature
      • News
      • Photo
      • Pictures
      • Politics
      • Psychology
      • Science
      • Society
      • Sport
      • Technology
      • Travel
      • Video
      • Weapons
      • Web
      • Work
        Submit
        Valid formats are JPG, PNG, GIF.
        Not more than 5 Мb, please.
        30
        surfingbird.ru/site/
        RSS format guidelines
        500
        • Advertisement
        • Animals
        • Architecture
        • Art
        • Auto
        • Aviation
        • Books
        • Cartoons
        • Celebrities
        • Children
        • Culture
        • Design
        • Economics
        • Education
        • Entertainment
        • Fashion
        • Fitness
        • Food
        • Gadgets
        • Games
        • Health
        • History
        • Hobby
        • Humor
        • Interior
        • Moto
        • Movies
        • Music
        • Nature
        • News
        • Photo
        • Pictures
        • Politics
        • Psychology
        • Science
        • Society
        • Sport
        • Technology
        • Travel
        • Video
        • Weapons
        • Web
        • Work

          Submit

          Thank you! Wait for moderation.

          Тебе это не нравится?

          You can block the domain, tag, user or channel, and we'll stop recommend it to you. You can always unblock them in your settings.

          • chernij_flag
          • домен habrahabr.ru

          Get a link

          Спасибо, твоя жалоба принята.

          Log on to Surfingbird

          Recover
          Sign up

          or

          Welcome to Surfingbird.com!

          You'll find thousands of interesting pages, photos, and videos inside.
          Join!

          • Personal
            recommendations

          • Stash
            interesting and useful stuff

          • Anywhere,
            anytime

          Do we already know you? Login or restore the password.

          Close

          Add to collection

             

            Facebook

            Ваш профиль на рассмотрении, обновите страницу через несколько секунд

            Facebook

            К сожалению, вы не попадаете под условия акции