通过软串口实现Co2传感器被动问询返回浓度数据

2022-02-062.1万
AI 快速预览详细 收起
本文介绍了如何通过软串口实现CO2传感器的被动问询并返回浓度数据。首先定义了问询帧字符串和软串口,然后定义了问询帧发送函数和返回帧输出函数。最后通过循环执行问询和读取输出,实现了稳定的CO2浓度数据读取。提供了详细的代码和步骤,适用于Arduino平台,使用SoftwareSerial库。
通过软串口实现Co2传感器被动问询返回浓度数据图1
如上图,官方描述说,软串口输出数据与读取数据同时使用,可能导致数据异常,我在读取co2传感器项目中测试一下这个问题,好像没遇到?


测试项目如下:
1、主程序相关定义
首先定义一个问询帧字符串,正常情况下使用unsigned char mind_s_co2ask[9] = {0xFF, 0x01, 0x03, 0x03, 0x01, 0x00, 0x00, 0x00, 0xF9};这样定义就行,可是mind+中只有列表可以用,只能用笨办法制造一个;
然后定义软串口,初始化软串口和物理串口;

通过软串口实现Co2传感器被动问询返回浓度数据图2

2、定义问询帧发送函数
定义一个向软串口发送问询帧函数,共9位,需要进行类型转换,原始输出成HEX格式;
通过软串口实现Co2传感器被动问询返回浓度数据图3

3、定义返回帧输出函数
如上图,定义向物理串口输出返回帧函数,连续读取12位返回帧数据,需要转换成ascii码字符串并进行合并;
通过软串口实现Co2传感器被动问询返回浓度数据图4

4、循环执行问询和读取输出
循环执行问询帧发送,软串口返回帧数据读取以及物理串口输出返回帧数据即可;
通过软串口实现Co2传感器被动问询返回浓度数据图5

5、完成效果
串口输出数据前面红色部分是HEX格式的问询帧数据,后面部分是传感器返回的CO2浓度数据
通过软串口实现Co2传感器被动问询返回浓度数据图6

ps:其实如果用手动编程方式,几行代码就搞定了;
  1. #include <SoftwareSerial.h>
  2. // 创建对象
  3. SoftwareSerial softwareSerial1(3, 6);
  4. unsigned char mind_s_co2ask[9] = {0xFF, 0x01, 0x03, 0x03, 0x01, 0x00, 0x00, 0x00, 0xF9};
  5. // 主程序开始
  6. void setup() {
  7.         softwareSerial1.begin(9600);
  8.         Serial.begin(9600);
  9. }
  10. void loop() {
  11.         softwareSerial1.write(mind_s_co2ask,9);  //软串口输出问询帧
  12.         Serial.write(mind_s_co2ask,9);  //物理串口输出问询帧
  13.         //softwareSerial1.println();
  14.         while (!softwareSerial1.available()) {}   //如果软串口有数据
  15.         for (int index = 0; index < 12; index++) {
  16.                 Serial.write(softwareSerial1.read());  //连续读取12次返回帧数据,并输出至物理串口  
  17.         }
  18.         Serial.println("");
  19.         delay(1000);
  20. }
复制代码


mind+这种积木编程模式非常好,就是变量类型和函数太少了,而且使用方式也不一样,对于初学者来说,容易引起困惑,希望在后续升级中越来越完善。

创作许可协议

本项目采用 None(不开放任何权利,保留所有权利) 进行许可。

评论(5)
KkQ1VrB7W776
KkQ1VrB7W776
请问作者用的是哪款传感器
三春牛-创客
三春牛-创客
希望mind+能做得更好,更加让初学者适应一下。
三春牛-创客
三春牛-创客
所以你不用很担心。
三春牛-创客
三春牛-创客
冲突的情况有时候有,有时候没有
Forgotten
Forgotten
冲突提示里面的都是警告并非错误,如页面最上面写的并不是一定会出现错误。
默认的变量类型为了初学者(没有任何编程基础的小白)使用方便只保留了数字和字符串两种类型,数组这种可以尝试使用开放用户库来自定义一个高级库满足各种高级玩法。
皮皮鲁的鲁鲁西
皮皮鲁的鲁鲁西
作者
回复Forgotten
学习了,谢谢!
- 没有更多了 -