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 на фоне Ардуино выглядит вполне неплохо, а стоит дешевле. Один из основных минусов состоит в том, что для заливки прошивки в него нужен отдельный программатор, но он тоже недорог.

 

Я покупал все на алиэкспрессе, например вот и вот

Схема борды:

STM32Mini

В pdf формате

Распиновка — 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, которая позволяет переконфигурить пины под конкретно ваши нужды

list

Кнопки

Если кнопки подключаете в матрице, то столбцы подключайте к пинам «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»:

buttons_tab

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

Энкодеры

Поддерживаются инкрементальные энкодеры видов 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

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

Галетники

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

SwitchesDia_bb

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

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

3

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

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

Прямая ссылка на прошивку (версия 0.11 — последняя)

Прямая ссылка на прошивку (версия 0.10)

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

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

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

Логотип WordPress.com

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

Фотография Twitter

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

Фотография Facebook

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

Google+ photo

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

Connecting to %s