1. 项目概述
Modbus作为工业自动化领域最常用的通信协议之一,在Arduino项目中实现主机功能可以让我们轻松连接各种工业传感器、PLC设备。很多初学者觉得Modbus协议复杂难懂,其实用Arduino实现基础的主机通信功能,只需要掌握几个核心要点。
我在工业自动化领域做了8年开发,经常需要用到Arduino对接各种Modbus从机设备。今天就把最实用的代码实现方案分享给大家,保证即使没有Modbus基础的开发者也能快速上手。我们将使用最常用的Modbus RTU协议,通过RS485接口进行通信。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 硬件准备与接线
2.1 所需硬件清单
- Arduino开发板(UNO或Mega均可)
- MAX485 RS485转TTL模块
- Modbus从机设备(如温湿度传感器)
- 杜邦线若干
- 120Ω终端电阻(长距离通信时需要)
2.2 硬件连接示意图
将MAX485模块与Arduino连接时需要注意:
- Arduino的TX接MAX485的DI
- Arduino的RX接MAX485的RO
- 选择一个数字引脚控制MAX485的DE/RE引脚(我们使用D2)
- MAX485的A/B端接从机设备的A/B端
注意:RS485通信需要共地,记得将Arduino的GND与从机设备的GND连接。
3. 软件环境配置
3.1 安装必要库
我们需要使用ModbusMaster库,这是Arduino上最成熟的Modbus主机实现:
- 打开Arduino IDE
- 点击"工具"->"管理库"
- 搜索"ModbusMaster"
- 安装最新版本
3.2 库函数概览
这个库提供了几个关键方法:
begin()- 初始化Modbus通信readHoldingRegisters()- 读取保持寄存器writeSingleRegister()- 写入单个寄存器setTransmitEnablePin()- 设置RS485方向控制引脚
4. 基础通信代码实现
4.1 初始化设置
cpp复制#include <ModbusMaster.h>
#define MAX485_DE 2
#define MAX485_RE_
