L610通用对接协议

更新时间:2023-08-09 06:47:27下载pdf

名词约定

  • 模组:L610 Cat.1模组的简写。
  • DP:DP 为 Data Point 的缩写,即数据点,偶尔被称为 DP 点或功能点,表示智能设备所具备的功能。

串口通信约定

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

帧格式说明

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

  • 一般情况下,采用同命令字一发一收同步机制,即一方发出命令,另一方应答,若发送方超时未收到正确的响应包,则超时传输,如下图所示:

    MCU模组发送命令字 N命令字 N 应答MCU模组

    具体通信方式以协议详述中为准。

  • 模组控制命令下发及 MCU 状态上报则采用异步模式,假设模组控制命令下发命令字为 x,MCU状态上报命令字为 y,如下所示:

    模组MCU模组控制命令字 X 下发MCU 状态命令字 Y 上报模组MCU
  • MCU 状态上报:

    MCU模组MCU 状态命令字 Y 上报MCU模组

协议详述

心跳检测

  • 以15s的间隔定期发送心跳,若在超时时间(90s)内,未收到MCU的任何回应,则认为与MCU通信异常模组自动内部软件重启复位。
  • 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 (除第一次外,正常返回)

查询产品信息

  • product ID:对应涂鸦开发者平台PID(产品标识),由涂鸦云开发者平台生成,用于云端记录产品相关信息
  • 产品信息由product ID、MCU软件版本构成
  • 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 表示模组拉取扫码配网使用的二维码的短码的字段。
    • 1:拉取二维码短码。
    • 0:不拉取二维码短码(如果设备已经绑定,不再获取短码地址)。

查询工作模式

  • 模组工作模式主要针对如何指示模组的工作状态以及如何重置模组而言,主要分两种情况:
    • MCU与模组配合处理,即模组通过串口通知MCU当前的工作状态,由MCU提供显示支持;MCU检测出模组的重置需求,通过串口通知模组重置模组。
    • 模组自处理(暂不支持):模组的工作状态通过模组的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

报告设备联网状态

设备联网状态 描述 状态值
状态1 SIM卡未连接 0x00
状态2 搜索网络中 0x01
状态3 已经成功注册未联网 0x02
状态4 联网成功并获取到IP 0x03
状态5 已连接到云端 0x04
状态6 SIM基站注册被拒绝,可能是SIM当前的业务未开通。 0x05
  • 当模组检测到MCU重启或MCU断线再上线的过程,则主动下发联网状态至MCU
  • 当模组的联网状态发生变化,则主动下发联网状态至MCU
  • 如设置模组工作模式为模组自处理,则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

重置

Cat.1接收到重置命令后,对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

设置Cat.1的工作模式

Cat.1模组有全功能工作模式,飞行模式两种。

设置工作模式时,不能重复设置,否则会返回设置失败

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

命令下发

模组下发

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

数据单元说明:

DP 命令/状态数据单元如下所示:

数据段 长度 说明
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类型的数据

数据上报

  • DP 状态数据单元说明详见命令下发
  • 状态上报为异步处理协议,状态上报触发机制有三类:
  • MCU收到命令下发处理帧时,正确执行相应 DP 命令,再通过状态上报帧将变化后的 DP 状态发送至模组;
  • MCU主动检测到 DP 有变化,将变化后的 DP 状态发送至模组;
  • MCU收到状态查询的状态查询帧时,将所有的 DP 状态发送至模组。
  • 状态上报可含多个 DP 命令数据单元

MCU 发送

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

例:湿度对应5号 DP,使用value型变量,湿度为30%

0x55aa 03 07 0008 05 02 0004 0000001e 3a

状态查询

  • 状态查询为异步处理协议,主要用于模组查询 MCU 所有的 Object 类型的 DP 状态,当 MCU 收到此帧时,通过数据上报状态上报帧上报 DP 状态。
  • 状态查询发送时机主要有两种:
    • 模组首次上电,通过心跳与MCU建立连接后,当设备连接到IoT平台后查询发送;
    • 模组工作过程中检测到MCU重启或发生了离线再上线的过程,查询发送。

模组发送

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

例:0x55aa 00 08 0000 07

MCU升级服务

  • 何时升级客户涂鸦IoT平台自己的产品页面配置相关升级选项触发,模组仅作为支持MCU升级的数据传输通道,也不对数据内容做任何解析。

  • 目前涂鸦平台的MCU升级支持下面四种升级方式的配置:

    • App提醒升级:这个升级方式用户每次进入设备控制面板都会收到升级提醒的弹窗,是否确认升级由用户自己在App确认
    • App静默升级:这个升级方式App不会有任何提醒弹窗,固件上电后一分钟内会去自动去检测升级发现有高版本的升级包会自动开始拉取相关升级包,第一次上电后模组会间隔24小时去云端检测一次是否有升级包配置。
    • App强制升级: 这个升级方式App端会有升级提醒弹窗,如果用户不确认升级用户就没法正常使用这个产品的控制面板。
    • App检测升级:这个升级方式App端不会有任何升级提醒的弹窗,必须要用户在App端自己去点击相关固件版本检测,如果有高版本的固件配置才会显示升级提示信息。
  • 模组发送完所有的升级包,重新发送01命令字(查询产品信息)MCU需要在一分钟回复产品信息中的软件版本号带上升级后的MCU版本号,版本号需要和在涂鸦后台配置升级的版本号保持一致。

    L610通用对接协议

升级启动

升级启动方式含自动及手动升级。当处于自动升级时,模组检测云端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

升级包传输

  • 升级包传输数据格式:包偏移(unsigned short) + 包数据
  • 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

获取格林威治时间

  • 格林时间不带有时区和夏令时的因素,是一个国际标准的时间基准。
  • 当模组连接上网络后,本地的时间戳校准完成才会返回成功,并携带有效的时间数据。

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秒)

检查模组功能

  • 模组需要插入SIM卡,检查SIM卡是否检测成功。
  • 检测模组是否经过授权。
  • 检测模式是否经过RF校准。
  • 获取当前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求余

获取本地时间

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

MCU 发送

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

模组返回:

字段 长度(Byte) 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0x1c
数据长度 2 0x0008
数据 8 数据长度为8字节:
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求余

例:

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

获取模组内存

获取模组剩余内存,返回-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求余

获取Unix时间戳

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求余

状态上报(同步)

  • 此命令为同步指令,MCU数据状态上报后,需要等待模组返回结果。
  • 每次发送模组都会有响应,模组未响应前不可多次上报。
  • 网络不好,数据难以及时上报时,模组会在5后返回失败,MCU 需要等待大于5秒。
  • DP 状态详细内容,请参考数据单元
  • 状态上报可含多个 DP 命令数据单元

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求余

获取当前模组的信号强度

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求余

通知模组关闭心跳

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建立心跳连接。

获取当前模组的联网状态

MCU 发送

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

模组返回

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

获取模组的 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求余

获取模组的工作模式

Cat.1模组有全功能工作模式,飞行模式两种。

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求余

获取国际移动用户识别码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求余

获取 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求余

获取设备的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求余

启动或关闭设备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求余

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

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

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

MCU 发送

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

模组返回

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

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

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

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

MCU 发送

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

模组返回

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

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

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

MCU 发送

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x03
命令字 1 0x72
数据长度 2 0x0002
数据 Data 子命令:0x92 上报周期:2字节(秒)(大端模式)上报的 DP ID: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秒的偏差

复位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求余

获取设备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 需要对收到的定位信息转为纬经度。

获取设备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在获取到后定位信息后,按照状态上报把模组返回的定位信息上报给云端。

获取设备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求余

获取设备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求余

获取设备 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在获取到后定位信息后,按照状态上报直接把模组返回的定位信息上报给云端。

获取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

电池电量查询(可选)

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求余

充电状态查询(可选)

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求余

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

获取是否启动 GNSS/Wi-Fi/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]:Wi-Fi 定位开启状态。1 表示启动,0 表示关闭。
Data[3]:LBS定位开启状态。1 表示启动,0 表示关闭。
校验和 1 从帧头开始按字节求和得出的结果对256

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

启动/关闭电池供电情况下低电压关机功能,默认处于关闭状态。

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

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

在设备注册后,可以启动/关闭蓝牙连接。默认启动蓝牙连接

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

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

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

模组发送

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

设置蓝牙模组HID配对

目前主要针对外接蓝牙 LE 模组,8910模组自带蓝牙 LE 不支持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求余

设置蓝牙 RSSI 数据请求

目前主要针对外接蓝牙 LE 模组,8910模组自带蓝牙 LE 不支持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求余

蓝牙HID绑定状态上报

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

模组发送

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

蓝牙HID绑定状态上报

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

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求余

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求余

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

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

模组返回

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