简体中文
简体中文
English
联系我们
注册
登录

L610通用对接协议

更新时间:2022-05-19 03:45:06下载pdf

版本记录

版本 编写/修订说明 修订人 修订日期 备注
1.0.0 创建文档 甘智鑫 20201110 初始版本
1.0.1 甘智鑫 20201116 1.新增HID绑定通知
2.获取BLE版本信息
1.0.2 杜成 20220321 1.增加本地音频播放
2.本地音频播放完成上报

1.名词约定

模块:L610 CAT1模块的简写

2.串口通信约定

波特率:115200/9600(自动侦测2分钟,如果为侦测到默认使用115200)
数据位:8
奇偶校验:无
停止位:1
数据流控:无
MCU:用户控制板控制芯片,与涂鸦模块通过串口对接

3.帧格式说明

字段 长度(Byte) 说明
帧头 2 固定为0x55aa
版本 1 升级扩展用
命令字 1 具体帧类型
数据长度 2 大端
数据 N 数据内容
校验和 1 从帧头开始按字节求和得出的结果对256求余

说明:

  • 所有大于1个字节的数据均采用大端模式传输。
  • 一般情况下,采用同命令字一发一收同步机制,即一方发出命令,另一方应答,若发送方超时未收到正确的响应包,则超时传输,如下图所示:
    L610通用对接协议
    说明:具体通信方式以"协议详述"章节中为准
  • 模块控制命令下发及MCU状态上报则采用异步模式,假设模块控制命令下发"命令字"为x,MCU状态上报"命令字"为y,如下所示:
    L610通用对接协议
    MCU状态上报:
    L610通用对接协议

4.协议详述

4.1心跳检测

说明:
1.以15s的间隔定期发送心跳,若在超时时间(90s)内,未收到MCU的任何回应,则认为与MCU通信异常模块自动内部软件重启复位。
2.MCU侧也可依据此心跳定期检测模块是否正常工作,若模块无心跳下发,则MCU可通过模块提供的硬件复位引脚复位模块。
模块发送:

字段 长度(Byte) 说明
帧头 2 固定为0x55aa
版本 1 0x00
命令字 1 0x00
数据长度 2 0x0000
数据 0
校验和 1 从帧头开始按字节求和得出的结果对256求余

例:0x55aa 00 00 0000 ff
MCU返回:

字段 长度(Byte) 说明
帧头 2 固定为0x55aa
版本 1 0x00
命令字 1 0x00
数据长度 2 0x0000
数据 1 0x00:MCU重启后第一次心跳返回值,仅发送一次,用于模块判断工作过程中MCU是否重启
0x01:除MCU重启后第一次返回0外,其余均返回此值
校验和 1 从帧头开始按字节求和得出的结果对256求余

例:0x55aa 03 00 0001 00 03(MCU第一次返回)
0x55aa 03 00 0001 01 04(除第一次外,正常返回)

4.2查询产品信息

说明:
1.product ID:对应涂鸦开发者平台PID(产品标识),由涂鸦云开发者平台生成,用于云端记录产品相关信息
2.产品信息由product ID、MCU软件版本构成
3.MCU软件版本号格式定义:采用点分十进制形式,“x.x.x”(0<=x<=99),x为十进制数

模块发送:

字段 长度(Byte) 说明
帧头 2 固定为0x55aa
版本 1 0x00
命令字 1 0x01
数据长度 2 0x0000
数据 0
校验和 1 从帧头开始按字节求和得出的结果对256求余

例:0x55aa 00 00 0000 ff
MCU返回:

字段 长度(Byte) 说明
帧头 2 固定为0x55aa
版本 1 0x03
命令字 1 0x01
数据长度 2 N
数据 N {“p”:“AIp08kLIftb8x2x0”,
“v”:“1.0.0”,
“m”:1,
“apn”:“cniot”,
“mht”:60,
“qr”:1
}
其中APN是可选项。如果没有APN,系统自动配置APN。mht、qr是可选项。
校验和 1 从帧头开始按字节求和得出的结果对256求余

例:{“p”:“AIp08kLIftb8x2x0”,“v”:“1.0.0”,“m”:1}
p表示产品ID为AIp08kLIftb8x2x0
v表示MCU版本为1.0.0
m 表示模组的功耗,0:正常功耗,1:低功耗(TUYA IOTOS提供的定时器1S一个周期)。
mht表示模组的MQTT心跳间隔时间,单位秒。默认心跳间隔100s。
qr表示模组拉取扫码配网使用的二维码的短码的字段,qr字段设置为1时会拉取二维码短码,设置为0时不会拉取二维码短码(如果设备已经绑定,不再获取短码地址)

4.3 查询MCU,设定模块的工作模式

说明:
1.模块工作模式主要针对如何指示模块的工作状态以及如何重置模块而言,主要分两种情况:
2.MCU与模块配合处理,即模块通过串口通知MCU当前的工作状态,由MCU提供显示支持;MCU检测出模块的重置需求,通过串口通知模块重置模块。
3.模块自处理(暂不支持):模块的工作状态通过模块的NET_MODE引脚驱动LED状态显示;模块重置通过检测GPIO输入需求处理。
模块自处理模块重置方法为:模块检测GPIO入口低电平持续3s以上触发模块重 置。指示灯与按钮所使用的GPIO管脚由以下命令配置(在低功耗模式无法触发该 功能)。
备注:当前自处理模式下,LED灯只支持NET_MODE指示灯;
模块发送:

字段 长度(Byte) 说明
帧头 2 固定为0x55aa
版本 1 0x00
命令字 1 0x02
数据长度 2 0x0000
数据 0
校验和 1 从帧头开始按字节求和得出的结果对256求余

例:0x55aa 00 02 0000 01
MCU返回:

字段 长度(Byte) 说明
帧头 2 固定为0x55aa
版本 1 0x03
命令字 1 0x02
数据长度 2 0x0000/0x0002
0x0000:指示模块工作为"MCU与模块配合处理"模式,MCU需实现上述"说明"中提及的功能。
0x0002:指示模块工作为"模块自处理"模式。
数据 0/2 数据长度为2:首字节为模块状态指示GPIO序号(固定值为0);次字节为模块重置按键GPIO序号
校验和 1 从帧头开始按字节求和得出的结果对256求余

例:0x55aa 03 02 0000 04(MCU与模块配合处理)
0x55aa 03 02 0002 0c0d 1f(模块自处理,指示灯0x0c:GPIO12,复位按钮0x0d:GPIO13)

4.4. 报告设备联网状态

说明:

设备联网状态 描述 状态值
状态1 0x00
状态2 搜索网络中 0x01
状态3 已经成功注册未联网 0x02
状态4 联网成功并获取到IP 0x03
状态5 已连接到云端 0x04

说明:
1.设备联网状态:1 SIM卡未连接 2 搜索网络中 3 已成功注册未联网 4 联网成功并获取到IP 5 设备已连接到云端;6是SIM基站注册被拒绝,可能是SIM当前的业务未开通。
2.当模块检测到MCU重启或MCU断线再上线的过程,则主动下发联网状态至MCU
3.当模块的联网状态发生变化,则主动下发联网状态至MCU
4.如设置模块工作模式为"模块自处理",则MCU无需实现该协议

模块发送:

字段 长度(Byte) 说明
帧头 2 固定为0x55aa
版本 1 0x00
命令字 1 0x03
数据长度 2 0x0001
数据 1 参考状态说明
校验和 1 从帧头开始按字节求和得出的结果对256求余

例:0x55aa 00 03 0001 00 03

MCU返回:

字段 长度(Byte) 说明
帧头 2 固定为0x55aa
版本 1 0x00
命令字 1 0x03
数据长度 2 0x0000
数据 0
校验和 1 从帧头开始按字节求和得出的结果对256求余

例:0x55aa 03 03 0000 05

4.5. 重置

说明:
CAT1接收到重置命令后,对SIM卡进行复位,然后重新连接蜂窝网络

MCU发送:

字段 长度(Byte) 说明
帧头 2 0x55aa
版本 1 0x03
命令字 1 0x04
数据长度 2 0x0000
数据 0
校验和 1 从帧头开始按字节求和得出的结果对256求余

例:0x55aa 03 04 0000 06

模块返回:

字段 长度(Byte) 说明
帧头 2 0x55aa
版本 1 0x03
命令字 1 0x04
数据长度 2 0x0000
数据 0
校验和 1 从帧头开始按字节求和得出的结果对256求余

例:0x55aa 00 04 0000 03

4.6. 设置CAT1的工作模式范

说明:
CAT1模组有全功能工作模式,飞行模式两种。
注意:设置工作模式时,不能重复设置,否则会返回设置失败

MCU发送:

字段 长度(Byte) 说明
帧头 2 0x55aa
版本 1 0x03
命令字 1 0x05
数据长度 2 0x0001
数据 1 1:全功能模式
4:飞行模式
校验和 1 从帧头开始按字节求和得出的结果对256求余

例:0x55aa 03 04 0000 06

模块返回:

字段 长度(Byte) 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0x05
数据长度 2 0x0000
数据 1 0:设置成功
1:设置失败
校验和 1 从帧头开始按字节求和得出的结果对256求余

例:0x55aa 00 04 0000 03

4.7命令下发

模块下发

字段 长度(Byte) 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0x06
数据长度 2 取决于数据单元的个数
数据 N 数据单元集合(见下面数据单元说明)
校验和 1 从帧头开始按字节求和得出的结果对256求余

数据单元说明:
datapoint命令/状态数据单元如下所示:

数据段 长度 说明
dpid 1 数据点序号
type 1 数据类型标识(不同的数据类型有不同的数据结构见下表格说明)
len 2 数据长度
value 1/2/4/N 实际数据,大端传输

数据类型说明

数据类型标识 类型 长度 说明
0x00 raw N 透传类型的数据
0x01 bool 1 布尔类型的数据,取值为0和1
0x02 value 4 int类型的数据
0x03 string N 字符串类型的数据
0x05 enum 1 枚举类型的数据
0x06 bitmap 1/2/4 bitmap类型的数据

4.8 数据上报

说明:
1.datapoint状态数据单元说明详见"命令下发"章节
2."状态上报"为异步处理协议,“状态上报"触发机制有三类:
3.MCU收到命令下发处理帧时,正确执行相应datapoint命令,再通过"状态上报” 帧将变化后的datapoint状态发送至模块;
4.MCU主动检测到datapoint有变化,将变化后的datapoint状态发送至模块;
5.MCU收到"状态查询"章节的状态查询帧时,将所有的datapoint状态发送至模块。
6.“状态上报"可含多个datapoint"命令数据单元”
MCU发送:

字段 长度(Byte) 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0x06
数据长度 2 取决于数据单元的个数
数据 N 数据单元集合(见上一节数据单元说明)
校验和 1 从帧头开始按字节求和得出的结果对256求余

例:湿度对应5号DP,使用valve型变量,湿度为30℃
0x55aa 03 07 0008 05 02 0004 0000001e 3a

4.9 状态查询

说明:
1."状态查询"为异步处理协议,主要用于模块查询MCU所有的"obj"类型的datapoint状态,当MCU收到此帧时,通过"数据上报"章节状态上报帧上报datapoint状态
2."状态查询"发送时机主要有两种:
3.模块首次上电,通过心跳与MCU建立连接后,当设备连接到IOT平台后查询发送;
4.模块工作过程中检测到MCU重启或发生了离线再上线的过程,查询发送。

模块发送:

字段 长度(Byte) 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0x08
数据长度 2 0x0000
数据 0
校验和 1 从帧头开始按字节求和得出的结果对256求余

例:0x55aa 00 08 0000 07

4.10 MCU升级服务

说明:
1.何时升级客户涂鸦IOT平台自己的产品页面配置相关升级选项触发,模块仅作为支持MCU升级的数据传输通道,也不对数据内容做任何解析。
2.目前涂鸦平台的MCU升级支持下面四种升级方式的配置:
3.app提醒升级:这个升级方式用户每次进入设备控制面板都会收到升级提醒的弹窗,是否确认升级由用户自己在APP确认
4.app静默升级:这个升级方式app不会有任何提醒弹窗,固件上电后一分钟内会去自动去检测升级发现有高版本的升级包会自动开始拉取相关升级包,第一次上电后模块会间隔24小时去云端检测一次是否有升级包配置。
5.app强制升级: 这个升级方式app端会有升级提醒弹窗,如果用户不确认升级用户就没法正常使用这个产品的控制面板。
6.app检测升级:这个升级方式app端不会有任何升级提醒的弹窗,必须要用户在app端自己去点击相关固件版本检测,如果有高版本的固件配置才会显示升级提示信息。
7.MCU升级相关流程图:
模块发送完所有的升级包,重新发送01命令字(3.2查询产品信息)MCU需要在一分钟回复产品信息中的软件版本号带上升级后的MCU版本号,版本号需要和在涂鸦后台配置升级的版本号保持一致。

L610通用对接协议

4.10.1 升级启动

说明:
1.升级启动方式含自动及手动升级。当处于自动升级时,模块检测云端MCU有更新版本固件,则自动启动与MCU升级包交互流程;当处于手动升级时,通过APP确定,模块才启发与MCU升级包交互流程
模块发送:

字段 长度(Byte) 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0x0a
数据长度 2 0x0004
数据 4 固件包文件大小
校验和 1 从帧头开始按字节求和得出的结果对256求余

例:0x55aa 00 0a 0004 00006800 75(固件包长度26624,即26KB)
MCU返回:

字段 长度(Byte) 说明
帧头 2 0x55aa
版本 1 0x03
命令字 1 0x0a
数据长度 2 0x0001
数据 1 升级包传输分包大小
0x00:默认256 Bytes (兼容旧固件)
0x01:512 Bytes
0x02:1024 Bytes
校验和 1 从帧头开始按字节求和得出的结果对256求余

例:0x55aa 03 0a 0001 00 0d

4.10.2 升级包传输

说明:
1.升级包传输数据格式:包偏移(unsigned short) + 包数据
2.MCU若收到该帧数据长度为4且包偏移>=固件大小,则包传输结束
模块发送

字段 长度(Byte) 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0x0b
数据长度 2 0x0004+数据包长度
数据 N 前面4个字节是包偏移,后面紧跟数据包内容
校验和 1 从帧头开始按字节求和得出的结果对256求余

MCU返回:

字段 长度(Byte) 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0x0b
数据长度 2 0x0000
数据 0
校验和 1 从帧头开始按字节求和得出的结果对256求余

例:0x55aa 03 0b 0000 0d

4.11 获取格林威治时间

说明:
(1)格林时间不带有时区和夏令时的因素,是一个国际标准的时间基准。
(2) 当模块连接上网络之前本地的时间戳校准后才会返回成功,并带有有效的时间数据。
MCU发送:

字段 长度(Byte) 说明
帧头 2 0x55aa
版本 1 0x03
命令字 1 0x0c
数据长度 2 0x0000
数据 0
校验和 1 从帧头开始按字节求和得出的结果对256求余

例:0x55aa 03 0c 0000 0e
模组返回:

字段 长度(Byte) 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0x0c
数据长度 2 0x0007
数据 7 数据长度为7字节:
Data[0]为是否获取时间成功标志,为0表示失败,为1表示成功
Data[1]为年份, 0x00表示2000年
Data[2]为月份,从1开始到12结束
Data[3]为日期,从1开始到31结束
Data[4]为时钟,从0开始到23结束
Data[5]为分钟,从0开始到59结束
Data[6]为秒钟,从0开始到59结束
校验和 1 从帧头开始按字节求和得出的结果对256求余

例:0x55aa 00 0c 0007 01 10 04 13 05 06 07 4c(格林时间2016年4月19日5时6分7秒)

4.12 检查模块功能

说明:
1.模块需要插入SIM卡,检查SIM卡是否检测成功。
2.检测模块是否经过授权。
3.检测模式是否经过RF校准。
4.获取当前4G信号强度(必须插入SIM卡)。范围为0~31,工厂可以根据自己所处的环境来判断是否合格。

MCU发送:

字段 长度(Byte) 说明
帧头 2 0x55aa
版本 1 0x03
命令字 1 0x0e
数据长度 2 0x0000
数据 0
校验和 1 从帧头开始按字节求和得出的结果对256求余

模组返回:

字段 长度(Byte) 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0x0e
数据长度 2 0x0002
数据 4 数据长度为4字节:
Data[0]: 0:SIM卡未检测到,1:SIM卡检测成功
Data[1]: 0:未写过授权,1:写过授权
Data[2]: 0:RF未校准,1:已经校准
Data[3]: 信号强度(0~31)
校验和 1 从帧头开始按字节求和得出的结果对256求余

4.13 获取本地时间

说明:
(1)本地时间是在格林时间的基础上加上当地(设备激活所在地)时区和夏令时的时间。
(2) 当模块连接上网络之前本地的时间戳校准后才会返回成功,并带有有效的时间数据。

MCU发送:

字段 长度(Byte) 说明
帧头 2 0x55aa
版本 1 0x03
命令字 1 0x1c
数据长度 2 0x0000
数据 0
校验和 1 从帧头开始按字节求和得出的结果对256求余

模组返回:

字段 长度(Byte) 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0x1c
数据长度 2 0x0008
数据 7 数据长度为7字节:
Data[0]为是否获取时间成功标志,为0表示失败,为1表示成功
Data[1]为年份, 0x00表示2000年
Data[2]为月份,从1开始到12结束
Data[3]为日期,从1开始到31结束
Data[4]为时钟,从0开始到23结束
Data[5]为分钟,从0开始到59结束
Data[6]为秒钟,从0开始到59结束
Data[7]为星期,从1开始到7结束
校验和 1 从帧头开始按字节求和得出的结果对256求余

例:
(1)如设备在国内激活使用,则当地时间为北京时间(东8区)
0x55aa 00 1c 0008 01 10 04 13 05 06 07 02 5f(北京时间2016年4月19日5时6分7秒)
(2)如果设备在国外激活使用,则当地时间为设备所处时区时间

4.14 获取模块内存

说明:获取模块剩余内存,返回-1表示不支持获取内存

MCU发送:

字段 长度(Byte) 说明
帧头 2 0x55aa
版本 1 0x03
命令字 1 0x0f
数据长度 2 0x0000
数据 0
校验和 1 从帧头开始按字节求和得出的结果对256求余

模组返回:

字段 长度(Byte) 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0x0f
数据长度 2 0x0004
数据 4 剩余内存大小,大端格式
校验和 1 从帧头开始按字节求和得出的结果对256求余

4.15 获取Unix时间戳

说明:

  1. MCU可以获取当前Unix时间戳,时区信息以及夏令时范围。
    MCU发送:
    | 字段| 长度(Byte)| 说明|
    | — | — | — |
    | 帧头| 2| 0x55aa|
    | 版本| 1| 0x03|
    | 命令字| 1| 0x1b|
    | 数据长度|2|0x0000|
    | 数据|0|无|
    | 校验和| 1| 从帧头开始按字节求和得出的结果对256求余|

模组返回:

字段 长度(Byte) 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0x1b
数据长度 2 N
数据 N Data[0]:获取时间成功与否
1:成功    0:失败
Data[1]-Data[4]:Unix时间戳
Data[5]:获取时区信息是否成功 1表示成功 0表示失败
Data[6]: 0:表示东区 1:表示西区
Data[7]:表示时区
Data[8]:是否有夏令时 1:表示有夏令时 0:表示没有夏令时
Data[9]-Data[12]:进入夏令时时间戳(大端)
Data[13]-Data[16]:退出夏令时时间戳(大端)
校验和 1 从帧头开始按字节求和得出的结果对256求余

4.16. 状态上报(同步)

说明:
1.此命令为同步指令,MCU数据状态上报后,需要等待模块返回结果;
2.每次发送模组都会有响应,模块未响应前不可多次上报;
3.网络不好,数据难以及时上报时,模块会在5后返回失败,MCU需要等待大于5秒。
4.datapoint状态数据单元说明详见"4.7节"
5.“状态上报"可含多个datapoint"命令数据单元”
MCU发送:

字段 长度(Byte) 说明
帧头 2 0x55aa
版本 1 0x03
命令字 1 0x22
数据长度 2 取决于数据长度
数据 N 状态数据单元
校验和 1 从帧头开始按字节求和得出的结果对256求余

模组返回:

字段 长度(Byte) 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0x23
数据长度 2 0x0001
数据 1 0x01:成功
0x00:失败
校验和 1 从帧头开始按字节求和得出的结果对256求余

4.17 获取当前模块的信号强度

MCU发送:

字段 长度(Byte) 说明
帧头 2 0x55aa
版本 1 0x03
命令字 1 0x24
数据长度 2 0
数据 0
校验和 1 从帧头开始按字节求和得出的结果对256求余

模块返回:

字段 长度(Byte) 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0x24
数据长度 2 0x0001
数据 1 RSSI值,范围为0-31
校验和 1 从帧头开始按字节求和得出的结果对256求余

4.18 通知模块关闭心跳

MCU发送:

字段 长度(Byte) 说明
帧头 2 0x55aa
版本 1 0x03
命令字 1 0x25
数据长度 2 0
数据 0
校验和 1 从帧头开始按字节求和得出的结果对256求余

模块返回:

字段 长度(Byte) 说明
帧头 2 0x55aa
版本 1 0x03
命令字 1 0x25
数据长度 2 0
数据 0
校验和 1 从帧头开始按字节求和得出的结果对256求余

说明:
对于需要休眠降低功耗的MCU模组,可在休眠前发送该指令关闭模块心跳,方便进入休眠状态。该指令请勿在设备刚上电时发送,模块上电后需要和MCU建立心跳连接。

4.19 获取当前模块的联网状态

MCU发送:

字段 长度(Byte) 说明
帧头 2 0x55aa
版本 1 0x03
命令字 1 0x2b
数据长度 2 0
数据 0
校验和 1 从帧头开始按字节求和得出的结果对256求余

模块返回:

字段 长度(Byte) 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0x2b
数据长度 2 0x0001
数据 1 同4.4节中的设备联网状态一致
校验和 1 从帧头开始按字节求和得出的结果对256求余

4.20 获取模块的mac地址

MCU发送:

字段 长度(Byte) 说明
帧头 2 0x55aa
版本 1 0x03
命令字 1 0x2d
数据长度 2 0
数据 0
校验和 1 从帧头开始按字节求和得出的结果对256求余

模块返回:

字段 长度(Byte) 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0x2d
数据长度 2 0x0007
数据 7 data[0]为获取MAC地址是是否成功的标志:
0x00表示成功,表示后面6字节的MAC地址有效
0x01表示获取MAC失败,表示后面6字节的MAC无效
当获取MAC地址标志位data[0]表示成功时:
data[1]~data[6]则表示模组有效的MAC地址
校验和 1 从帧头开始按字节求和得出的结果对256求余

4.21 获取模块的工作模式

CAT1模组有全功能工作模式,飞行模式两种。
MCU发送:

字段 长度(Byte) 说明
帧头 2 0x55aa
版本 1 0x03
命令字 1 0x71
数据长度 2 0x0001
数据 1 0x01
校验和 1 从帧头开始按字节求和得出的结果对256求余

例:55 AA 03 71 00 01 01 75

模块返回:

字段 长度(Byte) 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0x71
数据长度 2 0x0002
数据 2 data[0]:0x01
data[1]:0x01表示全功能模式,0x04表示飞行模式
校验和 1 从帧头开始按字节求和得出的结果对256求余

4.22 获取国际移动用户识别码IMSI

本命令可以由 MCU 控制主动发送一个 IMSI 获取包,可用于获取模块的国际移动用户识别码。
MCU发送:

字段 长度(Byte) 说明
帧头 2 0x55aa
版本 1 0x03
命令字 1 0x71
数据长度 2 0x0001
数据 1 0x02
校验和 1 从帧头开始按字节求和得出的结果对256求余

模块返回:

字段 长度(Byte) 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0x71
数据长度 2 0x0010
数据 2 data[0]:0x02
data[1]-data[15]:字符串格式IMSI
校验和 1 从帧头开始按字节求和得出的结果对256求余

4.23 获取 SIM 卡识别码ICCID

MCU 主动下发给模组获取 ICCID指令,模组将 ICCID(长度20的字串)返回给 MCU。本命令可以由 MCU 控制,主动发送 ICCID获取包,以用于获取模块的 SIM 卡识别号码
MCU发送:

字段 长度(Byte) 说明
帧头 2 0x55aa
版本 1 0x03
命令字 1 0x71
数据长度 2 0x0001
数据 1 0x03
校验和 1 从帧头开始按字节求和得出的结果对256求余

模块返回:

字段 长度(Byte) 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0x71
数据长度 2 0x0015
数据 2 data[0]:0x03
data[1]-data[20]:字符串格式ICCID
校验和 1 从帧头开始按字节求和得出的结果对256求余

4.24 获取设备的IMIE

MCU 主动下发给模组获取 IMEI 指令,模组将 IMEI(长度15的字串)返回给 MCU。本命令可以由 MCU 控制,主动发送 IMEI 获取包,以用于获取设备的 IMEI 码。
MCU发送:

字段 长度(Byte) 说明
帧头 2 0x55aa
版本 1 0x03
命令字 1 0x71
数据长度 2 0x0001
数据 1 0x04
校验和 1 从帧头开始按字节求和得出的结果对256求余

模块返回:

字段 长度(Byte) 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0x71
数据长度 2 0x0010
数据 2 data[0]:0x04
data[1]-data[15]:字符串格式IMEI
校验和 1 从帧头开始按字节求和得出的结果对256求余

4.25 启动或关闭设备GNSS定位功能(暂时不支持)

MCU 主动下发给模组设置GNSS启动或者关闭定位功能。该功能由于GNSS模组的处理事务比较多,应答的消息超时时间最大为3秒。

MCU发送

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x03
命令字 1 0x72
数据长度 2 0x0003
数据 Data 子命令:0x81
控制命令:0x01启动、0x00 关闭
定位类型:(开启模式下有效) 0x00:GPS+北斗
0x01:GPS+GLONASS
0x02:GPS
0x03:北斗(需要确认GNSS设备是否支持)
0x04:GLONASS(需要确认GNSS设备是否支持)
0x05:Galileo(需要确认GNSS设备是否支持)
校验和 1 从帧头开始按字节求和得出的结果对256求余

模组返回

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0x72
数据长度 2 0x0003
数据 3 子命令:0x81
启动或者关闭状态:
0:失败,1:成功
定位类型状态(关闭时该状态显示值无效):
0:失败,1:成功
校验和 1 从帧头开始按字节求和得出的结果对256求余

4.26 自动上报设备的GNSS信息(暂时不支持)

MCU 主动下发给模组设置GNSS启动或者关闭定位功能。该功能由于GNSS模组的处理事务比较多,应答的消息超时时间最大为3秒。启用该功能,需要首先开启GNSS定位功能。

定位类型字段在GNSS定位开启的情况下其值才有效。

MCU发送

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x03
命令字 1 0x72
数据长度 2 0x0003
数据 Data 子命令:0x90 上报周期:2字节(秒)(大端模式)上报的DPID:1字节
校验和 1 从帧头开始按字节求和得出的结果对256求余

模组返回

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0x72
数据长度 2 0x0002
数据 Data 子命令:0x90 状态:0:失败,1:成功
校验和 1 从帧头开始按字节求和得出的结果对256求余

上报周期为0的时候,表取消自动上报。上报周期不小于5秒。自动上报的数据通过蜂窝通道。

4.27 自动上报设备Wi-Fi定位信息(可选)

MCU 主动下发给模组根据设置的DPID和上报间隔,模组自动上报定位信息到云端。启用该功能,需要首先开启Wi-Fi定位功能。

MCU发送

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x03
命令字 1 0x72
数据长度 2 0x0002
数据 Data 子命令:0x91 上报周期:2字节(秒)(大端模式)上报的DPID:1字节
校验和 1 从帧头开始按字节求和得出的结果对256求余

模组返回

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0x72
数据长度 2 0x0002
数据 2 子命令:0x91 状态:0:失败,1:成功
校验和 1 从帧头开始按字节求和得出的结果对256求余

4.28 自动上报设备Wi-Fi定位信息(可选)

MCU 主动下发给模组根据设置的DPID和上报间隔,模组自动上报定位信息到云端。启用该功能,需要首先开启Wi-Fi定位功能。

MCU发送

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x03
命令字 1 0x72
数据长度 2 0x0002
数据 Data 子命令:0x91 上报周期:2字节(秒)(大端模式)上报的DPID:1字节
校验和 1 从帧头开始按字节求和得出的结果对256求余

模组返回

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0x72
数据长度 2 0x0002
数据 2 子命令:0x91 状态:0:失败,1:成功
校验和 1 从帧头开始按字节求和得出的结果对256求余

4.29 自动上报设备LBS定位信息(可选)

MCU 主动下发给模组根据设置的DPID和上报间隔,模组自动上报定位信息到云端。

MCU发送

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x03
命令字 1 0x72
数据长度 2 0x0002
数据 Data 子命令:0x92 上报周期:2字节(秒)(大端模式)上报的DPID:1字节
校验和 1 从帧头开始按字节求和得出的结果对256求余

模组返回

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0x72
数据长度 2 0x0002
数据 2 子命令:0x92 状态:0:失败,1:成功
校验和 1 从帧头开始按字节求和得出的结果对256求余

上报周期为0的时候,表取消自动上报。上报周期不小于5秒。自动上报的数据通过蜂窝通道。

建议Wi-Fi、GNSS、LBS三种定位模式只开启一种自动上报,否则上报周期和设定值可能会有1~2秒的偏差

4.30 复位GNSS设备(可选)

MCU 主动下发给模组复位GNSS设备。

MCU发送

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x03
命令字 1 0x72
数据长度 2 0x0003
数据 Data 子命令:0x83 复位GPIO:0~31,根据实际产品的GNSS设备的复位GPIO口 复位电平:0表示低电平,1表示高电平
校验和 1 从帧头开始按字节求和得出的结果对256求余

模组返回

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0x72
数据长度 2 0x0002
数据 2 子命令:0x83 状态:0:失败,1:成功
校验和 1 从帧头开始按字节求和得出的结果对256求余

4.31 获取设备GNSS定位信息(可选,经纬度格式)

MCU 主动下发给模组获取GNSS定位信息。

MCU发送

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x03
命令字 1 0x71
数据长度 2 0x0001
数据 Data 子命令:0x10
校验和 1 从帧头开始按字节求和得出的结果对256求余

模组返回

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0x71
数据长度 2 0x0002+N
数据 2+N 子命令:0x10 状态:(1:成功,0:失败) +N字节的定位信息(字符串,longitude ,latitude)
校验和 1 从帧头开始按字节求和得出的结果对256求余

模组返回的定位信息为字符串类型,MCU 在获取到后定位信息后,按照状态上报章节把模组返回的定位信息上报给云端。如果云端的DP是要求纬经度格式,则 MCU 需要对收到的定位信息转为纬经度。

4.32 获取设备GNSS定位信息(可选,纬经度格式)

MCU 主动下发给模组获取GNSS定位信息。

MCU发送

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x03
命令字 1 0x71
数据长度 2 0x0001
数据 Data 子命令:0x29
校验和 1 从帧头开始按字节求和得出的结果对256求余

模组返回

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0x71
数据长度 2 0x0002+N
数据 2+N 子命令:0x29 状态:(1:成功,0:失败) +N字节的定位信息(字符串,字符串为纬经度格式:latitude,longitude)
校验和 1 从帧头开始按字节求和得出的结果对256求余

模组返回的定位信息为字符串类型,MCU在获取到后定位信息后,按照状态上报把模组返回的定位信息上报给云端。

4.33 获取设备GNSS的SNR(可选)

MCU 主动下发给模组获取GNSS信号强度。

MCU发送

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x03
命令字 1 0x71
数据长度 2 0x0001
数据 1 子命令:0x11
校验和 1 从帧头开始按字节求和得出的结果对256求余

模组返回

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0x71
数据长度 2 0x0003
数据 3 子命令:0x11 状态:1:成功,0:失败 信号强度:0~100(1字节)
校验和 1 从帧头开始按字节求和得出的结果对256求余

4.34 获取设备GNSS速度(可选)

MCU 主动下发给模组获取GNSS瞬时速度。

MCU发送

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x03
命令字 1 0x71
数据长度 1 0x0001
数据 Data 子命令:0x12
校验和 1 从帧头开始按字节求和得出的结果对256求余

模组返回

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0x71
数据长度 2 0x0004
数据 4 DATA[0]子命令:0x12 DATA[1]状态:1:成功,0:失败 速度(2字节):单位(100米/H) DATA[2] = (速度)高数据位 DATA[3] = (速度)低数据位。 例如DATA[2]=SPEED>>8 DATA[3]=0xFF;
校验和 1 从帧头开始按字节求和得出的结果对256求余

4.35 获取设备 Wi-Fi 定位信息(可选)

MCU 主动下发给模组获取 Wi-Fi 定位信息。

MCU发送

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x03
命令字 1 0x71
数据长度 1 0x0001
数据 Data 子命令:0x20
校验和 1 从帧头开始按字节求和得出的结果对256求余

模组返回

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0x71
数据长度 2 0x0002+N
数据 2+N 子命令:0x20 AP信息个数:1(字节) N字节的定位信息(字符串) 如[“b27e525dc87d”,-64],[“957e5b5d087d”,-64]或者"b27e525dc87d,-64,957e5b5d087d,-64"
校验和 1 从帧头开始按字节求和得出的结果对256求余

模组返回的定位信息为字符串类型,MCU在获取到后定位信息后,按照状态上报直接把模组返回的定位信息上报给云端。

4.36 获取LBS定位信息

MCU 发送命令给模组,获取定位信息。LBS定位信息的格式是运营商编码(MCC+MNC)+位置区域码+基站编号。如中国电信:46011,e615,04bafc0a

MCU发送

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x03
命令字 1 0x71
数据长度 2 0x0001
数据 Data 子命令:0x21
校验和 1 从帧头开始按字节求和得出的结果对256求余

模组返回

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0x71
数据长度 2 0x0002+N
数据 Data 子命令:0x21状态:1字节(1,成功;0,失败)N字节的LBS定位信息(字符串格式)如46011,e615,04bafc0a
校验和 1 从帧头开始按字节求和得出的结果对256求余

模组返回示例

55 AA 00 71 00 15 21 01 34 36 30 31 31 2C 65 36 31 35 2C 30 34 62 61 66 63 30 61 7D

4.37 电池电量查询(可选)

MCU发送

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x03
命令字 1 0x71
数据长度 2 0x0001
数据 Data 子命令:0x25
校验和 1 从帧头开始按字节求和得出的结果对256求余

模组返回

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0x71
数据长度 2 0x0002
数据 Data 子命令:0x25电量:0~100
校验和 1 从帧头开始按字节求和得出的结果对256求余

4.38 充电状态查询(可选)

MCU发送

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x03
命令字 1 0x71
数据长度 2 0x0001
数据 Data 子命令:0x26
校验和 1 从帧头开始按字节求和得出的结果对256求余

模组返回

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0x71
数据长度 2 0x0002
数据 Data 子命令:0x26
充电状态:
1 开始充电
2 充电结束
3 电量低
4 电量超低
5 电池拔出
6 充电器拔出
7 充电故障
校验和 1 从帧头开始按字节求和得出的结果对256求余

4.39 获取是否启动定位功能(可选)

说明:获取是否启动gnss/wifi/lbs定位功能
MCU发送

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x03
命令字 1 0x71
数据长度 2 0x0001
数据 Data 子命令:0x30
校验和 1 从帧头开始按字节求和得出的结果对256求余

模组返回

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0x71
数据长度 2 0x0002
数据 Data 子命令:0x30
data[1]:GNSS定位开启状态1表示启动,0表示关闭
data[2]:WIFI定位开启状态1表示启动,0表示关闭
data[3]:LBS定位开启状态1表示启动,0表示关闭
校验和 1 从帧头开始按字节求和得出的结果对256

4.40 启动/关闭设备低电压关机功能(暂不支持)

说明:启动/关闭电池供电情况下低电压关机功能,默认处于关闭状态
MCU发送

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x03
命令字 1 0x72
数据长度 2 0x0001
数据 2 子命令:0x88 控制命令:0x01表示启动 0x00表示关闭
校验和 1 从帧头开始按字节求和得出的结果对256求余

模组返回

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0x72
数据长度 2 0x0002
数据 2 子命令:0x88
控制命令:0x01表示操作成功 0x00表示操作失败
校验和 1 从帧头开始按字节求和得出的结果对256

4.41 启动/关闭蓝牙控制(暂不支持)

说明:在设备注册后,可以启动/关闭蓝牙连接。默认启动蓝牙连接
MCU发送

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x03
命令字 1 0x72
数据长度 2 0x0002
数据 2 子命令:0x89 控制命令:0x01表示启动 0x00表示关闭
校验和 1 从帧头开始按字节求和得出的结果对256求余

模组返回

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0x72
数据长度 2 0x0002
数据 2 子命令:0x89
控制命令:0x01表示操作成功 0x00表示操作失败
校验和 1 从帧头开始按字节求和得出的结果对256

4.42 二维码主动推送给MCU(暂不支持)

说明:设备从云端获取二维码短连接后,主动发送给MCU。该功能一般使用在有屏的设备且需要在屏幕上显示绑定二维码。
模块发送

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0x72
数据长度 2 0x0001+N
数据 2 子命令:0x93 + 短连接地址(字符串格式)
校验和 1 从帧头开始按字节求和得出的结果对256求余

4.43 设置蓝牙模组HID配对

说明:目前主要针对外接BLE模组,8910模组自带BLE不支持HID功能
MCU发送

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0x72
数据长度 2 0x0002
数据 2 子命令:0x95
控制命令: 0x01表示打开HID功能
校验和 1 从帧头开始按字节求和得出的结果对256求余

模组返回

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0x72
数据长度 2 0x0002
数据 2 子命令:0x95
状态: 0x01成功,0x00失败
校验和 1 从帧头开始按字节求和得出的结果对256求余

4.44 设置蓝牙RSSI数据请求

说明:目前主要针对外接BLE模组,8910模组自带BLE不支持HID功能,在获取到蓝牙模组处于连接状态后,可发送该命令获取RSSI数据。
MCU发送

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0x72
数据长度 2 0x0007
数据 2 子命令:0x96
数据上报次数: 4 Bytes
数据上报间隔:2 Bytes(单位是ms)
校验和 1 从帧头开始按字节求和得出的结果对256求余

模组返回

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0x72
数据长度 2 0x0002
数据 2 子命令:0x96
状态: 0x01成功,0x00失败,0x02参数错误
RSSI值:蓝牙模组RSSI值
校验和 1 从帧头开始按字节求和得出的结果对256求余

4.45 蓝牙HID绑定状态上报

说明:
1.cat1命令设置蓝牙模组进行HID配对连接,如果当前已经处于HID配对连接状态,则立即上报已绑定状态;
2.cat1命令设置蓝牙模组进行HID配对连接,如果当前未处于HID配对连接状态,则进行HID配对绑定,当HID配对连接绑定完成后,上报HID绑定状态;
3.每次蓝牙连接后,蓝牙模组主动上报HID绑定状态;

模组发送

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0x71
数据长度 2 0x0002
数据 2 子命令:0x31
状态:0x00 HID配对已绑定,0x01 HID配对未绑定
校验和 1 从帧头开始按字节求和得出的结果对256求余

4.46 蓝牙HID绑定状态上报

说明:目前主要针对外接BLE模组,8910模组自带BLE不支持

MCU发送

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0x71
数据长度 2 0x0001
数据 2 子命令:0x32
校验和 1 从帧头开始按字节求和得出的结果对256求余

模组返回

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0x71
数据长度 2 0x0008
数据 2 子命令:0x32
结果:0x00成功,0x01失败
软件版本号:
硬件版本号:
校验和 1 从帧头开始按字节求和得出的结果对256求余

4.47 SD卡中音频播放播放(可选)

本功能是需要SD卡支持。

MCU发送

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0x71
数据长度 2 0x0004+N
数据 N 子命令:0x27
端口(1 Byte):0表示播放到本地喇叭
控制字(1 Byte):0,停止 1,播放 2,暂停 3,恢复
音频文件格式(1 Byte):1.pcm 2.wavpcm 3.mp3 4.amr-nb 5.amr-wb
音频文件所在路径(N Byte): 如"/sdcard0/ice_8k_16bit.pcm"
校验和 1 从帧头开始按字节求和得出的结果对256求余

模组返回

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0x71
数据长度 2 0x0005
数据 2 子命令:0x27
+端口(1字节)
+控制字(1字节)
+音频文件格式
+状态(0,成功;其他失败)
校验和 1 从帧头开始按字节求和得出的结果对256求余

4.47 本地音频播放完成上报(可选)

说明:在本地音乐播放完成后,模块会主动上报播放完成的状态给MCU。
模组返回

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0x71
数据长度 2 0x0002
数据 2 子命令:0x2A
+状态(0,成功;其他失败)
校验和 1 从帧头开始按字节求和得出的结果对256求余