|
|
@@ -0,0 +1,276 @@
|
|
|
+ 物联网实训系统通信协议
|
|
|
+
|
|
|
+1 概述
|
|
|
+本协议规范了一个完整数据包的组成部分,包括包头、包尾、包长、包设备类型及编号、包校验等内容。适用于网关与安卓APP之间传输数据时的数据包通讯标准。
|
|
|
+2 组成成分
|
|
|
+包头(2字节)+设备类型字节(1字节)+设备编号(3字节)+用户数据内容(11字节)+校验字节(1字节)+包尾(2字节),共计20字节内容。
|
|
|
+3 协议字段定义
|
|
|
+ 无论什么设备,均使用本协议进行通信。通信协议采用固定长度协议,未使用部分保留。协议中每个字段的含义如表1所示。
|
|
|
+表1 协议字段及说明
|
|
|
+位置序号
|
|
|
+字段名称
|
|
|
+字段长度
|
|
|
+说明
|
|
|
+0-1
|
|
|
+帧头
|
|
|
+2
|
|
|
+固定值0x5a 0xa5
|
|
|
+2
|
|
|
+设备类型(删掉)
|
|
|
+1
|
|
|
+表示数据内容是来自/发给什么设备,详见表2(
|
|
|
+由于设备编号含有设备类型,该地方取消)
|
|
|
+2~5
|
|
|
+设备编号
|
|
|
+4
|
|
|
+传感器、执行机构等终端设备的编号,所有类型设备统一编号。编号=)DAT[3]*65536+DAT[4]*256+DAT[5];
|
|
|
+总共占4位:例: 06 03 00 ad
|
|
|
+06:代表大类别
|
|
|
+03:设备类型
|
|
|
+00 ad :代表设备编号。
|
|
|
+整体数据报还保持20字
|
|
|
+设备大类编码:
|
|
|
+监视设备0x01,智能网关0x02,硬件网关0x03,感知设备0x04,控制设备0x06,识别设备0x05,其他设备0x07
|
|
|
+
|
|
|
+6
|
|
|
+通信链路
|
|
|
+1
|
|
|
+表示通过哪种通信方式传输数据【上行不重要,下行很关键】
|
|
|
+0x01:zigbee
|
|
|
+0x02:蓝牙
|
|
|
+0x03:WiFi
|
|
|
+0x04:LoRa
|
|
|
+0x05:NB-IoT
|
|
|
+0x06:CAN
|
|
|
+其他:保留
|
|
|
+7
|
|
|
+功能码
|
|
|
+1
|
|
|
+表示这条数据的功能
|
|
|
+0x01:连通测试指令
|
|
|
+0x02:传感器数据
|
|
|
+0x03:控制指令
|
|
|
+其他:保留
|
|
|
+8~16
|
|
|
+数据内容
|
|
|
+9
|
|
|
+不同设备,数据代表的含义不一样,详见表2
|
|
|
+17
|
|
|
+校验
|
|
|
+1
|
|
|
+从DAT[0]~DAT[16]的和,保留低8位。不校验填0x00
|
|
|
+18~19
|
|
|
+帧尾
|
|
|
+2
|
|
|
+固定值0x55 0xAA
|
|
|
+
|
|
|
+表2 设备类型及取值
|
|
|
+ 设备类型
|
|
|
+ 类型代码(HEX)
|
|
|
+ 数据内容
|
|
|
+数据内容占DAT[8]~DAT[16]字节,无说明字节表示保留,填充0x00。
|
|
|
+ 光敏传感器
|
|
|
+ 1
|
|
|
+DAT[8],0~255,表示光线强弱
|
|
|
+ 霍尔传感器
|
|
|
+ 2
|
|
|
+DAT[8],0-无磁体;1 -- 有磁体
|
|
|
+ 人体红外传感器
|
|
|
+ 3
|
|
|
+DAT[8],0 -- 无人; 1 -- 有人
|
|
|
+ 火焰传感器
|
|
|
+ 4
|
|
|
+DAT[8],0~255,表示火焰强弱
|
|
|
+ 超声波测距传感器
|
|
|
+ 5
|
|
|
+DAT[8]*256+DAT[9],0表示未检测到距离,其他数值代表距离,单位0.001m
|
|
|
+ 触摸传感器
|
|
|
+ 6
|
|
|
+DAT[8],0 -- 无触摸;1 -- 1号键触摸;2 -- 2号键触摸;以此类推
|
|
|
+ 光照度传感器
|
|
|
+ 7
|
|
|
+DAT[8]*256+DAT[9],0~65535,表示光照度,单位lux
|
|
|
+ 空气压力(海拔高度)传感器
|
|
|
+ 8
|
|
|
+DAT[8]*256+DAT[9],0~65535。大气压强,单位0.01Kpa(千帕)
|
|
|
+ 三轴加速度传感器
|
|
|
+ 9
|
|
|
+DAT[8]*256+DAT[9],X轴加速度,单位0.001g
|
|
|
+DAT[9]*256+DAT[9],Y轴加速度,单位0.001g
|
|
|
+DAT[10]*256+DAT[11],Z轴加速度,单位0.001g
|
|
|
+ 空气质量传感器
|
|
|
+ A
|
|
|
+DAT[8]*256+DAT[9],10~1000ppm,有害气体浓度,单位ppm
|
|
|
+ 酒精传感器
|
|
|
+ B
|
|
|
+DAT[8]*256+DAT[9],10~1000ppm,酒精气体浓度,单位ppm
|
|
|
+ 可燃气体传感器
|
|
|
+ C
|
|
|
+DAT[8]*256+DAT[9],10~1000ppm,可燃气体浓度,单位ppm
|
|
|
+ 二氧化碳传感器
|
|
|
+ D
|
|
|
+DAT[8]*256+DAT[9],10~1000ppm,二氧化碳气体浓度,单位ppm
|
|
|
+ 温湿度传感器(空气)
|
|
|
+ E
|
|
|
+DAT[8],-25~+125摄氏度,最高位表示符号位,0正1负;
|
|
|
+DAT[9],0~99,相对湿度;
|
|
|
+ 温湿度传感器(土壤)
|
|
|
+ F
|
|
|
+DAT[8],-25~+125摄氏度,最高位表示符号位,0正1负;
|
|
|
+DAT[9],0~99,相对湿度;
|
|
|
+ 红外测距传感器
|
|
|
+ 10
|
|
|
+DAT[8]*256+DAT[9],测量距离,单位0.01m;
|
|
|
+ 震动传感器/报警器
|
|
|
+ 11
|
|
|
+DAT[8],0-无震动报警;1 -- 有震动报警。
|
|
|
+ 雨滴凝露传感器
|
|
|
+ 12
|
|
|
+DAT[8],0-无雨滴,其他值,反映雨量大小,无需解析。
|
|
|
+ 自然颜色识别传感器
|
|
|
+ 13
|
|
|
+DAT[8],0~255,表示8位颜色值。
|
|
|
+ 薄膜压力传感器
|
|
|
+ 14
|
|
|
+DAT[8],0~255,表示压力大小。
|
|
|
+ 噪音传感器
|
|
|
+ 15
|
|
|
+DAT[8],30~130dB,表示噪音大小。
|
|
|
+ 红外对射传感器
|
|
|
+ 16
|
|
|
+DAT[8],0-无遮挡;1 -- 有遮挡。
|
|
|
+ PM2.5传感器
|
|
|
+ 17
|
|
|
+DAT[8]*256+DAT[9],颗粒物含量0.1mg/m[3],评价标准参考:
|
|
|
+0~75:非常好;
|
|
|
+76~150:很好;
|
|
|
+151~300:好;
|
|
|
+301~1050:一般;
|
|
|
+1051~3000:差;
|
|
|
+3000以上:很差。
|
|
|
+ 磁场传感器
|
|
|
+ 18
|
|
|
+DAT[8]*256+DAT[9],X轴磁场,单位0.001高斯
|
|
|
+DAT[9]*256+DAT[9],Y轴磁场,单位0.001高斯
|
|
|
+DAT[10]*256+DAT[11],Z轴磁场,单位0.001高斯
|
|
|
+最高位代表符号位,测量范围:+-1.3~8高斯
|
|
|
+ 紫外线传感器
|
|
|
+ 19
|
|
|
+DAT[8],0~255,紫外线指数,单位0.1mW/cm[3]
|
|
|
+ 倾角传感器
|
|
|
+ 1A
|
|
|
+DAT[8],X轴倾斜角度,-90~90度,单位度;
|
|
|
+DAT[9], Y轴倾斜角度,-90~90度,单位度;
|
|
|
+ 热电偶传感器
|
|
|
+ 1B
|
|
|
+DAT[8]*256+DAT[9],取值-40~999摄氏度,最高位表示符号位。
|
|
|
+ 电流传感器
|
|
|
+ 1C
|
|
|
+DAT[8]*256+DAT[9],取值-5000~5000mA,最高位表示符号位。
|
|
|
+ 指纹识别传感器
|
|
|
+ 1D
|
|
|
+待定
|
|
|
+ 液位传感器
|
|
|
+ 1E
|
|
|
+DAT[8]*256+DAT[9],取值0~5000mm;
|
|
|
+ 风速传感器
|
|
|
+ 1F
|
|
|
+DAT[8]*256+DAT[9],单位 0.1m/s
|
|
|
+ 风向传感器
|
|
|
+ 20
|
|
|
+DAT[8]*256+DAT[9],取值:0,45,90,135,180,225,270,315,对应北风,东北风,东风。。。。。
|
|
|
+ 体温传感器
|
|
|
+ 21
|
|
|
+DAT[8]*256+DAT[9],单位 0.1℃
|
|
|
+ 体重传感器
|
|
|
+ 22
|
|
|
+DAT[8]*256+DAT[9],单位 0.1kg
|
|
|
+血氧心率传感器
|
|
|
+ 23
|
|
|
+DAT[8]~DAT[8+76],详见医疗模块使用说明书中的"实时数据包"。
|
|
|
+8路模拟量
|
|
|
+30
|
|
|
+DAT[8]:通道1的模拟量值;
|
|
|
+DAT[9]:通道2的模拟量值;
|
|
|
+DAT[10]:通道3的模拟量值;
|
|
|
+DAT[11]:通道4的模拟量值;
|
|
|
+DAT[12]:通道5的模拟量值;
|
|
|
+DAT[13]:通道6的模拟量值;
|
|
|
+DAT[14]:通道7的模拟量值;
|
|
|
+DAT[15]:通道8的模拟量值;
|
|
|
+
|
|
|
+8路数字量
|
|
|
+31
|
|
|
+DAT[8]:8路数字量输入值,每个BIT位对应一路输入;
|
|
|
+DAT[9]:8路数字量输出值,每个BIT位对应一路输出。
|
|
|
+
|
|
|
+ 直流电机/风扇
|
|
|
+ 40
|
|
|
+待定
|
|
|
+ 步进电机
|
|
|
+ 41
|
|
|
+待定
|
|
|
+ 角度伺服电机
|
|
|
+ 42
|
|
|
+待定
|
|
|
+ 继电器(普通/大功率)
|
|
|
+ 43
|
|
|
+待定
|
|
|
+ 报警器(工业)
|
|
|
+ 44
|
|
|
+待定
|
|
|
+ 多彩LED
|
|
|
+ 45
|
|
|
+待定
|
|
|
+ 电磁阀(工业)
|
|
|
+ 46
|
|
|
+待定
|
|
|
+ 小型气象站
|
|
|
+ 47
|
|
|
+待定
|
|
|
+ 智能门锁
|
|
|
+ 48
|
|
|
+待定
|
|
|
+ LED显示屏
|
|
|
+ 49
|
|
|
+待定
|
|
|
+ 智能灯光
|
|
|
+ 4A
|
|
|
+待定
|
|
|
+ 智能插座
|
|
|
+ 4B
|
|
|
+待定
|
|
|
+ 智能窗帘
|
|
|
+ 4C
|
|
|
+待定
|
|
|
+ Zigbee转红外
|
|
|
+ 50
|
|
|
+DAT[8],要发送的遥控键值编码
|
|
|
+
|
|
|
+4 指令应用举例
|
|
|
+ 4.1 传感器数据传输示例:
|
|
|
+ 如超声波传感器传输一组数据如下:
|
|
|
+ 0x5a 0xa5 0X05 0X00 0X00 0X22 0x01 0x02 0X01 0X4A 0X00 0X00 0X00 0X00 0X00 0X00 0X00 0X00 0X00 0X55 0XAA
|
|
|
+ 0X50 0XA5 :帧头,固定值;
|
|
|
+ 0X05:表示超声波传感器;
|
|
|
+ 0x00 0x00 0x22:表示数据来自34号设备,超声波传感器的设备编号为34号;
|
|
|
+ 0x01:数据通过ZigBee网络传输;(该字段在数据上行时不重要,下行很关键)
|
|
|
+ 0x02:后面的数据为传感器数据;
|
|
|
+ 0x01 0x4A: (1*256+74)*0.001=0.330m;0.001为数据单位;
|
|
|
+ 0X00 0X00 0X00 0X00 0X00 0X00 0X00 0X00:保留,未使用
|
|
|
+ 0X00:0x5A开始~本字节之前的所有内容的和,保留低8位。不校验则填0x00。
|
|
|
+ 0X55 0XAA:帧尾,固定值。
|
|
|
+
|
|
|
+ 4.2 连通测试指令
|
|
|
+ 连通测试指令用于设备装配完成之后,从用户平台发送一条指令,测试数据是否能够到达终端设备。
|
|
|
+ 下行指令举例:平台测试超声波传感器(编号为34号)是否存在,超声波传感器是连接到ZigBee通信模块的。(安卓到网关)
|
|
|
+ 0x5a 0xa5 0X05 0X00 0X00 0X22 0x010x01 0X00 0X00 0X00 0X00 0X00 0X00 0X00 0X00 0X00 0X00 0X00 0X55 0XAA
|
|
|
+ 应答举例:(网关到安卓)
|
|
|
+ 0x5a 0xa5 0X05 0X00 0X00 0X22 0x010x01 0X00 0X00 0X00 0X00 0X00 0X00 0X00 0X00 0X00 0X00 0X00 0X55 0XAA
|
|
|
+ 说明:0x01表示连通测试应答
|
|
|
+ 0X00:若为0x00:通信正常;0x01:请检查网关到通信模块之间的连接;0x02:请检查通信模块到传感器之间的连接。
|
|
|
+ 4.3 控制指令示例:
|
|
|
+ 控制指令用于平台向执行机构发送控制命令,该命令没有返回值。以下指令表示平台向编号为18(0X00 0X00 0X12)的传感器(0X43)通过ZigBee(0x01)网络发送控制指令(0x03),控制继电器闭合(0X01)。
|
|
|
+ 0x5a 0xa5 0X43 0X00 0X00 0X12 0x01 0x03 0X01 0X00 0X00 0X00 0X00 0X00 0X00 0X00 0X00 0X00 0X00 0X55 0XAA
|
|
|
+
|
|
|
+
|