Этот проект начался, когда я решил обновить свое рулевое колесо, чтобы он соответствовал моим личным требованиям к вождению SIM -карты, что представляло собой опыт вождения с реализмом и без излишеств .
Но, сказав это, это должно работать с любым совместимой базой и консоли Thrustmaster , поскольку он подражает рулевому колесу F1.
Я поставил свои цели высоко и составил список вещей, которые я хотел, чтобы рулевое колесо было включено.
Колесо управления должно иметь все кнопки, доступные на контроллере PlayStation DualShock 4
Я хотел включить дисплей для настройки, связанных с рулевым колесом (и, возможно, будущих обновлений)
Роторные кодеры для быстрого доступа к необходимым функциям вождения (баланс тормоза, управление ABS и тягой)
Я также хотел включить настраиваемую кнопку комбинированного действия (CAB), которая позволила бы мне увеличить или уменьшить - с одним щелчком - любая из вышеуказанных функций в x количество раз.
Поскольку у меня нет немедленного доступа к 3D -принтеру или машине с ЧПУ, я решил пойти с одним из 3drap.it Designs. С помощью Antonio мы разработали новую версию текущего колеса, которое они имеют на складе, и той, которая соответствует моему дизайну ниже.
Посмотрите быстрое видео демонстрацию колеса в действии.
Наклейки были напечатаны с использованием стандартного струйного вагона на листе наклеек A4, а затем покрыты прозрачной упаковочной лентой.
Загрузите лист наклеек здесь (PDF).
Самая важная вещь, которую нужно помнить с оборудованием, - это то, что основание Thrustmaster приводит к тому, что ваш руль с ~ 3,5 В. Все, что вы используете, должно быть в состоянии работать на этом напряжении.
С самого начала идея состояла в том, чтобы построить это вокруг нано доски Arduino . У меня был предыдущий опыт работы с этой платформой, и тот факт, что я обнаружил несколько отправных точек в Интернете, облегчил это решение.
Следующим был дисплей. Я просто хотел, чтобы дисплей как средство для меня мог просмотреть и редактировать настройки на колесе ISTEF, а не подключить или просмотреть телеметрию. Таким образом, простого ЖК -дисплея с подсветкой 16x2 было бы достаточно. Чтобы сохранить ограниченную GPIO, я также добавил рюкзак I 2 C.
Ротари -кодеры были немного проблемами, так как Arduono Nano не поддерживает многие GPIO. В конце дня я пошел с тремя досками Duppanet I 2 C Rotary Encoder Mini v2.1. Они отлично работают, никогда не пропускают удар и требуют всего 3 GPIO.
Наконец, для вращающихся переключателей я использовал два мини-8-движных вращающихся переключателей, каждый из которых управляет одним аналоговым GPIO, что еще больше уменьшило требуемый GPIO. Идея довольно проста, и вы можете узнать больше здесь.
Мне нужно было 22 кнопки, чтобы выполнить все функции, которые я планировал. Я поставлял их от нескольких онлайн -поставщиков, не имеющих особого упоминания. Большинство кнопок являются простыми временными (ON)-офф-переключателями, за исключением (ON) -офф- (ON). Для переключателей весла 3Drap.it обеспечивает тяжелые микро трансмиссии, которые прилегают к корпусу.
? Вот полный список оборудования, которое я использовал.
Здесь я получил большую помощь от сообщества (пожалуйста, посмотрите на кредиты ниже). Я провел свое исследование и обнаружил, что многие люди делали подобные вещи, но никоим образом я не хотел, чтобы мой руль работал. Итак, я связался с некоторыми из них, получил немного понимания и начал создавать свою собственную версию.
Моей отправной точкой был этот пост Тараса, где я получил базовые гиды по аппаратному и программному обеспечению для T300. Это был также первый пост, который я прочитал, который привел меня в это путешествие. Тарас был огромной помощью, поскольку он отвечал на все мои технические вопросы.
После этого я обнаружил, что в проекте Bram Harmsen, который включает кнопки L3 & R3, в проекте Bram Harmsen, который, в свою очередь, не доступен на каком -либо другом рулевом колесе. Налив всю информацию, необходимую для воспроизведения всех действий, я начал собирать все это вместе.
Я не буду вдаваться в подробности об этом коде, но вы можете просмотреть его в репо. Я добавил как можно больше комментариев.
? Просмотреть файлы эскиза Arduino
Колесо ведет себя очень похоже на любое другое колесо на рынке. Он эмулирует все кнопки контроллера PlayStation DualShock 4. Основными различиями являются матрица кнопок , меню отображения , вращающиеся кодеры и вращающиеся переключатели (функции кабины).
Во имя сохранения GPIO на Nano я создал матрицу кнопки 5x5, чтобы поддержать 22 кнопки, которые мне потребовались для моего дизайна (да, у меня есть 3, чтобы запасной!).
? ️ Вот матрица кнопки .
Было несколько причин, по которым я хотел показ. Во -первых, мне нужен был способ изменить настройки колеса без необходимости подключить его к компьютеру. Во-вторых, я также подумал, что было бы неплохо иметь часы, чтобы отобразить реальное время и дату. В -третьих, дисплей может быть использован в будущих обновлениях для отображения телеметрии ... (но еще ничего не запланировано). И, наконец, это просто выглядит круто.
Дисплей управляется тремя кнопками отображения:
Меню: Откройте/закройте меню колеса
Далее: прокрутите меню
Выберите: Выберите опцию
Отображение параметров меню:
Режим колеса: установите режим колеса в зависимости от того, на какой платформе вы играете:
PS - режим PlayStation (PS)
ПК - Advanced (ПК) режим
Дип. Режим: Установите режим дисплея при включении Keypress. Каждый раз, когда вы нажимаете кнопку, он отображает свою функцию:
PS - нажатие любой кнопки отображает функцию кнопки PlayStation (Cross, Triangle, L2, R2, ... и т. Д.)
GT - нажатие любой кнопки отображает картирование кнопки симулятора в соответствии с моими личными предпочтениями (ограничитель ямы, HUD, дворники, ... и т. Д.)
Keypress: Показать кнопку Keypress на дисплее
Дата/время: покажите или скрыть дату и время на главном экране
Зуммер - включите или выключите зуммер
Час чирп - да, он также может звучать каждый час, чтобы отслеживать время, которое вы тратите на симулятор
Отображение - выключите отображение (любая кнопка отображения снова включает его)
Время выполнения - Покажите время с момента загрузки рулевого колеса, чтобы вы знали, как долго он работает
Роторные кодеры позволяют быстро получить доступ к балансу тормоза , АБС и регулировки управления тяжкой во время вождения. Роторные кодеры прохладные, потому что вы можете быстро настраивать настройки, не нуждаясь в отвлечении от меню экрана и т. Д.
Роторные кодеры были нанесены на карту следующим образом:
Описание | Левый гниль. (-) | Правый гниль. (+) |
---|---|---|
Баланс тормоза (BB) | D-PAD вниз | D-Pad Up |
Антиблокировочная тормозная система (ABS) | L3 | R3 |
Контроль тяги (TC) | D-PAD ушел | D-PAD ПРАВО |
Описание | Левый гниль. (-) | Правый гниль. (+) |
---|---|---|
Баланс тормоза (BB) | Вниз | Вверх |
Антиблокировочная тормозная система (ABS) | 20 | 21 |
Контроль тяги (TC) | Левый | Верно |
? Вот карта управляющих привязков, которую я применил в конкуренции Assetto Corsa для обеих платформ.
Это то, о чем я думал, смотрел видео, где Нико Росберг объяснял, как вам нужно сдвинуть баланс тормоза с передней части сзади и сзади несколько раз на одном круге, чтобы оптимизировать ваше вождение. Вы, конечно, можете использовать вращающиеся кодеры, но вы не можете быть точным, особенно с точностью от обратной связи с силой на вашем колесе.
Идея состоит в том, чтобы создать установленные кнопки, которые могут воспроизвести щелчки Mutliple в зависимости от ваших предпочтений. Используя вращающиеся переключатели, вы можете быстро установить параметры:
Режим кабины: выбирает функцию, которую вы хотите воспроизвести (BB, ABS, TC)
Шаги кабины: выберите количество раз, когда вы хотите нажать кнопку (1x-8x)
Кабина -/+: при выборе кнопки кабины -/+ она будет выполнена в выбранных предпочтениях
Я хотел, чтобы все было максимально компактным, чтобы потребовалась пользовательская плата. Я также хотел, чтобы все было удалено и взаимозаменяемым в случае неудачи в будущем. Мое намерение состояло в том, чтобы создать пользовательскую печатную плату, но на данный момент это не имело смысла (возможно, в обновлении?). Последняя плата состоит из перфборда 5x7 см, и я использовал провод сплошного ядра, чтобы сделать соединения.
Хотя моя первая попытка (V1) функционировала идеально, она была не такой компактной, как я хотел бы. На самом деле, это вообще не вписывалось в корпус рулевого управления. Я перепроектировал треки и перестроил вторую версию (V2), используя угловые разъемы Dupont мужского пола, сохранив много места из -за ограниченной высоты.
? Взгляните на окончательную схему и доску .
Если у вас все подключено и подключено, как показывает диаграмма, вы, вероятно, будете готовы использовать рулевое колесо.
Чтобы скомпилировать эскиз Arduino, вам необходимо установить эти библиотеки:
Eeprom.h - библиотека Eeprom для хранения настроек
LiquidCrystal_I2C.H - Жидкокристаллический дисплей I 2 C Библиотека
i2cencederminilib.h - Rotery Encoder I 2 C Библиотека
Timelib.h - библиотека времени
DS1307RTC.H - DS1307 RTC Библиотека
Следуйте инструкциям библиотеки о том, как настроить текущее время на RTC.
Следуйте инструкциям библиотеки о том, как изменить адрес каждой из плат роторных энкодеров. Я установил их следующим образом:
BB (баланс тормоза): 0x20
ABS (антиблокировочная тормозная система): 0x21
TC (контроль тяги): 0x22
Единственное, что может потребоваться настройка, - это значения вращения переключателя, учитывая, что возвращенные значения зависят от поставляемого напряжения. Установите DEBUG_ROTARY_SWITCHES
true
, и LCD отобразит текущие значения обоих коммутаторов. Запишите эти номера и обновите их в файле эскиза t300_functions
, в рамках функций getCABMode()
& getCABSteps()
.
Я добавил встроенный монитор производительности. Вам нужно будет установить DEBUG_LATENCY
true
и открыть серийный монитор (115200 бод). После загрузки вы просмотрите отчет в реальном времени на текущую задержку цикла.
В первой версии программного обеспечения было довольно много проблем, причем задержка была самой большой. Время от времени будет пропустить кнопку нажатия, что во время гонки это означало пропуску зажигания на переключение или понижение. Это компенсировало плохую работу.
После запуска тестов я обнаружил, что одна петля работала около 2800 мс с возможным икотом каждую секунду со скоростью около 106000 мс. Это было абвизию, что что -то создает какую -то задержку. В конце концов я оптимизировал код для роторных кодеров и часов (RTC).
Поскольку дисплей не добавляет многого вождения, вы можете выключить его во время заезда путем продолжительности роторного выключателя ABS.
Текущая версия работает плавно, и я не заметил никаких осадок во время гонок.
Небольшое пространство, чтобы признать работу, выполненную ранее другими.
Тарас Иваниукович https://rr-m.org/blog/ - за работу, которой он поделился в своем блоге, и за помощь, которую он оказал на протяжении всего пути
Брэм Хармсен https://www.thingiverse.com/thing:2813599 - для обратного двигателя рулевого колеса F1
MRFID72 - Для удивительного видео на YouTube объясняет аналоговые ротационные переключатели
Дэнни Ван Ден Бренде - для кода, который я нашел в Интернете, который помог мне настроить матрицу кнопки
Antonio de Stefano https://3drap.it - для потрясающего корпуса рулевого колеса
GNU General Public License v3.0 или позже