jw01-v2.2三合一传感器使用方法:esp8266,arduino

2024-01-12 07:28

本文主要是介绍jw01-v2.2三合一传感器使用方法:esp8266,arduino,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

首先,看看这个传感器的接口参数和各指标的数据算法:

1.接口
G:电源负极
+5:电源正极
A:RXD接口
B:TXD接口

波特率:9600bps
数据位:8位
停止位:1位
检验位:无

2.串口数据格式:
B1 模块地址 2Ch
B2 模块地址 E4h
B3 TVOC高 0XXh
B4 TVOC低 0XXh
B5 CH2O高 0XXh
B6 CH2O低 0XXh
B7 CO2高 0XXh
B8 CO2低 0XXh
B9 校验和 XXh

说明:
1.B1,B2的2CH,E4H是模块固定地址;
2.校验和B9=unit_8(B1+B2+B3+B4+B5+B6+B7+B8);
3.污染气体浓度值(毫克每立方米)=(XX浓度高*256+XX浓度低)*0.01

例如读到的值是:

2C E4 00 0A 00 03 01 68 86

则得出如下结果:

1.校验和:86h=2CH +E4H+00H+0AH+00H+03H+01H+68H
2.总挥发性有机化合物TVOC数值:(B3256+B4)0.001=(00h256+0Ah)0.01=0.01毫克每立方米
3.甲醛CH2O数值:(B5
256+B6)0.001=(00h256+03h)0.001=0.003毫克每立方米
4.二氧化碳CO2数值:B7
256+B8=01h
256+68h=360PPM

根据以上的接口参数和数据格式,以下是基于ESP8266的Arduino代码示例,用于读取并计算TVOC、CH2O和CO2的浓度值:

#include <SoftwareSerial.h>SoftwareSerial co2Serial(D2, D3); // RX, TXvoid setup() {Serial.begin(9600);co2Serial.begin(9600);
}void loop() {if (co2Serial.available() >= 9) {byte data[9];for (int i = 0; i < 9; i++) {data[i] = co2Serial.read();}// 计算校验和byte checksum = 0;for (int i = 0; i < 8; i++) {checksum += data[i];}if (data[0] == 0x2C && data[1] == 0xE4 && data[8] == checksum) {// 计算浓度值int tvoc = (data[2] * 256 + data[3]) * 0.01;int ch2o = (data[4] * 256 + data[5]) * 0.01;int co2 = data[6] * 256 + data[7];// 打印结果Serial.print("TVOC: ");Serial.print(tvoc);Serial.println(" mg/m^3");Serial.print("CH2O: ");Serial.print(ch2o);Serial.println(" mg/m^3");Serial.print("CO2: ");Serial.print(co2);Serial.println(" PPM");}}delay(1000);
}

在这个示例代码中,使用了ESP8266的软件串口(SoftwareSerial)库来模拟串口通信。您需要将传感器的RXD引脚连接到ESP8266的D2引脚,将传感器的TXD引脚连接到ESP8266的D3引脚。

请确保将ESP8266与传感器的共地(GND)连接在一起,并为ESP8266提供适当的电源(+5V和GND)连接。

希望这能帮到您!

这篇关于jw01-v2.2三合一传感器使用方法:esp8266,arduino的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/597180

相关文章

深入理解Go语言中二维切片的使用

《深入理解Go语言中二维切片的使用》本文深入讲解了Go语言中二维切片的概念与应用,用于表示矩阵、表格等二维数据结构,文中通过示例代码介绍的非常详细,需要的朋友们下面随着小编来一起学习学习吧... 目录引言二维切片的基本概念定义创建二维切片二维切片的操作访问元素修改元素遍历二维切片二维切片的动态调整追加行动态

prometheus如何使用pushgateway监控网路丢包

《prometheus如何使用pushgateway监控网路丢包》:本文主要介绍prometheus如何使用pushgateway监控网路丢包问题,具有很好的参考价值,希望对大家有所帮助,如有错误... 目录监控网路丢包脚本数据图表总结监控网路丢包脚本[root@gtcq-gt-monitor-prome

Python通用唯一标识符模块uuid使用案例详解

《Python通用唯一标识符模块uuid使用案例详解》Pythonuuid模块用于生成128位全局唯一标识符,支持UUID1-5版本,适用于分布式系统、数据库主键等场景,需注意隐私、碰撞概率及存储优... 目录简介核心功能1. UUID版本2. UUID属性3. 命名空间使用场景1. 生成唯一标识符2. 数

Java中读取YAML文件配置信息常见问题及解决方法

《Java中读取YAML文件配置信息常见问题及解决方法》:本文主要介绍Java中读取YAML文件配置信息常见问题及解决方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要... 目录1 使用Spring Boot的@ConfigurationProperties2. 使用@Valu

SpringBoot中如何使用Assert进行断言校验

《SpringBoot中如何使用Assert进行断言校验》Java提供了内置的assert机制,而Spring框架也提供了更强大的Assert工具类来帮助开发者进行参数校验和状态检查,下... 目录前言一、Java 原生assert简介1.1 使用方式1.2 示例代码1.3 优缺点分析二、Spring Fr

Android kotlin中 Channel 和 Flow 的区别和选择使用场景分析

《Androidkotlin中Channel和Flow的区别和选择使用场景分析》Kotlin协程中,Flow是冷数据流,按需触发,适合响应式数据处理;Channel是热数据流,持续发送,支持... 目录一、基本概念界定FlowChannel二、核心特性对比数据生产触发条件生产与消费的关系背压处理机制生命周期

java使用protobuf-maven-plugin的插件编译proto文件详解

《java使用protobuf-maven-plugin的插件编译proto文件详解》:本文主要介绍java使用protobuf-maven-plugin的插件编译proto文件,具有很好的参考价... 目录protobuf文件作为数据传输和存储的协议主要介绍在Java使用maven编译proto文件的插件

Java 方法重载Overload常见误区及注意事项

《Java方法重载Overload常见误区及注意事项》Java方法重载允许同一类中同名方法通过参数类型、数量、顺序差异实现功能扩展,提升代码灵活性,核心条件为参数列表不同,不涉及返回类型、访问修饰符... 目录Java 方法重载(Overload)详解一、方法重载的核心条件二、构成方法重载的具体情况三、不构

SpringBoot线程池配置使用示例详解

《SpringBoot线程池配置使用示例详解》SpringBoot集成@Async注解,支持线程池参数配置(核心数、队列容量、拒绝策略等)及生命周期管理,结合监控与任务装饰器,提升异步处理效率与系统... 目录一、核心特性二、添加依赖三、参数详解四、配置线程池五、应用实践代码说明拒绝策略(Rejected

C++ Log4cpp跨平台日志库的使用小结

《C++Log4cpp跨平台日志库的使用小结》Log4cpp是c++类库,本文详细介绍了C++日志库log4cpp的使用方法,及设置日志输出格式和优先级,具有一定的参考价值,感兴趣的可以了解一下... 目录一、介绍1. log4cpp的日志方式2.设置日志输出的格式3. 设置日志的输出优先级二、Window