Вступление


Случилось так, что мой малыш, как и полагается мальчику, увлекается машинками. Когда он подрос до 5 лет начал играть в симулятор Master Rally. Играть одному не интересно, поэтому я стал принимать в этом участие. Очень скоро стало понятно, что дискретное управление с клавиатуры не позволяет мне в равной степени конкурировать и бороться за победу. Тогда я подумал о втором руле.

image

Оказалось, что каждый раз доставать и устанавливать 2 руля — непростая и очень надоедливая процедура. Поэтому я решил купить джойстик пистолетного типа — как для управления радиоуправляемыми машинками.

image


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

image

Что использовать?


Джойстик сделан на базе отладочной платы фирмы Olimex. Подробнее про эту плату можно почитать в этом документе.

image

Еще нам потребуется джойстик от какой-нибудь старой радиоуправляемой игрушки и USB кабель. Вот что получилось у итоге. Внутрь стандартного джойстика с 3 кнопками и двумя светодиодами была добавлена отладочная плата. Самым сложным элементом конструкции оказалось соединение курка с переменным резистором R1. (См. схему) Здесь я использовал резистор с нелинейной характеристикой, чтобы получить большее изменение сопротивления при небольшом угле поворота.

image

image

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

image


Схема


Вот такая получилась схема:
image
Нужно добавить, что переменные резисторы могут быть от 1 до 15 кОм, и желательно с линейной характеристикой для руля, для газа и тормоза — по желанию. Сначала я поставил старый проволочный (как я считал более надежный) резистор на руль, но через пару месяцев он сдох, поэтому был заменен на обычный импортный, который оказался надежнее. Светодиод VD1 проблесковый, он мигает короткими вспышками, если устройство успешно подключилось к компьютеру. VD2 загорается при включении кнопки S3.

Software


Для написания программы использовались примеры с диска фирмы Atmel, находящиеся в свободном доступе в интернете. Вот тут можно найти проект. В этом проекте лежит рабочий бинарник для версии AT91SAM7S256. (\Mouse\FLASH\Exe\USB.bin) Его можно непосредственно залить в контроллер. Для версии S64 бинарник непосредственно при написании блога не проверен. Желающие повозиться или что-то изменить могут установить себе среду IAR Systems и побаловаться. Достоинство проекта — он не требует специального драйвера по Windows XP или 7, подхватывается системой как стандартный джойстик. При желании можно изменить количество кнопок и осей. Контроллер содержит 8- канальный АЦП и много портов. Для программирования контроллера через USB порт нужно использовать программку SAM-BA 2.15. Вся информация и это программка доступны на сайте компании Atmel.

image

Комментарии (7)


  1. GeMir
    02.09.2017 01:09

    Дискретное управление с клавиатуры не позволяет мне в равной степени конкурировать и бороться за победу.
    Папа решил всерьёз соревноваться с пятилетним чадом?
    Каждый раз доставать и устанавливать 2 руля — непростая и очень надоедливая процедура.
    Можно пояснить, в чём именно заключается сложность процедуры подключения USB-руля?


    1. ioannes
      02.09.2017 11:00
      +1

      Явно же написано, доставать и устанавливать! Именно подключить обычно проблемы нет. Хотя если комп под столом, нет USB на фронтпанели, то и подключение может быть квестом. И да, я знаю про хабы и удлиннители.


  1. GeMir
    02.09.2017 18:20
    +1

    Явно же написано, доставать и устанавливать!
    Полужирное начертание не добавляет ясности. Даже если учесть необходимость прикручивания рулей (теперь — руля) к столу. Или вы ребёнку руль тоже на это… альтернативное устройство ввода заменили?

    Извиняюсь, промахнулся с ответом.


  1. FirsofMaxim
    02.09.2017 20:51
    +1

    Контроллер достаточно удобен кстати, странно что никто не додумался до такого.


  1. Maksimuzz Автор
    02.09.2017 22:03
    +1

    Друзья, тут, кажется, обсуждается что-то потустороннее. Главное, вот кто-нибудь сталкивался с штурвалом Yoke от известной фирмы Saitek? У них сделана колоссальная «мертвая» зона, из за которой невозможно рулить ничем кроме элеронами самолета. Убрать ее нельзя. А тут ее нет. Небольшой патч, и можно сделать joystick на 8 осей и много кнопок:)
    Вот ответ фирмы:
    Hi

    This dead zone is as is, you can not change it, all you can change is the dead zone out from the center zone, but not the dead centre one.


  1. FiLunder7
    03.09.2017 10:00

    Мне кажется в данном случае хватило бы и геймпада. Ощущение от вождения на RC пульте все равно не как от руля.


    1. Maksimuzz Автор
      03.09.2017 10:05
      +1

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