arduino ESP8266 Modbus 通信

本文作者作为业余电子爱好者,分享了如何在Arduino上使用ESP8266模块与Modbus通信,以连接溶解氧传感器。由于网上资料有限,作者通过研究库文件,在经历几晚的努力后成功编写出程序。现在提供带有详细注释的程序代码,期待同行交流指导。
摘要由CSDN通过智能技术生成

  自家鱼塘需要用到溶解氧传感器,淘宝搜索到了个modbus输出格式的东东。网上查了好多都没有找到想要的范例程序,没办法自己看库搞了几个晚上才搞出来。(我是个业余电子爱好者)

话不多说,来个详细注释的程序,望大佬指点指点。

#include <ModbusMaster.h> //ModbusMaster库

#include "SoftwareSerial.h" //虚拟串口2库

uint16_t DO_Set_up[2] = {0x0005,0x001E}; //要写入多个寄存的值(这里写了两个)
                                        //modbus库每次写入的是16个Bit

uint16_t temperature; 
uint16_t humidity;
uint8_t result; //测量标志位

ModbusMaster node; //建立modbus对象,node就是代表modbusmaster
SoftwareSerial myserial(D7,D8); //建立虚拟串口在D7 D8 脚

void setup() {
  Serial.begin(9600); 
  myserial.begin(9600); //虚拟串口波特率,网上好多这个地方都是错的
  node.begin(1,Serial); //这里是启动modbus通信,1是从机地址,通过串口1发送出去
                        //如果后面写的是myserial就是用虚拟串口发送
  myserial.println("abcdef");
  delay(100);  
  for(int i=0;i<2;i++) {
    node.setTransmitBuffer(i,DO_Set_up[i]); //调用MODBUS发送函数,发送2个16位数&
  • 2
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 9
    评论
Arduino ESP32 Modbus是一个用于ESP32的Modbus RTU客户端。Arduino是一家开源软硬件公司和制造商社区,它通过开源系统提供了很多灵活性。要使用Arduino ESP32 Modbus,您需要进行以下步骤: 1. 下载并安装Arduino IDE:从Arduino官网下载并安装Arduino IDE,这是开发Arduino项目的集成开发环境。 2. 安装ESP32开发板:在Arduino IDE中,点击“工具”菜单,选择“开发板”,然后选择“ESP32 Dev Module”或其他ESP32开发板。这将安装ESP32开发板的相关和工具。 3. 安装ESP32串口驱动程序:在Arduino IDE中,点击“工具”菜单,选择“端口”,然后选择ESP32所连接的串口。这将安装ESP32的串口驱动程序,以便与ESP32进行通信。 完成上述步骤后,您就可以开始使用Arduino ESP32 Modbus了。您可以编写代码来实现ESP32与其他Modbus设备之间的通信,例如读取和写入寄存器等操作。 以下是一个简单的示例代码,用于在ESP32上实现Modbus RTU通信: ```arduino #include <ModbusRTU.h> // 定义Modbus对象 ModbusRTU modbus; void setup() { // 初始化串口 Serial.begin(9600); // 设置Modbus串口 modbus.begin(9600, SERIAL_8N1, 2, 3); // 使用引脚2和3作为Modbus的RX和TX引脚 // 设置Modbus从机地址 modbus.setSlaveId(1); } void loop() { // 读取Modbus寄存器 uint16_t value = modbus.readHoldingRegisters(0, 1); // 从地址0开始读取一个寄存器的值 // 打印读取的值 Serial.print("Modbus value: "); Serial.println(value); delay(1000); } ``` 上述代码使用ModbusRTU来实现Modbus RTU通信。在`setup()`函数中,我们初始化了串口和Modbus对象,并设置了Modbus从机地址。在`loop()`函数中,我们使用`readHoldingRegisters()`函数读取了一个寄存器的值,并将其打印到串口。 请注意,上述代码仅为示例,您需要根据实际情况进行修改和扩展。
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值