Шнур для симулятора из Arduino UNO без пайки и использования звуковой карты

Случилось так, что волею событий переселился я в другую страну. С пультом, но без моделей, без паяльника и самое стремное, что в зоне досягаемости достать ни второе ни третье ни радиодеталей никак нельзя. Пока жду свой первый пепелац из поднебесной зачесалось хоть в симе полетать. Но к сожалению, SmartPropoPlus с предустановленным vJoy, хоть и работали, но для моих целей не подходили. SPP и PPJoy вроде работали и для моих целей, но только из тестового режима Вынь 8 х64. И тут я вспомнил, что всунул при отъезде в сумку пару ардуин. Почему бы не сделать кабель для сима из arduino?
В Ардуино UNO и MEGA2560 интерфейс с ПК выполнен на AVR. Для плат R1 и R2 это чип Atmega8U2, а для R3 - Atmega16U2. Эти чипы запрограммированы таким образом, что представляются компьютеру как USB Serial interface, и они подключают “главную” Atmega ардуины через TTL Serial port (цифровые пины 0 и 1).
Чипы 8U2 и 16U2 могут быть перепрограммированы при помощи DFU (Device Firmware Upgrade mode). Это означает, что USB Serial firmware может быть заменена другой USB firmware с тем, чтобы превратить ардуино в разные USB девайсы, например мышь, клавиатуру, MIDI устройство, джойстик (подробнее тут).
Итак, для работы понадобятся:

  1. Arduino UNO
  2. джампер и проводок
  3. Flip. Скачать и установить
  4. Архив с HID firmware, USB serial firmware (для восстановления) и скетчем для ардуины.
    Вперед!
  5. Открываем счетч из архива и заливаем его в плату ардуино.
  6. Переводим Atmega8U2 в DFU режим. Для этого.
    2.1. Устанавливаем джампер как на картинке.

    2.2. Касаемся проводком, одной стороной подключенным к GND, к левому выводу конденсатора (как на той же картинке). При этом светодиод несколько раз моргнет
    2.3. Убираем джампер
    2.4. Если это сделано первый раз, то нужно установить драйвера на DFU из папки куда был установлен flip.
  7. Заливаем в Atmega8U2 firmware (прошивку) Arduino-big-joystick.hex при помощи flip. Если позже захочется восстановить ардуину к прежнему виду (чтоб для ПК она была не джойстиком, а последовательным портом), то после перевода Atmega8U2 в DFU режим загрузите в нее Arduino-usbserial.hex
  8. Убираем все провода с Ардуино. Переподключаем ее к компьютеру. Подключаем ППМ от пульта на вывод D3 Ардуины, соединяем общие у пульта и ардуины. Все. Можно идти в “Игровые устройства” Windows, найти там Arduino joystick, запускать эмулят…, ой, сим и тренироваться.


    Удачи.
  • 6323
Comments
bb_svyaznoy

сколько каналов из ппм переводит?

dollop

До 16 каналов определяет и сует в буфер. Полярность ППМ не важна. Сейчас в коде 8 каналов из ППМ пачки направляются в джойстик в качестве осей.
Ищите строку

int ppm[8]; //array for storing up to 16 servo signals

и заменяете 8 на желаемое максимальное количество каналов, принимаемых в ППМ пачке. Но то, как их обрабатывать придется дописать. Ибо осей у джоя всего 8 штук. А, ну и 40 кнопок 😃. Примеры работы с кнопками в коде есть.

Андрей#

Странно у меня после установки драйвера из папки flip ардуина становится Atmega16U2 это нормально?
Или я чего где напутал…

dollop

Нормально. Это зависит от версии платы. У меня же написано

Для плат R1 и R2 это чип Atmega8U2, а для R3 - Atmega16U2.

kensi

Костя привет) отличная статья) спасибо)

en0t

спасибо Вам Константин. Работает.

aLDime

Чётко, по делу, и сразу всё работает - очень профессионально! Благодарю!