Страница 1 из 1

Конвертер SBUS в USB для FPV симулятора своими руками

Добавлено: Сб фев 09, 2019 15:03
Frol2000
Содержание
SBUS приемник
STM32F1 — плата разработки
Прошивка платы STM32F1
Программное обеспечение
Прошивка
Инвертируем SBUS
Подключение приемника к конвертеру
Настройки пульта управления
Проверка работы

В этой статье вы узнаете, как сделать Конвертер SBUS в USB для FPV симулятора своими руками! Для чего это нужно? Для того, чтобы вы могли тренировать в FPV симуляторах без проводов, используя любой приемник с SBUS и пульт управления. Все, что вам потребуется, это дешевая плата разработки STM32F1 и программатор.

Вы также можете управлять в симуляторе через беспроводную свзяь, использую полетный контроллер, вместо STM32F1, если, конечно, у вас есть запасной. Если нет, то дешевле купить плату STM32F1.
DIY-SBUS-TO-USB-CONVERTER-fpv-simulator-1024x768-550x413.jpg
DIY-SBUS-TO-USB-CONVERTER-fpv-simulator-1024x768-550x413.jpg (25.61 КБ) 493 просмотра


SBUS приемник
Для сборки конвертер SBUS в USB вы можете использовать любые приемники с SBUS от FrSky: R-XSR, XM, X4R и другие, все они должны работать. В этой статье в качестве примера я буду использовать FrSky RX8R с пультом Taranis QX7.
FrSky-RX8R-radio-receiver-300x225.jpg
FrSky-RX8R-radio-receiver-300x225.jpg (9.43 КБ) 493 просмотра


STM32F1 — плата разработки
Это микроконтроллер, «мозг» нашего конвертера, который будет работать как конвертер SBUS в USB. Он будет кодировать сигнал SBUS в понятный компьютеру «язык» и работая как виртуальный джойстик на вашем ПК.
STM32F1-Development-Board-Boot0-jumper-low-1024x768-1-550x413.jpg
STM32F1-Development-Board-Boot0-jumper-low-1024x768-1-550x413.jpg (35.05 КБ) 493 просмотра

Хорошей новостью будет то, что вам не нужно будет писать самим код для работы, вам просто нужно будет скопировать код, который я размещу в этой статье и загрузить его в плату.
https://ru.aliexpress.com/item/STM32F103C8T6-ARM-STM32-MCU/32898407394.html?af=3056031&aff_platform=default&onelink_poage_to=ITEM_DETAIL&cpt=1549702360264&afref=&cn=42pmnhzr1khq2a39kemsr98q03uzc4t1&onelink_item_from=32898407394&dp=v5_42pmnhzr1khq2a39kemsr98q03uzc4t1&onelink_page_from=ITEM_DETAIL&onelink_item_to=32898407394&cv=32978939&pvid=b4d022c6-284e-46c2-a528-ea872a2b325d&onelink_duration=1.934478&sk=ccfBY4yg&aff_trace_key=2fe97721e51d483891db06a694e0e031-1549702360264-07399-ccfBY4yg&onelink_status=noneresult&scm=1007.22893.125779.0&terminal_id=cdcae36494e64ea980c90e71d883b7d3

Прошивка платы STM32F1
Плату STM32F1 нельзя прошить просто через USB, для это требуется адаптер-программатор Serial FT232RL FTDI:
Это очень полезная штука, например, этот адаптер используется и для прошивки minimOSD и может потребоваться для прошивки полетного контроллера, если вдруг USB порт сломан, прошивать зарядные устройства, в общем, очень нужный адаптер.

У меня такой:
Flashing-the-STM32F1-Board-wire-connection-550x413.jpg
Flashing-the-STM32F1-Board-wire-connection-550x413.jpg (26.92 КБ) 493 просмотра

Обычно этот адаптер должен работать «из коробки», но иногда компьютер может не увидеть USB-Serial даже с помощью автоматического поиска драйверов (Windows 7 и 10), то можете скачать драйвера здесь: https://www.ftdichip.com/Drivers/D2XX.htm

Как соединить провода:

Вывод FTDI 5V на вывод 5V платы STM32;
Вывод FTDI GND на вывод GND платы STM32;
Вывод FTDI RX на вывод PA9 платы STM32;
Вывод FTDI TX на вывод PA10 платы STM32;
Подключите USB FT232RL FTDI к вашему ПК.

Программное обеспечение
Прошивка SBUSJoystick для платы STM32: https://drive.google.com/file/d/1CV5EEQ ... xdfX4frkG/
Для прошивки, необходимо также скачать флэш-загрузчик STM32: https://www.st.com/en/development-tools ... stm32.html
Чтобы скачать флэш-загрузчик, необходимо зарегистрироваться (это быстро и бесплатно) на ST.COM

Прошивка
Подключите плату FTDI к плате STM32F1 и установите перемычку Boot0 в верхнее положение (светло-желтая штука по центру):
STM32F1-Development-Board-boot0-Jumper-high-300x300.jpg
STM32F1-Development-Board-boot0-Jumper-high-300x300.jpg (28.96 КБ) 493 просмотра


Теперь подключите FTDI плату к компьютеру, затем запустите демо-версию программы STM32 FlashLoader.
Нажмите кнопку сброса на плате STM32F1.
В программе FlashLoader выберите COM-порт вашего FTDI (в моем случае это COM9) и нажмите «Далее».
Flashing-the-STM32F1-Board-1-com-port.jpg
Flashing-the-STM32F1-Board-1-com-port.jpg (27.12 КБ) 493 просмотра

Если на этом шаге у вас ошибка, проверьте еще раз перемычку Boot0, установлена ли она в верхнем положении, затем выключите и включите плату, затем снова нажмите Сброс и попробуйте снова.
Выберите STM32F1_Med-density_128K во вкладке Target и нажмите Next.
Flashing-the-STM32F1-Board-3-target.jpg
Flashing-the-STM32F1-Board-3-target.jpg (66.77 КБ) 493 просмотра

Выберите Download to device и выберите файл SBUSJoystick.bin, который вы скачали с гугл-диска.
Flashing-the-STM32F1-Board-3-download-device.jpg
Flashing-the-STM32F1-Board-3-download-device.jpg (15.8 КБ) 493 просмотра

Если не видите файл, проверьте, сохранилось ли расширение файла при сохранении в *.bin
Flashing-the-STM32F1-Board-4-bin-file.jpg
Flashing-the-STM32F1-Board-4-bin-file.jpg (6.65 КБ) 493 просмотра

Жмем Next и ожидаем начала процесса прошивки.
Flashing-the-STM32F1-Board-5-select-file-upload.jpg
Flashing-the-STM32F1-Board-5-select-file-upload.jpg (43.79 КБ) 493 просмотра

Теперь переместите перемычку Boot0 снова в нижнее положение и отсоедините плату FTDI и убедитесь, что она выключена (не должны гореть светодиоды).
STM32F1-Development-Board-Boot0-jumper-low-1024x768-1-550x413 (1).jpg
STM32F1-Development-Board-Boot0-jumper-low-1024x768-1-550x413 (1).jpg (35.05 КБ) 493 просмотра

Если вы не выполните шаг 8, прошивка автоматически удалится, когда вы отключите питание и вам придется все выполнять сначала.
Инвертируем SBUS
Исходный сигнал SBUS с приемника FrSky инвертированный, но плата STM32F1 не имеет встроенного инвертора сигнала, поэтому нам теперь нужно инвертировать SBUS самим. Есть 2 способа это сделать:

Способ 1. Рекомендуемый.

Минуя встроенный инвертор SBUS приемника (инвертор не требуется).

Подробнее здесь: https://oscarliang.com/uninverted-sbus- ... receivers/

Рекомендуется, потому что вам не нужно дополнительное оборудование и пайка выглядит чище.

Способ 2.

Сделать цепь последовательного инвертора.

NPN-транзистор общего назначения + 2 резистора в следующей конфигурации цепи:
uninvert-SBUS-signal-serial-inverter-circuit.jpg
uninvert-SBUS-signal-serial-inverter-circuit.jpg (29.14 КБ) 493 просмотра

Я спаял эту схему на плате VERO, добавил разъемы (мама) для монтажа на плате STM32F1 и добавил дополнительные разъемы для контактов: 5v, GND, PA9, PA10 — контакты программирования на случай, если в будущем мне потребуется повторно прошить / обновить прошивку.
uninvert-SBUS-signal-serial-inverter-circuit-vero-board-breadboard-1024x768-550x413.jpg
uninvert-SBUS-signal-serial-inverter-circuit-vero-board-breadboard-1024x768-550x413.jpg (37.7 КБ) 493 просмотра

Подключение приемника к конвертеру
Чтобы подключить приемник к плате STM32F1, сделайте следующее соединение контактов:

Приемник 5V на STM32F1 5V контакт
GND приемника к выводу STM32F1 GND
«Неинвертированный» выход SBUS на PB11 STM32F1
stm32f1-with-SBUS_Inverter-connected-to-receiver-sbus-to-usb-1024x768-550x413.jpg
stm32f1-with-SBUS_Inverter-connected-to-receiver-sbus-to-usb-1024x768-550x413.jpg (32.51 КБ) 493 просмотра


Настройки пульта управления
После соединения и включения питания конвертеру и пульту управления, убедитесь, что каналы CH1-6 на пульте выдают значения примерно 1000-2000.

Порядок выходных каналов должен быть таким:

CH1: Throttle
CH2: Roll
CH3: Pitch
CH4: Yaw
CH5: AUX1 (больше 1800 включит виртуальную кнопку 1)
CH6: AUX2 (больше 1800 включит виртуальную кнопку 2)

Проверка работы
Пользователи Windows могут проверить выходные данные устройства здесь:
sbus-ppm-to-usb-virtual-joystick-Game-Controllers-maple-windows.jpg
sbus-ppm-to-usb-virtual-joystick-Game-Controllers-maple-windows.jpg (40.53 КБ) 493 просмотра

Пуск => Поиск «Настройка игровых USB-контроллеров».

Вы увидите список контроллеров, найдите контроллер с названием «Maple«. В новом окне перейдите во вкладку «Тест» (Test) и подергайте в разные стороны стики на пульте, они должны дублироваться значениями в окне выше.