Задача
Разработать программное обеспечение для встраиваемого шлюза на базе ESP32. Шлюз предназначен для приема данных от устройств по протоколу Modbus (через RS-485) и передачи их через LoRa-MESH сеть на головной контроллер или сервер. Также возможна обратная передача команд.
Основные функциональные требования
- Реализация протокола LoRa-MESH (например, RadioLib или LibreWave) для автоматического построения и восстановления ячеистой сети.
- Поддержка RS-485 с протоколом Modbus RTU: шлюз должен работать как Modbus Master для опроса датчиков/исполнительных устройств.
- Переупаковка данных из блоков Modbus в пакеты LoRa и обратная трансляция команд с мастер-ноды.
- Сбор и агрегация статистики (RSSI, SNR, нагрузка сети) с выводом на консольный интерфейс или в веб-морду.
Технические детали
- ПО пишется на языках C/C++ в среде PlatformIO или Arduino IDE для ESP32.
- Обязательна поддержка OTA-обновлений (Wi-Fi MQTT/HTTP).
- Автоматический выбор канала и рестарт ноды при сбое связи.
- Настройки сети (ID, частоты, мощность) хранятся в NVS и могут быть изменены сервисным консольным интерфейсом по BLE или UART.
Ожидаемый результат
- Исходный код проекта с комментариями.
- BIХ готовый к заливке на плату (среда разработки PlatformIO).
- Краткая документация: схема подключения RS-485 и антенны, список пин-маппинга, инструкция по настройке и обновлению.
Важные условия
- Все названия фирм, сайтов, телефонов и ссылок из задания удалены. Любой фирменный софт заменить библиотеками с открытой лицензией (GPL, MIT).
- Код должен быть совместим с двухъядерным режимом ESP32.
- Предусмотреть логирование ошибок и вывод в консоль через USB-UART.