Еще одна попытка управления джойстиком, или USB -> PPM конвертор с преферансом и гейшами.

Tahorg
hax0r:

Всем привет.
Проект еще жив и развивается или можно дальше идти?

Где-то там жив. В смысле я себе делаю, что мне интересно. Ну и по запросам отдельных пользователей с РЦГрупс.

hax0r
Tahorg:

Где-то там жив. В смысле я себе делаю, что мне интересно. Ну и по запросам отдельных пользователей с РЦГрупс.

На гитхабе актуальная версия проекта?

Tahorg

В открытом репозитарии - стабильная.

1 month later
kak-dela007

Давно собирался, и вот наконец заказал STM32F429I-DISCO. Буду пробовать подключиться к x52 😃

Tahorg

Еще FTDI нужен, чтоб прошивки заливать.

1 month later
kak-dela007

Пробую прошить через FTDI - пока не получается. При нажатии кнопки Connect выдает ошибку “The operation has timed out”.
Пробовал двумя заведомо рабочими прошивальщиками. Драва на компьютере стоят, совсем недавно прошивал другую плату. В чем может быть дело?
Подключил все как здесь
Перемычки - на месте, пробовал подключиться с ними и без них.
Без них на дисплее платы появляются виджеты (уже что-то прошито в ней).
Пробовал менять TX\RX местами.

kak-dela007

Все получилось) Но только когда снял перемычки на подключенной плате. Перехожу к настройкам.

kak-dela007

Что-то не могу разобраться с bin файлом при создании проекта. Когда заходишь в Sketch -> Settings, и указываешь путь в свободную папку, где должен быть проект, кнопку ОК не срабатывает, видимо нужен уже готовый bin файл. А где его взять?

  • и опять разобрался, надо было делать это без нажатия Connect
    Но bin файл в папке так и не появился. Есть только xml
Grumman351

Здравствуйте Сергей. Делаю свой проект на STM32F407-discovery. Поднял USB-HOST, поженил джойстик Logitech с платой, сделал PPM генератор. При подключении FR SKY модуля спалил ногу микроконтроллера по которой гнал PPM сигнал. С удивлением обнаружил на модуле, на входе PPM напряжение 3,3 вольта. У вас на схеме нога микроконтроллера на прямую идёт на PPM вход на модуле.
Подскажите пожалуйста - вы в программе какую то подтяжке на ноге делали ? Должно ли быть напряжение на PPM входе в/ч модуля ? Спасибо.

Tahorg
Grumman351:

Здравствуйте Сергей. Делаю свой проект на STM32F407-discovery. Поднял USB-HOST, поженил джойстик Logitech с платой, сделал PPM генератор. При подключении FR SKY модуля спалил ногу микроконтроллера по которой гнал PPM сигнал. С удивлением обнаружил на модуле, на входе PPM напряжение 3,3 вольта. У вас на схеме нога микроконтроллера на прямую идёт на PPM вход на модуле.
Подскажите пожалуйста - вы в программе какую то подтяжке на ноге делали ? Должно ли быть напряжение на PPM входе в/ч модуля ? Спасибо.

В STMCubeMX показываеются ноги толератные к 3.3 и к 5 входным вольтам. Я пробовал к FrSky модулю, Taranis входу и к EzUHF RLS. Проблем не было.

Но вообще для PPM выхода

GPIO_InitStruct.Pull = GPIO_PULLUP;

github.com/Iezious/rcjoy/tree/master/RCJoy - тут лежит старая версия под 407, правда не под куб а CMSIS/

kak-dela007:

Что-то не могу разобраться с bin файлом при создании проекта. Когда заходишь в Sketch -> Settings, и указываешь путь в свободную папку, где должен быть проект, кнопку ОК не срабатывает, видимо нужен уже готовый bin файл. А где его взять?

  • и опять разобрался, надо было делать это без нажатия Connect
    Но bin файл в папке так и не появился. Есть только xml

Второй бин появится после компиляции файла настроек, если он пройдет проверку. Ео заливать лучше уже самой программой.

Grumman351
Tahorg:

В STMCubeMX показываеются ноги толератные к 3.3 и к 5 входным вольтам. Я пробовал к FrSky модулю, Taranis входу и к EzUHF RLS. Проблем не было.

Но вообще для PPM выхода

GPIO_InitStruct.Pull = GPIO_PULLUP;

github.com/Iezious/rcjoy/tree/master/RCJoy - тут лежит старая версия под 407, правда не под куб а CMSIS/

Второй бин появится после компиляции файла настроек, если он пройдет проверку. Ео заливать лучше уже самой программой.

Здравствуйте, спасибо за ответ. Поменял ногу на на не подключённую к светодиоду на плате дискавери - и всё заработало. Видимо по токоотдаче нога не выдержала.

kak-dela007

Обо всей истории по порядку:
Первый раз прошил, настроил триммеров, кнопок… Все классно, но один триммер почему-то в одну сторону давал 3х кратное значение, а в другую- все нормально. Позже Live data перестала работать (в блоке джойстика значения перестали бегать, и соответственно - в микшерах и триммерах). На газ поставил инвертор, он что-то тоже вырубился потом. Может все дело в том, что не выравнял значения с теми что во флеши уже были… пока не понятно. Обнаружил что моя версия ПО называется “RCJoy.P429.v.0.9.3.zip” - на конце цифра 3. А сейчас с Гитхаба качается то же, только на конце 2. Может я как-то раз поторопился и скачал тестовую версию?
Прошил сейчас свежескаченной, с двойкой на конце.
На этапе настройки джойстика выдает вот такую штуку:

Чего это он хочет?

Tahorg

версии не совместимые, программа и прошивка должны быть из одного пакета.

Говорит, что проблема с распознаванием джойстика - суммарное количество бит должно делиться на 8.

Вообще на гитхабе есть работающие файлы джойстиков, но пока не выложен код, который их поключает в программе. Можно только руками править xml файл.

И еще - после всех перемен схемы, после заливки, всегда надо проверять значения переменных. Я пока просто не придумал, как это сделать умно, поэтому все тупо,п поэтому могут не так работать тримеры, инверторы, мапперы и прочее. Всегда проверять, что записано в переменных. Сам иногда забываю и удивляюсь, почему тот или иной канал сдох 8-/.

Кроме того - все можно посмотреть в отладочной секции прямо на экране платы - ВМЕСТЕ с переменными. Открываем меню платы синей кнопкой, идем в дебаг, выбираем блок и видим все текущие вход, выход и коэфициенты (что кстати важно, в программе мы видим коэфициенты ДЕФОЛТНЫЕ, а на плате ТЕКУЩИЕ). Кстати, их прямо по месту можно править, если они неверные.

Grumman351

Сергей здравствуйте, а можете какое то видео полёта с джойстиком выложить. Или как ваша система на земле работает. Как рули на джойстик реагируют. Спасибо.

Tahorg
Grumman351:

Сергей здравствуйте, а можете какое то видео полёта с джойстиком выложить. Или как ваша система на земле работает. Как рули на джойстик реагируют. Спасибо.

есть такое :

Правда тут старая плата и джойстик не фонтан. Полетных нет - все никак не дособеру коптер с камерой.

kak-dela007

Вообще все это мелочи по сравнению с проделанной работой!) Для пользователя сделано все очень удобно, и возможности огромны. Приятно смотреть, когда на экране работают все кнопки и оси твоего джойстика x52, зная что можешь подключить их к любому каналу PPM.

Tahorg:

версии не совместимые, программа и прошивка должны быть из одного пакета.

Странно, у меня с прошивкой v.0.9.3 - все капризничало, не хотела работать Live data, и GUI вылетала при каждой перезагрузке платы.
Когда прошил v.0.9.2 - все заработало чудесно, но только с GUI от от v.0.9.3, а в GUI от v.0.9.2 выдает вот эту самую ошибку с битами.
Чем эти версии вообще отличаются? Хотя, сам я вряд ли в этом разберусь, как и в правке xml файла.

Еще возможно баг обнаружил, а может в настройках что-то не так:

Когда делаю Increase в триммере по Aelerons, то значение на выходе увеличивается почему-то не на указанное, а на произвольное - от 5-ти до 10-ти кратного примерно. При этом, все другие триммеры работают нормально. В моем конфиге триммеры управляются с хатки, через блок Hat-Battons, плюс сделал ее отключаемой, поставил логические кнопки, которые включаются только при одном положении колеса родных флай-мод x52, т.е. подключил их к каналу “Buttons 1 28”. Причем, хатка выдает правильные значения. Пробовал и без хатки - на другие кнопки триммеры выводить - результат тот же. Т.е. похоже не в джойстике дело. Да, наверно это важно, это не сразу после первой загрузки конфигурации случилось, а только после последующих, когда стал обновлять уже.

Tahorg

Вроде все правильно.

Тут есть нюанс, который слабо прояснен - про значения.

Есть значения оси с джойстика, они могут быть любые. Например у Х52 рукоятка 10 бит и будет 0…1024, а газ 8 бит и будет 0…255.

Далее оси джойстика всегда конвертятся в значения типа “ось”. Ось всегда 0…1000, вне зависимости от размерности входящих осей - все ремапится на пространство 0…1000. Все инверторы, триммеры, мапперы и прочая математика делается над значением типа “ось” и всегда остается в диапазоне 0…1000.

Далее, в выходном блоке ППМ ось конвертится в ППМ сингал. По стандарту ППМ - это 1000-2000, но он настраивается в меню модели, можно подправить (например мультик хотел оси 920…2120 с центром 1520).

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

kak-dela007
Tahorg:

например мультик хотел оси 920…2120 с центром 1520

Да, как раз задавался этим вопросом, ну теперь все ясно, спасибо! У меня APM, там от 980 до 1900 - что-то вроде этого, значит настрою в меню модели, когда буду все собирать воедино.
Вот как бы триммер еще настроить чтоб корректно работал, про который выше писал - было б вообще идеально. Побольше бы мне знаний в программировании - полез бы в код. А так - могу только констатировать факт.

kak-dela007

Настроил классную конфигурацию, собирался тут описать, но почему-то очередной раз проект отказался загружаться… Выдает ошибку “Unhandled exception occurred you application”, и так далее. Вот детали сообщения:

See the end of this message for details on invoking
just-in-time (JIT) debugging instead of this dialog box.

************** Exception Text **************
System.ArgumentException: An item with the same key has already been added.
at System.ThrowHelper.ThrowArgumentException(ExceptionResource resource)
at System.Collections.Generic.Dictionary`2.Insert(TKey key, TValue value, Boolean add)
at Tahorg.RCJoyGUI.Data.FRAMMapper.Register(IFRAMUser user)
at Tahorg.RCJoyGUI.ProgrammingPanels.ConstantDesignPanel.Initialized()
at Tahorg.RCJoyGUI.DesignPanel.LinkPanel(DraggableElement el, Boolean notMove)
at Tahorg.RCJoyGUI.DesignPanel.CreatePanel(XName panelName, XElement xElement)
at Tahorg.RCJoyGUI.DesignPanel.Deserialize(XElement data)
at Tahorg.RCJoyGUI.fmMain.LoadFile(String fname)
at Tahorg.RCJoyGUI.fmMain.openToolStripMenuItem_Click(Object sender, EventArgs e)
at System.Windows.Forms.ToolStripItem.RaiseEvent(Object key, EventArgs e)
at System.Windows.Forms.ToolStripMenuItem.OnClick(EventArgs e)
at System.Windows.Forms.ToolStripItem.HandleClick(EventArgs e)
at System.Windows.Forms.ToolStripItem.HandleMouseUp(MouseEventArgs e)
at System.Windows.Forms.ToolStripItem.FireEventInteractive(EventArgs e, ToolStripItemEventType met)
at System.Windows.Forms.ToolStripItem.FireEvent(EventArgs e, ToolStripItemEventType met)
at System.Windows.Forms.ToolStrip.OnMouseUp(MouseEventArgs mea)
at System.Windows.Forms.ToolStripDropDown.OnMouseUp(MouseEventArgs mea)
at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
at System.Windows.Forms.Control.WndProc(Message& m)
at System.Windows.Forms.ScrollableControl.WndProc(Message& m)
at System.Windows.Forms.ToolStrip.WndProc(Message& m)
at System.Windows.Forms.ToolStripDropDown.WndProc(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)

************** Loaded Assemblies **************
mscorlib
Assembly Version: 4.0.0.0
Win32 Version: 4.0.30319.1 (RTMRel.030319-0100)
CodeBase: file:///C:/WINDOWS/Microsoft.NET/Framework/v4.0.30319/mscorlib.dll
----------------------------------------
RCJoyGUI
Assembly Version: 0.1.5458.33761
Win32 Version: 0.1.*
CodeBase: file:///E:/Софт/Коптер/Джойстик/(03)Преф_и_Гейши_RCJoy.P429.v.0.9.3/RCJoyGUI.exe
----------------------------------------
System.Windows.Forms
Assembly Version: 4.0.0.0
Win32 Version: 4.0.30319.1 built by: RTMRel
CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Windows.Forms/v4.0_4.0.0.0__b77a5c561934e089/System.Windows.Forms.dll
----------------------------------------
System.Drawing
Assembly Version: 4.0.0.0
Win32 Version: 4.0.30319.1 built by: RTMRel
CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Drawing/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Drawing.dll
----------------------------------------
System
Assembly Version: 4.0.0.0
Win32 Version: 4.0.30319.1 built by: RTMRel
CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System/v4.0_4.0.0.0__b77a5c561934e089/System.dll
----------------------------------------
System.Core
Assembly Version: 4.0.0.0
Win32 Version: 4.0.30319.1 built by: RTMRel
CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Core/v4.0_4.0.0.0__b77a5c561934e089/System.Core.dll
----------------------------------------
System.Xml.Linq
Assembly Version: 4.0.0.0
Win32 Version: 4.0.30319.1 built by: RTMRel
CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Xml.Linq/v4.0_4.0.0.0__b77a5c561934e089/System.Xml.Linq.dll
----------------------------------------
System.Xml
Assembly Version: 4.0.0.0
Win32 Version: 4.0.30319.1 built by: RTMRel
CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Xml/v4.0_4.0.0.0__b77a5c561934e089/System.Xml.dll
----------------------------------------

************** JIT Debugging **************
To enable just-in-time (JIT) debugging, the .config file for this
application or computer (machine.config) must have the
jitDebugging value set in the system.windows.forms section.
The application must also be compiled with debugging
enabled.

For example:

<configuration>
<system.windows.forms jitDebugging=“true” />
</configuration>

When JIT debugging is enabled, any unhandled exception
will be sent to the JIT debugger registered on the computer
rather than be handled by this dialog box.

Откат системы не помог.
Самое интересное, что конфигурация залилась во флеш, и работает - на дисплее триммеры и переменные высвечиваются

Tahorg

файл конфигурации мне пошлите в личку