← Вся база знаний/Микроконтроллеры & IoT

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.