Top.Mail.Ru
Перейти к содержанию

FreeJoy. OpenSource контроллер на STM32


Рекомендуемые сообщения

Всем доброго времени суток!
Уже достаточно давно я веду разработку программного обеспечения для контроллера игровых устройств, и поскольку я сам являюсь больше вирпилом, чем симрейсером, то блог разработки ведется на соответствующем форуме.
Сегодня в честь релиза новой версии ПО я решил поделиться своей разработкой с вами, так как с появлением поддержки энкодеров высокого разрешения (пока что только одного) этот проект может стать интересным и виртуальным пилотам колесной техники)
Думаю, многие из вас в курсе такого проекта, как OSH. Именно посмотрев на этот проект я решил создать FreeJoy, так как мне очень понравился дружелюбный интерфейс конфигуратора (поэтому интерфейс FreeJoy Configurator вам может показаться знакомым), но к сожалению у меня возникли проблемы с работой самого контроллера, и кроме этого он не имел многих функций, которые мне хотелось бы получить.

Итак, на данный момент краткая сводка по функционалу FreeJoy:

  • До 8 аналоговых осей
  • До 128 кнопок и тумблеров
  • До 4 хаток
  • До 16 инкрементальных энкодеров (из них 1 с высоким разрешением)
  • Функция преобразования положений осей в кнопки (до 12 кнопок на ось)
  • Поддержка сдвиговых регистров 74HC165 и CD4021 для увеличения количества подключаемых кнопок;
  • Поддержка цифровых датчиков Холла TLE5010/TLE5011, AS5600, MLX90393 (только интерфейс SPI);
  • Поддержка внешних АЦП ADS1115 и MCP3201/02/04/08;
  • 3 канала ШИМ для управления подсветкой;
  • 24 светодиода (одиночные или в матрице), привязываемые к состояниям кнопок;
  • Настройка имени устройства и других параметров USB;
  • Удобная утилита для конфигурации;
  • Обновление прошивки по USB;
  • Сохранение и загрузка конфигурации устройства из файла.

Кнопки и оси имеют весьма обширный выбор опций и настроек, более подробно со списком вы можете ознакомиться в wiki репозитории проекта.

Ну а кому стало интересно - вот ссылки на скачивание актуальной версии прошивки для контроллера и установочник конфигуратора:
Прошивка - https://github.com/FreeJoy-Team/FreeJoy/releases
Конфигуратор - https://github.com/FreeJoy-Team/FreeJoyConfigurator/releases

Ссылка на страницу проекта на github: https://github.com/FreeJoy-Team

  • Нравится 4
Ссылка на комментарий
4 минуты назад, Buxou сказал:

Какая крутая штука, кажется придется делать себе штурвал... 

А в авиасимах на штурвале обязательно нужен фидбек?

Нет, не обязательно, я бы сказал, что он бывает даже редко. Но FFB у меня висит на самые ближайшие планы

Ссылка на комментарий
Только что, Magners сказал:

Нет, не обязательно, я бы сказал, что он бывает даже редко.

Так это еще проще сделать даже! Надо подумать, как сделать это без лазерной резки и не стереть руки пиля это напильником.

Ссылка на комментарий

@Magners Спасибо огромное !!! будем пробовать !!!

 

в архивах не нашёл файл .exe для запуска конфигуратора....

и ещё вопрос - а как обстоят дела с шумами потенциометров? Почему спрашиваю, потому , что на MMOS и что на OSH_Studio ведут себя неадекватно, уменьшить шумы можно ферритами, но этого мало... всё равно остаются шумы...

Изменено пользователем Basma4
не был внимателен
Ссылка на комментарий

У меня на grabcad пару проектов для летчиков есть. Но джойстик проще сделать с помощью чпу там просто 3 кусочка алюминия надо. Может как настроение будет спроектирую и этот софт попробую , а пока собрат так на mmjoy2.

  • Нравится 1
Ссылка на комментарий
7 часов назад, Basma4 сказал:

в архивах не нашёл файл .exe для запуска конфигуратора....

Устанавливать через Install.bat

7 часов назад, Basma4 сказал:

и ещё вопрос - а как обстоят дела с шумами потенциометров? Почему спрашиваю, потому , что на MMOS и что на OSH_Studio ведут себя неадекватно, уменьшить шумы можно ферритами, но этого мало... всё равно остаются шумы...

Если будут шуметь, можно попробовать настроить Dynamic Deadband или Filter. В вики подробнее написано https://github.com/FreeJoy-Team/FreeJoyWiki/blob/master/rus/Настройка-осей.md

Ссылка на комментарий
9 часов назад, Basma4 сказал:

как обстоят дела с шумами потенциометров?

На данный момент по моим измерениям внутренний АЦП выдает около 10бит эффективного разрешения, что очень хорошо для 12битного АЦП. Если применить фильтрацию, то можно поднять эффективное разрешение до 11 бит, пожертвовав временем отклика. До 3-го уровня фильтрации (из 7) время отклика почувствовать практически невозможно.

Вот тут можно примерно оценить шумы, но с тех пор качество измерения ещё немного подросло.

Изменено пользователем Magners
  • Нравится 1
Ссылка на комментарий

@Magners Доброго времени суток, есть желание подключить кнопки(с фиксацией) со светодиодами, каков порядок подключения (схема) 
например для таких кнопок

кнопка.jpg

Ссылка на комментарий
3 часа назад, Basma4 сказал:

каков порядок подключения

У проекта есть достаточно подробное wiki, поддерживаемое сообществом.

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

UPD. Что касается светодиодов, то обычно для них на кнопках есть просто отдельные выводы под питание, а земля общая с кнопкой. То есть надо подключить кнопку как обычную Button_GND, а питание светодиода к 3.3В или 5В. Но это может зависеть от конкретноц модель кнопки, нужно смотреть документацию (или хотя бы обозначения на корпусе).

Также светодиоды можно завязывать на состояния кнопок, но в этом случае это вряд ли актуально, так как кнопка сама зажигает/гасит светодиод

Изменено пользователем Magners
  • Спасибо 1
Ссылка на комментарий

@Magners ещё раз Огромное спасибо!!! надеюсь вы на этом не останавливаетесь?

те кнопки которые на фото - они с тремя положениями : 1-Off , 2-On(фикс) , 3-On(без фикс) , вроде так... они идеально подходят для симуляторов транспорта (зажигание+стартер)

Ссылка на комментарий
2 часа назад, Basma4 сказал:

@Magners ещё раз Огромное спасибо!!! надеюсь вы на этом не останавливаетесь?

те кнопки которые на фото - они с тремя положениями : 1-Off , 2-On(фикс) , 3-On(без фикс) , вроде так... они идеально подходят для симуляторов транспорта (зажигание+стартер)

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

Для настройки кнопок есть очень много возможностей, этот функционал пилился очень скрупулёзно в течение не одного месяца 

Ссылка на комментарий
  • 2 недели спустя...
11.06.2020 в 4:46 PM, Basma4 сказал:

и ещё вопрос - а как обстоят дела с шумами потенциометров?

Я лениво переполз с OSH на данную прошивку и на первый взгляд шумов стало значительно меньше (10 бит с фильтрацией 1 уровня). В этой прошивке более гибкие настройки. Можно и динамическую мертвую зону сделать, но для себя решил мириться с микрошумом, чем потерять контроль.

@Magners У вас в вики написано, что номинал потенциометра - 10 кОм. А что будет, если подключить 25 кОм, например?

Изменено пользователем Tumbler
Ссылка на комментарий
4 часа назад, Tumbler сказал:

У вас в вики написано, что номинал потенциометра - 10 кОм. А что будет, если подключить 25 кОм, например?

Потенциометр от 10к до 100к это норма, но чем больше общее сопротивление, тем больше шумит.

  • Спасибо 1
Ссылка на комментарий
5 часов назад, Tumbler сказал:

Я лениво переполз с OSH на данную прошивку и на первый взгляд шумов стало значительно меньше (10 бит с фильтрацией 1 уровня). В этой прошивке более гибкие настройки. Можно и динамическую мертвую зону сделать, но для себя решил мириться с микрошумом, чем потерять контроль.

@Magners У вас в вики написано, что номинал потенциометра - 10 кОм. А что будет, если подключить 25 кОм, например?

С фильтрами можно особо не мелочиться, вплоть до 3го уровня их не почувствовать (1 и 2 уж точно). Вот тут снимали переходную характеристику (реакцию на моментальное изменение входа оси с 0% до 100%) для фильтров всех уровней. У меня где-то были собственные такие измерения (с аналогичными результатами), но что-то не могу найти.. С такой скоростью изменить сигнал на входе не позволит ни одна механика оси (если это не просто кнопка), поэтому на графике максимально возможные недостижимые в реальной жизни времена реакции оси на изменение входа.

По потенциометрам: с увеличением сопротивления увеличивается также подверженность тепловым шумам, но слишком малое тоже нельзя, чтобы не текли большие токи. Как сказано выше, оптимальный диапазон 10К-100К.

Ссылка на комментарий

@Tumbler  отрыл всё таки схему Logitech G25/27 , и увидел , что между потенциометров и самой микросхемы стоят керамические(SMD) конденсаторы номиналом 0,1мкф . Так что , будем ставить и на MMoS...

schematic G25.jpg

кондёры.jpg

Ссылка на комментарий

Пример руля на этом контроллера. Ещё в процессе разработки, многое будет переделано, например четыре белых "крутилки". В сумме 88 кнопок, 12х4 с центральных галетников, 8х2 с боковых DIF IN и BB, 2х2 с двух энкодеров рядом с большим пальцем, остальные с тумблеров и обычных кнопок. С помощь шифтов можно увеличить до 128.

Скрытый текст

20200625_131154.thumb.jpg.5f83056cd7dbd8184d9ddea2dfa7ddc5.jpg

 

  • Нравится 1
Ссылка на комментарий
  • 4 недели спустя...
23.06.2020 в 2:04 PM, Tumbler сказал:

 но для себя решил мириться с микрошумом, чем потерять контроль.

всё таки переборол эти шумы вчистую!!! Сначала разобрал потенциометры и почистил(протёр c WD40), далее всё равно остались шумы(не так как было, скажем наполовину), потом добавил по вышеуказанной схеме конденсаторы (керамические, шумодав) и всё, всё вылечилось... так что, кондёры необходимы, так как их нет на платах STM32/Arduino ...

Изменено пользователем Basma4
Ссылка на комментарий
  • 3 месяца спустя...

@Magners  исправьте в прошивке подключения энкодеров!!! При оборотах в любую сторону , сигнал принимается лево-право, то есть  - я кручу на право, то сигнал приходит как будто две кнопки нажимаются по очереди , а не как надо.... пришлось из-за этого вернуться на Osh Studio.... 

Ссылка на комментарий
  • 2 недели спустя...
  • 4 месяца спустя...
19.11.2020 в 10:46 PM, Reksotiv сказал:

Попробуй последнюю версию v1.6.2b4  https://github.com/FreeJoy-Team/FreeJoy/releases

Все версии попробовал, на всех болячка одна и та же, скачивал до последней версии 1.7.0b3. Если не трудно, установите OSH и подключите энкодеры, и поймёте о чём я, на OSH энкодеры чётко отрабатывают каждое положение, направо значит направо, налево значит налево...Жаль, что на эту функцию мало внимание выделили...

P.S.: Думал что стмка может глючит, но на 4 платах(разные продавцы и разные ревизии) попробовал, и на всех одинаково....

Изменено пользователем Basma4
Ссылка на комментарий
1 час назад, Basma4 сказал:

на OSH энкодеры чётко отрабатывают каждое положение, направо значит направо, налево значит налево...Жаль, что на эту функцию мало внимание выделили...

Странно. У меня на двух баранках, причём, с разными версиями прошивки - работает нормально, несмотря на то, что стоят дешёвые китайские энкодеры.
А OSH так и не смог запустить.

Ссылка на комментарий
21 час назад, lenynnn сказал:

Странно. У меня на двух баранках, причём, с разными версиями прошивки - работает нормально, несмотря на то, что стоят дешёвые китайские энкодеры.
А OSH так и не смог запустить.

Не спорю, если ты не видел как на OSH работают, тебя может и устраивает. И у меня тоже дешёвые китайские энкодеры. Но факт остаётся фактом! На счёт других функций у FreeJoy всё на высоте, назначений кнопок как надо и тд и тп .... надо будет для сравнения видео сделать, но смысла не вижу, так как автор темы похоже покинул этот форум...

Ссылка на комментарий
×
×
  • Создать...