SmartHome P4
Автономный контроллер · Прошивка ESP32-P4

SmartHome P4

Локальный контроллер умного дома на сенсорной панели 1024×600. До 15 комнат и 64 устройств, реле и дискретные входы по RS-485/Modbus, сцены, расписания и правила автоматики, транспорты MQTT / Home Assistant / ИК — вся конфигурация с экрана, всё хранится в NVS и работает без облака.

Проект в стадии разработки. Экспериментальная инженерная разработка лаборатории NARMOVION, а не законченный продукт — возможны ошибки, изменения и неполная функциональность; использование на свой риск.
SoC: ESP32-P4 rev 1.3 Радиомодуль платы: ESP32-C6 · Wi-Fi 6 UI: LVGL v9 IDF: v6.0.2 Прошивка: smarthome p4 0.22
Скачать полную прошивку · BIN 1,7 МБ
Единый merged-образ ESP32-P4 · заливка на 0x0 · flash DIO 40 МГц · 16 МБ · ESP-IDF v6.0.2
Комнаты
15 переименуемых
Устройства
64 в каталоге
Реле
16 2×8 RS-485
Сцены / правила
16/16
Дисплей
1024×600 сенсор
Что это

Локальный узел управления домом

Прошивка независима от метеостанции и GreenHouse P4. При старте app_main гасит подсветку (чтобы после перезагрузки или OTA не мелькал голубой кадр MIPI-DSI), затем последовательно поднимает хранилище, время, сеть и ядро автоматики, и только потом выводит интерфейс.

Вся логика локально

Реле, входы, сцены, расписания и правила исполняются на самом контроллере. Wi-Fi и MQTT опциональны — дом продолжает работать без интернета.

Конфигурация в NVS

Комнаты, устройства, сцены и правила хранятся одним blob’ом (magic 0x53485034, версия 4). Настройки Wi-Fi и MQTT — в собственных разделах NVS.

Безопасное состояние

Состояние выходов намеренно не пишется в память: после перезагрузки всегда восстанавливается заданное «safe»-положение, а не случайно залипший выход.

Ручной тайм-аут

Включённое вручную устройство может само выключиться через заданный интервал — удобно для света, вентиляции и ворот.

Платформа

Вычислитель, память и экран

Плата класса JC1060P470C / JC-ESP32P4-M3: ESP32-P4 как основной SoC и ESP32-C6 как радиомодуль Wi-Fi 6, подключённый по ESP-Hosted (SDIO 40 МГц, «одно-портовый» путь Wi-Fi Remote).

УзелЗначениеПримечание
SoCESP32-P4 rev 1.32×RISC-V @ 360 МГц, L2-кэш 256 КБ
РадиоESP32-C6Wi-Fi 6 / BLE, ESP-Hosted SDIO 40 МГц
PSRAM32 МБHEX-режим, 200 МГц
Flash16 МБ (Boya)DIO, 40 МГц
Дисплей1024×600MIPI-DSI, панель JD9165
ТачЁмкостныйпо шине I²C (GPIO7/8)
КонсольUSB Serial/JTAGлог и прошивка, порт COM10
Подключение

Интерфейсы и шины

Периферия распределена по трём шинам: общая I²C (тач + климатические датчики), изолированный RS-485 для силовой части и служебные интерфейсы платы (аудио, microSD).

I²C GPIO7 / GPIO8

  • Тачскрин дисплея
  • SHT45 — температура, влажность
  • SCD41 — CO₂
  • BH1750 — освещённость
  • 100 кГц, внутр. подтяжка

RS-485 UART3 · GPIO26/27

  • Изолированный разъём
  • Modbus-RTU, 9600 8N1
  • 2×8-канальные реле (адреса 1/2)
  • Чтение дискретных входов

Аудио I²S ES8311 / ES7210

  • MCLK 13, SCLK 12
  • WS 10, DOUT 9, DIN 48
  • Power-amp EN GPIO11

microSD SDIO 4-bit

  • CLK 43, CMD 44
  • D0–D3 39–42
  • FatFS
Пины

Полная карта GPIO

Все выводы, задействованные прошивкой и BSP платы.

УзелСигналGPIOТипПримечание
ДисплейMIPI-DSI данные/тактDSIMIPI-DSIПанель JD9165, 1024×600
ДисплейПодсветка (BL)23LEDC/GPIOГасится первой в app_main
ДисплейReset (RST)0GPIOСброс панели
I²CSDA7I²C0Тач + датчики, 100 кГц
I²CSCL8I²C0SHT45 / SCD41 / BH1750
RS-485UART3 TX26RS-485Изолированный, 9600 8N1
RS-485UART3 RX27RS-485Реле и входы Modbus-RTU
АудиоI²S MCLK / SCLK13/12I²SКодек ES8311 / ES7210
АудиоWS / DOUT / DIN10/9/48I²S—
АудиоPower-amp EN11GPIOВключение УНЧ
microSDCLK / CMD43/44SDIOFatFS
microSDD0–D339-42SDIO4-битный режим
СлужебноеGPS UART1 (резерв)37/38UARTЗарезервировано, в SmartHome не используется
Питание реле — отдельное. Плата даёт только логический сигнал RS-485. Модули реле и датчики протечки/герконы питаются от собственного источника; земли RS-485 объединяются, линия A/B идёт витой парой.
Реле и входы

Силовая периферия по Modbus-RTU

На изолированной шине UART3 (9600 8N1) прошивка ведёт до двух 8-канальных релейных модулей Waveshare с адресами 1 и 2 — суммарно 16 реле — и читает их дискретные входы.

Управление реле · функция 0x05

Запись одного coil: каналы 0–7 → модуль 1, 8–15 → модуль 2, номер coil = channel % 8. Команда подтверждается эхо-ответом модуля. Доступ к шине сериализован мьютексом.

Чтение входов · функция 0x02

Раз в секунду опрашиваются 8 дискретных входов каждого модуля. Устройства с транспортом «RS485 Input» отражают состояние входа — поплавок, протечка, геркон.

ТранспортНазначениеАдресация
RS485 RelayВыход на релеканал 0–15
RS485 InputДискретный входканал 0–15
ModbusОбобщённое Modbus-устройствоадрес
I²C / 1-WireЛокальные датчикиадрес / канал
MQTTПубликация ON/OFF в command-топиктопик
Home AssistantMQTT + подписка на state-топиктопик
ИКИК-пультканал
Датчики

Встроенная шина I²C

Отдельная задача опрашивает три датчика на общей шине GPIO7/8 каждые 5 секунд с проверкой CRC. Наличие каждого датчика определяется автоматически.

SHT45 0x44

  • Температура −45…+130 °C
  • Влажность относительная
  • Команда высокой точности 0xFD

SCD41 0x62

  • CO₂, ppm
  • Периодическое измерение
  • Чтение по data-ready

BH1750 0x23

  • Освещённость, люкс
  • Непрерывный режим выс. разрешения
  • Пересчёт /1.2
Статус. Показания собираются в фоне и готовы для автоматики. Отдельного экрана датчиков пока нет — в версии 0.22 экран «Настройки» уже рабочий (Wi-Fi и MQTT), вывод датчиков появится позже.
Автоматика

Модель данных и правила исполнения

Каждое устройство описывается типом, транспортом и адресом; для него задаются safe-состояние, ручной тайм-аут, автоматика, расписание и MQTT-топики. Двенадцать типов устройств: реле, выключатель, свет, термостат, шторы, вентиляция, ворота, домофон, ИК-пульт, датчик, внешнее.

Расписание
Устройство переключается по окну начало–конец (в минутах, с переходом через полночь). Инертно, пока время не синхронизировано по SNTP.
Ручной тайм-аут
Включённое вручную устройство само выключается через manual_timeout_ms.
Правила
«Если триггер в состоянии X → перевести цель в Y». До 16 правил.
Сцены
64-битная маска устройств + целевое ВКЛ/ВЫКЛ, применяется одной кнопкой. До 16 сцен.
Внешнее состояние
Из MQTT парсится ON/OFF/OPEN/CLOSED/1/0 по state-топику устройства.
Время
SNTP: pool.ntp.org и time.cloudflare.com, обновление раз в час.
Экраны

Интерфейс — 6 страниц

Тёмная тема, акцент #71C9FF, мгновенное переключение RU/EN (кнопкой в правом верхнем углу; с версии 0.22 выбор языка сохраняется в NVS и восстанавливается после перезагрузки), часы по SNTP и экранная клавиатура для переименования. Панель ниже воспроизводит реальную раскладку и цвета прошивки — нажимайте вкладки внизу.

SMARTHOME P4 · УМНЫЙ ДОМ
EN
Клавиша ИМЯ на экранах комнат, устройств и сценариев открывает общий диалог переименования: однострочное поле lv_textarea и полная экранная клавиатура lv_keyboard.
Прошивка

Флеш, OTA и заливка

16 МБ флеша размечены под OTA A/B: два слота приложения по ~6,1 МБ, SPIFFS-хранилище и раздел coredump для диагностики.

РазделТипСмещениеРазмер
nvsdata / nvs0x00C00024 КБ
otadatadata / ota0x0120008 КБ
phy_initdata / phy0x0140004 КБ
ota_0app0x0200006,1 МБ
ota_1app0x6400006,1 МБ
storagedata / spiffs0xC600003 МБ
coredumpdata / coredump0xF60000640 КБ
Заливка merged-образа. Скачанный SmartHome_P4_MERGED_v0.22_20260731.bin пишется на смещение 0x0:
python -m esptool --chip esp32p4 -b 460800 --before default_reset --after hard_reset write_flash 0x0 SmartHome_P4_MERGED_v0.22_20260731.bin
← В раздел «Лаборатория»