Pull to refresh

Руль для PC на базе Wii Remote

DIY


   Большинство из нас знают о такой игровой консоли, как Wii, отличительной чертой которой является беспроводной контроллер Wii Remote. Сегодня я расскажу вам о моем опыте по превращению этого контроллера в удобный, функциональный, и при этом очень дешевый руль для компьютера.

Возможности самого контроллера впечатляют:

   image Трехосевой акселерометр
   image Инфракрасная камера
   image Подключение по Bluetooth
   image Вибромотор и динамик
   image 4 светодиодных индикатора
   image Подключение дополнительных контроллеров
   image 12 кнопок

   Для нас, важными являются акселерометр и Bluetooth. А сам порядок действий будет выглядеть примерно следующим образом:
  1. Найти контроллер Wiimote (альтернативное название Wii Remote).
  2. Подключить его к компьютеру.
  3. Наладить преобразование данных, поступающих с акселерометра контроллера в понятный играм формат.

Где взять контроллер Wiimote


   Те, у кого есть приставка Wii, могут сразу переходить к следующему пункту. У меня же таковой не оказалось, и я решил купить контроллер отдельно.
   В России он стоит около 2000 руб., что, на мой взгляд, неоправданно дорого. Так что, недолго думая, я отправился на аукцион Ebay. И не ошибся! Год назад, новый оригинальный Wii remote + Nunchuk с бесплатной доставкой обошёлся мне всего в $18.50. При беглом осмотре сегодняшних результатов поиска, цены стали еще ниже.

Подключение к компьютеру


   На первый взгляд, никаких трудностей здесь возникнуть не должно: главное иметь встроенный или внешний Bluetooth приемник. В интернете легко можно найти несколько инструкций по подключению Wiimote к компьютеру.
   Однако, то ли по причине старенькой Windows Vista, то ли из-за еще более старого Bluetooth-адаптера, я так и не смог заставить нормально работать контроллер, используя стандартный стек Bluetooth от Microsoft. Но там, где споткнулась Microsoft, преуспела IVT с её продуктом BlueSoleil (к сожалению, платным). Без особых усилий, мне удалось подключить контроллер и заставить его стабильно работать. Подробную инструкцию можно найти, например, здесь.

Краткая инструкция:
  1. Устанавливаем BlueSoleil (или при удачном стечении обстоятельств используем стандартные средства Windows).
  2. Активируем Bluetooth-адаптер.
  3. Зажимаем кнопки 1 и 2 на контроллере и запускаем поиск устройств.
  4. Контроллер опознается как Nintendo RVL-CNT-01.

Превращаем Wiimote в руль


   Для работы Wiimote с PC написано несколько программ, например GlovePIE – универсальная программа для эмуляции устройств ввода, позволяющая, в т.ч. связывать компьютер и Wii Remote используя внутренний язык скриптов.
Поискав, можно найти несколько таких скриптов, но и здесь не все так гладко ;)
   У меня получилось заставить работать контроллер виртуальным джойстиком, однако работа с акселерометром была очень нестабильна: чуть повернешь контроллер по определенной оси (или слишком быстро/на слишком большой угол/и т.п.), и он зависает, переставая отправлять данные.
   Я не стал мириться с этим безобразием, и продолжил поиски. Через некоторое время я набрел на замечательную .NET библиотеку: WiimoteLib. Она позволяет обращаться почти к любым функциям контроллера, и получать данные с его сенсоров. В комплекте идет пример программы, отображающий всю информацию, поступающую с контроллера.


   Теперь, когда у нас есть данные с акселерометра, нам нужно как-то привести их к понятному играм формату. Большинство гоночных игр поддерживает железную реализацию руля. А мы подсунем им виртуальный. Для этого воспользуемся универсальным драйвером эмуляции джойстиков – PPJoy.

Официальная ссылка на скачивание: PPJoySetup-0.8.4.5-early-release.exe

Добавим в систему новый виртуальный джойстик:

   image Устанавливаем PPJoy
   image В панели управления находим и открывем «Parallel Port Joysticks».
   image Щелкаем по кнопке Add
   image Параметр Parallel Port меняем на Virtual joysticks
   image Щелкаем по кнопке Add
   image Выбираем в списке созданный джойстик и щелкаем по «Mapping...»
   image Next >
   image Заполняем это и последующие окна как на скриншотах, и заканчиваем настройку.

          

   Я написал небольшую программку на C#, которая, фактически являясь мостом между Wiimote и PPJoy, нажимает виртуальные кнопки и крутит виртуальный руль джойстика. При запуске можно задать чувствительность.


Скачать её вместе с исходными кодами вы можете по этой ссылке: WiiController.zip

Испытания в реальном мире


   Все испытания проводились на гоночном симуляторе Colin McRae: DiRT 2.
Заранее прошу прощения за качество фото и видео: все снималось на мыльницу пятилетней давности.

           

Примерный вид настроек игры:


А вот, как выглядит реальная игра с контроллером:



Впечатления


   Сугубо положительные! Прошел всю игру, используя только Wiimote. Все работает настолько стабильно и быстро, что уже через несколько минут забываешь, что у тебя в руках устройство, предназначенное совсем не для этого. Из плюсов: огромный руль не закрывает пол-экрана, и не мешает перемещению рук, все управление выведено на кнопки контроллера.

p.s. Вообще, можно сделать очень много прикольных штук с Wii Remote, вот некоторые из них:
  1. http://johnnylee.net/projects/wii/
    Трекинг пальцев, мультитач доска, трекинг головы (для создания иллюзии трехмерности, заглянуть за край монитора). Фактически, я купил Wiimote под впечатлением от этих проектов.
  2. http://habrahabr.ru/blogs/DIY/91149/
    Виртуальное окно в мир Winscape с трекингом положения головы используя Wiimote
  3. http://habrahabr.ru/blogs/subconsciousness/2877/
    5 самых креативных способов использования Wiimote.
Tags:
Hubs:
Total votes 52: ↑49 and ↓3 +46
Views 11K
Comments Comments 56