十一合一环境及空気質センサーModbus通信プロトコル

freeFree Technical Resource

This content is free to read, suitable for basic learning and search traffic.

十一合一环境及空気質センサーModbus通信プロトコル
十一合一环境及空気質センサーModbus通信プロトコルイラスト

产品功能説明:

X-SSG-A1101-RS485 十合一环境及空気質センサー采用高速処理器, 集成 CO2、甲醛、TVOC、激光粉 尘 PM2.5 、PM10 、PM1.0  颗粒物、temperature、湿度、气压、光照度及噪声检测于一体, 経由 RS485 バス 通信の形態実装环境质量データ检测上报。采用旋转卡扣方式吸顶インストール,操作简单。

产品技术指标

2.1     检测参数及分辨率
センサーはデータ测量分辨率测量範囲测量精度
Carbon Dioxide eCO21ppm400  ~ 60,000ppm±30ppm
TVOC1ug/m30  ~ 60,000ug/m³±50ug/m3
甲醛 CH2O1ug/m30  ~ 1,000ug/m³±25%
PM2.51ug/m30  ~ 1,000ug/m³±10%
PM101ug/m30  ~ 1,000ug/m³±10%
PM1.01ug/m30  ~ 1,000ug/m³±10%
temperature0.01℃-40  ~ 85℃±0.2℃
湿度0.01%0  ~ 100%±1%RH
气压1Pa30,000  ~ 110,000Pa±12Pa
Illuminance1Lux0  ~ 60,000Lux±5%
Noise1dB30  ~ 90dB±3dB

注意:モジュール輸出した。 CH2O 值为 TVOC 的等效值,客户购买和使用时请注意。

2.2     工作电压: DC5V±0.2V @150mA

2.3     工作环境:工作温度- 10 ~ 60℃,工作湿度: 5 ~ 95%RH(无凝结)

2.4     通讯方式:Modbus-RTU 485 Interface

2.5     预热时间:less than 3 分

半导体 VOC  センサーは理论上来说通电时间越久越稳定

2.6     使用寿命: 3  year(空气中)

III.产品规格

3.1     外观尺寸图

十一合一环境及空気質センサーModbus通信プロトコルイラスト1

I 、標準 4 线接口                         II 、2 线 + USB 供电接口

如上图所示, 本产品⃞供“標準 4 线接口”和“2 线+USB 供电”两种物理接口,选购时请根 据实际需要注明。

本产品デフォルト使用 5V 直流供电,如需特殊电压(6 - 36V),可お問い合わせください。定制。

3.2     配線定义

1)     “標準 4 线”接口タイプ:

Serial numberName備考
RS485_A黄色RS485_A
RS485_B绿色RS485_B
DC+红色デフォルト 5V 直流供电, 特殊电压需定制
GND黑色接地线

2) “2 线+USB 供电”接口タイプ:

Serial numberName⃞述
A红色 (A)RS485_A
B黑色 (B)RS485_B
UMicro USB直流 5V 供电

注意:上表中的颜色为常规説明,具体配線时请以产品上的タグ为准。

IV.RS485 通信プロトコル

4.1     Communication parameters

ModBus-RTU 485 parameter: 9600/8/N/1

出厂デフォルトアドレス: 0x01

戻るデータ时间:less than 100ms

4.2     通信プロトコル

1)     読み取りアドレス命令

方向:用户应用->センサーはモジュール;需要应答:是

リクエストメッセージ格式:

バイト编号data説明
00xFE放送アドレス
10x11报告スレーブアドレス機能コード
20x00固定
30x00固定
40x00固定
50x01固定
67CRC_LCRC_HCRC check

レスポンスメッセージ格式:

バイト编号data説明
00x01スレーブアドレス
10x11报告スレーブアドレス機能コード
20x02byte count
3version固件版本
4address当前アドレス
56CRC_LCRC_HCRC check

例如:send command: FE 11 00 00 00 01 28 06

戻るデータ: 01 11 02 12 01 70 5C

説明:戻るデータ中 0x12 表示版本号为 V1.2 ,0x01 表示デバイスアドレス为 01

2)     修改アドレス命令。模组出厂デフォルトアドレス为 0x01,アドレス範囲可更改为: 1247

方向:用户应用->センサーはモジュール;需要应答:是

リクエストメッセージ格式:

バイト编号data説明
0address当前アドレス
10x06function code
20x00固定
30x00固定
40x00预留
5new address新アドレス
67CRC_L
CRC_H
CRC check

レスポンスメッセージ格式:

バイト编号data説明
0address修改前的アドレス
10x06function code
20x00固定
30x00固定
40x00预留
5new address修改后的アドレス
67CRC_L
CRC_H
CRC check

例如:当前アドレス为: 0x01 ,预设アドレス为: 0x02

send command: 01 06 00 00 00 02 08 0B

戻るデータ: 01 06 00 00 00 02 08 0B

当前アドレス再从: 0x02 ,改回: 0x01

send command: 02 06 00 00 00 01 48 39

戻るデータ: 02 06 00 00 00 01 48 39

3)     読み取りデータ命令

方向:用户应用->センサーはモジュール;需要应答:是

リクエストメッセージ格式:

バイト编号data説明
0address当前アドレス
10x03function code
2
3
0x00
MM
レジスタ开始アドレス
4
5
0x00
NN
需要読み取り的センサーは个数
6
7
CRC_L
CRC_H
CRC check

应答メッセージ格式:

バイト编号data説明
0address当前アドレス
10x03function code
2NN*2データ長さ
3xx xx......センサーはデータ(气压占 4 byte, 既 2 Registers; 其他每个センサーはデータ占 2 byte, 既 1 个寄 存器)
3+NN*2
4+NN*2
CRC_L
CRC_H
CRC check

注意:戻るセンサーはデータ可以根据レジスター·アドレス和データ長さ来改变。

register address(0x00MM)与对应的センサーはデータ説明如下, 气压占 4 byte(2 Registers),其余每个传 感器データ占 2 byte(1 Registers)。

register addressセンサーはデータ占用レジスタの数
0x0000eCO21
0x0001TVOC1
0x0002CH2O1
0x0003PM2.51
0x0004湿度1
0x0005temperature1
0x0006PM101
0x0007PM1.01
0x0008Illuminance(Lux)1
0x0009MCU temperature1
0x000ANoise(dB)1
0x000B气压(Pa)2

説明:

① センサーは个数 00 NN 最小为 00 01,最大为 00 0B。MM 值为 00 时, NN 值最大可为 0B,此时能读 出すべてのセンサーは的值, NN 为 01 时只能单独読み取り eCO2 的データ, NN 为 02 时可読み取り eCO2 和 TVOC 的数

据,以此类推。

② レジスタ靠前的アドレス,在加大データ長さ时,可読み取り后面センサーは的データ,但レジスタ靠后的アドレス,不 能読み取り在此アドレス前センサーは的データ。

③ 一1つのレジスタ容纳 2 个Bytesのデータ, 气压占 4 byte,既 2 Registers,因此,在読み取り气压时要把连续 两1つのレジスタ都读出来,其他每个センサーはデータ占 2 byte,既 1 Registers。

詳細如下:

00MM00NN可以読み取り到的データ
00000001表示从開始アドレス 0000 read CO2 data
00000002表示从開始アドレス 0000 read CO2 ,TVOC data
............
0000000D表示从開始アドレス 0000 read CO2,TVOC,CH2O,PM2.5,湿
度,temperature,PM10,PM1.0,Illuminance,MCU temperature,噪声データ,气压
data
00010001表示从開始アドレス 0001 read TVOC data
00010002表示从開始アドレス 0001 read TVOC,CH2O data
............
00010007表示从開始アドレス 0001 取 TVOC,CH2O,PM2.5,湿度,温
度,PM10,PM1.0 data
0001000C表示从開始アドレス 0001 取 TVOC,CH2O,PM2.5,湿度,温
度,PM10,PM1.0,Illuminance,MCU temperature,噪声データ,气压データ
00020001表示从開始アドレス 0002 read CH2O data
00020002表示从開始アドレス 0002 read CH2O,PM2.5 data
............
000B0001表示从開始アドレス 000B 読み取り气压データ(2 Registers)

例如: 模组的アドレス为 0x01,

用户送信: 01 03 00 00 00 09 85 CC     ,即可将 9 个センサーはデータ读出;

用户送信: 01 03 00 00 00 0B 04 0D     ,即可将 11 个センサーはデータ(含 MCU temperature)读出;

用户送信: 01 03 00 00 00 0D 84 0F     ,即可将 12 个センサーはデータ(气压占 2 Registers)读出;

用户送信: 01 03 00 0B 00 02 B5 C9     ,即仅読み取り气压データ(占 2 Registers)。

4)     読み取り一フレームデータ

5)     戻るデータ格式如下:

バイト编号data説明
00x01message header
10x03function code
20x1Aデータ長さ
3
4
CO2_H
CO2_L
CO2 data
5
6
TVOC_H
TVOC_L
TVOC data
7
8
CH2O_H
CH2O_L
CH2O data
9
10
PM2.5_H
PM2.5  L
PM2.5 data
11
12
Humi_H
Humi_L
湿度データ
13
14
Temp_H
Temp_L
温度データ
15
16
PM10_H
PM10_L
PM10 data
17
18
PM01_H
PM01_L
PM1.0 data
19
20
Lux_H
Lux_L
Illuminance(Lux)data
21
22
MCU_TEMP_H
MCU_TEMP_L
MCU 温度データ
23
24
dB_H
dB_L
Noise(dB)data
25
26
27
28
Pa_byte[3]
Pa_byte[2]
Pa_byte[1]
Pa_byte[0]
 气压データ(Pa)
29
30
CRC16_L
CRC16_H
CRC16 check

6)     系统参数設定

7)     可以経由对下表レジスター·アドレス的读、写,以取得或修改系统参数。

8)     注意: 此项为エキスパート功能, 请小心使用, 以免造成系统参数エラー, 影响センサーは功能或データ准确性。

register addressLength(byte)系统参数
0x01004センサーは設ポジショニング图(Sensor Map)
0x01102byte 1(前に):是否为外置温湿度センサー
byte 2:センサーはデータ用户校准位图,参见“传感 器モジュール位图 ”
0x01112byte 1(前に):专用シリアルポート屏自定义指标项对应的センサーは编号
byte 2:光照度センサーは感光罩的透光率(0- 100), 0 表示ない感光罩, 100 表示无损耗
0x01182CO2 校准值, int16
0x01192TVOC 校准值, int16
0x011A2CH2O 校准值, int16
0x011B2PM2.5 校准值, int16
0x011C2湿度校准值(100 倍), int16
0x011D2温度校准值(100 倍), int16
0x011E2PM10 校准值, int16
0x011F2PM1.0 校准值, int16
0x01202Illuminance(Lux)校准值, int16
0x01212MCU 温度校准值, int16
0x01222Noise(dB)校准值, int16
0x01232大气压校准值, int16

注意:

1.すべての用户校准值都是記号付き。整数,负数表示负偏移,既要减去オフセットの量;

2.温/湿度用户校准值是按摄氏度放大 100 倍,如: 250 表示需要加 2.5 摄氏度; -110 表示需要 减去 1.1 摄氏度。

例如: 模组的アドレス为 0x01,

用户送信: 01 03 01 10 00 01 84 33     ,读出外置温湿度センサー标记和センサーはデータ用户校准位图; 用户送信: 01 06 01 10 00 02 04 0D     ,打开温湿度用户校准开关;

用户送信: 01 03 01 1D 00 01 15 F0      ,读出温湿度校准值;

用户送信: 01 06 01 1D 00 FA 98 73     ,設定温度用户校准值 250,既+2.5 度; 用户送信: 01 06 01 1D 80 6E F8 1C     ,設定温度用户校准值-110,既-1.1 度。

4.3     电脑読み取り RS485 data

経由“485  转シリアルポート”适配器,可以将センサーは模组连接到电脑以检测通讯和表示データ。电脑端可以使 用 ModBus 测试工具(如: ShortBus Modbus Scanner,效果见下图)直接読み取りデータ;也可以使用“串 口アシスタント”等標準シリアルポート工具,経由送信查询メッセージ取得データ。

V. 各种センサーはデータ計算方式

. CO2  (ppm)   = CO2_H * 256 + CO2_L

. TVOC (ug/m3)   = TVOC_H * 256 + TVOC_L

. CH2O (ug/m3)   = CH2O_H * 256 + CH2O_L

. PM2.5 (ug/m3)   = PM2.5_H * 256 + PM2.5_L

. PM10 (ug/m3)   = PM10_H * 256 + PM10_L

. PM1.0 (ug/m3)   = PM01_H * 256 + PM01_L

. 照度 (Lux)   = Lux_H * 256 + Lux_L

. Noise (dB)   = dB_H * 256 + dB_L

. 接口戻る的温、湿度(真实データ的 100 倍):

. 正温度 (℃) = (Temperature_H * 256 + Temperature_L) / 100, 例如: T = (0x09d0) / 10 = 2512 / 100 = 25.12℃

.  负温度 (℃)

方法 1:直接转为記号付き。的 int  タイプ即可,例如: T = 0xfc83/10 = -893/100 = -8.93℃

方法 2:もし大于 0x7fff(32767)

则为负数 T = (0xfc83 - 65536) / 10 = (64643 - 65536) / 10 = -893 / 100 = -8.93℃

. 湿度 (%RH)   = (Humidity_H * 256 + Humidity_L) / 100

. 气压 (Pa)   = Pa_byte[3] * 224 + Pa_byte[2] * 216 + Pa_byte[1] * 28 + Pa_byte[0]

. 根据气压計算海拔高度

气压単位是 Pa,理论上,海拔每上升 9 米,大气压降低 100 Pa。而海平面標準大气压为 101,325 Pa, 因此,可以用下面的公式根据气压值(Pa)計算海拔高度(Altitude)的近似值:

1 、 简化版海拔高度公式 = (101325 – Pa) / 100 * 9

除了海拔高度, 影响气压的因素还有很多(例例えば温度は),下面的公式相对更精确一些, 特别是在高海 拔位置:

2 、 校准版海拔高度公式 = 44330 * (1 – (Pa/101325)0.1903)

例如:もし测得的气压值为 99,882Pa,则2つ公式計算得到的海拔高度(Altitude)分别为:

. 简化版海拔高度 = (101325 – 99882) / 100 * 9 = 129.8 米

. 校准版海拔高度 = 44330 * (1 – (99882/101325)0.1903) = 120.84 米

VI.Precautions

. 初次上电使用需预热 3 分以上

. センサーはインストール位置应高于地面 15~20CM 以上, 否则可能有地面沙尘, 飘絮物等大尘埃颗粒甚至絮 状物污染导致风扇缠绕阻转,建议使用デバイス采取适当的预过滤処理。

. 本产品为精密仪器, 请不要打开外壳, 正常操作无需了解デバイス内部情况。如デバイス有损坏, 必须 由专业人员检修和维修,在检修和维修之前请確認外部连接电源已切断。。

. センサーはデータ确保出厂个体之间的一致性, 不以第三方检测仪器或データ作为对比標準。如用户希 望最终测量结果和某第三方检测デバイス一致,可由用户根据实际結果の収集进行データ拟合校准。

. 本センサーは適用される普通室内环境,如用户デバイス在以下实际环境で使用する。,センサーは有可能因过度积 尘、积油、进水导致データ一致性下降。例如:全年尘埃浓度大于 300 微克/立方米时间超过  50% ,或大于 500 微克/立方米时间超过 20%;油烟环境;高水雾环境;户外等。

VII.      センサーはモジュール位图

センサーはモジュール
0x01Illuminance
0x02温湿度气压
0x04粉尘
0x08空気質
0x10Noise

VIII. CRC 検証計算の検証方法

CRC 代码和サンプル可参照: https://github.com/sunbaoshi1975/CRCTool

函数功能: CRC チェック函数,生成 CRC

参数説明:pushMsg:需要チェック的配列集

usDataLen :需要チェックデータの長ささ

戻る参数: CRC  为 unsigned int16  Type,高位バイト为高位前に、低位在后

/*CRC verify high position*/ 
const unsigned char auchCRCHi[] = { 
0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81,
0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 
0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 
0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 
0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 
0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 
0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 
0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 
0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 
0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 
0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 
0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 
0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 
0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 
0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 
0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 
0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40 }; 
/* CRC verify low position*/ 
const unsigned char auchCRCLo[] = { 
0x00, 0xC0, 0xC1, 0x01, 0xC3, 0x03, 0x02, 0xC2, 0xC6, 0x06, 0x07, 0xC7, 0x05, 0xC5, 0xC4, 
0x04, 0xCC, 0x0C, 0x0D, 0xCD, 0x0F, 0xCF, 0xCE, 0x0E, 0x0A, 0xCA, 0xCB, 0x0B, 0xC9, 0x09, 
0x08, 0xC8, 0xD8, 0x18, 0x19, 0xD9, 0x1B, 0xDB, 0xDA, 0x1A, 0x1E, 0xDE, 0xDF, 0x1F, 0xDD, 
0x1D, 0x1C, 0xDC, 0x14, 0xD4, 0xD5, 0x15, 0xD7, 0x17, 0x16, 0xD6, 0xD2, 0x12, 0x13, 0xD3, 
0x11, 0xD1, 0xD0, 0x10, 0xF0, 0x30, 0x31, 0xF1, 0x33, 0xF3, 0xF2, 0x32, 0x36, 0xF6, 0xF7, 
0x37, 0xF5, 0x35, 0x34, 0xF4, 0x3C, 0xFC, 0xFD, 0x3D, 0xFF, 0x3F, 0x3E, 0xFE, 0xFA, 0x3A, 
0x3B, 0xFB, 0x39, 0xF9, 0xF8, 0x38, 0x28, 0xE8, 0xE9, 0x29, 0xEB, 0x2B, 0x2A, 0xEA, 0xEE, 
0x2E, 0x2F, 0xEF, 0x2D, 0xED, 0xEC, 0x2C, 0xE4, 0x24, 0x25, 0xE5, 0x27, 0xE7, 0xE6, 0x26, 
0x22, 0xE2, 0xE3, 0x23, 0xE1, 0x21, 0x20, 0xE0, 0xA0, 0x60, 0x61, 0xA1, 0x63, 0xA3, 0xA2, 
0x62, 0x66, 0xA6, 0xA7, 0x67, 0xA5, 0x65, 0x64, 0xA4, 0x6C, 0xAC, 0xAD, 0x6D, 0xAF, 0x6F, 
0x6E, 0xAE, 0xAA, 0x6A, 0x6B, 0xAB, 0x69, 0xA9, 0xA8, 0x68, 0x78, 0xB8, 0xB9, 0x79, 0xBB, 
0x7B, 0x7A, 0xBA, 0xBE, 0x7E, 0x7F, 0xBF, 0x7D, 0xBD, 0xBC, 0x7C, 0xB4, 0x74, 0x75, 0xB5, 
0x77, 0xB7, 0xB6, 0x76, 0x72, 0xB2, 0xB3, 0x73, 0xB1, 0x71, 0x70, 0xB0, 0x50, 0x90, 0x91, 
0x51, 0x93, 0x53, 0x52, 0x92, 0x96, 0x56, 0x57, 0x97, 0x55, 0x95, 0x94, 0x54, 0x9C, 0x5C, 
0x5D, 0x9D, 0x5F, 0x9F, 0x9E, 0x5E, 0x5A, 0x9A, 0x9B, 0x5B, 0x99, 0x59, 0x58, 0x98, 0x88, 
0x48, 0x49, 0x89, 0x4B, 0x8B, 0x8A, 0x4A, 0x4E, 0x8E, 0x8F, 0x4F, 0x8D, 0x4D, 0x4C, 0x8C, 
0x44, 0x84, 0x85, 0x45, 0x87, 0x47, 0x46, 0x86, 0x82, 0x42, 0x43, 0x83, 0x41, 0x81, 0x80, 0x40 }; 
/*CRC check*/ 
uint16_t CRC16_Check(const uint8_t *pushMsg, uint8_t usDataLen)
{
 uint8_t uchCRCHi = 0xff;//high CRC init
 uint8_t uchCRCLo = 0xff;//low CRC init
 uint8_t uIndex; //CRC index in loop
while(usDataLen--) {
uIndex = uchCRCLo^ *pushMsg++;//cal CRC 
uchCRCLo = uchCRCHi^ auchCRCHi[uIndex]; 
uchCRCHi = auchCRCLo[uIndex]; 
} 
return((uint16_t)uchCRCHi << 8 | uchCRCLo); 
}
Put this resource to use in a real project?

Go to the Tool Center for message parsing, CRC verification and device debugging, or submit your requirements for selection and integration advice.

Engineer Membership

Turn this article into actionable debugging resources

After activation, you can use advanced message parsing, resource pack downloads, code examples, engineering cases and priority technical support, suitable for real project delivery.

Unlimited Advanced Tools
Resource & Code Packs
Complete Engineering Case Library
Priority Technical Support

Leave a Reply

Your email address will not be published. Required fields are marked *.