Локальный дисплей (HMI) и Программная Архитектура

Данный документ описывает аппаратное подключение экрана к контроллеру (Raspberry Pi Pico / RP2040), выбор графических библиотек и архитектуру распределения задач по ядрам процессора для обеспечения отказоустойчивости (Real-Time).

1. Аппаратное подключение экрана (Hardware)

Для вывода графической информации выбран протокол SPI (Serial Peripheral Interface), обеспечивающий высокую скорость обновления при минимальном количестве задействованных пинов.

Рекомендуемые дисплеи:

Схема подключения (Аппаратный SPI0 шины RP2040)

Логика управления дисплеями и RP2040 совпадает (3.3V), что исключает необходимость в конвертерах уровней.

Пин экрана (ST7789/ILI9341) Назначение Пин на RP2040 (Пример)
VCC / 3V3 Питание экрана Пин 36 (3V3 OUT)
GND Земля Любой GND
SCL / SCK / CLK Тактовый сигнал SPI GP18 (SPI0 SCK)
SDA / MOSI / DIN Данные (Master Out Slave In) GP19 (SPI0 TX)
RES / RST Аппаратный сброс Любой GPIO (например, GP20)
DC / RS Выбор: Данные / Команда Любой GPIO (например, GP16)
CS (Chip Select)* Выбор устройства на шине GP17 (SPI0 CSn)
BLK / LED Подсветка экрана GP21 (Аппаратный ШИМ для яркости)

* На некоторых компактных модулях 1.3" ST7789 пин CS отсутствует (жестко притянут к GND). В этом случае пин CS на Pico не задействуется.


2. Программная отрисовка (Software)

Для создания сложного, современного интерфейса используются высокопроизводительные графические библиотеки.

Драйвер дисплея: TFT_eSPI

Самая быстрая графическая библиотека для микроконтроллеров.

Графический фреймворк: LVGL (Light and Versatile Graphics Library)

Промышленный стандарт для создания современных HMI (меню, анимации, графики, спидометры).

GUI Builders (Создание интерфейса)

Для ускорения разработки и визуального программирования (WYSIWYG) используются десктопные конструкторы:


3. Архитектура распределения ядер (Multicore Processing)

Отрисовка сложной графики (особенно графиков со сглаживанием в LVGL) может занимать 10-30 мс. В мире микроконтроллеров длительные блокировки недопустимы, так как это может привести к пропуску чтения датчиков Холла, сбою таймингов на шине 1-Wire или задержке в управлении помпами.

Данная проблема элегантно решается за счет двухъядерной архитектуры (Dual-Core) чипа RP2040.

Core 0 (Первое ядро) — Интерфейс и Связь

В среде Arduino IDE (ядро Earle F. Philhower) это функции setup() и loop(). Ядро полностью отдано под некритичные ко времени задачи:

Core 1 (Второе ядро) — Жесткий Real-Time (Охлаждение)

В среде Arduino IDE это функции setup1() и loop1(). Ядро занимается исключительно критически важной логикой физического управления:

Синхронизация: Оба ядра обмениваются данными (например, Core 1 передает свежие температуры в Core 0 для отрисовки на графике) через потокобезопасные очереди (Queues, Mutexes, Spinlocks), предусмотренные Raspberry Pi Pico SDK. Таким образом, даже в случае программного зависания интерфейса на экране (Core 0), контур охлаждения фермы (Core 1) продолжит штатную работу и защиту оборудования.