Модульная прошивка для микроконтроллеров семейства ESP32 со встроенной текстовой консольной средой настройки (BIOS), поддержкой многоканального мониторинга микроклимата, сетевой телеметрией, дисплеем и опциональным медиа-функционалом.
Проект представляет собой гибкую платформу с компонентной архитектурой, предназначенную для сбора телеметрии с датчиков температуры и влажности, локального отображения информации и периодической передачи данных на удаленный сервер мониторинга.
Ключевая особенность решения — наличие консольного интерфейса конфигурации GS32BIOS, доступного через UART, и системы хранения параметров GS32Config на базе энергонезависимой памяти (NVS). Это позволяет изменять назначения выводов (GPIO), параметры беспроводной сети, калибровку эквалайзера и настройки отправки телеметрии без повторной компиляции и перепрошивки устройства.
- Консольный BIOS (GS32BIOS): интерактивное меню в Serial-интерфейсе для тонкой настройки всех параметров, диагностики памяти, разделов OTA и мониторинга текущих показателей.
- Хранение настроек (NVS): автоматическое сохранение и загрузка параметров, поддержка сброса до заводских настроек (Factory Reset).
- Опциональный Сенсорный хаб (GS32SensorHub): подключение до 9 датчиков температуры и влажности (DHT11, DHT21/AM2301, DHT22/AM2302) на независимых GPIO.
- Опциональный Графический интерфейс: поддержка монохромных дисплеев (контроллер SSD1306, SPI/I2C), циклическая смена экранов (Uptime, показания датчиков), статусные индикаторы WiFi и вывод уникального Chip ID.
- Опциональный Сетевой стек (GS32WIFI): режимы работы STA (клиент), AP (точка доступа) и комбинированный режим STA+AP; динамический мониторинг RSSI и подключенных клиентов.
- Опциональный Веб-телеметрия (GS32ReportWeb): отправка состояния устройства и данных с датчиков в формате JSON на внешний REST API с поддержкой авторизации по токену.
- Диагностика OTA: отслеживание размеров Flash-памяти, скетча и состояния разделов для обновлений по воздуху.
- Опциональный аудиотракт (GS32AudioI2S): поддержка I2S-вывода, режимов Bluetooth Sink/Source, интернет-радио и 3-полосного эквалайзера с предустановками.
- Опциональный ИК-приемник (GS32IR): интеграция инфракрасного управления с поддержкой универсальных протоколов.
Активация и деактивация периферийных модулей осуществляется в заголовке скетча с помощью макросов препроцессора:
| Флаг | Значение по умолчанию | Описание |
|---|---|---|
HAS_BUTTONS |
1 | Поддержка физических кнопок управления |
HAS_DISPLAY |
1 | Поддержка графического дисплея SSD1306 |
HAS_WIFI |
1 | Сетевой модуль WiFi (STA / AP) |
HAS_SENSORS |
1 | Опрос датчиков микроклимата |
HAS_IR |
0 | Поддержка инфракрасного приемника |
HAS_AUDIO |
0 | Аудиосистема I2S и Bluetooth Audio |
HAS_REPORT |
1 | Отправка телеметрии на удаленный сервер |
Все выводы могут быть переназначены через меню BIOS и сохранены в NVS.
- Кнопка 1: GPIO 12
- Кнопка 2: GPIO 13
- Кнопка 3: GPIO 14
- MOSI: GPIO 23
- CLK: GPIO 18
- DC: GPIO 2
- RST: GPIO 4
- CS (SC): GPIO 5
- BCK (Bit Clock): GPIO 26
- LRCK (Left/Right Clock): GPIO 25
- DIN (Data In): GPIO 22
- Data Pin: GPIO 16
- Кнопка 1 (Одинарный клик): переключение информационных экранов на дисплее (Время работы устройства -> Датчик 1 -> Датчик N -> Время работы устройства).
- Кнопка 2 (Одинарный клик): циклическое переключение режимов WiFi (
OFF->STA->AP->STA + AP) с сохранением нового состояния в NVS. - Кнопка 3 (Одинарный клик): кратковременный вывод аппаратного идентификатора чипа (Chip ID / eFuse MAC) на дисплей на 3 секунды.
- OFF: радиомодуль отключен.
- STA: подключение к существующей точке доступа по заданным SSID и паролю.
- AP: запуск собственной точки доступа (по умолчанию SSID:
FW8304, пароль:12345678). - STA + AP: одновременная работа в двух режимах.
При активном флаге HAS_REPORT и наличии подключения к сети устройство каждые 60 секунд отправляет HTTP-запрос на сконфигурированный сервер (по умолчанию: https://gs32.piminoff.ru/api/send/).
Формируемый пакет включает в себя:
- Авторизационный токен (
Token). - Показания активных и валидных датчиков (ID датчика, GPIO, температура, влажность).
- Диагностические системные параметры чипа (размер свободной памяти Heap, тактовая частота CPU, время непрерывной работы Uptime, версия SDK и др. — включаются независимо в BIOS).
Для сборки скетча требуются следующие библиотеки (в зависимости от включенных модулей):
Arduino.h,Update.h(базовые компоненты ядра ESP32)GS32BIOSGS32ConfigGS32Buttons(еслиHAS_BUTTONS = 1)GS32Display1306(еслиHAS_DISPLAY = 1)GS32WIFI(еслиHAS_WIFI = 1)GS32SensorHub(еслиHAS_SENSORS = 1)GS32ReportWeb(еслиHAS_REPORT = 1)GS32AudioI2S(еслиHAS_AUDIO = 1)GS32IR(еслиHAS_IR = 1)
- Установите поддержку платформы ESP32 в вашу среду разработки (Arduino ESP32 Core).
- Выберите целевую плату (например,
ESP32 Dev Module). - Задайте схему разметки разделов Flash-памяти с поддержкой OTA (например,
Default 4MB with spiffs (1.2MB APP/1.5MB SPIFFS)или схема с двумя OTA-разделами). (Для поддержки режима Audio требуется выбрать Huge App) - Подключите устройство через USB и прошейте микроконтроллер.
- Откройте монитор порта со скоростью 115200 бод.
- После старта устройства откройте Serial Monitor (терминал с поддержкой ANSI-escape последовательностей рекомендуется).
- В консоли отобразится интерактивное древовидное меню управления.
- Навигация позволяет:
- Изменять параметры привязки выводов GPIO для датчиков, дисплея, кнопок и аудио.
- Задавать сетевые реквизиты (SSID, пароли, протоколы аутентификации).
- Выбирать типы подключенных сенсоров на каждом из 9 каналов.
- Просматривать текущее потребление памяти, свободное место под OTA и версию прошивки.
- Сохранять конфигурацию (
Save) или вызывать сброс до заводских значений (Factory Reset). - Использовать пункт
Exitдля освобождения порта и штатной работы контроллера.
- Продукт: GS32 FW8304
- Версия: 1.0.0
- Разработано для систем автоматизации и удаленного телеметрического мониторинга на базе чипов ESP32.