基于Arduino的MH-Z19C二氧化碳浓度传感器使用

MH-Z19C是一款可以测量空气二氧化碳浓度值的传感器,其主要参数如下表所示,工作电压为5v,预热时间大概为1分钟,通信方式有串口UART和PWM通信(二选一即可) 。

下面是它引脚功能图,本次选用串口通信方式获取传感器数据,Vin为输入工作电压为5v,GND和单片机地线相连,选择一组串口,这边选用的是Arduino上0和1引脚的RX-TX引脚,将其和模块上的TX和RX反接。

下面为模块说明书上的通讯获取的数组,通过Arduino将数组数据发送给模块等待模块应答,接收回传数据即可。 

下面是回传数据格式,数据帧头为0xFF,Byte2为二氧化碳浓度值高八位,Byte3为低八位。

CO2 concentration = HIGH * 256 + LOW

上式为浓度计算公式单位为PPM,只要将高八位乘以256+低八位数据就是我们需要求得的浓度值。 

 下面为完整代码提供参考,使用51单片机和STM32单片机通信原理也是相同的,修改移植即可。

// MH-Z19C二氧化碳传感器的完整通信程序

void setup() {
  Serial.begin(9600); // 初始化Arduino板的硬串口
}

void loop() {
  // 发送开始通信的指令
  byte startCommand[] = {0xFF, 0x01, 0x86, 0x00, 0x00, 0x00, 0x00, 0x00, 0x79};
  Serial.write(startCommand, sizeof(startCommand));

  // 等待传感器响应
  delay(100);

  // 从MH-Z19C传感器读取数据
  while (Serial.available() > 0) {
    int response = Serial.read();

    // 判断数据帧是否正确
    if (response == 0xFF) {
      byte data[8];
      // 读取剩余的7个字节的数据
      for (int i = 1; i < 8; i++) {
        data[i] = Serial.read();
      }

      // 计算二氧化碳浓度
      int co2 = 256 * data[2] + data[3];

      // 打印二氧化碳浓度到串口监视器
      Serial.print("CO2 Concentration: ");
      Serial.print(co2);
      Serial.println(" ppm");
    }
  }

  delay(2000); // 2秒钟更新一次数据
}

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小白研究僧学习嵌入式

谢谢您的鼓励,会持续努力滴!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值