1 / 1
Sim Racing Wheel — zdjęcie 1

Sim Racing Wheel

Zamów wydruk tego modelu

Obliczymy ostateczną cenę na podstawie wybranego pliku. Sprawdzisz ją i zaakceptujesz przed płatnością.

Zapisane na tym urządzeniu.

Informacje o modelu

Źródło
Printables
Kategoria
Video Games
Licencja
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-девайс для гоночных увлечений.