171 lines
5.6 KiB
Markdown
171 lines
5.6 KiB
Markdown
# LVGL HMI Display UI — Кондиционер-доводчик
|
||
|
||
UI интерфейс для контроллера кондиционера-доводчика (КД) для ИФП СО РАН.
|
||
|
||
Проект использует [LVGL](https://github.com/lvgl/lvgl) — графическую библиотеку для встраиваемых систем. Код можно запустить на ПК с помощью SDL симулятора, а затем перенести на микроконтроллер.
|
||
|
||
## Возможности
|
||
|
||
- Главный экран со схематичным отображением модулей установки (клапаны, фильтры, нагреватели, вентилятор и т.д.)
|
||
- Drag & Drop модулей для включения/отключения
|
||
- Панель состояния системы (режим работы, сезон, мастер/слейв)
|
||
- Уставка параметров для рабочего и дежурного режимов
|
||
- Журнал аварий
|
||
- Настройки с защитой паролем (ПИД-регуляторы, коррекция датчиков)
|
||
- Всплывающие окна для показаний датчиков и аварий
|
||
|
||
## Структура проекта
|
||
|
||
```
|
||
├── src/
|
||
│ ├── main_sim.c # Точка входа для симулятора
|
||
│ ├── gui_generated.c # Основной код UI
|
||
│ └── gui_generated.h # Заголовочный файл UI
|
||
├── assets/ # Изображения и шрифты (.c файлы)
|
||
├── images/ # Неформатированные изображения
|
||
├── ├── example # Примеры работы приложения
|
||
├── ├── modules # Исходники изображения модулей
|
||
├── lvgl/ # Библиотека LVGL (submodule)
|
||
├── lv_drivers/ # Драйверы LVGL
|
||
├── FreeRTOS/ # FreeRTOS (опционально)
|
||
├── config/ # Конфигурация FreeRTOS
|
||
├── lv_conf.h # Конфигурация LVGL
|
||
└── CMakeLists.txt # Сборка проекта
|
||
```
|
||
|
||
## Требования
|
||
|
||
### Установка SDL и инструментов сборки
|
||
|
||
- **Windows (vcpkg):**
|
||
```bash
|
||
vcpkg install sdl2
|
||
```
|
||
Также установите MinGW или другой компилятор и `cmake`.
|
||
|
||
- **macOS (Homebrew):**
|
||
```bash
|
||
brew install sdl2 cmake make
|
||
```
|
||
|
||
- **Linux (Debian/Ubuntu):**
|
||
```bash
|
||
sudo apt install build-essential cmake libsdl2-dev
|
||
```
|
||
|
||
- **Linux (Arch):**
|
||
```bash
|
||
sudo pacman -S base-devel cmake sdl2
|
||
```
|
||
|
||
- **Linux (Fedora):**
|
||
```bash
|
||
sudo dnf install @development-tools cmake SDL2-devel
|
||
```
|
||
|
||
### Проверка установки
|
||
|
||
```bash
|
||
sdl2-config --version
|
||
cmake --version
|
||
gcc --version
|
||
g++ --version
|
||
```
|
||
|
||
## Сборка и запуск
|
||
|
||
```bash
|
||
git clone https://gitea.e-automatics.ru/Trishkin/lvgl-hmi-display-ui
|
||
```
|
||
|
||
### Через командную строку (CMake)
|
||
|
||
```bash
|
||
cd lvgl-hmi-display-ui
|
||
mkdir build
|
||
cd build
|
||
cmake ..
|
||
make -j
|
||
```
|
||
|
||
Запуск симулятора:
|
||
```bash
|
||
../bin/main
|
||
```
|
||
|
||
Или одной командой:
|
||
```bash
|
||
make run
|
||
```
|
||
|
||
### Через Visual Studio Code
|
||
|
||
1. Убедитесь, что SDL и инструменты сборки установлены
|
||
2. Откройте проект: `File → Open Workspace from File → simulator.code-workspace`
|
||
3. Установите рекомендованные расширения
|
||
4. Перейдите в `Run and Debug` (Ctrl+Shift+D)
|
||
5. Выберите `Debug LVGL demo with gdb`
|
||
6. Нажмите F5 для запуска с отладкой
|
||
|
||
#### macOS
|
||
|
||
Apple Clang не поддерживает флаг `-fsanitize=leak`. Для сборки через Homebrew LLVM:
|
||
|
||
1. `brew install llvm`
|
||
2. Cmd+Shift+P → `CMake: Select a Kit` → `[Scan for kits]`
|
||
3. Cmd+Shift+P → `CMake: Select a Kit` → выберите clang из homebrew
|
||
4. Cmd+Shift+P → `CMake: Configure`
|
||
5. Запустите сборку
|
||
|
||
## Конфигурация
|
||
|
||
### Разрешение экрана
|
||
|
||
В файле `lv_conf.h`:
|
||
```c
|
||
#define MY_DISP_HOR_RES 800
|
||
#define MY_DISP_VER_RES 480
|
||
```
|
||
|
||
### FreeRTOS (опционально)
|
||
|
||
Для включения FreeRTOS:
|
||
|
||
1. В `CMakeLists.txt` измените:
|
||
```cmake
|
||
option(USE_FREERTOS "Enable FreeRTOS" ON)
|
||
```
|
||
|
||
2. В `lv_conf.h` измените:
|
||
```c
|
||
#define LV_USE_OS LV_OS_FREERTOS
|
||
```
|
||
|
||
## Управление интерфейсом
|
||
|
||
- **Останов** — выключает вентилятор и нагреватель, клапаны остаются на позициях
|
||
- **Дежурный** — переключает в дежурный режим с соответствующими уставками
|
||
- **Рабочий** — переключает в рабочий режим
|
||
- **Меню** — переход в меню настроек
|
||
- **Показания** — всплывающее окно с показаниями датчиков
|
||
|
||
### Модули установки
|
||
|
||
Модули можно перетаскивать:
|
||
- **Вверх** — активировать модуль (на линии воздуховода)
|
||
- **Вниз** — деактивировать модуль
|
||
|
||
### Пароль для настроек
|
||
|
||
Пароль по умолчанию: `1234`
|
||
|
||
## Тестирование
|
||
|
||
Проект протестирован на:
|
||
- macOS (Apple Silicon & Intel)
|
||
|
||
## Лицензия
|
||
|
||
MIT License
|
||
|