ESP32 & Modbus RTU: Стабильный сбор данных и пересылка по MQTT
Обработка таймаутов RS485, буферизация во флеш-память при обрыве Wi-Fi и QoS 1
Обновлено: Октябрь 2026•Время чтения: 6 мин•
#ESP32#Modbus#MQTT#C++#IoT#FreeRTOS
Краткая суть (TL;DR)
Паттерны надежной прошивки ESP32 для промышленного оборудования: исключение зависания по WDT, фильтрация помех линий связи и кольцевой буфер SPIFFS.
1. Архитектура очередей FreeRTOS
Никогда не опрашивайте RS485 в том же потоке, где крутится Wi-Fi/MQTT стек. Разделите задачи:
Важные нюансы и рекомендации:
- ◆Core 0: Сетевая задача (Wi-Fi reconnect, MQTT клиент, ping watchdog).
- ◆Core 1: Опрос Modbus по таймеру (HardwareSerial2 с трансивером MAX485).
- ◆Обмен через xQueueSend / xQueueReceive с таймаутом.
2. Защита от потери телеметрии при сбоях сети
Если Wi-Fi пропал на 2 часа, контроллер не должен перезагружаться или терять показания счетчиков:
Важные нюансы и рекомендации:
- ◆Используйте циклическую очередь на LittleFS/SPIFFS размером до 512 КБ для локального хранения отчетов.
- ◆При восстановлении брокера MQTT отправляйте пачки с флагом backfilled: true, чтобы временные ряды на сервере легли по историческому timestamp.
