DIY Контроллер для педалей и кнопок

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

Возможности устройства:

  • поддержка до 6х аналоговых осей (12 бит — 4096 дискретных значений)
  • калибровка осей
  • поддержка кнопок в матрице
  • поддержка одиночных кнопок
  • поддержка энкодеров
  • поддержка галетников
  • поддержка POV Hat Switch
  • поддержка аналоговых входов как кнопок
  • 1KHz частота обмена с ПК

Со стороны ПК контроллер выглядит как обычный джойстик, установки драйверов не требует.

Для этого проекта я решил использовать не Ардуино, а плату для разработчиков на основе STM32F103C8T6. Вот для сравнения их характеристики:

Arduino Leonardo STM32F103C8T6
Flash 32KB 64KB
SRAM 2.5KB 20KB
EEPROM 1KB Absent
Architecture 8-bit ATMEL AVR 32-bit ARM CORTEX-M3
Frequency 16MHz up to 72MHz
GPIO pins 20 26
PWM 7 12
Timers 1x 16-bit, 2x 8-bit 3x 16-bit, 1x pwm
Peripheral 10-bit ADC (6 channels)
1x I2C
1x SPI
1x UART
USB
2 x 12-bit, 1 μs A/D converters (7 channels)
7-channel DMA controller
3x USART
2x I2C
2x SPI
CAN
USB

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

 

Я покупал все на алиэкспрессе, например вот и вот. Также можно встретить BlackPill плату — линк. У нее чуть меньше выводов, но есть монтажные отверстия.

Схема борды:

STM32Mini

В pdf формате

Black_Pill_Schematic

Распиновка — The-Generic-STM32F103-Pinout-Diagram

Распиновка после первоначальной заливки прошивки:

             STM32F103C8T6
	   -------------------
	- |3VB		 +3.3V| -
  	- |C13		   GND| -
  COL1	- |C14		   +5V| - 
  COL2	- |C15		    B9| - ROW6
  ADC0 	- |A0		    B8| - ROW5
  ADC1 	- |A1		    B7| - ROW4
  ADC2	- |A2		    B6| - ROW3
  ADC3	- |A3		    B5| - ROW2
  ADC4	- |A4		    B4| - ROW1
  ADC5	- |A5		    B3| - COL4
  ADC6	- |A6		   A15| - ROT11
  COL5	- |A7		   A12| - 
  ROT1	- |B0		   A11| - 
  ROT2	- |B1		   A10| - ROT8
  ROTA	- |B10		    A9| - ROT7
  ROTB	- |B11		    A8| - ROT6
	- |R		   B15| - ROT5
	- |+3.3V	   B14| - ROT4
	- |GND		   B13| - ROT3
	- |GND		   B12| - COL3
	   -------------------

Кроме этого, я написал небольшую программу OSHStudio, которая позволяет переконфигурить пины под конкретно ваши нужды. Выбор функции для пинов осуществляется на вкладке Pins Configuration, здесь же можно выбрать ваш тип платы (это влияет только на графическое отображение расположения пинов)

pins_tab

Кнопки

Если кнопки подключаете в матрице, то столбцы подключайте к пинам «Button Matrix COLUMNS», а строчки — к «Button Matrix ROWS». Отдельные кнопки можно подключать к пинам «Single Button +3.3V» и «Single Button GND». Если кнопка подключается  к «Single Button +3.3V», то вторую ногу кнопки подсоединяйте к +3.3V, если к «Single Button GND», то вторую ногу соответственно на землю. Пример матрицы:

buttonMatrixDia_bbРаботу кнопок можно протестировать на вкладке «Buttons»:

button_tab

На этой же вкладке можно сконфигурировать и протестировать работу «хаток» — POV Hat Switch. При активировании 1 хатка работает от первых 4х кнопок матрицы, вторая — от следующих 4х и т.д.

И здесь же можно настроить порог, при превышении уровня которого на аналоговом входе будет регистрироваться нажатие кнопки (тип входа — Analog to Button)

Энкодеры

Поддерживаются инкрементальные энкодеры видов FULL step, HALF step и QUARTER step. Энкодеры можно подключать как отдельно (single конфигурация), так и связанными между собой (chained конфигурация). При подключении в chained конфигурации крайние выводы энкодеров нужно соединить между собой и одну сторону подключить к пину «Chd Rot Enc PINA», другую — к пину «Chd Rot Enc PINB». Средние выводы энкодеров — к пинам «»Chd Rot Enc 1/1», «Chd Rot Enc 1/2» или «Chd Rot Enc 1/4» в зависимости от типа энкодера. Можно соединять разные типы энкодеров. Пример:

RotariesChainedDia_bb

При одиночном (single) режиме, крайние выводы подключаются к «Sng Rot Enc PINA 1/1» и «»Sng Rot Enc PINB 1/1» (либо 1/2, либо 1/4), а центральный пин — к +3.3V. Пример:

RotariesSingleDia_bb

При необходимости можно переназначить какие выводы к какому конкретно энкодеру будут принадлежать на вкладке Single Encoders Config

sgl_enc_tab

Работу энкодеров можно также протестировать на вкладке «Buttons».

Галетники

Одномоментное нажатие виртуальной кнопки происходит при смене положения вала.

SwitchesDia_bb

Аналоговые входы

Аналоговые входы — ADC0 — ADC7 (A0 — A7). Оси можно откалибровать на вкладке Axises Configuration, калибровочные значения хранятся в самом МК, т.е. не нужно будет калибровать заново при переустановке Windows или на другом ПК. После калибровки ось «растягивается» в МК, поэтому ПК всегда видит ось в 4096 значений. Вместо ручной калибровки можно использовать автоматическую (AutoCalibration).

Также есть возможность объединить два аналоговых входа в одну ось — combined axis. Сделано преимущественно для баранок с двумя лепестками сцепления. При этом есть два режима работы:

  • cooperative work — значения обоих входов складываются, ползунком можно увеличить или уменьшить вес одного из входов на конечный результат оси.
  • each on his own — каждый их входов работает независимо, но на одну и ту же ось. Входы при этом можно откалибровать по-разному и использовать в различных ситуациях.

axis_tab

Все неиспользуемые ноги МК рекомендуется сконфигурировать как «Not Used»

Исходники в моем проекте на github.

Готовые прошивки:

Версия 0.14 — добавлены автокалибровка осей, Analog2Button и combined axis

Версия 0.13 — добавлена вкладка Single Encoders Config

Версия 0.12 — добавлена вкладка Tuning

Версия 0.11 — добавлена поддержка одиночных энкодеров

Версия 0.10 (начальная)

Если у Вас есть вопросы о том, как залить прошивку, то можно посмотреть эту запись.

Реклама

DIY Контроллер для педалей и кнопок: 27 комментариев

  1. Доброго времени суток. Два вопроса:
    1 — получится ли на базе этой платы сделать полноценный руль с педалями и прочим?
    2 — оптические энкодеры будут работать?

    Нравится

  2. Приветствую
    1. Без обратной связи (Force Feedback) — да. С ФФБ — нет.
    2. В данной прошивке энкодеры транслируются в нажатия виртуальных кнопок в Windows. Для руля нужна другая обработка их работы

    Нравится

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

      Нравится

  3. Здравствуйте.
    При включении МК к компьютеру через usb вылетает программа настройки,
    также она не запускается если МК подключен.
    Проверенно на двух компьютерах с вин 8 и 10.
    И вопрос можно ли подключать к осям переменные резисторы, хотелось применить датчики положения дросельной заслонки от авто

    Нравится

    1. Добрый день,
      в последнее время почему-то стали часто жаловаться на вылет программы настройки. Пока разбираюсь с этим, у себя воспроизвести не получается. Один из пользователей сообщал, что на проблемном ПК на одну из QT библиотек ругался антивирус, на другом ПК у него все заработало. Попробуйте поотключать антивирусы и все другие USB устройства, плюс подключайте контроллер напрямую к разъему материнсокй платы, а не в хаб.
      Резисторы подключать можно, естественно нельзя превышать при этом допустимые пороги по напряжению/току

      Нравится

      1. Спасибо.
        Перепробовал все прошивки, на 0,11 не слетает, данные с осей показывает ( дребезжание, я не подключал пока к МК перефирию).
        При запросе на получение конфигурации, или смене конфигурации программа не отвечает.
        на плате горит только красный диод, зеленый нет.
        По компьютерам, первый планшет с виндой 8 антивирь аваст.
        второй стационар с вин 10 антивирь awg.
        Подключаю на прямую к портам.
        Да забыл оба диода на МК горят на всех прошивках кроме 0,11.
        По аналоговым входам питание на резистор брать с 3.3 вольт‽

        Нравится

      2. да, 3.3В. Если используете старые версии конфигурялок, то и прошивки к ним нужно использовать той же версии, они лежат в тех же архивах

        Нравится

  4. Проверил, работают только 0,1 и 0,11 программы остальные вылетают.
    При конфигурировании МК программа не виснет но вроде ни чего не делает, при попытке получить конфигурацию не отвечает, но при отключении МК сразу вылетает.

    Нравится

      1. я собираю кнопочную панель для авто симулятора euro track sim. 2 пробовал собрать ардуино на 32 кнопки с ютуба (канал amstudio), но там при нажатии двух кнопок, третья сама трабатывает нажатие. В идеале конечно найти вариант работы кнопки с фиксацией по принципу — каждое изменение положения кнопки выдает в комп одно нажатие (кнопка вкл — нажата один раз кнопка joy1, кнопка выкл — еще раз нажата кнопка joy1.

        Нравится

      2. Здесь все просто — сколько нажали кнопок, столько и фиксируется на ПК. Изменение положений не реализовано — если поставить тумблер, то кнопка на ПК будет нажата все время, пока он в положении ВКЛ

        Нравится

  5. Очень интересный проект. Добавлю в копилку будущего, вдруг сможете реализовать. Можно сделать кнопки-шифты, как в логитеч G25/27. Одна из кнопок выбирается как кнопка-модификатор, всех кнопок пусть 11 (-1 на модиф., или шифт, называйте как угодно). С отпущенным шифтом имеем эти кнопки под номерами 1-10, если держим нажатым шифт, то кнопки будут с номерами 11-20. Я не знаю как объяснить, с шифтом кнопок получается вдвое больше. Вот, есть 2 кнопки, одна шифт, на второй фары и сигнал. Когда просто нажимаю на кнопку 2 — сигнал, когда зажимаю первую шифтовую (или модиф.) и нажимаю на 2 — фары. Было бы неплохо реализовать несколько шифтов. Это здорово расширило бы маленькую матрицу. Из матрицы 5*4 можно было бы получить 4 ряда по 16 кнопок. И было бы неплохо реализовать резюки в кнопки в паре, как сделано в кпп от 25/27, стало бы возможно переделывать на коленке кпп, если мать руля сгорела. Что есть конвертеры знаю.

    Нравится

      1. Как дело продвигается с шифтами? Скоро платки приедут, буду собирать.

        Нравится

  6. Виталий, нифига себе инструкция, сколько пользуюсь g27, а такие настройки вижу впервые, даже мысли не было покопаться в этом направлении — только аппаратный модинг (замена колеса на 32″, переворот педалей, стрекозу приколхозил на ардуино). С Вашего позволения инструкцию утащил к себе в берлогу — изучать буду, спасибо.

    Нравится

    1. да наздоровье, будут вопросы — подскажу, есть в наличии G25, смогу что-то опробовать или показать. Есть ещё подробные инструкции по мышкам A4Tech серии Bloody, тоже от меня, вдруг тоже решите себе макросную мышь прикупить. https://vk.com/topic-54726107_30303191

      Нравится

Добавить комментарий

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход /  Изменить )

Google+ photo

Для комментария используется ваша учётная запись Google+. Выход /  Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход /  Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход /  Изменить )

w

Connecting to %s