Подключение 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.