Jump to content
WG_Magners

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

Recommended Posts

Всем привет!
Вечерами ради хобби я занимаюсь разработкой OpenSource ПО контроллера для игровых устройств и вот хочу поделиться с вами первым пре-релизом.
В качестве железа используется широко распространенная платка BluePill с алиэкспресса, вот такая:
 

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

ST32Duino-1-324x324.jpg

 

Может она:

  • До 8 осей на 4096 отсчетов
  • До 128 кнопок или тумблеров подключаемых в матрице или отдельно
  • До 4 хаток
  • До 64 энкодеров
  • Калибровка и сглаживание осей
  • Настройка кривых

 

Сдвиговые регистры и внешние АЦП пока что не поддерживаются, скорее всего АЦП никогда и не будут (не вижу смысла). 
Для того чтобы залить прошивку в плату нужно иметь программатор ST-LINK v2 или USB-UART переходник (около 1.5$ на алиэкспрессе), инструкции по заливке имеются в наличии по гитхабе. После заливки прошивки конфигурировать железку под свои нужды можно с помощью графической утилиты, в общем всё как у всех. Пока что интерфейс ПО на английском, но очень надеюсь, что дойдут руки и до локализации.

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

68747470733a2f2f632e726164696b616c2e72752f6334302f313931312f34662f3964386265303334316237332e706e67


Ссылка на проект ПО для платы: FreeJoy
Ссылка на проект утилиты для конфигурации: FreeJoy Configurator

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

 

Upd:
Создал на github-е отдельную организацию под проект, в связи с чем репозитории переехали:

Страница организации: https://github.com/FreeJoy-Team
Релизы прошивки: https://github.com/FreeJoy-Team/FreeJoy/releases
Релизы конфигуратора: https://github.com/FreeJoy-Team/FreeJoyConfigurator/releases

P.S. Запросил PID для нашего проекта, посмотрим, что скажут )

  • Like 9
  • Thanks 2
  • Upvote 3

Share this post


Link to post
Share on other sites
20 минут назад, WG_Magners сказал:

BluePill

 Без поддержки сдвиговых регистров довольно скучно.

Вопросы:

1. Как я понимаю размах входного напряжения на АЦП: 0 - 3,3В? И на дискретных входах тоже?

2. Сдвиговые регистры 74- серии придется как-то сопрягать по уровням сигналов?

Share this post


Link to post
Share on other sites
20 минут назад, =FA=CATFISH сказал:

 Без поддержки сдвиговых регистров довольно скучно.

Вопросы:

1. Как я понимаю размах входного напряжения на АЦП: 0 - 3,3В? И на дискретных входах тоже?

2. Сдвиговые регистры 74- серии придется как-то сопрягать по уровням сигналов?

Скучно, не спорю, но сложновато всё сразу.

1. На аналоговых входах размах 0-3.3В, дискретные входы толерантны к 5В
2. Не могу сказать за все, но 74HC595 например работает от 2 до 6В, поэтому на 3.3В он себя должен хорошо чувствовать

Share this post


Link to post
Share on other sites
1 минуту назад, =VCC=Ghash34 сказал:

а я уже заказал платку, хотел прошить вот этим https://opensimhardware.wordpress.com/diy-контроллер-для-педалей-и-кнопок/ . Но теперь попробую вашу

Этой штукой я вдохновлялся на разработку, даже интерфейс утилиты немного похож. 
Она у меня сходу не завелась, кроме того там много функций ненужных в авиасиме, а вот нужных некоторых нет..

  • Like 1
  • Thanks 1

Share this post


Link to post
Share on other sites

а магрез на размахе 0,3-3.3 как себя чувствовать будет?

Share this post


Link to post
Share on other sites
2 минуты назад, =VCC=Ghash34 сказал:

а магрез на размахе 0,3-3.3 как себя чувствовать будет?

У них в общем-то нет нижнего уровня для напряжения питания, поэтому я не вижу для них причин работать как-то иначе, чем обычные потенциометры. Но я не пробовал, если быть честным)

Как попробуете, отпишитесь, пожалуйста

Share this post


Link to post
Share on other sites

Сейчас просмотрел несколько спецификаций на датчики на предмет допустимых рабочих напряжений питания.

Стало еще скучнее ((

tle 5010, КМА 2ХХ - 4,5-5,5В

tle 5011 - 3,0-5,5В

 

Share this post


Link to post
Share on other sites

но в изи джой ведь все нормально работает а платка та же самая. а выход 5v нельзя использовать?

Edited by =VCC=Ghash34

Share this post


Link to post
Share on other sites
10 минут назад, =VCC=Ghash34 сказал:

но в изи джой ведь все нормально работает а платка та же самая

Значит всё ок будет) алгоритм АЦП ничем не отличается от того, что я делал в изиджой 

13 минут назад, =FA=CATFISH сказал:

Сейчас просмотрел несколько спецификаций на датчики на предмет допустимых рабочих напряжений питания.

Стало еще скучнее ((

tle 5010, КМА 2ХХ - 4,5-5,5В

tle 5011 - 3,0-5,5В

 

Да, из этих подойдёт только TLE5011,  если так написано. Но я не нашёл для KMA2xx нижнего порога. Это ведь просто магрез без усилителя. Можно ссылочку на даташит где это написано?

UPD. Нашел, всё верно 4.5-5.5В

Edited by WG_Magners

Share this post


Link to post
Share on other sites
12 минут назад, =VCC=Ghash34 сказал:

но в изи джой ведь все нормально работает а платка та же самая. а выход 5v нельзя использовать?

Можно, но с бубном и делителями напряжений 

 

Немножко оптимизма:

Из датчиков еще может подойти AS5600

 

 

Edited by =FA=CATFISH

Share this post


Link to post
Share on other sites
11 минут назад, =FA=CATFISH сказал:

Можно, но с бубном и делителями напряжений 

 

Немножко оптимизма:

Из датчиков еще может подойти AS5600

 

 

KMZ41 еще вроде подходит.
Я в джоестрое новичок, может найдутся опытные ребята, которые перечислят основные используемые датчики, а я составлю список поддерживаемых и неподдерживаемых?

Share this post


Link to post
Share on other sites
28 минут назад, WG_Magners сказал:

KMZ41 еще вроде подходит.
Я в джоестрое новичок, может найдутся опытные ребята, которые перечислят основные используемые датчики, а я составлю список поддерживаемых и неподдерживаемых?

Использование KMZ41 зависит от его обвески.

Собственно все распространенные датчики уже перечислены.

 

Ждем версию с поддержкой сдвиговых регистров

Иначе большинство ручек РУС (TRUSTMASTER, VPC, самоделки с кнопками больше 8-12 шт.) просто невозможно подключить

 

Edited by =FA=CATFISH

Share this post


Link to post
Share on other sites
3 минуты назад, =FA=CATFISH сказал:

Ждем версию с поддержкой сдвиговых регистров

Сообщество услышано)

Share this post


Link to post
Share on other sites

Вы, колега правильно сделали что раскрылись. С вашего позволения я тут поучавствую пока свой контролер основанный на Stm32 не релизнул. Ато есть уже пара лет опыта с ним, а поговорить было не с кем.

 

 

Сдвиговые регистры stm32 без проблем bit-bangом поддерживает, дел 20 минут, примеров кода валом что под куб что под старые либы. Если не найдете пишите, своё покажу.

 

 

Про напряжения не понял вопроса.

 

1 час назад, =FA=CATFISH сказал:

Сейчас просмотрел несколько спецификаций на датчики на предмет допустимых рабочих напряжений питания.

Стало еще скучнее ((

tle 5010, КМА 2ХХ - 4,5-5,5В

tle 5011 - 3,0-5,5В

 

И что? Эти датчики запитываются от ЮСБ(или как делаю я, через спец преобразователь чтобы фильтрануть USBшный мусор), их цифровая часть взаимодействует без проблем с stm32 5V tolerant входами. Tle5010 у меня работает идеально, очень им доволен.

 

 

 

Про АЦП очень интересно пообщаться. У меня так и не получилось выжать оттуда вменяемые биты без тяжелой фильтрации, включая оконный компараттор. Что мне крайне не понравилось. В результате остановился на внешних АЦП ads1115 для ответственных осей(X Y Z), а для всего остального уже встроенный. 

Встроенный прекрасно цифрует собственный опорник и термодатчик, а вот всё что входит снаружи, даже если с ОУ, у всего адовые шумы.

 

 

 

С платами блупил нынче нужно бы крайне осторожными. Китайцы стали подделивать китайцев, ставят совместимые процы. Ставят процы без USB части. Прошить можно только стлинком, и юсб не работает вообще. Очень неприятно было летом, купил 5 плат под всякие свои дела, и ни одна не заработала. С виду вообще не отличить на какой стоит какой проц, внимательно смотрите коменты где покупаете, особенно те где 1 звезда.

 

Edited by l3VGV
  • Like 1
  • Thanks 1

Share this post


Link to post
Share on other sites
2 минуты назад, =VCC=Ghash34 сказал:

а TLE уже поддерживаются?

Датчики с цифровым выходом пока не поддерживаются, добавлю их вместе со сдвиговыми регистрами. 
Сейчас для меня важно получить обратную связь, чтобы прикрутить максимум нужных вещей.

Share this post


Link to post
Share on other sites
4 минуты назад, l3VGV сказал:

 

Про напряжения не понял вопроса.

 

И что? Эти датчики запитываются от ЮСБ(или как делаю я, через спец преобразователь чтобы фильтрануть USBшный мусор), их цифровая часть взаимодействует без проблем с stm32 5V tolerant входами. Tle5010 у меня работает идеально, очень им доволен.

 

Чего не понятно?

КМА210 и КМА221 - вообще мимо кассы пролетают автоматически

 

Два  питающих напряжения будут приводить к путанице

 

Share this post


Link to post
Share on other sites

 

5 минут назад, l3VGV сказал:

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

Значит лёд тронулся) Если на C# есть опыт грамотной разработки, то вообще был бы шик.

 

6 минут назад, l3VGV сказал:

И что? Эти датчики запитываются от ЮСБ(или как делаю я, через спец преобразователь чтобы фильтрануть USBшный мусор), их цифровая часть взаимодействует без проблем с stm32 5V tolerant входами. Tle5010 у меня работает идеально, очень им доволен.

Только сейчас понял, что датчики цифровые (раньше то с ними не работал, а даташит одним глазом глянул). Значит TLE будут поддерживаться.

 

9 минут назад, l3VGV сказал:

Про АЦП очень интересно пообщаться. У меня так и не получилось выжать оттуда вменяемые биты без тяжелой фильтрации, включая оконный компараттор. Что мне крайне не понравилось. В результате остановился на внешних АЦП для ответственных осей(X Y Z), а для всего остального уже встроенный. 

Очень похоже на проблемы с питанием, довольно много проектов на STM32 с внутренним АЦП у меня бодро работает (но небольшой FIR фильтр конечно же нигде не помешает)
 

Share this post


Link to post
Share on other sites
2 минуты назад, =FA=CATFISH сказал:

Чего не понятно?

КМА210 и КМА221 - вообще мимо кассы пролетают автоматически

 

Два  питающих напряжения будут приводить к путанице

 

Совершенно непонятно. А как оно у меня работает тогда!? Чудо? :) Какие два напряжения, к какой путанице. Не волнуйтесь, люди с котами на автарах решат вопрос.

Share this post


Link to post
Share on other sites
1 минуту назад, l3VGV сказал:

 

Совершенно непонятно. 

Это прискорбно

Share this post


Link to post
Share on other sites
1 минуту назад, WG_Magners сказал:

Значит лёд тронулся) Если на C# есть опыт грамотной разработки, то вообще был бы шик.

 

Не, так и не разобрался на достаточном уровне. Мне системное проще на чистом апи городить чем вникать в то как какую либу укротить.

 

2 минуты назад, WG_Magners сказал:

Очень похоже на проблемы с питанием, довольно много проектов на STM32 с внутренним АЦП у меня бодро работает (но небольшой FIR фильтр конечно же нигде не помешает)

 

Не, у меня дискавери платы основные при тестировании и отладке. Тут всё нормально с питанием. Я его даж от батареек пробовал питать, не говорят о просто отдельных линиях и гальваноразвязке. Шумит сабака! Ну это вобщем не только у меня, я успокоился когда увидел похожие результаты(в основном - матюги) на електрониксе и еевблоге.

Ято надеялся реальных 12 бит вытащить просто оверсемплингом и небольшим фильтриком после, но увы. Максима смог 10. Чтобы 12 уже окно нужно.

Share this post


Link to post
Share on other sites
1 минуту назад, l3VGV сказал:

Ято надеялся реальных 12 бит вытащить просто оверсемплингом и небольшим фильтриком после, но увы. Максима смог 10. Чтобы 12 уже окно нужно.

Ну так то внешние АЦП тоже не бит в бит дают) Просто у них их больше изначально

Share this post


Link to post
Share on other sites
5 минут назад, l3VGV сказал:

 

Не, у меня дискавери платы основные при тестировании и отладке. Тут всё нормально с питанием. Я его даж от батареек пробовал питать, не говорят о просто отдельных линиях и гальваноразвязке. Шумит сабака! Ну это вобщем не только у меня, я успокоился когда увидел похожие результаты(в основном - матюги) на електрониксе и еевблоге.

 

Экранирование внешних цепей  рассматривалось?

Share this post


Link to post
Share on other sites
Только что, =FA=CATFISH сказал:

Экранирование внешних цепей  рассматривалось?

 

Рассматривались целые комплексы мер.

1) Экранирование, землей аналоговой части. Эфект практически нулевой. Да и сам спектр шума странный, не похож на внешнюю наводку

2) отдельное питание, в том числе и от батарей. Эфект минимальный

3) самый заметный. Режим цифровой тишины. Перед стартом преобразования ВСЁ остальное в м.к. гасится. Т.е. правда всё, включая всю переферию, кроме собственно АЦП, собственно именно АЦП после завершение преобразования будит проц прерыванием. вот тут эфект был. 

Share this post


Link to post
Share on other sites
15 минут назад, l3VGV сказал:

самый заметный. Режим цифровой тишины. Перед стартом преобразования ВСЁ остальное в м.к. гасится. Т.е. правда всё, включая всю переферию, кроме собственно АЦП, собственно именно АЦП после завершение преобразования будит проц прерыванием. вот тут эфект был. 

Возможно это причина почему я не сильно страдаю от шумов АЦП, так как большинство моих проектов это что-то спящее большинство времени. Правда здесь всё не так.

Share this post


Link to post
Share on other sites
21 минуту назад, =VCC=Ghash34 сказал:

Внешние АЦП наверное буду добавлять в последнюю очередь. Как я понял, на важные оси  обычно ставят цифровые магрезы типа TLE5011, а на не менее важные на мой взгляд достаточно встроенного 12-битного АЦП.

Share this post


Link to post
Share on other sites
1 минуту назад, =VCC=Ghash34 сказал:

магрезы аналоговые 

Понял, я подумаю на эту тему, но если честно - не приоритет. Аналоговые всё еще можно прицепить к внутреннему АЦП.
Надо в первую очередь сделать поддержку цифровых датчиков и сдвиговых регистров.

  • Upvote 2

Share this post


Link to post
Share on other sites
3 минуты назад, =VCC=Ghash34 сказал:

еще можно MLX90333 поддержку запилить

Ок, гляну. Мне ж их всех купить надо, чтобы добавить поддержку)

Share this post


Link to post
Share on other sites
56 минут назад, =VCC=Ghash34 сказал:

еще можно MLX90333 поддержку запилить

ну это не в первую очередь

У кого придет идея MLX90333 использовать в цифровом режиме - скорее всего и платку от базы Кабана возьмут 

Share this post


Link to post
Share on other sites

тле и регистры конечно нужны в первую очередь

Share this post


Link to post
Share on other sites

Я позволю себе поддержать беседу. Меня устраивает ммджой2 полностью. Что может дать новая плата и ПО? Под ммджой уже есть много разработок.

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

Share this post


Link to post
Share on other sites
29 минут назад, Swift_CCCP сказал:

Я позволю себе поддержать беседу. Меня устраивает ммджой2 полностью. Что может дать новая плата и ПО? Под ммджой уже есть много разработок.

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

Дешевле

Про быстрее пока рано говорить, но вроде потенциал есть

Дружелюбность можно нарастить  если автор продолжит поддержку

 

з.ы. Не могу отправить тебе ЛС 

 

Edited by =FA=CATFISH

Share this post


Link to post
Share on other sites
25 минут назад, Swift_CCCP сказал:

Я позволю себе поддержать беседу. Меня устраивает ммджой2 полностью. Что может дать новая плата и ПО? Под ммджой уже есть много разработок.

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

ММджой - классный проект и моему проекту до него еще долго расти. Но он не opensource, а мне хочется чтобы был хороший контроллер, который может допиливаться сообществом под свои нужды. Ну а то, что он быстрее и стоит столько же - это приятный плюс (минусы тоже есть)

Share this post


Link to post
Share on other sites
1 час назад, WG_Magners сказал:

ММджой - классный проект и моему проекту до него еще долго расти.

 

Для меня ммджой это путеводная звезда. ММ крайне молодец что такое дело поднял.

  • Upvote 1

Share this post


Link to post
Share on other sites
Posted (edited)

Новый предварительный релиз (версия 1.01).

https://github.com/vostrenkov/FreeJoyConfigurator/releases
https://github.com/vostrenkov/FreeJoy/releases

  • Добавлена функция преобразования осей в кнопки (до 10 кнопок на ось)
  • Добавлено генерирование серийного номера USB на основе серийного номера микросхемы (это должно позволить использование нескольких устройств с одинаковым VID и PID, но ко мне пока не пришли платы чтобы проверить)
  • Уменьшен шум на аналоговых осях
  • Фильтры для аналоговых осей настроены более агрессивно (пока нет достаточного количество практических наблюдений для понимания оптимальных степеней фильтрации)
  • Исправлены некоторые ошибки по интерфейсу программы конфигуратора

Ко мне постепенно начинают приходить комплектующие, в следующем пре-релизе планируется поддержка как минимум сдвиговых регистров, как максимум еще части из цифровых датчиков. 

P.S. Не сильно разбираюсь в форумной движухе. Есть ли возможность как-то закреплять посты о новых версиях?

Edited by WG_Magners
  • Like 4
  • Thanks 2
  • Upvote 1

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...