Arduino IDE 下使用 RS485 与 JW01 二氧化碳传感器通信

本教程将指导您如何在 Arduino IDE 下使用 RS485 模块与 JW01 二氧化碳传感器进行通信,并提供代码示例和连接方法。

1. 连接硬件

首先,准备好以下硬件:

  • NodeMCU 开发板
  • JW01 二氧化碳传感器
  • RS485 转 TTL 模块
  • 杜邦线若干

将 RS485 转 TTL 模块的 A、B、GND 三个引脚分别连接到 JW01 二氧化碳传感器上的 A、B、GND 三个引脚上。然后将模块的 VCC、GND、TX、RX 四个引脚分别连接到 NodeMCU 开发板上的 3.3V、GND、D2、D1 四个引脚上。最后将 NodeMCU 开发板通过 USB 线连接到电脑。

2. 安装库文件

打开 Arduino IDE,选择菜单栏的“工具” -> “管理库”,在弹出的窗口中搜索“ModbusMaster”,点击“安装”按钮安装这个库文件。

3. 编写代码

在 Arduino IDE 中新建一个项目,然后将以下代码粘贴进去:

#include <ModbusMaster.h>

// 定义 RS485 转 TTL 模块的引脚
#define RS485_RX  D2
#define RS485_TX  D1

// 定义 JW01 二氧化碳传感器的 Modbus 地址
#define JW01_SLAVE_ID  1

// 创建一个 ModbusMaster 对象
ModbusMaster node(RS485_TX, RS485_RX);

void setup() {
  Serial.begin(9600);
  while (!Serial);
  
  // 初始化 RS485 转 TTL 模块
  pinMode(RS485_RX, INPUT);
  pinMode(RS485_TX, OUTPUT);
  
  // 初始化 ModbusMaster
  node.begin(JW01_SLAVE_ID);
}

void loop() {
  // 读取 JW01 二氧化碳传感器的数据
  uint16_t data[2];
  uint8_t result = node.readHoldingRegisters(0x0001, 2);
  
  if (result == node.ku8MBSuccess) {
    Serial.print("CO2 Concentration: ");
    Serial.print(data[0]);
    Serial.println(" ppm");
    Serial.print("Temperature: ");
    Serial.print((int16_t)data[1] / 10.0);
    Serial.println(" ℃");
  } else {
    Serial.println("Read data failed.");
  }

  delay(1000);
}

代码中首先定义了 RS485 转 TTL 模块的引脚和 JW01 二氧化碳传感器的 Modbus 地址。然后创建了一个 ModbusMaster 对象,并在 setup() 函数中初始化了 RS485 转 TTL 模块和 ModbusMaster。在 loop() 函数中,通过 ModbusMaster 读取 JW01 二氧化碳传感器的数据,然后将 CO2 浓度和温度输出到串口。

4. 上传代码并测试

将 NodeMCU 开发板通过 USB 线连接到电脑,选择对应的开发板和串口,点击“上传”按钮将代码上传到开发板上。上传完成后打开串口监视器,可以看到 JW01 二氧化碳传感器的 CO2 浓度和温度数据。


原文地址: https://www.cveoy.top/t/topic/ngGE 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录