MB_GW 是基于 ESP32 + ESP-IDF 开发的轻量级 Modbus RTU <-> TCP 工业网关,内置 Vue 开发的 Web 可视化管理后台,支持 RS485 Modbus 设备网络接入、寄存器批量配置、数据采集与转发,适用于工业物联网、PLC、传感器、智能仪表等场景。
项目前后端一体化:底层通信逻辑使用 C 语言,Web 管理页面采用 Vue 开发,支持浏览器零客户端配置,开箱即用。
- Vue:47.0%(Web 管理前端)
- C:42.9%(ESP32 底层驱动、Modbus 协议栈、网关业务)
- CSS:7.7%(页面样式)
- CMake:2.2%(工程编译配置)
- Other:0.2%
-
Modbus 协议转换
- Modbus RTU(RS485)与 Modbus TCP 双向互通
- 支持多从站轮询、寄存器读写、批量采集
- 修复批量写入、时间戳显示异常问题
-
Web 可视化配置后台
- 浏览器直接访问网关内置网页,无需上位机软件
- 寄存器配置页面支持 CSV 文件批量导入导出
- 实时查看寄存器数据、通信日志、设备时间戳
- WiFi、串口参数、轮询周期、从站 ID 可视化配置
-
工程稳定保障
- 开启任务看门狗(Task Watchdog Timer),防止任务卡死
- 自定义 Flash 分区表
partitions.csv,支持网页静态文件存储与 NVS 参数持久化 - 完整 CMake 工程管理,依赖锁定文件
dependencies.lock保证编译一致性 - FreeRTOS 多任务分离:Web 服务、Modbus 采集、后台配置独立调度
-
数据特性
- 寄存器批量读写,支持批量下发指令
- 每条采集数据附带标准时间戳,方便时序数据分析
- 本地持久化配置,断电参数不丢失
MB_GW
├── main # ESP32 C 主程序,Modbus 网关核心逻辑
├── web # Vue 前端网页源码(网关内置 WebServer)
├── .clangd # C/C++ 代码补全配置
├── CMakeLists.txt # ESP-IDF 工程构建脚本 V1.0.0
├── dependencies.lock # 第三方依赖锁定版本
├── partitions.csv # 自定义 Flash 分区表(网页文件/NVS/应用分区)
├── sdkconfig # ESP-IDF 编译配置(开启任务看门狗)
└── README.md # 项目说明文档
- ESP32-C3 模组
- TTL 转 RS485 模块(MAX485)
- 直流 12V 供电
- WiFi 网络环境
- ESP-IDF V6.0.1 版本(推荐)
- Git
- Node.js(如需二次修改 Vue Web 前端)
- CMake / Ninja
git clone https://github.com/Johncora/MB_GW.git
cd MB_GWcd web
npm install
npm run build
# 编译产物会自动打包进 ESP32 Flash 文件系统# 配置工程参数(串口、WiFi、Modbus 串口引脚)
idf.py menuconfig
# 编译固件
idf.py build
# 烧录至 ESP32
idf.py flash -p /dev/ttyUSB0
# 打开串口日志
idf.py monitor -p /dev/ttyUSB0- 烧录固件,ESP32 上电启动
- 设备默认开启 AP 热点,或连接局域网 WiFi(可在网页配置)
- 浏览器输入网关 IP 进入 Web 管理页面
- 配置 RS485 串口参数(波特率、数据位、校验)、Modbus 从站列表
- 寄存器配置页面导入 CSV 批量添加采集点位
- 开启自动轮询,实时查看寄存器数值与时间戳日志
- 外部 Modbus TCP 客户端(上位机、SCADA)可直接连接网关访问 RTU 设备
- V1.0.0:初始版本,基础 Modbus 网关、Web 管理、自定义分区
- 迭代1:添加 Task Watchdog Timer,提升系统稳定性
- 迭代2:寄存器配置页面新增 CSV 导入功能
- 迭代3:修复批量写入寄存器异常、时间戳显示错乱问题
- 迭代4:优化移动端web布局
- 工厂老旧 Modbus RTU 仪表网络化改造
- 楼宇自控、水泵、温湿度传感器远程采集
- PLC 远程网络调试、多设备集中监控
- 物联网边缘采集网关,对接云平台/本地 SCADA
https://oshwhub.com/no_on/project_xasarmaw
MIT License,可自由商用、二次开发,保留开源声明即可。