Environment X6 Sensor
来自Waveshare Wiki
|
| ||||||||||||||||||||
| ||||||||||||||||||||
说明
产品简介
Environment X6 Sensor 基于德国 EC Sense 固态聚合物电化学技术,采用多电极集成结构与固态电解质体系,通过气体在工作电极表面的电化学反应输出电流信号,实现对目标气体浓度的高灵敏度检测。相比传统的气体传感器,固态聚合物设计具备无漏液、无中毒、基本无漂移、长寿命等优势。
应用场景
- 智能家居
- 环境空气质量监测
- 车载空气净化器
- 手持空气质量检测仪
- 工厂车间新风系统
工作原理
固态聚合物电化学传感器内部采用经典三电极体系结构(工作电极 WE、参比电极 RE、对电极 CE),多层印刷式工艺技术,通过单一电极多层催化活性位点设计、扩散调控层结构及智能信号解耦算法,实现了对多种气体的并行检测与识别。
产品参数
| Environment X6 Sensor | |||
| 供电电压 | 5V | 逻辑电压 | 3.3V |
| 通信接口 | UART | 通信波特率 | 9600 bps |
| 测量范围 | HCHO: 0~1 ppm TVOC: 0~5 ppm CO: 0~100 ppm |
分辨率 | HCHO: 0.001 ppm(有效检出值:0.015 ppm) TVOC: 0.001 ppm(有效检出值:0.050 ppm) CO: 0.001 ppm(有效检出值:<8 ppm) |
| 精度误差 | HCHO: 0~0.15 ppm(±0.02 ppm);0.16 ppm+(< ±2% FS) TVOC: 0~0.2 ppm(±0.05 ppm);0.2 ppm+(< ±2% FS) CO: 0~8 ppm(±2.5 ppm);8 ppm+(< ±1% FS) |
响应时间 | HCHO: T10 <5 s;T90 <90 s(注气式测量) TVOC: T10 <3 s;T90 <120 s(异丁烯气体注气式测量) CO: T10 <3 s;T90 <15 s(注气式测量) |
| 产品尺寸 | 23 × 25.5 × 9.5 mm | 固定孔径 | 2.0 mm |
| 工作电流 | 6.5 mA | 工作温度 | -40 ℃ ~ +55 ℃ |
| 工作湿度 | >15%RH | 使用寿命 | 10 年 |
- 传感器的IO电平为3.3V,如果使用5V的IO电平,需要经过电平转换,否则传感器会损坏
引脚说明
| 引脚号 | 标识 | 管脚描述 |
| 1 | VCC | 5V 电源正 |
| 2 | GND | 电源地 |
| 3 | RXD | UART 输入 |
| 4 | TXD | UART 输出 |
协议解析
UART 通信流程
- 串口默认配置为:数据位 8bit,停止位 1bit,无奇偶校验,无流控制,默认波特率 9600。
- 协议由 指令头、Data(数据)和 0-add8(校验和)组成。
说明:协议包遵循大端模式原则,即高字节在前,低字节在后。
指令介绍
- 气体浓度单位
0x00:IAQ 0x02:ppm IAQ 数值说明,遵循EPA标准 0~50 良好 51~100 中等 101~150 对敏感人群不健康 151~200 不健康 201~300 非常不健康 301~500 危险
- 传感器类型表
IAQ:0x33 TVOC:0x18 HCHO:0x17 CO:0x19
- 查询当前浓度
- 读取当前浓度命令格式如下:
| 指令头 | 校验和 |
| Byte0 | Byte1 |
| 70 | 0-add8 |
- 查询数据解码
- 当发送查询当前浓度的命令后,模组会返回如下数据:
| 指令头 | IAQ 数据 | TVOC 数据 | HCHO 数据 | CO 数据 | 温度数据 | 湿度数据 | 校验值 |
| Byte0 | Byte1-Byte4 | Byte5-Byte8 | Byte9-Byte12 | Byte13-Byte16 | Byte17-Byte18 | Byte19-Byte20 | Byte21 |
| 70 | 42 30 00 00 | 3D 35 64 F0 | 3D 53 D2 5B | 3D 08 19 55 | 0A C8 | 27 0F | E0 |
- 解析表
发送解析: 0x70----------------------指令头 0x90----------------------校验和 接收解析: 0x70----------------------指令头 0x42 0x30 0x00 0x00---------0x42300000 IAQ 被检测气体浓度值 转换成浮点数后的值为: 44.000f 0x3D 0x35 0x64 0xF0---------0x3D3564F0 TVOC 被检测气体浓度值 转换成浮点数后的值为: 0.044f 0x3D 0x53 0xD2 0x5B---------0x3D53D25B HCHO 被检测气体浓度值 转换成浮点数后的值为: 0.052f 0x3D 0x08 0x19 0x55---------0x3D081955 CO 被检测气体浓度值 转换成浮点数后的值为: 0.033f 0x0A 0xC8-----------------0x0AC8 = 2760 小数位数为2位,温度为:27.6 ℃ 0x27 0x0F-----------------0x270F = 9999 小数位数为2位,湿度为:99.99% rh 0xE0----------------------校验和
- 读取传感器参数
- 读取传感器参数命令格式如下:
| 指令头 | 气体编号 | 校验和 |
| Byte0 | Byte1 | Byte2 |
| 72 | 00 | 0-add8 |
- 查询数据解码
- 当发送读取传感器参数命令后,模组会返回如下数据:
| 指令头 | 气体编号 | 气体名称 | 量程 | 单位 | 校验值 |
| Byte0 | Byte1 | Byte2 | Byte3-Byte4 | Byte5 | Byte6 |
| 72 | 00 | 19 | 03 E8 | 02 | 87 |
- 解析表
发送解析: 0x72----------------------指令头 0x00----------------------IAQ 0x01----------------------TVOC 0x02----------------------HCHO 0x03----------------------CO 0x8D----------------------校验和 接收解析: 0x72----------------------指令头 0x00----------------------IAQ 0x33----------------------被检测气体名称 0x03 0xE8-----------------0x01F4 = 500,量程: 500 0x00----------------------浓度单位,从表【气体浓度单位表】中得出: IAQ 0x87----------------------校验和
- 读取LED状态
- 读取LED状态命令格式如下:
| 指令头 | 校验和 |
| Byte0 | Byte1 |
| 74 | 0-add8 |
- 查询数据解码
- 当发送读取LED状态命令后,模组会返回如下数据:
| 指令头 | LED状态 | 校验值 |
| Byte0 | Byte1 | Byte2 |
| 74 | 01 | 8B |
- 解析表
发送解析: 0x74----------------------指令头 0x8C----------------------校验和 接收解析: 0x74----------------------指令头 0x01----------------------LED闪烁状态(0x00:关闭,其他:闪烁) 0x8B----------------------校验和
- 设置运行灯状态
- 下行指令 (Tx) 格式:
| 指令头 | LED控制 | 校验和 |
| Byte0 | Byte1 | Byte2 |
| 56 | 00 | 0-add8 |
- 上行数据 (Rx) 格式:
| 指令头 | 保留 | 返回值 | 校验值 |
| Byte0 | Byte1 | Byte2-Byte3 | Byte4 |
| 56 | 00 | 4F 4B | 10 |
- 解析表
发送解析: 0x56----------------------指令头 0x00----------------------关闭运行灯 0xAA----------------------校验和 接收解析: 0x56----------------------指令头 0x00----------------------保留 0x4F 0x4B-----------------设置成功 0x10----------------------校验和
- 进入休眠模式
- 进入休眠模式命令格式如下:
| 指令头 | 休眠命令 | 校验和 |
| Byte0 | Byte1-Byte5 | Byte6 |
| 54 | 73 6C 65 65 70 | 0-add8 |
- 查询数据解码
| 指令头 | 保留 | 返回值 | 校验值 |
| Byte0 | Byte1 | Byte2-Byte3 | Byte4 |
| 54 | 00 | 4F 4B | 12 |
- 解析表
发送解析: 0x54----------------------指令头 0x73 0x6C 0x65 0x65 0x70----ASCII: sleep 0x93----------------------校验和 接收解析: 0x54----------------------指令头 0x00----------------------保留 0x4F 0x4B-----------------执行成功 0x12----------------------校验和
- 退出休眠模式
| 指令头 | 唤醒命令 | 校验和 |
| Byte0 | Byte1-Byte5 | Byte6 |
| 55 | 61 77 61 6B 65 | 0-add8 |
- 查询数据解码
| 指令头 | 保留 | 返回值 | 校验值 |
| Byte0 | Byte1 | Byte2-Byte3 | Byte4 |
| 55 | 00 | 4F 4B | 11 |
- 解析表
发送解析: 0x55----------------------指令头 0x61 0x77 0x61 0x6B 0x65----ASCII: awake 0xA2----------------------校验和 接收解析: 0x55----------------------指令头 0x00----------------------保留 0x4F 0x4B-----------------执行成功 0x11----------------------校验和
- 获取传感器序列号
| 指令头 | 校验和 |
| Byte0 | Byte1 |
| 71 | 0-add8 |
- 查询数据解码
| 指令头 | Sensor SN | 校验值 |
| Byte0 | Byte1-Byte6 | Byte7 |
| 71 | 12 34 56 78 91 23 | C7 |
- 解析表
发送解析: 0x71----------------------指令头 0x8F----------------------校验和 接收解析: 0x71----------------------指令头 0x12 0x34 0x56 0x78 0x91 0x23---传感器序列号: 123456789123 0xC7----------------------校验和
- 获取软件版本号
| 指令头 | 校验和 |
| Byte0 | Byte1 |
| 73 | 0-add8 |
- 查询数据解码
| 指令头 | Firmware Version | 校验值 |
| Byte0 | Byte1-Byte19 | Byte20 |
| 73 | 69 4E 6F 73 65 58 36 32 30 32 35 31 31 31 32 31 34 33 39 | A2 |
- 解析表
发送解析: 0x73----------------------指令头 0x8D----------------------校验和 接收解析: 0x73----------------------指令头 0x69 0x4E 0x6F 0x73 0x65 0x58 0x36 0x32 0x30 0x32 0x35 0x31 0x31 0x31 0x32 0x31 0x34 0x33 0x39 转换成ASCII码: iNoseX6202511121439 0xA2----------------------校验和
快速测试
- 测试软件 串口调试助手 搭配串口工具,主要作用为:快速测试
- 测试准备
- windows电脑
- USB TO TTL(B) 1PCS
- Environment X6 Sensor 1PCS
- 配套线材
- 硬件连接
- 开始测试
- 把串口连接电脑 USB 口
- 使用串口调试助手(SSCOM),选择好对应的端口号,波特率选9600,打开串口,并将校验位选择0-add8
- 以十六进制发送命令:70,则可读取数据:
- 把串口连接电脑 USB 口
①发送查询命令
②获取实时数据
产品尺寸
树莓派使用
- 关于树莓派系统安装与使用可以参考这个链接。
- 成功开机后,进行树莓派环境配置
下载程序
sudo apt install gpiod libgpiod-dev cd ~ git clone https://gitee.com/waveshare/Environment-X6-Sensor.git cd Environment-X6-Sensor/examples/raspberrypi
UART示例使用
开启树莓派 UART
- 在树莓派终端输入命令:sudo raspi-config nonint do_serial 2
- 再弹出的窗口中第一个选择NO,第二个选择YES,最后选择OK.
硬件连接
- 参考下图进行连接:
运行C程序
cd ~/environment-x6-sensor/examples/raspberrypi/c/ make ./main
运行Python程序
cd ~/environment-x6-sensor/examples/raspberrypi/python/example python main.py
ESP32S3使用
- 关于ESP32S3的环境搭建跟基本使用,请参考以下链接:
- 环境搭建完成后,即可连接传感器,下载示例
硬件连接
- 参考下图进行连接:
Arduino esp32示例使用
- 进入到Environment-X6-Sensor\examples\esp32s3\arduino\environment_x6_sensor_test,双击environment_x6_sensor_test.ino文件
- 选择开发板:
- 选择ESP32S3的端口,然后进行编译上传
- 上传完成后,打开串口监测器,就会输出相关的信息。
esp-idf示例使用
- 进入到Environment-X6-Sensor\examples\esp32s3\esp-idf,通过vs code打开此路径
- 选择开发板:
- 选择ESP32S3的端口,然后进行编译上传
- 上传完成后,打开串口监测器,就会输出相关的信息。
Micropython示例使用
- 进入到Environment-X6-Sensor\examples\esp32s3\Micropython,双击environment_x6_sensor_test.py文件
- 设置芯片型号为esp32,选择好对应的端口:
- 选择ESP32S3的端口,然后运行程序
- Shell就会输出相关的信息。
Raspberrypi Pico使用
- 关于Raspberrypi Pico的环境搭建跟基本使用,请参考以下链接:
- 环境搭建完成后,即可连接传感器,下载示例
硬件连接
- 参考下图进行连接:
arduino pico 示例使用
- 进入到Environment-X6-Sensor\examples\pico\arduino\environment_x6_sensor_test,双击 environment_x6_sensor_test.ino 打开工程
- 选择好芯片型号跟端口:
- 上传完成后,打开串口监测器,就会输出相关的信息。
Micropython示例使用
- 先给Raspberrypi Pico刷入micropython固件
- 进入到Environment-X6-Sensor\examples\pico\micropython,双击environment_x6_sensor_test.py文件
- 选择开发板:
- 选择Raspberrypi pico的端口,然后运行程序
- Shell就会输出相关的信息。
Arduino使用
- Arduino开发板的IO电平必须为3.3V,如果使用5V的IO电平,需要经过电平转换,否则传感器会损坏
- 使用waveshare R3/R4需要将以下的跳线帽设置成3.3V,才能使用
Arduino示例使用
硬件连接
- 参考下图进行连接:
运行程序
- 进入到Environment-X6-Sensor\examples\arduino\environment_x6_sensor_test,双击environment_x6_sensor_test.ino文件
- 选择开发板:
- 选择开发板的端口,然后进行编译上传
- 上传完成后,打开串口监测器,就会输出相关的信息。
API简介
- environment_x6_init():Environment X6 Sensor初始化
- environment_x6_get_concentration():获取实时浓度值
- environment_x6_get_sensor_param():获取传感器参数,包括检测范围跟单位
- environment_x6_get_led():获取LED的状态,开还是关
- environment_x6_set_led():设置LED的状态
- environment_x6_sleep():使传感器进入休眠
- environment_x6_wakeup():唤醒传感器
- environment_x6_get_serial():获取SN码
- environment_x6_get_version():获取版本号
效果展示
- 默认输出实时浓度,如果需要使用其他示例,将不同示例值设置成1即可:
- Arduino
- Micropython
- RPI
FAQ
Q1. 波特率是固定9600吗?
是的,目前默认是9600波特率。







