Skip to content

klegot/HydroScreen_SAUVC

Repository files navigation

Display Module Controller (STM32F103 + SSD1306)

Прошивка модуля управления графическим дисплеем аппарата. Обеспечивает вывод телеметрии и интерфейс взаимодействия через шину RS-485.

🚀 Особенности

  • Hardware: STM32F103
  • Дисплей: OLED 128x64 (SSD1306, шина I2C).
  • Связь: RS-485. Логика обмена данными с мастером и сетевой интерфейс построены на Hydrolib.
  • Язык: Modern C++ (C++20).
  • Синхронизация: Реализована через абстракцию MemoryMap (чтение/запись параметров системы по смещениям).

🔌 Подключение (Pinout)

Дисплей (I2C1)

  • SCL: PB6
  • SDA: PB7
  • Параметры: 100 kHz, 7-bit addressing.

Связь (RS-485 / UART1)

  • TX: PA9
  • RX: PA10
  • DE (Direction): PA8

Управление (Кнопки)

В системе задействовано 6 кнопок для навигации по интерфейсу:

  • Pins: PA0, PA1, PA2, PA3, PA4, PA5
  • Конфигурация: Input Mode, без внутренней подтяжки (No Pull). Требуются внешние резисторы.

🐳 Разработка в контейнере (Dev Container)

Для проекта настроен Dev Container, который включает всё необходимое окружение:

  • Базовый образ: seajackal/hydrodrivers:latest (ARM Toolchain, CMake).
  • Отладка: Поддержка Cortex-Debug и Peripheral Viewer.
  • Прошивка: Контейнер запущен в привилегированном режиме с пробросом /dev/bus/usb для работы с программаторами через OpenOCD.

Просто откройте папку проекта в VS Code и выберите "Reopen in Container".

📥 Установка и сабмодули

Проект использует иерархическую структуру зависимостей. Для клонирования со всеми подмодулями:

git clone --recursive https://github.com/klegot/HydroScreen_SAUVC.git

Основные зависимости:

📟 Аппаратная конфигурация (UART1)

Конфигурация периферии микроконтроллера STM32F103:

  • Baudrate: 115200
  • Pins (STM32): TX: PA9, RX: PA10, DE: PA8.

📁 Интерфейс (Layouts)

Прошивка поддерживает систему динамических окон:

  • Main Menu — навигация.
  • Diagnostics — системные показатели.
  • VMA Revolutions — состояние 10 движителей.
  • Mission Launch — выбор и старт миссий.
  • Error Log — журнал ошибок.
  • Bottom Stroke — статус-бар (заряд АКБ L/R, наличие ошибок).

🛠 Сборка

cmake --preset Debug
cmake --build ./build/Debug

📋 Протокол обмена (MemoryMap)

Устройство работает в режиме Slave с адресом 3. Мастер (адрес 2) обновляет структуру MemoryMap.

Поле Тип Описание
vma_statuses[10] int8_t Состояние движителей (1 = OK, 0 = ERROR).
killsw_status int8_t Состояние киллсвича (1 = ON, 0 = OFF).
current_mission int8_t Номер активной миссии (1...4).
batL / batR_voltage int16_t Напряжение АКБ. Формат: 1250 = 12.50V.
mission_names[4][16] int8_t 4 названия миссий до 16 символов.
error_logs[4][16] int8_t 4 строки лога ошибок.
free_bytes int16_t Резервные байты.

Developed by klegot

About

Display Module Controller (STM32F103 + SSD1306)

Resources

Stars

0 stars

Watchers

0 watching

Forks

Contributors