基于 ESP32 和 LAN8720A 的网关
扫描二维码
随时随地手机看文章
该项目推出了一款基于 ESP32 微控制器和 LAN8720A 以太网 PHY 的紧凑型、低功耗的 Modbus RTU 至以太网/ Wi-Fi 的网关。
其目标是将传统的 Modbus RTU(RS-485)工业设备连接到现代的 IP 网络和云端,从而能够利用 MQTT 进行远程监控和数据采集。
该网关已在包含可编程逻辑控制器(PLC)和工业能源计量设备的实际应用中进行了测试,并且适用于工业改造、物联网集成以及创客项目。
为何要开展此项目?
许多工业设备仍依赖于通过 RS-485 进行的 Modbus RTU 通信方式,这使得远程监控和系统集成变得十分困难。
该项目通过以下方式解决了那个问题:
•将 Modbus RTU 协议转换为 Modbus TCP / MQTT 协议
•支持以太网和 Wi-Fi 两种网络技术
•保持硬件设计简洁、价格合理且开放化
系统架构
硬件组件
•ESP32 — 主微控制器和协议处理程序
•RS-485 串口收发器(MAX485 / SP485 / SN65HVD1781)
•LAN8720A 以太网物理层(RMII 接口)
•以太网隔离变压器(汉润 HR911105A)
•电源输入和保护电路
高层级流程
•ESP32 通过 RS-485 接口从 Modbus RTU 从机读取/写入数据
•数据被处理并进行了格式化。
•数据通过以下方式发送至云端:
无线网络,或者以太网(LAN8720A)
数据通过以下方式传输至云端:无线网络(Wi-Fi),或以太网(LAN8720A)
与上层系统的所有通信均采用 MQTT 协议进行。
主要特点
✅ 模块化串行总线 RTU 主站(RS-485)
✅ 通过 LAN8720A 实现以太网(10/100 Mbps)连接
✅ Wi-Fi 连接功能
✅ MQTT 数据发布
✅ 与 PLC(可编程逻辑控制器)及工业设备兼容
✅ 基于 Arduino 的固件
✅ 低功耗(小于 2 瓦)
Modbus RTU 规范
接口:RS-485
支持的波特率:1200、2400、4800、9600……115200,最高可达 512000 波特。
最大从机数量:一个总线上最多可连接 32 个设备
保护:
•100 毫安保险丝(过载保护)
•TVS 二极管(6.8 伏)用于过压保护
•保护功能:100 毫安保险丝(过载保护)以及 6.8 伏瞬态电压抑制二极管(用于防浪涌保护)
以太网规范(LAN8720A)
•速度:10/100 Mbps
•工作温度:-40°C 至 +85°C
•隔离:汉润 HR911105A 变压器
•专为在工业环境中实现稳定运行而设计
功率与散热设计
•输入电压:7 - 40 伏(交流或直流)
•功耗:< 2 瓦
•运行时的典型板件温度:45 至 55 摄氏度
为确保可靠性:
•一个 5 伏特的散热风扇
•当温度升高时,散热器就会启动。
软件实现
•使用 Arduino IDE 开发而成
•模块化固件结构
用途:
•用于 RS-485 通信的 Modbus RTU 库
ESP32 网络协议栈(Wi-Fi / 以太网)
•用于云数据传输的 MQTT 协议
•用途:用于 RS-485 通信的 Modbus RTU 库、ESP32 网络协议栈(Wi-Fi / 以太网)、用于云端数据传输的 MQTT 协议
可以通过以下方式对数据进行监控:
•智能手机应用程序
•个人电脑/笔记本电脑软件(包括定制的 C# 工具)
•应用程序
•工业数据记录
•PLC 监控
•电能表(例如 MFM 设备)
•工厂自动化改造工程
•适用于传统系统的物联网网关
•用于 Modbus 及工业网络的教育项目
代码一
代码二
代码三
本文编译自hackster.io





