1 / 1
Sim Racing Wheel — image 1

Sim Racing Wheel

Order a print of this model

We calculate the final price from your selected file. You review and accept it before payment.

Saved on this device.

Model information

Category
Video Games
License
Creative Commons — Public Domain

GITHUB : https://github.com/vova641/SImracing

# 🚗 Проект: Симрейсинг приборная панель (Dash) на ESP32-S3 и дисплее GC9A01

## 📌 Общее описание проекта

Разработана полноценная приборная панель для гоночных симуляторов (Assetto Corsa и других, поддерживаемых SimHub) на базе микроконтроллера ESP32-S3 и круглого TFT-дисплея GC9A01 (разрешение 240×240 пикселей). Устройство получает телеметрию (скорость, обороты, уровень топлива) через USB-порт от программы SimHub, отображает их на экране в виде светодиодной шкалы оборотов (10 сегментов), крупных цифр скорости и процента топлива. Дополнительно реализован Button Box – 6 независимых кнопок и 2 энкодера (с кнопками), состояния которых отправляются обратно в SimHub для управления игровыми функциями (например, дворники, переключение режимов, регулировка TC/ABS и пр.).

---

## 🧩 Используемые компоненты

| Компонент | Модель / характеристики | Количество |

|-----------|------------------------|-------------|

| Микроконтроллер | ESP32-S3 (8 MB Flash, 2 MB PSRAM) | 1 |

| Дисплей | GC9A01 240×240, SPI | 1 |

| Кнопки | тактовые (6 шт) | 6 |

| Энкодеры | EC11 (с кнопкой) | 2 |

| Резисторы | 10 кОм – не требуются (используются внутренние подтяжки) | – |

| Питание | от USB компьютера или внешнего 5V | – |

---

## 📚 Используемые библиотеки (Arduino IDE)

| Библиотека | Версия | Назначение |

|------------|--------|-------------|

| TFT_eSPI | 2.5.2 | Драйвер дисплея GC9A01 |

| LVGL | 8.3.11 | Графическая библиотека для интерфейса |

| ArduinoJson| 6.x | Парсинг JSON-данных от SimHub |

| ESP32Encoder| 0.8.1 | Работа с энкодерами (аппаратный PCNT) |

Внимание: библиотека ESP32Encoder требует наличие PCNT, который есть только у ESP32 и ESP32-S3 (на ESP32-C3 не работает).

---

## 🖥 Настройка SimHub (ПК)

### 1. Установка плагина Custom Serial Device

- В SimHub: Settings → Plugins → включить Custom Serial Devices.

### 2. Создание нового устройства

- Arduino & Boards → My Hardware → Add new serial device.

- Выбрать COM-порт ESP32, скорость 115200, отключить RTS и DTR.

- Включить Append newline character (\n).

### 3. Настройка исходящего протокола (от SimHub к ESP32)

Выбрать тип Javascript и в поле Update messages вставить:

js

var speed = $prop('DataCorePlugin.GameData.NewData.SpeedKmh') ||

$prop('DataCorePlugin.GameData.NewData.Speed') || 0;

var rpm = $prop('DataCorePlugin.GameData.NewData.Rpms') || 0;

var fuel = $prop('DataCorePlugin.GameData.NewData.Fuel') || 0;

var maxRpm = $prop('DataCorePlugin.GameData.NewData.MaxRpm') || 10000;

return JSON.stringify({ Speed: speed, Rpms: rpm, Fuel: fuel, MaxRpm: maxRpm }) + "\n";

### 4. Настройка входящих отображений (для кнопок и энкодеров)

Во вкладке Incoming создайте правила (mappings):

| Триггер (приходит от ESP32) | Действие (Action) |

|-----------------------------|-------------------|

| btn1 … btn6 | Emulate Keyboard → назначить клавишу или Simulator Action → команда игры |

| Enc1Clk, Enc2Clk | Simulator Action → например, Wipers Toggle |

| Enc1Value со значением 1 (или >0) | Increase Value (например, TC+) |

| Enc1Value со значением -1 (или <0) | Decrease Value (TC-) |

Для энкодеров удобно использовать *ActionA / ActionB** или *Adjust Value**.

---

## 🎨 Внешний вид интерфейса

- Фон: чёрный.

- 10 оранжевых светодиодов по окружности – загораются последовательно при росте оборотов (каждые 1000 об/мин).

- Цифровая скорость: шрифт 48, белый цвет, по центру (немного выше).

- Единицы измерения: "km/h" мелким шрифтом под скоростью.

- Топливо: синий шрифт 20, знак заправки, процент, расположен ниже скорости.

- При запуске: на 2 секунды показывается оранжевый логотип "SIM RACING" крупным шрифтом.

---

## 🔧 Возможные доработки

- Управление яркостью подсветки через ШИМ (пин BL подключить к любому GPIO, например 4, и использовать ledcWrite).

- Добавление красной зоны на тахометре (при 7000+ об/мин менять цвет LED).

- Передача номера передачи, температуры, времени круга (добавить поля в JSON и отобразить на экране).

- Использование энкодеров для навигации по меню на панели (переключение страниц).

---

## ⚠ Примечания

- Для ESP32-S3 в настройках платы в Arduino IDE выберите USB CDC On Boot: Enabled, иначе Serial может не работать.

- Пины 35–40 не рекомендуется использовать для кнопок – они только входные и не имеют внутренней подтяжки.

- Если энкодеры работают нестабильно, подключите резисторы 10 кОм между CLK/Dt и 3.3V или используйте метод setFilter(1023).

- Частота кадров на GC9A01 достаточная для плавного обновления скорости и оборотов (благодаря аппаратному SPI и LVGL).

---

## ✅ Заключение

Проект представляет собой полноценную автомобильную приборную панель для симрейсинга, сочетающую красивый графический интерфейс (LVGL) и физические органы управления (кнопки + энкодеры). Он легко масштабируется, поддерживает любые игры, совместимые с SimHub, и может быть использован как DIY-девайс для гоночных увлечений.