Подключение RadioLink AT9 в качестве джойстика к компьютеру

Загорелся идеей подключить свою аппаратуру к компьютеру чтобы полетать в симуляторе. Посмотрел видео где для этого используется Arduino. Но этот вариант меня не устроил поскольку, во-первых, самой Ардуины у меня нет, а во-вторых, я её в принципе не перевариваю. Начал гуглить и нашел вот это: PPM-to-USB адаптер на STM32F3Discovery. Шикарная статья! Но только вот указанной платы у меня тоже нет. Стал читать комментарии и увидел, что пользователь bshep выложил модернизированный код джойстика для контроллера STM32F103C8 и компилятора CooCox. То что нужно!!! У меня как раз давно лежит без дела вот такая плата:

STM32F103C8T6 Development Board

На этой плате уже есть разъем micro USB для подключения к компьютеру. Что существенно упрощает задачу. Остается только подключить саму аппаратуру к этой плате. Для этого я купил штекер S-Video (25 руб) и кусок кабеля для микрофона (30 руб). Либо можно взять готовый кабель S-Video.

На аппаратуре нас интересуют следующие 2 контакта:

Выход сигнала PPM (обозначен как OUT) и земля. Включив пространственное воображение, сопоставляем выводы на разъеме и штекере и подключаем вывод OUT на пин А8, а землю GND на пин G платы. Так же на землю я подключил и экран кабеля, но подключать экран надо только с одного конца кабеля:

Всё. Осталось только залить прошивку в микроконтроллер STM32. Сделать это можно с помощью обычного переходника USB-UART на базе FT232. Понадобится 4 провода:

FT232 STM32
TX -> А10
RX -> A9
5V -> 5V
GND -> GND

На переходнике FT232 перемычку поставить в положение 3,3V. На самой плате вытащить провод из разъема micro USB (если был) и переставить верхнюю перемычку в такое положение:

После этого подключаем FT232 к USB. Запускаем Flash Loader Demonstrator. Указываем COM порт который создается при подключении FT232:

Нажимаем Next и, если всё хорошо, то видим такую картину:

Нажимаем ещё 2 раза Next и попадаем в окно где надо выбрать наш файл прошивки:

Выбираем файл stm32_PPM_F103.bin и нажимаем Next. После этого начнется загрузка прошивки в контроллер. Затем отключаем FT232. Возвращаем желтую перемычку на место и подключаем нашу плату к компьютеру уже через micro USB. В системе появляется новый джойстик. Готово!

Начал тестировать. Оказалось что правый стик работает, а левый нет. Вместо него газ регулируется крутилками. Открыл исходный код в CooCox, начал разбираться. В статье автор использует аппаратуру Turnigy 9X с 8-ю каналами (8 значений PPM сигнала). RadioLink AT9 выдает нам 10 значений (10 каналов). Поэтому получается что последние 2 канала перезаписываются в начало массива со считанными значениями. А там как раз значения положений левого стика. Исправил код. Перекомпилировал прошивку и вуаля. Теперь оба стика и тумблеры работают как надо!

Прелесть данного решения:

  • минимум пайки;
  • плата дешевле Ардуины;
  • USB в примененном контроллере работает на аппаратном уровне, что в разы повышает стабильность. Из Ардуины же, при использовании USB, выжимаются последние соки.

Прошивка под RadioLink AT9: stm32_PPM_F103.rar

И на всякий случай программа для прошивки Flash Loader Demonstrator ver 2.7.0.

  • 5019
Comments
gorbln

Из Ардуины же, при использовании USB, выжимаются последние соки.

Глупость какая-то.
Какая разница последние или предпоследние соки выжимаются из ардуины? Работает и работает. Стабильно, к слову. Конвертерами моего изготовления пользуются несколько человек - ни у кого замечаний по “отвалу” конвертера не было.
Откуда, вообще, берётся это непонятное хейтерство к атмеге вообще и ардуинам в частности?

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

RW9UAO

Егор, это секта свидетелей СТМ32 =)

mr_smit
{gorbln};bt149181

Глупость какая-то.
Какая разница последние или предпоследние соки выжимаются из ардуины? Работает и работает.

Это не глупость. Не буду сейчас разводить полемику. Всё равно каждый останется при своем мнении. Просто при решении какой либо задачи человек использует, как правило, то, что ему наиболее знакомо. Я сам больше люблю AVR, но не в обличии Ардуины. В данном случае решение на STM32 считаю более красивым и более простым для повторения.

dmitryu

Насчёт “дешевле ардуины” - это ты загнул.
84 рубля стоит почти готовый PPM to USB:
ru.aliexpress.com/item/…/32653187143.html

Вот статья по переделке (один проводок добавить надо):
thomaspfeifer.net/usbasp_to_ppm2usb_mod_en.htm

ЗЫ
хотя вариант, безусловно, интересный - попробую собрать и такой тоже.

mr_smit
dmitryu;bt149224

Насчёт “дешевле ардуины” - это ты загнул.

Во-первых, плата которую я тут использовал дешевле ардуины. А во-вторых, не у всех есть программатор чтобы перешить AVR. А вот переходничок USB-UART думаю найдется у многих. Ну а в третьих, я не претендую на истину. Каждый волен собирать на чем угодно. Просто этот вариант, на мой взгляд, самый простой. Поэтому решил поделиться реализацией.