Симулятор +аппа v977

spektr
Paul_Fertser:

Всем привет,
Столкнулся с той же проблемой и решил её с помощью микроконтроллерной платы за <3$ и написания подходящей микропрограммы.
Для первоначальной прошивки можно использовать обычный USB-UART конвертер, никаких хитрых программаторов не нужно. После можно перепрошивать прямо по USB.
Проект и документация: github.com/paulfertser/stm32-tx-hid.
Буду рад любым отзывам и пожеланиям, желательно по email.

Имеется вертолёт wltoys v931 с штатной аппой, уже весь интернет пролазил про впайку разъёма под симулятор, паять умею, а чего куда, и что понятие не имею, ссылка не работает, будьте так добры пошагово описать процедуру установки! Спасибо

Paul_Fertser

Приветствую, -wall-, spektr,

Ссылка работает, это же просто проект на гитхабе. Собственно, там в README я всё написал, если что непонятно – уточню.

Подключал так:

  1. Разобрал передатчик v977 целиком, т.к. нужно, чтобы дополнительная плата на время полёта в симуляторе “гасила” микроконтроллер самого передатчика, для этого с обратной стороны платы передатчика подпаялся к тестпоинту “NRST” (прямо рядом с микроконтроллером (с таинственными иероглифами, но, скорее всего, это просто STM8), хорошо видимое обозначение на “шёлке”, не ошибётесь).
  2. Хотел задействовать (просто как дополнительные для любых действий в симуляторе) кнопки триммирования рядом с левым стиком, но они, похоже, не полностью независимы (пока не было времени разобраться), на нажатие одной моя плата видит и нажатия других, но, в принципе, это не страшно. Подпаивался прямо к выводам кнопок (из-за того, что они зависимы, смысла паяться больше, чем к одной, нет).
  3. Подключил шину 3.3 платы и землю прямо на крайние выводы одного из потенциометров.
  4. Подключил все средние выводы потенциометров к аналоговым каналом, осталось 4 неиспользованных канала, их заземлил прямо на плате.
  5. Подключил оба тумблера (IDLE и HOLD) к PB8, PB9, в симуляторе можно пользоваться как кнопками, плюс если подключать usb, когда оба включены, загрузчик переходит в режим обновления вне зависимости от того, что там дальше прошито, сделал на тот случай, если неудачную версию зашью, чтобы не разбирать пульт потом.
  6. Плату упрятал внутрь корпуса, отверстие для разъёма usb в боковой крышке будет.

Процедуру начального программирования через ROM-загрузчик по UART я попробовал, потом отладил через SWD саму прошивку, после много раз перепрошивался по USB через DFU, так что всё, что описано в README, должно работать.

Когда подключаю плату по USB, батарейки не вынимаю, просто не включаю питание штатным тумблером спереди, плата и потенциометры запитываются от USB нормально. Когда USB выключен, а питание подаю штатным тумблером от батареек, плата определяет, что USB не активен и уходит в сон, передатчик работает как обычно.

Проверяю по работоспособности с crrcsim на GNU/Linux и Heli-X на OS X. Никаких проблем не заметил.

Уверен, что с v931 можно провести аналогичную операцию. Собственно, с любым пультом, у которого потенциометры на стиках, должно одинаково работать. Можно легко добавить ещё потенциометров, если нужно больше независимых каналов.

Возможно, я упускаю какие-то “очевидные” детали, спрашивайте, если что непонятно.

wall

Приветствую. Спасибо за подробный развёрнутый ответ. Но осталась пара небольших вопросов.

Paul_Fertser:

Разобрал передатчик v977 целиком, т.к. нужно, чтобы дополнительная плата на время полёта в симуляторе “гасила” микроконтроллер самого передатчика, для этого с обратной стороны платы передатчика подпаялся к тестпоинту “NRST” (прямо рядом с микроконтроллером (с таинственными иероглифами, но, скорее всего, это просто STM8), хорошо видимое обозначение на “шёлке”, не ошибётесь).

Какой сигнал или вывод микроконтроллера туда подпаяли?

Paul_Fertser:

Подключил все средние выводы потенциометров к аналоговым каналом, осталось 4 неиспользованных канала, их заземлил прямо на плате.

А какие каналы к каким регуляторам подпаивали? Или не важно, просто потом их можно вручную забиндить в ПО?

Paul_Fertser
wall:

Какой сигнал или вывод микроконтроллера туда подпаяли?

NRST передатчика подключил к PB0, как и написал в README.

wall:

А какие каналы к каким регуляторам подпаивали? Или не важно, просто потом их можно вручную забиндить в ПО?

Не важно, т.к. всё равно во всех симуляторах всё это настраивается, но на всякий случай (вдруг в какой-то программе переопределять оси окажется неудобно) я горизонталь правого стика подключил к 0 входу (ось “X”), вертикальную – к 1 (“Y”), вертикальную левого к 2 (“Z”), горизонтальную – к 3 (“Rx”).

spektr
Paul_Fertser:

Приветствую, -wall-, spektr,

Ссылка работает, это же просто проект на гитхабе. Собственно, там в README я всё написал, если что непонятно – уточню.

Подключал так:

  1. Разобрал передатчик v977 целиком, т.к. нужно, чтобы дополнительная плата на время полёта в симуляторе “гасила” микроконтроллер самого передатчика, для этого с обратной стороны платы передатчика подпаялся к тестпоинту “NRST” (прямо рядом с микроконтроллером (с таинственными иероглифами, но, скорее всего, это просто STM8), хорошо видимое обозначение на “шёлке”, не ошибётесь).
  2. Хотел задействовать (просто как дополнительные для любых действий в симуляторе) кнопки триммирования рядом с левым стиком, но они, похоже, не полностью независимы (пока не было времени разобраться), на нажатие одной моя плата видит и нажатия других, но, в принципе, это не страшно. Подпаивался прямо к выводам кнопок (из-за того, что они зависимы, смысла паяться больше, чем к одной, нет).
  3. Подключил шину 3.3 платы и землю прямо на крайние выводы одного из потенциометров.
  4. Подключил все средние выводы потенциометров к аналоговым каналом, осталось 4 неиспользованных канала, их заземлил прямо на плате.
  5. Подключил оба тумблера (IDLE и HOLD) к PB8, PB9, в симуляторе можно пользоваться как кнопками, плюс если подключать usb, когда оба включены, загрузчик переходит в режим обновления вне зависимости от того, что там дальше прошито, сделал на тот случай, если неудачную версию зашью, чтобы не разбирать пульт потом.
  6. Плату упрятал внутрь корпуса, отверстие для разъёма usb в боковой крышке будет.

Процедуру начального программирования через ROM-загрузчик по UART я попробовал, потом отладил через SWD саму прошивку, после много раз перепрошивался по USB через DFU, так что всё, что описано в README, должно работать.

Когда подключаю плату по USB, батарейки не вынимаю, просто не включаю питание штатным тумблером спереди, плата и потенциометры запитываются от USB нормально. Когда USB выключен, а питание подаю штатным тумблером от батареек, плата определяет, что USB не активен и уходит в сон, передатчик работает как обычно.

Проверяю по работоспособности с crrcsim на GNU/Linux и Heli-X на OS X. Никаких проблем не заметил.

Уверен, что с v931 можно провести аналогичную операцию. Собственно, с любым пультом, у которого потенциометры на стиках, должно одинаково работать. Можно легко добавить ещё потенциометров, если нужно больше независимых каналов.

Возможно, я упускаю какие-то “очевидные” детали, спрашивайте, если что непонятно.

Все отлично описано, вот бы фотографии по шагам, для таких людей которые могут только все по инструкции делать как Я =) Очень жалко вертик гробить, и тратится на пульт для симулятора

Paul_Fertser
spektr:

Все отлично описано, вот бы фотографии по шагам, для таких людей которые могут только все по инструкции делать как Я =) Очень жалко вертик гробить, и тратится на пульт для симулятора

Я пока ещё окошко под USB не вырезал и плату внутри не закрепил. Как сделаю – могу добавить пару фотографий, а так-то вроде и нечего показывать, моя работа в исходнике прошивки, а не в наспех припаянных проводах :)

spektr
Paul_Fertser:

Я пока ещё окошко под USB не вырезал и плату внутри не закрепил. Как сделаю – могу добавить пару фотографий, а так-то вроде и нечего показывать, моя работа в исходнике прошивки, а не в наспех припаянных проводах 😃

Да будет отлично если будет подробная инструкция что делать, уверен что множество людей будут вам очень благодарны =)
А пока хочу спросить какие материалы понадобиться для это работы ? ( ну кроме паяльника и проводов )

Paul_Fertser
spektr:

Да будет отлично если будет подробная инструкция что делать, уверен что множество людей будут вам очень благодарны =)

Что-то я сомневаюсь, что это так уж актуально, вроде бы почти все покупают Devo и радуются.

spektr:

А пока хочу спросить какие материалы понадобиться для это работы ? ( ну кроме паяльника и проводов )

Сама плата с stm32, на али она сейчас 171 рубль стоит, какой-нибудь usb-uart конвертер (46 рублей), флюс, припой, провод с micro-USB, двухсторонний скотч и/или термоклей по вкусу (для крепления внутри пульта). Вроде всё.

В крайнем случае можно будет где-нибудь в Москве встретиться, если какой-нибудь затык с реализацией будет.

spektr
Paul_Fertser:

Что-то я сомневаюсь, что это так уж актуально, вроде бы почти все покупают Devo и радуются.

Сама плата с stm32, на али она сейчас 171 рубль стоит, какой-нибудь usb-uart конвертер (46 рублей), флюс, припой, провод с micro-USB, двухсторонний скотч и/или термоклей по вкусу (для крепления внутри пульта). Вроде всё.

В крайнем случае можно будет где-нибудь в Москве встретиться, если какой-нибудь затык с реализацией будет.

Подойдёт

  1. 1 шт. STM32F103C8T6 STM32 минимальная системная плата модуль для arduino
    www.aliexpress.com/item/…/32478120209.html

  2. Usb 2.0 для UART TTL 6PIN модуля разъем последовательный преобразователь CP2102 новые
    www.aliexpress.com/item/…/32246790758.html

26 days later
spektr
Paul_Fertser:

Да, то, что надо.

Ну что все пришло =) готов к установки прошивки и монтирования в пульт =) жду инструкцию для особо не понятлевых =)

Paul_Fertser

Всем здравствуйте,

Выложил бинарник прошивки в “Релизы” на github, github.com/…/stm32-tx-hid-bootldr-combined.bin .

Инструкция по первоначальной прошивке:

  1. Переключить джампер, который ближе к краю платы, в положение 1.

  2. Подключить плату по usb, игнорировать сообщение ОС о невозможности работы.

  3. Подключить A9 к Rx конвертера A10 к Tx конвертера, также подключить землю конвертера к GND платы

  4. Подключить конвертер, установить драйверы, если надо, потом на вкус пользоваться либо утилитой от ST (только для windows) либо stm32flash (на всех других ОС) для прошивки.

  5. После прошивки перевести джампер в исходное состояние.

Инструкция по подключению к v977 примерно такая:

  1. С помощью вольтметра определить на любом из потенциометров на крайних контактах, где питание, а где земля (при включённом пульте вольтметр должен показывать около 3.3В, если соблюсти полярность).

  2. Разобрать пульт в достаточной степени, чтобы подобраться к основной плате с другой стороны. Припаять провод к тестпоинту, помеченному RST (рядом с микросхемой в верхней части).

  3. Пока пульт разобран, подумать над переносом петли для подвешивания в другое место для лучшей балансировки.

  4. Провод от RST припаять к B0 на мелкой плате.

  5. Землю от любого из потенциометров припаять к GND на плате, 3.3 оттуда же припаять к 3.3 на плате.

  6. Средние точки потенциометров припаять к A0-A3, A4-A7 припаять к земле на плате.

  7. От двух переключателей (hold и idle) к ноге, которая не земля (проверить с помощью вольтметра или омметра) подпаять B8 и B9.

Мой email: fercerpav@gmail.com . Также можно общаться по jabber jid:paulfertser@jabber.org или по IRC на Freenode (PaulFertser).

spektr

[QUOTE=spektr;6207317]

Paul_Fertser:

Всем здравствуйте,

Выложил бинарник прошивки в “Релизы” на github, github.com/…/stm32-tx-hid-bootldr-combined.bin .

Не работает…пишет что торрент закодирован

Прошу админов удалить сообщение

Paul_Fertser

Что ж, у spektr’а всё заработало, кто следующий? ;)

spektr
Paul_Fertser:

Что ж, у spektr’а всё заработало, кто следующий? 😉

Я не много доработал инструкцию

Полная инструкция по впайке разъем для симулятора ( практический в любой джойстик)

Что понадобится:

  1. Arduino STM32 (STM32F103C8T6) Я брал на Али стоит она примерно 130-180р

  2. Прошивальщий Usb 2.0 для UART (Usb 2.0 для UART TTL 6PIN) Я использовал его, так же брал на Али 150р

  3. 7шт проводов примерно по 15-17см ( желательно разных цветов ) Чисто для эстетики ( да и удобней так ) P.S. для прошивки понадобится еще 3шт проводов с дюпон (так будет удобней при прошивке)

  4. Паяльник, олово, канифоль

  5. Установить программу на компьютер ( не знаю кто что использует, я долго не мог найти чего к чему) Я скачал ее и все работает Flash Loader Demonstrator

  6. Провод micro USB

  7. Взять Arduino, переключить джампер (перемычка), который ближе к краю платы, в положение 1 (только на время прошивки)

  8. Берем Аrduino, провода и Usb 2.0 UART, и подключаем:
    от Arduino (A9) к (Rx) на USB 2.0 UART
    от Arduino (A10) к (Tx) на USB 2.0 UART,
    от Arduino (GND) к (GND) на USB 2.0 UART

  9. Подключить Arduino по micro USB и подключить Usb 2.0 UART, игнорировать сообщение ОС о невозможности работы.

  10. Установить драйверы, если надо, потом на вкус пользоваться либо утилитой от ST (только для windows) либо stm32flash (на всех других ОС) для прошивки. ( у меня ПОСЛЕ прошивки установились сами)

  11. Запустить программу ( скачать прошивку, ссылка будет ) комп сам определит платки, тыкать далее ( выбрать место где лежит прошивка) нажать далее, не много подождать и все ( отключить платы) USB UART и провода дюпон вам больше не нужны
    github.com/paulfertser/stm32...r-combined.bin .

  12. После прошивки перевести джампер в исходное состояние, то есть положение 0

  13. Подключить Arduino компьютер должен установить драйвер (хотя может и не скачать) в устройствах должен распознать как джойстик

Половина работы сделана

Инструкция по подключению к аппаратуре примерно такая:

  1. Разобрать

  2. С помощью вольтметра определить на любом из потенциометров на крайних контактах, где питание, а где земля (при включённом пульте вольтметр должен показывать около 3.3В, если соблюсти полярность). ( у меня белый был минус а красный плюс, пользовался диодной лампочкой )

  3. Разобрать пульт в достаточной степени, чтобы подобраться к основной плате с другой стороны. Припаять провод к тестпоинту, помеченному RST (рядом с микросхемой в верхней части).

  4. Пока пульт разобран, подумать над переносом петли для подвешивания в другое место для лучшей балансировки.

  5. Провод от RST припаять к B0 на Arduino плате.

  6. Землю от любого из потенциометров припаять к GND на плате, 3.3 оттуда же припаять к 3.3 на плате.

  7. A0 надо припаять к среднему контакту одного из потенциометра (например, горизонтальная ось правого стика)
    А1 к центру другого потенциометра (например, вертикальная ось правого стика)
    А2 к центру третьего потенциометра (например, вертикальная ось левого стика)
    А3 к центру четвертого потенциометра (например, горизонтальная ось левого стика)
    А4-А5-А6-А7 можно не куда не припаивать либо, спаять их вместе и припаять на минус (GND) на самой плате

  8. От двух переключателей (hold и idle) к ноге, которая не земля (у меня были красные) (проверить с помощью вольтметра или омметра) подпаять B8 и B9.

wall
Paul_Fertser:

Что ж, у spektr’а всё заработало, кто следующий? 😉

Вертолёт WLToys V977. Прошил плату контроллера, подключил к аппе. Теперь хоть при включении аппы, хоть при подключении выключенной аппы в usb аппаратура ведёт себя одинаково - издаёт короткий писк (при подключении к usb пищит дважды), подсветка экрана не включается, на экране отображаются все сегменты.
Если включить оба тумблера (hold и idle), т.е. перевести контроллер в режим прошивки, а затем включить аппу, то аппаратура включается, пищит постоянно несмотря на то, что ручка газа на нуле, подсветка экрана тоже включается, на экране также отображаются все символы.
Проверил подключение проводов, вроде ошибок нет.

При подключении к usb в win8.1 определяются 4 устройства:

  1. @Internal Flash /0x08000000/8*001Ka,56*001Kg
  2. HID-совместимый игровой контроллер
  3. USB-устройство ввода
  4. Составное USB устройство
    Насколько я понимаю, главное, что есть устройство под номером 2. Проверил, в War Thunder оси определяются.

upd: Отпаял провод с B0, аппаратура включается и работает нормально.

spektr
wall:

Вертолёт WLToys V977. Прошил плату контроллера, подключил к аппе. Теперь хоть при включении аппы, хоть при подключении выключенной аппы в usb аппаратура ведёт себя одинаково - издаёт короткий писк (при подключении к usb пищит дважды), подсветка экрана не включается, на экране отображаются все сегменты.
Если включить оба тумблера (hold и idle), т.е. перевести контроллер в режим прошивки, а затем включить
, то аппаратура включается, пищит постоянно несмотря на то, что ручка газа на нуле, подсветка экрана тоже включается, на экране также отображаются все символы.
Проверил подключение проводов, вроде ошибок нет.

При подключении к usb в win8.1 определяются 4 устройства:

  1. @Internal Flash /0x08000000/8*001Ka,56*001Kg
  2. HID-совместимый игровой контроллер
  3. USB-устройство ввода
  4. Составное USB устройство
    Насколько я понимаю, главное, что есть устройство под номером 2. Проверил, в War Thunder оси определяются.

upd: Отпаял провод с B0, аппаратура включается и работает нормально.

Извини забыл сказал что джойстик нужно включать только при том когда тумблеры подняты! Когда они опущены и ты включаешь то плата входит в режим прошивки, ну ты это сам понял)) по этому поднял оба тумблера включил,пуль опустил тумблера, и постоянные писки опадут, ( постоянные писки из за включённого режима 3Д ) а так не важно какой провод ты отпаяешь ( кроме стишков ) хоть питание отурби будет работать нормально
А когда подключён к компу то весь экран зажигается все верно

Paul_Fertser

Приветствую,

spektr, спасибо за понятную инструкцию! Одна мелочь только мне глаза режет: на самом деле плата никакого отношения к Arduino не имеет, вообще совсем никаким боком (разве что и там и там есть на плате программируемый микроконтроллер), просто китайцы для привлечения внимания популярное слово в описание добавили. Драйверы может понадобиться ставить только для USB-UART конвертера (в зависимости от конкретной микросхемы), а сам HID USB Joystick идёт в комплекте с ОС.

Что касается включения и B0: я всегда включаю передатчик при правом стике вверху (HOLD двигателя), левом внизу (не-IDLE). Т.к. в этот момент USB не подключен, то плата переводит B0 в логическую 1 и т.о. не мешает передатчику работать штатным образом. Если же я подаю питание не от батарейного отсека, а от USB с компьютера, то плата притягивает B0 к 0, т.к. это происходит в момент самотестирования, то все элементы жидкокристаллического экрана остаются включёнными, а сам передатчик не работает, работает только usb joystick.

Paul_Fertser

Что касается звуковых сигналов от передатчика при принудительной перепрошивке: это нормально, DFU загрузчик не пытается выключить передатчик, а он считает, что 3.3В, которые поступают на его питание через плату с USB – это пониженное напряжение, поэтому и пищит. Т.к. принудительная перепрошивка – это дело редкое и быстрое, то, надеюсь, никому это не помешает.

wall

В первую очередь хочу поблагодарить за проведённую работу и последующее опубликование её результатов.
В симуляторе теперь удобно оттачивать навыки пилотирования, рекомендую Heli-X, достаточно и бесплатной версии.

Paul_Fertser:

Что касается включения и B0: я всегда включаю передатчик при правом стике вверху (HOLD двигателя), левом внизу (не-IDLE). Т.к. в этот момент USB не подключен, то плата переводит B0 в логическую 1 и т.о. не мешает передатчику работать штатным образом. Если же я подаю питание не от батарейного отсека, а от USB с компьютера, то плата притягивает B0 к 0, т.к. это происходит в момент самотестирования, то все элементы жидкокристаллического экрана остаются включёнными, а сам передатчик не работает, работает только usb joystick.

Сейчас проверил - при включённом (поднятом вверх) throttle hold подаю питание с батарейного отсека кнопкой включения - реакция аппы такая же, как будто я её подключил к usb.
Включить её для управления вертолётом получается только так, как описал spektr: при обоих поднятых тумблерах включаю аппу, она начинает постоянно пищать, после этого опускаю левый тумблер и аппа работает как обычно.

Paul_Fertser:

Что касается звуковых сигналов от передатчика при принудительной перепрошивке: это нормально, DFU загрузчик не пытается выключить передатчик, а он считает, что 3.3В, которые поступают на его питание через плату с USB – это пониженное напряжение, поэтому и пищит. Т.к. принудительная перепрошивка – это дело редкое и быстрое, то, надеюсь, никому это не помешает.

Как прошивать плату впоследствии через usb?