Car UI
Интерфейс автомобильной мультимедийной системы для Raspberry Pi 4B с сенсорным дисплеем.
Приложение разработано на Python с использованием PySide6 / Qt 6 и рассчитано на работу как в обычном Desktop Environment во время разработки, так и напрямую через Qt EGLFS / DRM/KMS в production-режиме.
Current reference hardware. The product image is temporary and will be replaced with a photo of the final prototype.
Reference hardware
Текущая конфигурация:
- Raspberry Pi 4 Model B (4 GB RAM);
- 7" IPS touchscreen (1024×600);
- HDMI video / USB touch.
Подробное описание аппаратной конфигурации:
Architecture
В production-режиме полноценный Desktop Environment не используется.
Raspberry Pi 4B
↓
Debian 13 (Trixie)
↓
systemd
↓
multi-user.target
↓
tty1
↓
car-ui.service
↓
Qt EGLFS
↓
DRM/KMS
↓
Car UI
Bluetooth подготавливается отдельным bt-unblock.service, который снимает RFKill-блокировку перед запуском Car UI.
Project structure
car_ui/
├── assets/ # Ресурсы приложения
├── audio/ # Работа с аудио
├── controllers/ # Контроллеры приложения
├── docs/ # Документация
├── screens/ # Экраны интерфейса
├── scripts/ # Build / run / deploy scripts
├── services/ # Сервисы приложения
├── system_configs/ # systemd units и системная конфигурация
├── themes/ # Темы интерфейса
├── ui/ # UI-компоненты
│
├── car_ui.spec # Конфигурация PyInstaller
├── main.py # Entry point
├── requirements.txt # Python-зависимости
└── README.md
Quick start
Development
Сделать скрипты проекта исполняемыми:
chmod +x scripts/*.sh
Подготовить окружение и собрать проект:
./scripts/build.sh
build.sh автоматически:
- создаёт
.venv, если окружение отсутствует; - устанавливает зависимости из
requirements.txt; - собирает приложение через PyInstaller.
Для запуска исходного кода:
./scripts/run.sh
Логи прямого запуска сохраняются в:
debug.log
Build
Собрать standalone-приложение:
./scripts/build.sh
Результат сборки:
dist/car_ui/
├── car_ui
└── _internal/
PyInstaller использует конфигурацию:
car_ui.spec
Deploy
Установить готовую сборку в систему:
sudo ./scripts/deploy.sh
Приложение устанавливается в:
/opt/car_ui/
Production systemd service запускает:
/opt/car_ui/car_ui
Production and Development modes
Car UI поддерживает два режима работы системы.
Car mode
Используется для штатной работы магнитолы:
multi-user.target
↓
tty1
↓
Qt EGLFS
↓
Car UI
Desktop Environment при этом не запускается.
Development mode
Для разработки используется обычный:
graphical.target
↓
Desktop Environment
↓
scripts/run.sh
Инструкции по настройке и переключению режимов находятся в:
First system setup
Инструкция по подготовке чистой Debian 13 (Trixie), установке системных зависимостей, сборке и первоначальному развёртыванию:
Configuration
Конфигурация UI хранится в:
~/.config/car_ui/ui.conf
Marker files
В корне проекта могут использоваться специальные marker-файлы.
reset
Сигнал приложению выполнить сброс до заводских настроек.
Создать:
touch reset
Удалить:
rm reset
dev_mode_enable
Включает режим разработчика приложения.
Создать:
touch dev_mode_enable
Удалить:
rm dev_mode_enable
Documentation
Основная документация проекта находится в docs/:
first-system-setup.md— подготовка чистой системы;auto-start.md— systemd, автоматический запуск и переключение Car / Development mode.
