Оглавление:

Мост R / C - USB: 7 шагов
Мост R / C - USB: 7 шагов

Видео: Мост R / C - USB: 7 шагов

Видео: Мост R / C - USB: 7 шагов
Видео: Камеди Клаб «Экономика» Гарик Харламов, Демис Карибидис @ComedyClubRussia 2024, Ноябрь
Anonim
ПДУ на USB-мост
ПДУ на USB-мост

Преобразует сигналы PPM от радиоприемника в положения джойстика

Используйте его, чтобы играть в свои любимые игры и симуляторы полета с радиопередатчиком R / C. В этом руководстве используется Arduino от littleBits и приемник DSMX, а также простой фрагмент кода для выполнения этого преобразования.

Тебе понадобится

  • Власть
  • Ардуино
  • USB-кабели
  • штыревые заголовки
  • перемычка
  • радиоприемник с выходом PPM.

Шаг 1. Припаяйте разъемы контактов к дополнительным портам ввода-вывода Arduino

Припаяйте разъемы контактов к дополнительным портам ввода / вывода Arduino
Припаяйте разъемы контактов к дополнительным портам ввода / вывода Arduino

Чтобы запитать приемник (RX), к Arduino необходимо добавить штыревые заголовки. Это также значительно упростит проводку между битом и приемником. См. Http://discuss.littlebits.cc/t/using-the-additional-i-os-on-the-arduino-bit для получения дополнительной информации.

Шаг 2. Добавьте библиотеку джойстиков Arduino в свою среду IDE

Добавьте библиотеку джойстиков Arduino в свою среду IDE
Добавьте библиотеку джойстиков Arduino в свою среду IDE

Вы можете найти библиотеку на GitHub, https://github.com/MHeironimus/ArduinoJoystickLib … Спасибо, Мэтью Хейрономус, за ее написание.

Только некоторые Arduinos могут эмулировать HID, как джойстик. Поскольку микроконтроллер littleBits - это в глубине души Arduino Leonardo, вам хорошо.

Шаг 3: прошейте код на Arduino

#include #define inputPin 16 # define каналы 4 #define lo 800 // настроить на вывод RX #define hi 1600 // настроить на вывод RX # определить фильтр 10int channel [каналы]; int previousValue [каналы]; int counter = 0; Joystick_ Joystick (JOYSTICK_DEFAULT_REPORT_ID, JOYSTICK_TYPE_MULTI_AXIS, 0, 0, true, true, false, false, false, false, true, true, false, false, false); void setup () {Joystick.setXAxisRange (lo, Привет); Joystick.setYAxisRange (lo, hi); Joystick.setThrottleRange (lo, hi); Joystick.setRudderRange (lo, hi); Joystick.begin (); Serial.begin (9600); pinMode (inputPin, ВХОД); } void loop () {if (pulseIn (inputPin, HIGH)> 3000) {для (int i = 0; i <= каналы-1; i ++) {channel = pulseIn (inputPin, HIGH); } for (int i = 0; i <= channels-1; i ++) {if ((channel > 2000) || (channel <500)) {channel = previousValue ; } еще {канал [я] = (предыдущее значение [я] + канал [я]) / 2; счетчик ++; }} Joystick.setXAxis (канал [0]); Joystick.setYAxis (канал [1]); Joystick.setThrottle (канал [2]); Joystick.setRudder (канал [3]); } если (счетчик> фильтр) {для (int я = 0; я <= каналы-1; я ++) {Serial.print ("канал"); Serial.print (i + 1); Serial.print (":"); Serial.println (канал ); previousValue = канал ; } counter = 0; }}

Имейте в виду, что код, который связывает сигнал R / C и эмулируемый USB HID, имеет простейшую форму. Используемая здесь функция - pulseIn - является функцией блокировки. Прочтите здесь и здесь, как реализовать неблокирующий подход с использованием прерываний.

Шаг 4: проводка

Сделайте проводку
Сделайте проводку
Сделайте проводку
Сделайте проводку

Подключите перемычку / кабели DuPont между битом и приемником. Разъемы на концах этих кабелей должны быть охватывающими. Мы подключаем GND (синий), VCC (коричневый) и сигнал (оранжевый) от порта PPM RX к GND, VCC и d16 на Arduino.

Шаг 5: привяжите приемник

Отключите Arduino от питания. Поместите обвязку в место разъема, помеченное BIND на приемнике. Включите радиопередатчик и переключите его в режим привязки. Затем подайте питание на Arduino. Процесс привязки был успешным, когда на приемнике загорелся светодиод.

Шаг 6: адаптируйте код к вашим обстоятельствам

Константы hi и lo в эскизе Arduino необходимо изменить, чтобы они отражали фактический выходной сигнал используемого вами приемника.

#define lo 800

#define привет 1600

Сигналы внутри импульса PPM в идеале находятся в диапазоне от 1000 до 2000 мкс. RX, используемый в этой инструкции, выдает значения примерно от 800 до 1600 и немного отличается на каждом канале. Чтобы узнать, какой диапазон имеет ваш приемник, откройте Serial Monitor в Arduino IDE, чтобы увидеть выходные данные вашего RX. Это будет выглядеть примерно так:

канал 1: 728

канал 2: 729 канал 3: 703 канал 4: 726 канал 1: 1681 канал 2: 1639 канал 3: 1613 канал 4: 1676

Как только у вас будет более четкое представление о диапазоне, который выдает ваш RX, выберите хорошие приближения для hi и lo и соответственно измените константы. Затем снова загрузите скетч в Arduino.

Шаг 7: откалибруйте эмулируемый джойстик

Подключите устройство к компьютеру и используйте функцию калибровки вашей ОС, чтобы откалибровать эмулируемый джойстик. Хороший инструмент для Linux - jstest-gtk.

Дальнейшие улучшения

  • Напишите неблокирующий код (см. Шаг 3)
  • Установите диапазоны для каждого канала, а не глобально (см. Шаг 6)

дальнейшее чтение

  • Редкон CM703
  • PPM

Рекомендуемые: