Jump to content
RenderG

OpenSource контроллер на ардуино.

Recommended Posts

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

Что поддерживает шилд: Нативно 4 оси (аналог, 256 отсчетов, для потенциометра за глаза), автокалибровка (можно назначить на калибровку при включенном тумблере). 40 кнопок. 
Кнопки могут быть кнопками, тумблерами, поворотными энкодерами, ну и хатки естессно. Тумблеры и повоторные энкодеры тоже могут быть хатками.

i2c ЖК экраны текстовые, светодиоды типо ws2811 (по дефолту 16 диодов линейка показывает ось X линией огоньков, но настроить можно что угодно)

 

Контроллер удобно паять даже начинающим, ибо все DIP размера, т.е. шаг ножек 2,54 мм и вся пайка сквозная, т.е. в дырки.

 

w4F9tWo.jpg

Размер платы 94.51x51.33 mm

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

1. Плата arduino shield. 
2. Arduino pro micro. 
3. 5 шт сдвиговых регистров CD4021BE 
4. 5шт 10кОм резисторных сборок sip 9 ножек. 
5. Штырьковые разъемы с шагом 2,54 мм. 
6. Резисторы на 1кОм для светодиодов. 
И собсно все. Ардуина разведена вся. Те можно подключить все, на что фантазии хватит. Хоть телевизор по тюльпану при помощи двух резюков. 

Скетч и плата в lay6 и готовых файлах Gerber прилагается. Настраивается изменением параметров (код по максимуму комментированный, но можно и перевести)

https://github.com/RGCustom/Joystick-Shield-RG-Custom 

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

Github пока только осваиваю. Более подробные инструкции прикручу как осилю. gigi.gif 

Схему тоже постараюсь прикрутить. 

Впринципе, шилд поддерживает mmjoy2 с аналоговыми датчиками, но это не лучший вариант.

А, еще шилд полностью совместим с mmjoy2. Это проще настраивать без правки кода, но сильно урезает функционал. 

 

В планах добавить: 

i2c OLED экранчики.
цифровые датчики R.A.M.S. если тов. Komaroff не будет против.

Пользуйтесь.  ;-)

Edited by RenderG
  • Like 2
  • Upvote 6

Share this post


Link to post
Share on other sites

Это просто чудесно, спасибо )

Share this post


Link to post
Share on other sites

Забыл добавить. На плате разведены 6 выводов на светодиоды, включающиеся электрически (для тумблеров с двумя группами контакторов) и светодиод питания.

Также для подключения i2c жк экранов (они бывают 3.3v и 5v) можно выбрать +5v коннектор.

Также плата может работать пропускной как плата с пятью регистрами и объединяться в цепь.

Edited by RenderG

Share this post


Link to post
Share on other sites

...

Что поддерживает шилд: Нативно 4 оси (аналог, 256 отсчетов, для потенциометра за глаза), автокалибровка (можно назначить на калибровку при включенном тумблере). 40 кнопок.

...

Пользуйтесь.  ;-)

 

Аднака: 4 и 256 - ((

Уж хотя бы 6 и 1024 )))

 

Придется ковырять язык программирования Ардуины шоб достичь

Share this post


Link to post
Share on other sites

 

Придется ковырять язык программирования Ардуины шоб достичь

Ковырять битность осей особо и не надо - перенастроить АЦП и все - в одном регистре вилкой поковырять...

 

А вот ковырять количество осей - тут уже лопата нужна и пачка стакангенсов, потому как без них дескриптор USB не раскуришь... :)

UPD.

 

для битности оси дескриптор тоже понадобится, но в целом задача проще...

Share this post


Link to post
Share on other sites

Ковырять битность осей особо и не надо - перенастроить АЦП и все - в одном регистре вилкой поковырять...

 

А вот ковырять количество осей - тут уже лопата нужна и пачка стакангенсов, потому как без них дескриптор USB не раскуришь... :)

UPD.

 

для битности оси дескриптор тоже понадобится, но в целом задача проще...

Ну спасибо, обнадежил (((

Share this post


Link to post
Share on other sites

На самом деле инпут 1024 отсчета. Но вмето фильтра вывод ограничивается 256 отсчетами. Это сделано для того, чтобы резюки не звенели. Больше поставить можно, но эти отсчеты будут искуственными. (потенциометр больше не выдает и ось начинает звенеть) Для сравнения - все продукты CH Products работают также и они считаются одними из лучших.

По факту, заказывайте функции - прикрутим.

Если подружим датчики RAMS, то будет отсчетов столько, что мама не горюй.

Edited by RenderG

Share this post


Link to post
Share on other sites

На самом деле инпут 1024 отсчета. Но вмето фильтра вывод ограничивается 256 отсчетами. Это сделано для того, чтобы резюки не звенели. Больше поставить можно, но эти отсчеты будут искуственными. (потенциометр больше не выдает и ось начинает звенеть) Для сравнения - все продукты CH Products работают также и они считаются одними из лучших.

По факту, заказывайте функции - прикрутим.

Если подружим датчики RAMS, то будет отсчетов столько, что мама не горюй.

Вот уж с чего бы резюкам звенеть, если они не убитые в хлам.

Нормальные новые резисторы звенят даже меньше чем Холлы и прочие датчики с аналоговым сигналом

Share this post


Link to post
Share on other sites

И по разводке можно будет количество осей довести до восьми. 4 цифровых и 4 аналоговых. Весь код я написал за три дня, с теми функциями, которые нужны были мне. Проэкту три дня - будьте милосердней. ;-) Я верю, что он вырастет в супермегапроэкт, со свистелками и пр.

 

 

Вот уж с чего бы резюкам звенеть, если они не убитые в хлам.

 Для теста я использовал абсолютно новые, зарекомендовавшие себя резюки, не b10k, которые в итоге полетели в помойку, и только при 256 отсчетов их показания переставали прыгать. Можно тут писать что угодно, и мол вам это не нужно, так если не нужно ну и ладно. Суть в том, что сюда можно прикрутить все. От ЖК экранов до телевизора по тюльпану. Мне просто показалось, что это было бы полезно для комьюнити. Штыков я вообще не ожидпл. Н нравится - не пользуй. Тут все просто.

Edited by RenderG

Share this post


Link to post
Share on other sites

И по разводке можно будет количество осей довести до восьми. 4 цифровых и 4 аналоговых. Весь код я написал за три дня, с теми функциями, которые нужны были мне. Проэкту три дня - будьте милосердней. ;-) Я верю, что он вырастет в супермегапроэкт, со свистелками и пр.

 

 

 Для теста я использовал абсолютно новые, зарекомендовавшие себя резюки, не b10k, которые в итоге полетели в помойку, и только при 256 отсчетов их показания переставали прыгать. Можно тут писать что угодно, и мол вам это не нужно, так если не нужно ну и ладно. Суть в том, что сюда можно прикрутить все. От ЖК экранов до телевизора по тюльпану. Мне просто показалось, что это было бы полезно для комьюнити. Штыков я вообще не ожидпл. Н нравится - не пользуй. Тут все просто.

Спокойствие, только спокойствие!

Какие еще штыки?

Даже в мыслях не было.

Снимаю шляпу вместе со скальпом перед отчаяной благотворительностью.

Насчет звона осей - просто делился впечатлениями от различных исполнительных устройств, которые приходилось испытывать на Мjoy и MMjoy 

Но 4 оси все же мало

Edited by =FA=CATFISH

Share this post


Link to post
Share on other sites

Там фильтры сглаживающие же. Кстати, наверное, да. Надо фильтр прикрутить.

Share this post


Link to post
Share on other sites

Там фильтры сглаживающие же. Кстати, наверное, да. Надо фильтр прикрутить.

хотя бы усредняй значение по некоторому количеству выборок... Частоту опроса АЦП поднять и выборок будет больше, хоть и сами они будут чуть шумнее...

  • Upvote 1

Share this post


Link to post
Share on other sites

Вы так то хотелки пишите. Прикрутим.

 

Поправка. 8 осей, если потерять ws2812 

7 осей если использовать светодиоды. ;-)

Подключать к гребенке на контакты 6,8,10 и на разъем ws2812 соответственно. Единственное неудобство на 6 8 и 10 не трехпиновые разъемы. Землю и питание брать на отдельных распаянных выводах.

Edited by RenderG

Share this post


Link to post
Share on other sites

К этой штуке напрямую прикручиваешь кучу кнопок и крутилок и это сразу работает? По типу доп панели?

Если количество отсчетов  увеличить до 2048 и использовать бескотактные датчики, получится? на 3 оси для начала.

Share this post


Link to post
Share on other sites

По дефолту - да. Но эту штуку надо еще прошить из родной среды arduino. В дефолте Первые 22 кнопки. Потом тумблеры хатки и в конце два энкодера. (Всего на плате распаяно 40 входов для кнопок) Там в коде достаточно просто правятся массивы, отвечающие за кнопки, тумблеры, энкодеры, хатки. Просто в скобках через запятую указывается сначала порядковый номер регистра, потом номер кнопки в регистре. Очередность по порядку кнопок. С первой по 32~ю. Потом идут две хатки.

Какие бесконтактные датчики? TLE - нет. С обычных холлов нет смысла снимать 2048 отсчетов.

Аналоговые датчики от Komaroff будут работать. Цифровые возможно, в ближайшем будущем.

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

 

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

Share this post


Link to post
Share on other sites

x3eqCoGl.png

 

Схемка для ручной сборки. Ну и по мелочи - описание подновил, дебонс перенастроил малость.

За оси пока не брался.

Share this post


Link to post
Share on other sites

Здравствуй! Я вот тоже задумался о таком варианте установки на монтажную плату! Вопрос такой: реально ли без пайки установить на монтажную плату ардуино + резисторы + инкодеры в кобру м5 переделанную?

Share this post


Link to post
Share on other sites

Если бредборд влезет - то реально. Вот такой длинный точно не влезет. Половинка вполне поместится. 

Share this post


Link to post
Share on other sites

А как там у монтажной платы с надежностью соединений? Не придется каждые несколько часов лезть внутрь джоя и шатать компоненты для восстановления контактов?

Помнится в прошлом веке купили нам в отдел ПК Электроника 85. Редкий день обходился без сбоев по причине потери контактов в разъемах переферийных плат

Share this post


Link to post
Share on other sites

Помню, у меня на первом пентиуме между платами оперативки ластик был воткнут, для контакту. 

В бредбордах я с плохими контактами не встречался пока. У меня одна такаяже примерно собранная схема лежит на полке уже два года и я иногда ее включаю чтобы чтонить протестировать - ничего пока не отвалилось.

Share this post


Link to post
Share on other sites

А как там у монтажной платы с надежностью соединений? Не придется каждые несколько часов лезть внутрь джоя и шатать компоненты для восстановления контактов?

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

А датчики были TLE5010. Они очень "чувствительны к контактам" - отваливаются при малейших проблемах с подачей ШИМ 4МГц (по даташиту достаточно 2 импульса пропустить).

Share this post


Link to post
Share on other sites

Пока сейчас сокращаю время общего цикла. Сейчас это 31мс на 3.3v 8MHz ардуине. Так как работаю над соседней прошивкой, сюда пока не закоммитил, но уже влез в 14мс. Функционально по мере надобности.

Share this post


Link to post
Share on other sites

Итак, версия 2.0

6 осей, 0-65535, в строенный в библиотеку фильтр дает шаг 64 (можно править), по дефолту 1024 отсчета на потенциометр.

Код сильно оптимизирован.

Присутствует постоянная автокалибровка, не калибруйте в windows.

Если вы раньше устанавливали библиотеки, их надо обновить.

Добавлен файл реестра RenameDevice.reg для переименования ардуины. (все ардуины про микро будут переименованы, кроме тех, что с mmjoy2, где заменен VID и PID)

в файле в строке "OEMName"="DIY Joystick" замените DIY Joystick на свое.

 

Инструкция по установке на ардуино тут. https://github.com/RGCustom/Joystick-Shield-RG-Custom/tree/Master/UPDATING_MANUAL (Пока только по-английски)

Edited by RenderG
  • Thanks 1

Share this post


Link to post
Share on other sites

Чет я фигню какуюто написал про фильтр. Погода, и праздники, видать. 

Кароче он делает так: ардуина считывает аналог 0-1024, попутно калибруюсь в авторежиме (можно отключить или назначить на кнопку / тумблер) 

потом это интерполируется (растягивается) в диапозон от -32768 до 32767

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

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

Edited by RenderG

Share this post


Link to post
Share on other sites

Привет.

Вопросы.

1. Если не планируется какая либо индикация необходимо ли ставить библиотеки ADAFRUIT и LIQUIDCRYSTAL?

2. Мне нечем открыть файлы lay6  и глянуть на схему (если там вообще она есть). Можно схему в pdf или jpg

Share this post


Link to post
Share on other sites

1. Не обязательно, но придется подчистить. Попозже я выложи без них вариант. Тамже будет. 

2. Там не схема, а разведенная плата. Схемы пока впринципе нет. :-) но если пролистать вниз, то там картинка ардуиновская на бредборде есть. Там ничего нет нестандартного. Софтово полностью совместимо с платами под mmjoy2 кроме ТЛЕшек соотв. 

Share this post


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

1. Не обязательно, но придется подчистить. Попозже я выложи без них вариант. Тамже будет. 

2. Там не схема, а разведенная плата. Схемы пока впринципе нет. :-) но если пролистать вниз, то там картинка ардуиновская на бредборде есть. Там ничего нет нестандартного. Софтово полностью совместимо с платами под mmjoy2 кроме ТЛЕшек соотв. 

1. Подчистить линки на библиотеки в основном скетче?

2. Вопрос про подключение осей и выхода регистов к  выводам ПроМикры. Можно их лепить как попало? (ну естественно в соответствии с поддерживаемым режимом: аналог/цифра или просто цифра конкретного вывода Ардуино)

 

Share this post


Link to post
Share on other sites

1. Да. Еще строки, которые в жк экран пишут и светики зажигают. Я не помню, закаменчены они там или нет. 

2. Можно, Все ножки ардуины обозначены переменными на старте. 

Share this post


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

1. Да. Еще строки, которые в жк экран пишут и светики зажигают. Я не помню, закаменчены они там или нет. 

2. Можно, Все ножки ардуины обозначены переменными на старте. 

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

В readme по установке очень не хватает пункта по смене VID и PID

Share this post


Link to post
Share on other sites
2 часа назад, =FA=CATFISH сказал:

В readme по установке очень не хватает пункта по смене VID и PID

Вкратце, это незаконно, либо покупай VID за $5000 у USB.org

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

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

светодиоды ws2812 - сколько угодно их. По дефолту линейка из 16 светодиодов отображает шкалу оси Х красным цветом. 

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

Хорошо б еще узнать что там на экране будет написано

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

В примере кусок кода, выполняемый при нажатии или отпускании кнопки. ЖК экран ставит курсор на вторую строку (номерация с 0) и на первый символ в строке и пишет ON или OFF.

             if (bitRead(switchState[PBreg[i]], PBpin[i]) < 1) {
               //action on button press
               Joystick.setButton(i,1);
               //lcd.setCursor(1, 1);
               //lcd.print("ON");
               PBstate[i] = 1;
               }
              else {
               //action on button release
               Joystick.setButton(i,0);
               //lcd.setCursor(1, 1);
               //lcd.print("OFF");
               PBstate[i] = 0;
             }

У меня сейчас такая штука (чисто для тестов), пишет какая кнопка нажата, показывает ось, в какую сторону крутится энкодер 1 или 2. 

b4385qgt.jpg

 

Добавил версию Pro_Micro_Shield2_Lite оттуда убраны индикации. Нужна будет только ArduinoJoystickLibrary

 

Edited by RenderG

Share this post


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

Вкратце, это незаконно, либо покупай VID за $5000 у USB.org

У меня сейчас такая штука (чисто для тестов), пишет какая кнопка нажата, показывает ось, в какую сторону крутится энкодер 1 или 2. 

b4385qgt.jpg

 

Добавил версию Pro_Micro_Shield2_Lite оттуда убраны индикации. Нужна будет только ArduinoJoystickLibrary

 

Упс!! А как же с одинаковыми VID / PID  будут работать 2 или 3 устройства на 1-м компе??

Я уже сталкивался с этим у MMJOY2

За лайт версию спсб. По мне так индикация в виде кнопки с подсветкой - это больше чем достаточно. 

Edited by =FA=CATFISH

Share this post


Link to post
Share on other sites
20 часов назад, =FA=CATFISH сказал:

Упс!! А как же с одинаковыми VID / PID  будут работать 2 или 3 устройства на 1-м компе??

Я уже сталкивался с этим у MMJOY2

За лайт версию спсб. По мне так индикация в виде кнопки с подсветкой - это больше чем достаточно. 

VID и PID прописывается в дескрипторах USB. Если найдешь дескрипторы в коде - поменяешь как нужно. Соответственно, что смотреть надо инициализацию USB-интерфейса.

Share this post


Link to post
Share on other sites
17 минут назад, =V=Heromant сказал:

VID и PID прописывается в дескрипторах USB. Если найдешь дескрипторы в коде - поменяешь как нужно. Соответственно, что смотреть надо инициализацию USB-интерфейса.

Просматривая по диагонали скетч я видел там и VID и PID

Хотя всегда лучше иметь подтверждение от разработчика перед тем как лезть и расковыривать продукт

Собственно мое "упс"  относилось в большей степени к "5000 USD".

Получается, что и данный проект и предыдущий - оба "серые"?

 

 

Share this post


Link to post
Share on other sites

есть вариант припрошивки другим (самым популярным) софтом.  Для этого в ардуино IDE надо будет создать бинарник. (Делается в два клика) Но, т.к. Для поддержания лицензий, кармы и прочего всего опенсорсного (опенсорс налагает гораздо больше обязателчтв, если честно, это незаконно, но у нас как всегда можно. Гугл вроде разбанили и "смменить PID на ардуино" вполне может помочь. :) 

Данный проект полностью поддерживает GPL3. Абсолютно белый проект. Именно это и налагает ограничения на VID$PID (они остаются от ардуино, ). Как я уже говорил, проект может совершенно свободно использоваться в коммерческих целях. Единственное ограничение на коммерческое использование - что если коммерческий человек его использует и дорабатывает, то доработки также должны быть опенсорсны и в открытом доступе. 

Edited by RenderG

Share this post


Link to post
Share on other sites

Можно использовать например Teensy. У них VID PID менять легально

Share this post


Link to post
Share on other sites

продолжение будет?

Share this post


Link to post
Share on other sites

Пока чуть другими делами занят. Реал - все дела. 

Какой функционал еще нужен? 

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...