
一、通信プロトコル概述
1. デフォルト通信パラメータ
- Baud rate:
9600 - data bit:
8 - check digit:无
- stop bit:
1(即9600/8/N/1) - デフォルトデバイスアドレス:
0x01 - 応答時間:< 100ms
2. CRC verification
- 算法:CRC-16/Modbus(多項式
0x8005) - チェックコード格式:2 bytes,高位前に(如
CRC_H CRC_L)。 - 計算工具:参照 CRCTool 或规格书第 IX 章代码。
二、协议功能详解
1. 読み取りデバイスアドレス和固件版本
Function:取得当前デバイスアドレス和固件版本号。
リクエスト格式(マスター→Sensors)
| バイト位置 | data | 説明 |
|---|---|---|
| 0 | 0xFE | 放送アドレス(全装備。レスポンス) |
| 1 | 0x11 | function code(読み取りアドレス) |
| 2-5 | 0x00 | 固定填充 |
| 6-7 | CRC | CRC verification码 |
サンプル命令:
FE 11 00 00 00 01 28 06
応答の形式(Sensors→マスター)
| バイト位置 | data | 説明 |
|---|---|---|
| 0 | 0x01 | Device address |
| 1 | 0x11 | function code |
| 2 | 0x02 | データ長さ(2 bytes) |
| 3 | 0x12 | 固件版本(如 0x12=V1.2) |
| 4 | 0x01 | 当前アドレス |
| 5-6 | CRC | CRC verification码 |
サンプルレスポンス:
01 11 02 12 01 70 5C
Parse:
- 固件版本:
V1.2 - Device address:
0x01
2. 修改デバイスアドレス
Function:更改デバイス Modbus address(範囲 1~247)。
リクエスト格式(マスター→Sensors)
| バイト位置 | data | 説明 |
|---|---|---|
| 0 | 当前アドレス | 原アドレス(如 0x01) |
| 1 | 0x06 | function code(修改アドレス) |
| 2-4 | 0x00 | 固定填充 |
| 5 | 新アドレス | 目标アドレス(如 0x02) |
| 6-7 | CRC | CRC verification码 |
サンプル命令(修改アドレス为 0x02):
01 06 00 00 00 02 08 0B
応答の形式(Sensors→マスター)
与リクエスト格式一致,戻る修改后的アドレス確認。
サンプルレスポンス:
01 06 00 00 00 02 08 0B
説明:応答データリクエストと同じ。表示修改成功。
3. 読み取りセンサーはデータ
Function:読み取り指定レジスタ的センサーはデータ(サポート单次読み取り多个センサーは)。
リクエスト格式(マスター→Sensors)
| バイト位置 | data | 説明 |
|---|---|---|
| 0 | Device address | 如 0x01 |
| 1 | 0x03 | function code(Read switch status) |
| 2-3 | starting address | レジスタ開始アドレス(高位前に) |
| 4-5 | number of registers | 需読み取り的レジスタの数 |
| 6-7 | CRC | CRC verification码 |
サンプル命令(読み取りすべて 11 个センサーはデータ):
01 03 00 00 00 0B C5 CD
応答の形式(Sensors→マスター)
| バイト位置 | data | 説明 |
|---|---|---|
| 0 | Device address | 如 0x01 |
| 1 | 0x03 | function code |
| 2 | データ長さ | byte count(number of registers × 2) |
| 3~N | センサーはデータ | すべてのレジスタ。 2 bytes(高位前に) |
| N+1~N+2 | CRC | CRC verification码 |
サンプルレスポンス(部分データ):
01 03 16 00 96 00 64 00 32 00 30 00 28 00 1E 01 2C 00 0A 00 14 70 5C
Parse:
00 96→ eCO₂ = 150 ppm00 64→ TVOC = 100 ppb00 32→ CH₂O = 50 μg/m³- 温湿度データ:
- 湿度:
0x012C→ 300 → 300/100 = 30.0%RH - temperature:
0x000A→ 10 → 10/100 = 0.10℃
4. 系统参数設定(エキスパート功能)
4.1 read/設定ボーレート
register address:0x0103(ボーレート代码见附录表)。
読み取りボーレートリクエスト:
01 03 01 03 00 01 CRC
設定ボーレートリクエスト(设为 115200):
01 06 01 03 00 07 CRC
4.2 校准センサーはデータ
register address:
- 温度校准:
0x011D - 湿度校准:
0x011C
サンプル命令(温度校准 +2.5℃):
01 06 01 1D 00 FA 98 73
説明:
00 FA→ 250(即 250/100 = 2.5℃)- 负值需转换为补码(如
0xFF9C→ -100 → -1.00℃)。
三、データの解析方法
1. 計算公式
| センサーはタイプ | 公式 | example |
|---|---|---|
| eCO₂ | CO₂ = (CO₂_H << 8) + CO₂_L | 0x0096 → 150 ppm |
| temperature | temperature = 記号付き。值 / 100 | 0xFF9C → -100 → -1.00℃ |
| Illuminance | Lux = (Lux_H << 8) + Lux_L | 0x01F4 → 500 Lux |
2. 記号付き。数処理
- 方法 1:直接转为記号付き。整数(如
0xFF9C→ -100)。 - 方法 2:若值 > 32767,则
真实值 = (元の值 - 65536) / 100。
四、Precautions
- 预热时间:VOC モジュール需预热 ≥3 分,其他センサーは上电即用。
- Installation requirements:
- インストール高度 ≥15cm,避免地面尘埃污染。
- 避免高粉尘(>300 μg/m³)、油烟或高湿度环境。
- 校准警告:
- エキスパート功能需谨慎操作,误修改可能导致データ異常。
- 校准值需按实际环境调整,建议记录出厂デフォルト値。
- CRC verification:すべての命令必须包含正确 CRC,否则デバイスが応答しません。
五、附录
1. センサーはレジスター·アドレス表
| register address | センサーはタイプ | data format |
|---|---|---|
0x0000 | eCO₂ | 2 bytes符号なし。整数(ppm) |
0x0001 | TVOC | 2 bytes符号なし。整数(ppb) |
0x0002 | CH₂O | 2 bytes符号なし。整数(μg/m³) |
0x0003 | PM2.5 | 2 bytes符号なし。整数(μg/m³) |
0x0004 | 湿度 | 2 bytes(真实值 × 100) |
0x0005 | temperature | 2 bytes(真实值 × 100) |
0x0006 | PM10 | 2 bytes符号なし。整数(μg/m³) |
0x0007 | PM1.0 | 2 bytes符号なし。整数(μg/m³) |
0x0008 | Illuminance | 2 bytes符号なし。整数(Lux) |
0x0009 | MCU temperature | 2 bytes(真实值 × 100) |
0x000A | Noise | 2 bytes符号なし。整数(dB) |
2. ボーレート代码表
| 代码 | Baud rate |
|---|---|
0 | 1200 |
1 | 2400 |
2 | 4800 |
3 | 9600 |
4 | 19200 |
5 | 38400 |
6 | 57600 |
7 | 115200 |
3. CRC calculation代码(C 语言サンプル)
uint16_t CRC16_Check(const uint8_t *pushMsg, uint8_t usDataLen) {
uint8_t uchCRCHi = 0xFF, uchCRCLo = 0xFF;
uint8_t uIndex;
while (usDataLen--) {
uIndex = uchCRCLo ^ *pushMsg++;
uchCRCLo = uchCRCHi ^ auchCRCHi[uIndex];
uchCRCHi = auchCRCLo[uIndex];
}
return (uint16_t)(uchCRCHi << 8 | uchCRCLo);
}
Leave a Reply