
I.通信プロトコルの概要
1.デフォルトの通信パラメータ
- ボーレート:
9600 - データ·ビット:
8 - チェックビット:なし
- ストップ·ビット:
1(すなわち、9600/8/N/1) - デフォルトデバイスアドレス:
0x01 - 応答時間:< 100ms
2. CRCチェック
- アルゴリズムのアルゴリズムCRC-16/Modbus(多項式)
0x8005) - チェックコード形式2バイト前の上位(例えば)
CRC_H CRC_L)。 - 計算ツール::リファレンスCRCToolまたは仕様書第 IX 章コード。
2.契約機能の詳細
1.デバイスアドレスとファームウェアバージョンの読み取り
機能性は:現在のデバイスアドレスとファームウェアバージョン番号を取得します。
リクエスト形式(ホスト→センサー)
| バイト位置 | データは | 説明書は |
|---|---|---|
00xFE | ブロードキャストアドレスすべてのデバイスが応答 | |
| 1 | 0x11 | 機能コード(読み取りアドレス) |
| 2-5 | 0x00 | 固定充填は |
| 6-7 | CRC | CRCチェックコード |
コマンドの例:
FE 11 00 00 00 01 28 06応答形式(センサー →ホスト)
| バイト位置 | データは | 説明書は |
|---|---|---|
00x01 | デバイスアドレス | |
| 1 | 0x11 | 関数コードの特徴 |
| 2 | 0x02 | データの長さ(2バイト) |
| 3 | 0x12 | ファームウェアのバージョン(例えば)0x12=V1.2) |
| 4 | 0x01 | 現在の住所 |
| 5-6 | CRC | CRCチェックコード |
応答の例:
01 11 02 12 01 70 5C
解析する。:
- ファームウェアのバージョン:
V1.2 - デバイスのアドレス:
0x01
2.ユニットアドレスの変更
機能性は:デバイスのModbusアドレスの変更(範囲)1~247)。
リクエスト形式(ホスト→センサー)
| バイト位置 | データは | 説明書は |
|---|---|---|
| 0現在の住所 | 住所(例えば)0x01) | |
| 1 | 0x06 | 機能コード(住所の変更) |
| 2-4 | 0x00 | 固定充填は |
| 5 | 新しい住所。 | 宛先アドレス(例えば)0x02) |
| 6-7 | CRC | CRCチェックコード |
コマンドの例(住所の変更)0x02):
01 06 00 00 00 02 08 0B応答形式(センサー →ホスト)
要求形式に一致し、修正されたアドレス確認を返します。
応答の例:
01 06 00 00 00 02 08 0B
説明書は:リクエストと同じデータに応答して変更が成功したことを示します。
3.センサーデータの読み取り
機能性は:指定したレジスタのセンサデータを読み込む(複数のセンサを一度に読み込むことに対応)。
リクエスト形式(ホスト→センサー)
| バイト位置 | データは | 説明書は |
|---|---|---|
| 0デバイスのアドレス | 例えば、0x01 | |
| 1 | 0x03 | 機能コード(データの読み取り) |
| 2-3 | アドレスの開始 | レジスタの開始アドレス(上位の値が前) |
| 4-5 | レジスタの数 | 読み出すレジスタの数 |
| 6-7 | CRC | CRCチェックコード |
コマンドの例(全11センサーデータを読み取る):
01 03 00 00 00 0B C5 CD応答形式(センサー →ホスト)
| バイト位置 | データは | 説明書は |
|---|---|---|
| 0デバイスのアドレス | 例えば、0x01 | |
| 1 | 0x03 | 関数コードの特徴 |
| 2 | データ長さ | バイト数(レジスタ数× 2) |
| 3~N | センサデータ | レジスタあたり2バイト(上位が前) |
| N+1~N+2 | CRC | CRCチェックコード |
応答の例(データの一部):
01 03 16 00 96 00 64 00 32 00 30 00 28 00 1E 01 2C 00 0A 00 14 70 5C
解析する。:
00 96→ eCO₂ = 150 ppm00 64→ TVOC = 100 ppb00 32→ CH₂O = 50 μg/m³- 温度湿度データ:
- 湿度:
0x012C→ 300 → 300/100 = 30.0%RH - 気温:
0x000A→ 10 → 10/100 = 0.10℃
4.システム·パラメータ構成高度な機能
4.1ボーレートの読み取り/設定
レジスター·アドレス:0x0103(ボーレートコードは付録表を参照)。
ボーレート要求の読み取り:
01 03 01 03 00 01 CRC
ボーレート要求の設定(115,200)。
01 06 01 03 00 07 CRC4.2センサーデータの校正
レジスター·アドレス:
- 温度の校正:
0x011D - 湿度の校正:
0x011C
コマンドの例(温度校正+2.5 ° C):
01 06 01 1D 00 FA 98 73
説明書は:
00 FA250(250/100 = 2.5℃)- 負の値は補数に変換されます。
0xFF9C→ -100 → -1.00℃)。
III.データ解析の方法
1.計算式
| センサーの種類 | 数式 | 例:例 |
|---|---|---|
| eCO₂ | CO₂ = (CO₂_H << 8) + CO₂_L | 0x0096→ 150 ppm |
| 気温は | 温度 =符号付き値/ 100 | 0xFF9C→ -100 → -1.00℃ |
| 光の明るさ | Lux = (Lux_H << 8) + Lux_L | 0x01F4→ 500 Lux |
2.符号付き数値処理
- メソッド1。符号付き整数に直接変換(例えば)
0xFF9C→ -100)。 - メソッド2。値は327 6 7である。
真の値=元の値-65536/ 100。
IV.留意事項
- ウォームアップ時間VOCモジュールは3分間以上予熱する必要があり、他のセンサはすぐに使用できます。
- インストール要件:
- 設置高さ≥15cm、地面のほこり汚染を避ける。
- 高い粉塵(300 μg/m3)、煙、または高湿度環境を避けてください。
- キャリブレーション警告:
- 高度な機能は慎重に操作する必要があり、誤った変更はデータ異常を引き起こす可能性がある。
- 校正値は実際の環境に合わせて調整する必要があり、工場出荷時のデフォルト値を記録することをお勧めします。
- CRCチェックすべてのコマンドに正しいCRCが含まれていない場合、デバイスは応答しません。
V.付録
1.センサレジスタアドレス表
| レジスター·アドレス | センサーの種類 | データ形式 |
|---|---|---|
0x0000 | eCO₂ | 2バイト符号なし整数ppm |
0x0001 | TVOC | 2バイト符号なし整数ppb |
0x0002 | CH₂O | 2バイトの符号なし整数(μg/m3) |
0x0003 | PM2.5 | 2バイトの符号なし整数(μg/m3) |
0x0004 | 湿度は | 2バイト(真の値× 100) |
0x0005 | 気温は | 2バイト(真の値× 100) |
0x0006 | PM10 | 2バイトの符号なし整数(μg/m3) |
0x0007 | PM1.0 | 2バイトの符号なし整数(μg/m3) |
0x0008 | 光の明るさ | 2バイト符号なし整数Lux |
0x0009 | MCUの温度 | 2バイト(真の値× 100) |
0x000A | ノイズの種類 | 2バイト符号なし整数dB |
2.ボーレートコード表
| コードコード。 | ボーレート |
|---|---|
| 01200 |
1 | 2400 |
2 | 4800 |
3 | 9600 |
4 | 19200 |
5 | 38400 |
6 | 57600 |
7 | 115200 |
3. CRC計算コード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);
}
发表回复