串口协议

更新时间:2024-03-26 07:20:57下载pdf

LTE Cat.1 模组串口通用协议适用于涂鸦 LTE Cat.1 模组与其它 MCU 串口直连,做串口通信的场景。连接方式如下图所示:

串口协议

名词解释

  • 模组:LTE Cat.1 模组的在本文中的简称,有关模组的详细说明,请参考 LTE Cat.1 模组
  • GNSS:是 Global Navigation Satellite System 的缩写,表示全球导航卫星系统。

串口通信

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

功能说明

模组功能支持情况

下表介绍了目前主要提供的几款 LTE Cat.1 模组的功能和服务支持情况。

  • Y 表示支持

  • N 表示不支持

  • O 表示需要额外设备支持

    功能 LZ201CN
    LZ501CN
    LZ211CN LZ201EU LZ211EU TCS600U TCS600E
    TCS800E
    NL668 AM MA510 MC665eu MC661CN
    MG661LA
    MG661EU
    基础服务 Y Y Y Y Y Y Y Y Y Y
    DP 服务 Y Y Y Y Y Y Y Y Y Y
    MCU 升级 Y Y Y Y Y Y Y Y Y Y
    蜂窝服务 Y Y Y Y Y Y Y Y Y Y
    密码及天气服务 Y Y Y Y Y Y Y Y N N
    低功耗蓝牙搭配 LTE Cat.1 Y Y Y Y Y Y Y Y Y Y
    定位服务 O Y O Y O O Y O O O
    AGNSS 服务 N Y N Y N N N N N N
    电话服务 Y Y Y Y Y N N N N N
    短信服务 Y Y Y Y Y N Y N N N
    电池服务 Y Y Y Y Y N N N N N
    音频服务 Y Y Y Y Y N N N N N
    蓝牙服务 Y Y N N N N N N N N
    功能控制服务 Y Y Y Y Y Y Y Y Y Y
    扩展服务 Y Y Y Y Y Y Y Y Y Y

唤醒约定

当模组有串口数据需要发送 MCU 的时候,模组的一个引脚会产生一个持续默认 60ms 的低电平。下表为不同模组的默认的的管脚。

模组型号 WAKEOUT 默认管脚 通用对接串口 备注
  • LZ201CN
  • LZ211CN
  • LZ211EAU
  • LZ201EAU
  • LZ501CN
  • TCS600U
  • 通用对接默认管脚 61:LZ501CN
  • 通用对接默认管脚 62:
    • LZ201CN
    • LZ211CN
    • LZ211EAU
    • LZ201EAU
UART1
  • 拉低该 PIN,持续 60ms
  • UART2 支持涂鸦 GNSS 模组
L610EU 通用对接默认管脚 37 UART1
  • 基础固件唤醒脚 62。参考 AT+GTWAKE,不建议使用
  • UART2 支持涂鸦 GNSS 模组
MA510GL 通用对接默认管脚 61 UART3 UART3_TXD 高电平时无法开机
NL668AM 通用对接默认管脚 62 129(TX) 130(RX) -
TCS800E 通用对接默认管脚 20 UART1(RX17,TX18) UART2(RX62,TX67)
TCS600E 通用对接默认管脚 20 UART1(RX31,TX32) UART2(RX62,TX67)
MC665EU 通用对接默认管脚 61 UART1(RX18,TX19) UART2(RX39,TX40)
MG661EU
MC661CN
MG661LA
通用对接默认管脚 20 MAIN_TXD(18),MAIN_RXD(17) AUX_UART(RX28,TX29)

帧格式

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

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

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

    具体通信方式以 协议 相关章节中描述为准。

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

    • 模组下发控制命令:

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

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

不支持命令返回格式

模组返回

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0xFF
数据长度 2 2+N(版本信息长度)
数据 2+N
  • Data[0]:命令字
  • Data[1]:子命令
  • Data[2:–]:版本信息字符串
校验和 1 从帧头开始按字节求和,得出的结果对 256 求余

例:55 AA 00 FF 00 07 70 24 31 2E 30 2E 31 87

基础服务

心跳检测(0x00)

  • 以 15s 的间隔定期发送心跳。若在超时时间(90s)内,未收到 MCU 的任何回应,则认为与 MCU 通信异常模组自动内部软件重启复位。

  • MCU 也可依据此心跳定期检测模组是否正常工作。若模组无心跳下发,则 MCU 可通过模组提供的硬件复位引脚复位模组。

模组发送

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

例:0x55aa 00 00 0000 ff

MCU 返回

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

示例:

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

查询产品信息(0x01)

产品信息由 PID(product ID)、MCU 软件版本构成:

  • PID:为产品标识,由 涂鸦 IoT 开发平台 生成,用于云端记录产品相关信息。
  • MCU 软件版本号格式定义:采用点分十进制形式,格式为 "x.x.x"(0<=x<=99),x 为十进制数。

模组发送

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

例:0x55aa 00 01 0000 00

MCU 返回

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x03
命令字 1 0x01
数据长度 2 N
数据 N {“p”:“AIp08kLIftb8x2x0”,
 “v”:“1.0.0”,
 “m”:1,
 “apn”:“xxx”,
 “mht”:60,
 “qr”:1,
 “slave”:1,
 “ext_ota”:[ {
  “ch”:1,
  “v”:“0.1.1”
  },
  …
 {
  “ch”:n,
  “v”:“0.1.n”
  }],
 “U”:0,
 “dp_cache”:1,
 “cops”:“xxx”
“dp_ack”:1,
“online_tts”:0 }
其中 apn 是可选项。如果没有配置 apn,系统会根据卡自动配置 apn,一般二级运营商的卡都需要配置。mhtqrslave 是可选项。
校验和 1 从帧头开始按字节求和,得出的结果对 256 求余

例:{"p":"AIp08kLIftb8x2x0", "v":"1.0.0", "m":1}

  • p:表示产品 ID 为 AIp08kLIftb8x2x0。
  • v:表示 MCU 版本为 1.0.0。
  • m:表示模组的功耗:
    • 0:正常功耗
    • 1:低功耗,提供的定时器为 1 秒一个周期
  • mht:表示模组的 MQTT 心跳间隔时间,单位秒。默认心跳间隔 300s。
  • qr:表示模组获取扫码配网使用的二维码的短码的字段。
    • qr 字段设置为 1 时,会获取二维码短码。
    • 设置为 0 时不会获取二维码短码。如果设备已经绑定,不再获取短码地址。
  • slave:表示低功耗蓝牙搭配 LTE Cat.1 的模式。
  • ext_ota:表示附属 MCU 多通道固件版本。v 版本信息最大 10 字节,最多支持 6 组。但是,应用固件和基础固件占用的通道不能用。
  • U:表示 MCU OTA 升级方式选择:
    • 0:协议版本为 0
    • 1:协议版本为 1
      • slave 配置时,U 未配置,固定协议版本为 0。
      • slave 配置时,U 有配置,0 表示协议版本 0,1 表示协议版本 1。
      • slave 未配置时,U 未配置,固定协议版本为 0。
      • slave 未配置时,U 有配置,0 表示协议版本 0,1 表示协议版本 1。
  • dp_cache:是否开启 DP 缓存。开启 DP 缓存需要额外的云端功能,如果您有需求,请联系您的涂鸦客户经理。
    • 1:开启。
    • 其他:关闭。
  • cops:该字段为可选项。设置运营商 PLMN(Public Land Mobile Network)值。该值的必须必须是数字编码。例如 cops:"20416",该字段等同于 AT 指令:AT+COPS=1,2, "xxxxx"
  • dp_ack:该字段为可选项。1 为开启,开启后下发 DP 数据给 MCU,会进行 ACK 确认,未收到 ACK 会进行重发。最多重发三次、每次等待 ACK 为 500ms。
  • online_tts:该字段设置为 1 的时候,表示支持涂鸦在线 TTS(Text-to-Speech)音频功能。该功能只有在模组支持音频服务时才有效。

查询 MCU 设定模组的工作模式(0x02)

模组工作模式区分设置模组的工作状态以及重置模组方式,分两种情况:

  • MCU 与模组配合处理:

    • 即模组通过串口通知 MCU 当前的工作状态,由 MCU 提供显示支持。
    • MCU 检测出模组的重置需求,通过串口通知模组重置模组。
  • 模组自处理:

    • 模组的工作状态通过模组的 NET_MODE 引脚驱动 LED 状态显示。
    • 模组重置通过检测 GPIO 输入需求处理。模组重置方法为,模组检测 GPIO 入口低电平持续 3s 以上触发模组重置。指示灯与按钮所使用的 GPIO 管脚由以下命令配置,但是在低功耗模式无法触发该功能。
    • 模组自处理模式下,LED 灯只支持 NET_MODE 指示灯。此时,模组不上报设备联网状态
    • MA510 模组,建议保留 USB 口及在出货地进行现网测试,以便得到最好的用户体验。
    • 需要重点关注 APN,APN 和卡关联性极强,错误的 APN 可能造成无法联网。

模组发送

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

例:0x55aa 00 02 0000 01

MCU 返回

字段 字节数 说明
帧头 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)

报告设备联网状态(0x03)

设备联网状态 描述 状态值
状态 1 SIM 卡未连接 0x00
状态 2 搜索网络中 0x01
状态 3 已成功注册未联网 0x02
状态 4 联网成功并获取到 IP 0x03
状态 5 设备已连接到云端 0x04
状态 6 SIM 基站注册被拒绝,可能是 SIM 当前的业务未开通 0x05
状态 7 设备待配网 0x06
状态 8 未知状态 0xFF
  • 设备联网状态:
    • 1:SIM 卡未连接
    • 2:搜索网络中
    • 3:已成功注册未联网
    • 4:联网成功并获取到 IP
    • 5:设备已连接到云端
    • 6:是 SIM 基站注册被拒绝,可能是 SIM 当前的业务未开通
    • 7:设备等待配网
  • 当模组检测到 MCU 重启或 MCU 断线再上线的事件,会主动下发联网状态至 MCU。
  • 当模组的联网状态发生变化,会主动下发联网状态至 MCU。
  • 如设置模组工作模式为 模组自处理,则 MCU 无需实现该协议。

模组发送

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

例:0x55aa 00 03 0001 00 03

MCU 返回

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

例:0x55aa 03 03 0000 05

模组重置(0x04)

LTE Cat.1 模组接收到重置命令后,解除设备和云端绑定。

MCU 发送

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

例:0x55aa 03 04 0000 06

模组返回

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

例:0x55aa 00 04 0000 03

获取版本信息(0x71 41)

MCU 发送

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

模组返回

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0x71
数据长度 2 0x0002+n
数据 n
  • 子命令:0x41
  • 结果:0 表示失败,1 表示成功
  • 版本信息:内容字符串,示例:
    fw_name:xxx,fw_ver:xxx;app_name:xxx,app_ver:xxx;pro_name:xxx,pro_ver:xxx;
校验和 1 从帧头开始按字节求和,得出的结果对 256 求余

DP 服务

数据单元

命令数据单元和状态数据单元(datapoint)如下所示:

数据段 字节数 说明
dpid 1 datapoint 序号
type 1 对应 涂鸦 IoT 开发平台 上一个 DP 具体的数据类型,参考下表中 type 字段中表示值说明
len 2 长度对应 value 的字节数,参考下表中 type 字段说明
value 1/2/4/N 用 16 进制表示,大于 1 字节采用大端传输

datapoint 中的 type 字段说明:

type 数据类型 字节数 说明
0x00 Raw N 对应于 Raw 型 datapoint,采用模组透传的方式传输
0x01 Bool 1 范围:0x00 或 0x01
0x02 Value 4 又称 Integer 类型,采用大端表示
0x03 String N 对应于具体字符串
0x04 Enum 1 枚举类型,范围为 0-255
0x05 Bitmap 1/2/4 长度大于 1 字节时,采用大端传输
  • datapoint 命令/状态数据单元中,除 Raw 类型外,其他类型均属于 Object 数据类型。
  • 命令下发 可含多个 datapoint 命令数据单元。
  • 命令下发 为异步处理协议,对应于 MCU 的 datapoint 状态上报

命令下发(0x06)

模组发送

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

例:系统开关对应 3 号 DP,使用 bool 型变量,开机数值为 1 0x55aa 00 06 0005 03 01 0001 01 10

状态上报(0x07)

  • datapoint 状态数据单元,说明详见 数据单元 章节。

  • 状态上报为异步处理协议,状态上报触发机制有三类:

    • MCU 收到命令下发处理帧时,正确执行相应 datapoint 命令,再通过状态上报帧,将变化后的 datapoint 状态发送至模组。

    • MCU 主动检测到 datapoint 有变化,将变化后的 datapoint 状态发送至模组。

    • MCU 收到 状态查询 帧时,将所有的 datapoint 状态发送至模组。

  • 状态上报可含多个 datapoint 命令数据单元。

MCU 发送

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

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

状态查询(0x08)

  • 状态查询为异步处理协议,主要用于模组查询 MCU 所有的 Object 类型的 datapoint 状态,当 MCU 收到此帧时,通过 状态上报 章节状态上报帧上报 datapoint 状态。

  • 状态查询发送时机主要有两种:

    • 模组首次上电,通过心跳与 MCU 建立连接后,当设备连接到涂鸦 IoT 开发平台后查询发送。

    • 模组工作过程中检测到 MCU 重启或发生了离线再上线的过程,查询发送。

模组发送

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

例:0x55aa 00 08 0000 07

状态同步上报:非记录类型(0x22)

  • 此命令为同步指令,MCU 数据状态上报后,需要等待模组返回结果。

  • 每次发送模组都会有响应,模组未响应前不可多次上报。

  • 网络较差,数据难以及时上报时,模组会在 5 后返回失败,MCU 需要等待大于 5 秒。

  • datapoint 状态数据单元说明详见 状态数据单元

  • 状态上报可含多个 datapoint 命令数据单元。

MCU 发送

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

模组返回

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

状态同步上报:记录类型(0x26)

  • 此命令为同步指令,MCU 数据状态上报后,需要等待模组返回结果。

  • 每次发送模组都会有响应,模组未响应前不可多次上报。

  • 网络不好,数据难以及时上报时,模组会在 5 后返回失败,MCU 需要等待大于 5 秒。

  • datapoint 状态数据单元说明详见 状态数据单元

  • 状态上报可含多个 datapoint 命令数据单元。

MCU 发送

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x03
命令字 1 0x26
数据长度 2 取决于 状态数据单元 类型以及个数 + 7
时间标签 7
  • Data[0]:是否带本地时间标志位
    • 0 表示这条数据不带 MCU 提供的时间,后面的时间模组认为数据无效不处理。
    • 1 表示后面的时间数据有效,时间数据为设备所在的当地时间。
    • 2 表示后面的时间数据有效,时间数据为格林时间。
  • Data[1] 为年,0x00 表示 2000 年
  • Data[2] 为月,从 1 开始到 12 结束
  • Data[3] 为日,从 1 开始到 31 结束
  • Data[4] 为时,从 0 开始到 23 结束
  • Data[5] 为分,从 0 开始到 59 结束
  • Data[6] 为秒,从 0 开始到 59 结束
数据 N 状态数据单元
校验和 1 从帧头开始按字节求和,得出的结果对 256 求余

模组返回

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

MCU 升级服务

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

  • 目前,支持四种 MCU 升级方式的配置:

    • App 提醒升级:用户每次进入设备控制面板都会收到升级提醒的弹窗,是否确认升级由用户自己在 App 确认。

    • App 静默升级:App 不会有任何提醒弹窗,固件上电后一分钟内会去自动去检测升级发现有高版本的升级包会自动开始获取相关升级包,第一次上电后模组会间隔 24 小时去云端检测一次是否有升级包配置。

    • App 强制升级:App 端会有升级提醒弹窗,如果用户不确认升级用户就没法正常使用这个产品的控制面板。

    • App 检测升级:App 端不会有任何升级提醒的弹窗,必须要用户在 App 端自己去单击相关固件版本检测,如果有高版本的固件配置才会显示升级提示信息。

  • MCU 升级相关流程:

    模组发送完所有的升级包,重新发送 01 命令字(查询产品信息)。MCU 需要在一分钟内回复产品信息中的软件版本号,带上升级后的 MCU 版本号,版本号需要和在涂鸦 IoT 开发平台配置升级的版本号保持一致。

    开始升级
    发送数据包
    数据包发送次数是否达到 3 次
    是否在 5 秒内收到 MCU 回复
    是否是最后一包
    发送下一包数据
    升级失败
    发送产品查询指令,一分钟内 MCU 回复成功
    升级后的新的 MCU 版本号
    升级成功

升级启动(0x0a)

升级启动方式含自动及手动升级。

  • 当处于自动升级时,模组检测云端 MCU 有更新版本固件,则自动启动与 MCU 升级包交互流程。
  • 当处于手动升级时,通过 App 确定,模组才启发与 MCU 升级包交互流程

模组发送

  • U: 0 协议版本:0x00

    字段 字节数 说明
    帧头 2 0x55aa
    版本 1 0x00
    命令字 1 0x0a
    数据长度 2 0x0004
    数据 4 固件包字节数,类型为 unsigned int,采用大端传输
    校验和 1 从帧头开始按字节求和,得出的结果对 256 求余

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

  • U: 1 协议版本:0x01

    字段 字节数 说明
    帧头 2 0x55aa
    版本 1 0x01
    命令字 1 0x0a
    数据长度 2 0x004F
    数据 40
    • 4 字节固件包大小,类型为 unsigned int,采用大端传输
    • 32 字节 MD5 字符串
    • 1 字节通道号
    • 3 字节版本,如版本为 01.2.04 则为 010204
    校验和 1 从帧头开始按字节求和,得出的结果对 256 求余

MCU 返回

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

例:0x55aa 03 0a 0001 00 0d

升级包传输(0x0b)

  • 升级包传输数据格式为:

    通道号(协议版本 01) + 包偏移(unsigned short) + 包数据

  • MCU 若收到该帧数据长度为 4,且包偏移大于等于固件大小,则包传输结束。

  • 最后一包,包偏移为固件大小,数据包长度为 0。

模组发送

  • U: 0 协议版本 0x00:

    字段 字节数 说明
    帧头 2 0x55aa
    版本 1 0x00
    命令字 1 0x0b
    数据长度 2 0x0004+数据包长度
    数据 4+N 前四字节,固定为包偏移,后面为数据包内容
    校验和 1 从帧头开始按字节求和,得出的结果对 256 求余
  • U: 1 协议版本 0x01:

    字段 字节数 说明
    帧头 2 0x55aa
    版本 1 0x01
    命令字 1 0x0b
    数据长度 2 0x0005+数据包长度
    数据 5+N
    • 1 字节通道号
    • 4 字节,固定为包偏移
    • 后面为数据包内容
    校验和 1 从帧头开始按字节求和,得出的结果对 256 求余

例:若要升级的文件大小 530 Byte,最后一包数据可不回复。

  • 第一包数据,包偏移为 0x00000000,数据包长度为 256 0x55aa 00 0b 0104 00000000 xx…xx XX
  • 第二包数据,包偏移为 0x00000100,数据包长度为 256 0x55aa 00 0b 0104 00000100 xx…xx XX
  • 第三包数据,包偏移为 0x00000200,数据包长度为 18 0x55aa 00 0b 0016 00000200 xx…xx XX
  • 最后一包,包偏移为 0x00000212,数据包长度为 0 0x55aa 00 0b 0004 00000212 xx…xx XX

MCU 返回

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

例:0x55aa 03 0b 0000 0d

升级状态通知(0x34 09)

模组发送

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0x34
数据长度 2 0x0002
数据 2
  • 0x09(子命令):1 字节
  • 0x01(状态):1 字节,表示升级文件校验失败
校验和 1 从帧头开始按字节求和,得出的结果对 256 求余

MCU 返回

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

蜂窝服务

获取系统时间(格林时间)(0x0c)

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

MCU 发送

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

例:0x55aa 03 0c 0000 0e

模组返回

字段 字节数 说明
帧头 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 秒)

检查模组功能(0x0e)

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

MCU 发送

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

模组返回

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

获取本地时间(0x1c)

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

MCU 发送

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

模组返回

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0x1c
数据长度 2 0x0008
数据 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 代表星期一
校验和 1 从帧头开始按字节求和,得出的结果对 256 求余

例:

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

获取模组内存(0x0f)

获取模组剩余内存,返回 -1 表示不支持获取内存。

MCU 发送

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

模组返回

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

获取 Unix 时间戳(带时区信息)(0x1b)

  • MCU 可以获取当前 Unix 时间戳,时区信息以及夏令时范围。
  • 该协议仅支持保活门锁产品。

MCU 发送

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

模组返回

字段 字节数 说明
帧头 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 求余

暂不支持夏令时获取。

获取当前模组信号强度(可选)(0x24)

MCU 发送

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

模组返回

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0x24
数据长度 2 0x0001
数据 1 RSSI 值的范围为 0~31,值越大,信号越好。
  • 0 表示 -113 dBm 或以下
  • 31 表示 -51dBm 或以上
若返回 RSSI 的值不在范围内则为无效值,表示失败。
校验和 1 从帧头开始按字节求和,得出的结果对 256 求余

通知模组开启或关闭心跳(可选)(0x25)

MCU 发送

  • 03 版本:

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

    字段 字节数 说明
    帧头 2 0x55aa
    版本 1 0x04
    命令字 1 0x25
    数据长度 2 0x0001
    数据 1
    • 0:关闭
    • 1:打开
    校验和 1 从帧头开始按字节求和,得出的结果对 256 求余

模组返回

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0x25
数据长度 2 0x0000 或 0x0001
数据 0 或 1 个字节
  • 0x00:表示失败
  • 0x01:表示成功
校验和 1 从帧头开始按字节求和,得出的结果对 256 求余

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

获取模组联网状态(0x2b)

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

报告设备联网状态 章节中保持一致。

MCU 发送

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

模组返回

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

获取模组 MAC(0x2d)

MCU 发送

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

模组返回

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0x2d
数据长度 2 0x0007
数据 7
  • Data[0] 为获取 MAC 地址是是否成功的标志:
    • 0x00 表示成功,表示后面 6 字节的 MAC 地址有效。
    • 0x01 表示获取 MAC 失败,表示后面 6 字节的 MAC 无效。
  • Data[1]~Data[6] 则表示模组有效的 MAC 地址。

设置模组工作模式(0x05)

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

MCU 发送

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

例:0x55aa 03 04 0000 06

模组返回

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

例:0x55aa 00 04 0000 03

获取模组工作模式(0x71 01)

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

MCU 发送

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

例:55 AA 03 71 00 01 01 75

模组返回

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

获取国际移动用户识别码 IMSI(0x71 02)

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

MCU 发送

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

模组返回

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0x71
数据长度 2 0x0010
数据 16
  • 子命令:0x02
  • 15 字节的 IMSI,示例为 460113012467340
校验和 1 从帧头开始按字节求和,得出的结果对 256 求余

示例:

55 AA 00 71 00 10 02 34 36 30 31 31 33 30 31 32 34 36 37 33 34 30 7C

获取 SIM 卡识别码 ICCID(0x71 03)

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

MCU 发送

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

模组返回

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0x71
数据长度 2 0x0015
数据 21
  • 子命令:0x03
  • 20 字节的 ICCID 示例为 89861118249000363490
校验和 1 从帧头开始按字节求和,得出的结果对 256 求余

示例:

55 AA 00 71 00 15 03 38 39 38 36 31 31 31 38 32 34 39 30 30 30 33 36 33 34 39 30 9A

获取设备 IMEI(0x71 04)

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

MCU 发送

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

模组返回

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0x71
数据长度 2 0x0010
数据 16
  • 子命令:0x04
  • 15 字节的 IMEI,示例:864237040014733
校验和 1 从帧头开始按字节求和,得出的结果对 256 求余

示例:

55 AA 00 71 00 10 04 38 36 34 32 33 37 30 34 30 30 31 34 37 33 33 88

蜂窝网络类型读取(0x71 43)

MCU 发送

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

模组返回

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0x71
数据长度 2 0x0002
数据 2
  • 子命令:0x43
  • 类型:
    • 1:GPRS 网络
    • 2:LTE Cat.1 网络
    • 4:CATM 网络
    • 5:NB-IoT 网络其他异常码
校验和 1 从帧头开始按字节求和,得出的结果对 256 求余

查询当前的 PLMN(0x71 48)

  • 该命令只支持 MA510 模组,并且只有在产品信息返回里有设置 COPS 才支持。

  • 该命令需要注网成功后,才能获取到 PLMN(Public Land Mobile Network)。

MCU 发送

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

模组返回

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0x71
数据长度 2 0x0002+N*PLMN
数据 3
  • 子命令:0x48
  • Data[1]:返回结果 1 成功,0 失败
  • PLMN:4 字节,当前的注网国家的 PLMN。返回大端格式的 PLMN 数组,每个 PLMN 值为 4 个字节,采用大端模式格式:
    当前 PLMN + PLMN1 … + PLMNn
校验和 1 从帧头开始按字节求和得出的结果对 256 求余

例:

  • 55 AA 03 71 00 01 48 BC

  • 55 AA 00 71 00 12 48 01 00 04 BA FC 00 04 BA FC 00 04 BC 8A 00 04 BB F4 3C

密码服务及天气信息服务

离线动态密码(0x16)

设备长时间不联网也可使用的动态密码。

MCU 发送

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x03
命令字 1 0x16
数据长度 2 N
数据 7+N Year(1) + mon(1) + day(1) + hour(1) + min(1) + sec(1) + code_len(1) + code(N)。表示格林时间 + 密码长度 + 密码。
校验和 1 从帧头开始按字节求和,得出的结果对 256 求余

例:

  • 离线密码:1849455172
  • 格林时间:2021-01-11 08:18:42
  • 发送示例:55 AA 00 16 00 11 15 01 0B 08 12 2A 0A 01 08 04 09 04 05 05 01 07 02 C3

模组回复

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0x16
数据长度 2 N
数据 3+N Result(1) + type(1) + decode_len(1) + decode(N):
  • Result:0 表示正确,非 0 表示错误(无后续数据)
  • type:0 表示限时开门密码,1 表示单次开门密码,2 表示清除密码
  • decode_len:解密后数据长度
  • decode:解密数据
校验和 1 从帧头开始按字节求和,得出的结果对 256 求余

请求云端临时密码(带 schedule 列表)(0x14)

  • 门锁主板当检测到用户使用的是多组临时密码才去调用此接口去云端获取相关数据,更新本地的密码数据和状态,这样可以最大程度节约功耗。

    模组给门锁给的相关时间数据都是基于格林时间,请门锁本地通过获取格林时间的接口同步自己的时钟数据。

  • 密码每次服务端都是全量下发,门锁需要每次根据服务端返回的所有密码和状态进行更新。
  • 保留原生效周期设置,在生效周期基础上可以按照每周重复的方式添加密码生效的计划。最多可以添加 3 个 schedule。

MCU 发送

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

门锁获取当前生效临时密码:

55 aa 00 14 00 00 13

模组返回

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0x14
数据长度 2 0x0001+N(临时密码)
数据 1+N 数据长度为 1+N 字节:
  • Data[0] 为是否获取密码成功标志,为 0 表示失败,后面不会带上相关密码和有效时间数据,数据内容长度为 1,为 1 表示成功。
  • Data[1] 密码组数(0~10) 当密码组数为 0 的时候表示面板没有创建密码。串口传输不会带上相关密码和有效时间数据.此密码组数为本包数据含有的密码数据
  • Data[2] 密码长度(后面每组的密码长度保持一致)。
  • Data[3] Bit7 表示后续是否还有数据包。Bit6-bit0 表示本包序号(从 0 开始) // 第一组密码相关数据
  • Data[4] 密码编号,实际编号需要在密码编号的数据上加 900,(1~50)。
  • Data[5] 密码有效次数,0 表示不限制次数密码即有效期内可以不限次数开门,1 表示一次性密码即有效期内只能开一次门。
  • Data[6] 密码当前状态,0 表示密码有效,1 表示面板已经进行了删除操作此密码无效
  • 密码生效日期(格林时间):
    • Data[7] 为年,0x00 表示 2000 年
    • Data[8] 为月,从 1 开始到 12 结束
    • Data[9] 为日,从 1 开始到 31 结束
    • Data[10] 为时,从 0 开始到 23 结束
    • Data[11] 为分,从 0 开始到 59 结束
    • Data[12] 为秒,从 0 开始到 59 结束
  • 密码截至日期(格林时间)
    • Data[13] 为年,0x00 表示 2000 年
    • Data[14] 为月,从 1 开始到 12 结束
    • Data[15] 为日,从 1 开始到 31 结束
    • Data[16] 为时,从 0 开始到 23 结束
    • Data[17] 为分,从 0 开始到 59 结束
    • Data[18] 为秒,从 0 开始到 59 结束
  • 临时密码(具体字节数 N=Data[2])(密码数据传输字符的 ASLL 码)
    • Data[19+N] 为 schedule 条数,即第一条 schedule 数据
    • Data[20+N] 0 表示非全天有效,分时间段有效。1 表示全天有效。后面的起始时间和结束时间为无效数据。
    • Data[21+N] 开始时间(小时)
    • Data[22+N] 开始时间(分钟)
    • Data[23+N] 结束时间(小时)
    • Data[24+N] 结束时间(分钟)
    • Data[25+N] 周循环
      • Bit0:周日
      • Bit1:周一
      • Bit2:周二
      • Bit3:周三
      • Bit4:周四
      • Bit5:周五
      • Bit6:周六
      若此条 schedule 周日,周三循环,则为 0x09/第二条 schedule 数据/…//第二组密码数据…
校验和 1 从帧头开始按字节求和,得出的结果对 256 求余

密码进制设置(0x17)

密码进制指连续的密码数字按键范围,包含以下两个概念:

  • 进制:表示所有密码数字的个数,支持 4-10。

  • 起始值:表示数字开始的数值,仅支持 0 和 1。

    密码进制对应密码按键数 密码按键从 1/0 开始 是否支持动态密码 是否支持离线密码 在线密码最小长度 安全等级 在线密码多语言配置
    4 可选 不支持 不支持 8 1/29W 支持 8-12 位密码
    5 可选 支持 不支持 8 1/39W 支持 8-12 位密码
    6 可选 支持 不支持 8 1/100W 支持 8-12 位密码
    7 可选 支持 支持 8 1/100W 支持 8-11 位密码
    8 可选 支持 支持 7 1/100W 支持 7-11 位密码
    9 可选 支持 支持 7 1/100W 支持 7-10 位密码
    10 不可选 支持 支持 7 1/100W 默认支持 7 位密码

MCU 发送

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x03
命令字 1 0x17
数据长度 2 0x0002
数据 2 Data[0] 为进制值,Data[1] 为起始值
校验和 1 从帧头开始按字节求和,得出的结果对 256 求余

举例:

  • 配置数字 12345,分别配置进制为 5,起始值为 1。

  • 配置数字 012345,分别配置进制为 6,起始值为 0。

密码进制 0x17 设置,需要在获取信息查询产品信息 0x01 之后进行设置,并在密码操作前设置。

模组返回

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0x17
数据长度 2 0x0001
数据 1
  • 0 表示设置成功
  • 非 0 表示设置失败
校验和 1 从帧头开始按字节求和,得出的结果对 256 求余

请求云端临时密码(带 schedule 列表)(0x14)

  • 门锁主板当检测到用户使用的是多组临时密码才去调用此接口去云端获取相关数据,更新本地的密码数据和状态,这样可以最大程度节约功耗。
  • 注意,模组给门锁给的相关时间数据都是基于格林时间,请门锁本地通过获取格林时间的接口同步自己的时钟数据。
  • 密码每次服务端都是全量下发,门锁需要每次根据服务端返回的所有密码和状态进行更新。
  • 保留原生效周期设置,在生效周期基础上可以按照每周重复的方式添加密码生效的计划。最多可以添加 3 个 schedule。

MCU 发送

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

门锁获取当前生效临时密码:

55 aa 00 14 00 00 13

模组返回

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0x14
数据长度 2 0x0001+N(临时密码)
数据 1+N 数据长度为 1+N 字节:
  • Data[0] 为是否获取密码成功标志,为 0 表示失败,后面不会带上相关密码和有效时间数据,数据内容长度为 1,为 1 表示成功。
  • Data[1] 密码组数(0~10)。当密码组数为 0 时,表示面板没有创建密码。串口传输不会带上相关密码和有效时间数据。此密码组数为本包数据含有的密码数据
  • Data[2] Bit7 表示后续是否还有数据包。Bit6-bit0 表示本包序号(从 0 开始)。第一组密码相关数据(长度+编号+有效次数+当前状态+生效日期+截止日期+schedule 条数+schedule 数据)。
  • Data[3] 密码长度(后面每组的密码长度保持一致)。
  • Data[4] 密码编号,实际编号需要在密码编号的数据上加 900,(1~50)。
  • Data[5] 密码有效次数,0 表示不限制次数密码即有效期内可以不限次数开门,1 表示一次性密码即有效期内只能开一次门。
  • Data[6] 密码当前状态,0 表示密码有效,1 表示面板已经进行了删除操作,此密码无效。
  • 密码生效日期(格林时间):
    • Data[7] 为年,0x00 表示 2000 年
    • Data[8] 为月,从 1 开始到 12 结束
    • Data[9] 为日,从 1 开始到 31 结束
    • Data[10] 为时,从 0 开始到 23 结束
    • Data[11] 为分,从 0 开始到 59 结束
    • Data[12] 为秒,从 0 开始到 59 结束
  • 密码截至日期(格林时间)
    • Data[13] 为年,0x00 表示 2000 年
    • Data[14] 为月,从 1 开始到 12 结束
    • Data[15] 为日,从 1 开始到 31 结束
    • Data[16] 为时,从 0 开始到 23 结束
    • Data[17] 为分,从 0 开始到 59 结束
    • Data[18] 为秒,从 0 开始到 59 结束
  • 临时密码(具体字节数 N=Data[2])(密码数据传输字符的 ASLL 码)
    • Data[19+N] 为 schedule 条数,即第一条 schedule 数据
    • Data[20+N] 0 表示非全天有效,分时间段有效。1 表示全天有效。后面的起始时间和结束时间为无效数据。
    • Data[21+N] 开始时间(小时)
    • Data[22+N] 开始时间(分钟)
    • Data[23+N] 结束时间(小时)
    • Data[24+N] 结束时间(分钟)
    • Data[25+N] 周循环
      • Bit0:周日
      • Bit1:周一
      • Bit2:周二
      • Bit3:周三
      • Bit4:周四
      • Bit5:周五
      • Bit6:周六
      若此条 schedule 周日,周三循环,则为 0x09/第二条 schedule 数据/…//第二组密码数据…
校验和 1 从帧头开始按字节求和,得出的结果对 256 求余

打开获取天气数据功能(可选)(0x20)

MCU 发送

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x03
命令字 1 0x20
数据长度 2 N((L+K)+(L+K)…)
数据 N
  • L:占用 1 字节,表示 K 的长度
  • K:请求参数名称
如:
  • L:0x06 K:w.temp
  • L:0x06K:w.pm25
  • L:0x0a K:w.humidity
校验和 1 从帧头开始按字节求和,得出的结果对 256 求余

模组返回

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0x20
数据长度 2 0x0002
数据 2
  • 字节 1:
    • 0x00 表示失败
    • 0x01 错误码,数据格式非法
    • 0x02 错误码,异常错误
  • 字节 2:0x01 表示成功,0x00 表示失败
校验和 1 从帧头开始按字节求和,得出的结果对 256 求余

下发天气数据(可选)(0x21)

下发天气数据,在打开天气数据功能后模组定时下发。

模组发送

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0x21
数据长度 2 N((LKTLV)(LKTLV)…)
数据 N
  • 0x00:表示失败
  • 0x01:错误码,表示参数服务没权限,可以确认是否购买了该参数服务
  • 0x01:表示成功
    • L:参数名长度
    • K:参数名
    • T:0x00 整形、0x01 字符串
    • L:字段名长度
    • V:字段值
校验和 1 从帧头开始按字节求和,得出的结果对 256 求余

MCU 返回

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

请求参数表如果为 w.temp,w.pm25 但返回 w.temp,返回参数少于请求参数请仔细检查请求参数名是否正确。

低功耗蓝牙和 LTE Cat.1 特定协议

产品授权

授权信息储存在低功耗蓝牙芯片内部,如果 Cat.1 模组接入,低功耗蓝牙通过 UART 将授权信息和激活信息传输到 Cat.1 模组。Cat.1 不支持主动绑定云端,也不支持从云端解绑。当低功耗蓝牙设备进行解绑的时候,需要发送命令给 Cat.1 通知已经解绑。

基本交互:

LTE Cat.1低功耗蓝牙1. 发送心跳2. 回复心跳3. 查询产品信息4. 回复产品信息5. 保存低功耗蓝牙的软件版本号启动 PDP 激活启动云服务6. 查询工作状态7. 回复工作状态8. 查询 LTE Cat.1 唯一标识9. 返回 LTE Cat.1 IMEI、设备类型以及是否绑定的标记10. 获取密钥11. 生成 public key 和共享密钥,保存共享密钥12. 应答 LTE Cat.1 pub 密钥13. 同步授权信息14. 获取到 uuid、auth_key、psk_key(可选),调用 tuya_iot_set_ext_auth_info 设置 uuid、auth_key、psk_key15. 返回授权信息同步应答,应答包中的 32 字节使用 16 字节随机数+共享密钥进行 hamc_sha256 加密16. 激活信息同步命令17. 收到激活信息后,启动 3 秒定时器18. 返回激活状态 019. 定时器调用 tuya_iot_set_ext_active_info20. 返回激活状态 4,保存激活标记LTE Cat.1低功耗蓝牙

模组唯一标识查询 (0xD0 00)

低功耗蓝牙发送

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

模组回复

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0xD0
数据长度 2 N
数据 1 子命令 0x00
1
  • result:0 表示信息获取成功,非 0 表示信息获取失败,
  • 失败后,后续数据无效
1 模组绑定状态,0 表示未绑定,1 表示绑定
1 Type 表示模组类型
  • 1:NB-IoT
  • 2:Wi-Fi
  • 3:LTE Cat.1
  • 4:Zigbee
  • 5:低功耗蓝牙(目前只有 2 和 3 用到)
N XXX (模组的唯一标识)
校验和 1 从帧头开始按字节求和,得出的结果对 256 求余

授权信息同步 (0xD0 01)

低功耗蓝牙发送

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x03
命令字 1 0xD0
数据长度 2 N
数据 N
  • 子命令 0x01
  • 加密方式
    • 0x00:AES-CBC
    • 0x01:AES_CCM
    • 0x02:其他
  • 随机数:16 字节
  • {“uuid”:“xxxx”,
    “auth_key”:“xxxx”,
    “psk_key”:“xxxx”}
    uuid、auth_key、psk_key
校验和 1 从帧头开始按字节求和,得出的结果对 256 求余

模组回复

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0xD0
数据长度 2 0x0002
数据 35
  • 子命令 0x01
  • result: 0 信息获取成功,非 0 信息获取失败
  • 加密方式
    • 0x00:AES-CBC
    • 0x01:AES_CCM
    • 0x02:其他
  • 对随机数做 hmac_sha256,Key 使用共享秘钥,key_len 为 32 字节
校验和 1 从帧头开始按字节求和,得出的结果对 256 求余

激活信息同步 (0xD0 02)

低功耗蓝牙发送

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x03
命令字 1 0xD0
数据长度 2 N
数据 1+N
  • 子命令 0x02
  • {
    “devId”:“xxxx”,
    “localKey”:“xxxx”,
    “secKey”:“xxxx”,
    “env”:“xxxx”,
    “region”:“xxxx”
    }
    该字段部分加密,采用 AES 加密,具体算法由加密方式字段决定。其中:
    • Key:取共享秘钥的前 16 字节
    • iv:全 0
    • Padding:补齐非 16 整数倍相差的字节
校验和 1 从帧头开始按字节求和,得出的结果对 256 求余

模组回复

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0xD0
数据长度 2 1
数据 1 子命令 0x02
Result 0 表示收到激活信息,正在激活中(激活成功可按 状态上报命令,其它结果表示激活失败
校验和 1 从帧头开始按字节求和,得出的结果对 256 求余

密钥获取 (0xD0 03)

低功耗蓝牙发送

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x03
命令字 1 0xD0
数据长度 2 0x42 (66)
数据 66
  • 子命令 0x03
  • 加密曲线类型
    • 1:secp192r1
    • 2:secp224r1
    • 3:secp256r1
    • 4:secp256k1
  • MCU 公钥:64 字节
校验和 1 从帧头开始按字节求和,得出的结果对 256 求余

模组回复

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0xD0
数据长度 2 0x42 (66)
数据 66
  • 子命令 0x03
  • 加密曲线类型
    • 1:secp192r1
    • 2:secp224r1
    • 3:secp256r1
    • 4:secp256k1
  • 模组公钥:64 字节
校验和 1 从帧头开始按字节求和,得出的结果对 256 求余

定位服务

启动或关闭设备 GNSS 定位功能(可选)(0x72 81)

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

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

MCU 发送

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

模组返回

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0x72
数据长度 2 0x0002/0x0003
数据 3
  • 子命令:0x81,启动或者关闭状态:
    • 0:失败
    • 1:成功
  • 定位类型状态:关闭时该状态显示值无效。部分 GPS 模组不支持,该返回值可以忽略:
    • 0:失败
    • 1:成功
校验和 1 从帧头开始按字节求和,得出的结果对 256 求余

LZ211 模组 定位类型只支持 GPS 搭配 BD,不可更改。

自动上报设备的 GNSS 信息(可选)(0x72 90)

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

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

MCU 发送

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

模组返回

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0x72
数据长度 2 0x0002
数据 3
  • 子命令:0x90
  • 状态:
    • 0:失败
    • 1:成功
校验和 1 从帧头开始按字节求和,得出的结果对 256 求余
  • 上报周期为 0 的时候,表示取消自动上报。
  • 上报周期大于 5 秒。
  • 自动上报的数据通过蜂窝通道。
  • 仅支持 String 类型的 DP。

启动或关闭设备 Wi-Fi 定位功能(可选)(0x72 82)

MCU 主动下发给模组根据设置的 DPID 和上报间隔,模组自动上报 GPS 定位信息到云端。启动 Wi-Fi 定位功能后,蓝牙会被关闭。

MCU 发送

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

模组返回

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

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

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

MCU 发送

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

模组返回

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0x72
数据长度 2 0x0002
数据 2
  • 子命令:0x91
  • 状态:
    • 0:失败
    • 1:成功
校验和 1 从帧头开始按字节求和,得出的结果对 256 求余
  • 上报周期为 0 的时候,表示取消自动上报。
  • 上报周期大于 5 秒。
  • 自动上报的数据通过蜂窝通道。
  • 仅支持 String 类型的 DP。

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

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

MCU 发送

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

模组返回

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0x72
数据长度 2 0x0002
数据 2
  • 子命令:0x92
  • 状态:
    • 0:失败
    • 1:成功
校验和 1 从帧头开始按字节求和,得出的结果对 256 求余
  • 上报周期为 0 的时候,表示取消自动上报。上报周期大于 5 秒。自动上报的数据通过蜂窝通道。仅支持 String 类型的 DP。
  • 建议 Wi-Fi、GNSS、LBS 三种定位模式只开启一种自动上报,上报周期和设定值可能有 1~2 秒的偏差。当某个定位信息在定时时间去获取信息失败后,会停止计时,延时 1~2 秒后再去获取,直到获取成功后,重新计时。
  • LBS 获取需要 1 秒左右的时间。

复位 GNSS 设备(可选)(0x72 83)

  • MCU 主动下发给模组复位 GNSS 设备。
  • LZ201 模组支持。
  • LZ211 模组不支持。

MCU 发送

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

模组返回

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

LZ211 模组内置了 GNSS 设备,每次在 GNSS 设备上电时会自动复位一次。

获取设备 GNSS 定位信息(经纬度格式)(0x71 10)

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

MCU 发送

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

模组返回

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

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

获取设备 GNSS 定位信息(纬经度格式)(0x71 29)

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

MCU 发送

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

模组返回

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

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

获取设备 GNSS 的 SNR(可选)(0x71 11)

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
  • 状态:
    • 0:失败
    • 1:成功
  • 信号强度:0~100(1 字节)
校验和 1 从帧头开始按字节求和,得出的结果对 256 求余

获取设备 GNSS 速度(可选)(0x71 12)

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

MCU 发送

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

模组返回

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

获取设备 Wi-Fi 定位信息(可选)(0x71 20)

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

MCU 发送

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

模组返回

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0x71
数据长度 2 0x0002+N
数据 2+N
  • 子命令:0x20
  • AP 信息个数:1(字节)
  • N 字节的定位信息(字符串)
如:18:56:80:2F:7C:36,-61;18:56:80:2F:7C:36,-61;18:56:80:2F:7C:36,-61
校验和 1 从帧头开始按字节求和,得出的结果对 256 求余

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

目前定位信息只上报最多 10 个最好信号的 AP 信息。

获取 LBS 定位信息(0x71 21)

MCU 发送命令给模组,获取定位信息。

  • LBS 定位信息的格式是:运营商编码(MCC+MCN)+位置区域码+基站编号+信号强度。
  • 例如中国电信:46000,1816,875a521,-40

一般来说某些基站编号只有 2 个字节,也就是 04ba。但是设计上涂鸦支持 4 字节的基站编号,所以可能出现 04ba0000 的情况,请在上报 LBS 的 DP 信息的时候,去掉 0000。

MCU 发送

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

模组返回

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

模组返回示例:

55 AA 00 71 00 1A 21 01 34 36 30 2C 30 30 2C 36 31 36 36 2C 32 37 35 35 36 31 33 30 2C 2D 37 35 5F

控制 LZ211 的 GNSS 主电源(仅适用于 LZ211 模组)(0x72 85)

MCU 发送命令给 LZ211 模组控制 GNSS 电源。LZ211 模组内置 GNSS 芯片,GNSS 备用电源处于常供电,主电源属于可控制模式,主电源上电属于热启动。

GNSS 上电过程中,会加载 GNSS 固件,需要 4 秒左右。GNSS 关闭主电源后,重新打开电源后,需要重新启动 GNSS 定位功能(参考章节 启动或关闭设备 GNSS 定位功能)。

MCU 发送

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x03
命令字 1 0x72
数据长度 2 0x0002
数据 2
  • 子命令:0x85,
  • 数据:Data[1]:
    • 1:打开电源
    • 0:关闭电源
校验和 1 从帧头开始按字节求和,得出的结果对 256 求余

模组返回

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

获取的 GNSS 电源状态(仅适用于 LZ211 模组)(0x71 22)

MCU 发送命令查询 LZ211 模组的 GNSS 电源状态。

MCU 发送

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

模组返回

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0x71
数据长度 2 0x0002
数据 2
  • 子命令:0x22
  • 状态:
    • 0:电源关闭
    • 1:固件加载中
    • 2:电源开启,固件记载完成
    校验和 1 从帧头开始按字节求和,得出的结果对 256 求余

    获取 GNSS 可见卫星数量(0x71 15)

    MCU 发送

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

    模组返回

    字段 字节数 说明
    帧头 2 0x55aa
    版本 1 0x00
    命令字 1 0x71
    数据长度 2 0x0003
    数据 3
    • 子命令:0x15
    • 状态:
      • 0:失败
      • 1:成功
    • 获取可见卫星数:1 字节
    校验和 1 从帧头开始按字节求和,得出的结果对 256 求余

    获取是否启动各定位功能(可选)(0x71 30)

    获取是否启动 GNSS、Wi-Fi、LBS 定位功能。

    MCU 发送

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

    模组返回

    字段 字节数 说明
    帧头 2 0x55aa
    版本 1 0x00
    命令字 1 0x71
    数据长度 2 0x0004
    数据 4
    • 子命令:0x30
    • 状态:
      • GNSS 定位:0x01 启动、0x00 关闭
      • Wi-Fi 定位:0x01 启动、0x00 关闭
      • LBS 定位:0x01 启动、0x00 关闭
    校验和 1 从帧头开始按字节求和,得出的结果对 256 求余

    电话服务

    电话呼入提醒(可选)(0x71 23 00)

    由于 MCU 与模组属于一问一答交互方式,故 MCU 收到电话呼入提醒时,应予以答复,3 秒内 MCU 不做对应指令响应,呼入即被挂断。

    模组发送

    字段 字节数 说明
    帧头 2 0x55aa
    版本 1 0x00
    命令字 1 0x71
    数据长度 2 0x0002+N(电话号码)
    数据 2+N
    • 子命令:0x23
    • 控制字:0x00
    • 电话号码(字符串 N 字节)
    校验和 1 从帧头开始按字节求和,得出的结果对 256 求余

    例如:55 aa 00 71 00 0D 23 00 31 35 38 39 30 39 38 36 37 36 37 F2

    MCU 返回

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

    例如:55 aa 03 71 00 02 23 00 98

    电话呼出(可选)(0x71 23 01)

    呼出返回成功仅代表指令下发成功。具体对方是否收到,需要通过电话状态查询。

    MCU 发送

    字段 字节数 说明
    帧头 2 0x55aa
    版本 1 0x03
    命令字 1 0x71
    数据长度 2 0x0002+N(电话号码)
    数据 2+N
    • 子命令:0x23
    • 控制字:0x01
    • 电话号码(字符串)
    校验和 1 从帧头开始按字节求和,得出的结果对 256 求余

    示例:55 aa 03 71 00 07 23 01 31 30 30 38 36 9D

    模组返回

    字段 字节数 说明
    帧头 2 0x55aa
    版本 1 0x00
    命令字 1 0x71
    数据长度 2 0x0003
    数据 3
    • 子命令:0x23
    • 控制字:0x01
    • 结果:1 表示成功,0 表示失败。
    校验和 1 从帧头开始按字节求和,得出的结果对 256 求余

    示例:55 aa 00 71 00 03 23 01 01 98

    电话接听(可选)(0x71 23 02)

    MCU 发送

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

    示例:55 aa 03 71 00 02 23 02 9A

    模组返回

    字段 字节数 说明
    帧头 2 0x55aa
    版本 1 0x00
    命令字 1 0x71
    数据长度 2 0x0003
    数据 3
    • 子命令:0x23
    • 控制字:0x02
    • 结果:1 表示成功,0 表示失败。
    校验和 1 从帧头开始按字节求和,得出的结果对 256 求余

    示例:55 aa 00 71 00 03 23 02 00 9A

    电话挂断(可选)(0x71 23 03)

    MCU 发送

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

    示例:55 aa 03 71 00 02 23 03 9B

    模组返回

    字段 字节数 说明
    帧头 2 0x55aa
    版本 1 0x00
    命令字 1 0x71
    数据长度 2 0x0003
    数据 3
    • 子命令:0x23
    • 控制字:0x03
    • 结果:1 表示成功,0 表示失败。
    校验和 1 从帧头开始按字节求和,得出的结果对 256 求余

    示例:55 aa 00 71 00 03 23 03 00 99

    电话状态查询(可选)(0x71 23 04)

    MCU 发送

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

    示例:55 aa 03 71 00 02 23 04 9C

    模组返回

    字段 字节数 说明
    帧头 2 0x55aa
    版本 1 0x00
    命令字 1 0x71
    数据长度 2 0x0003
    数据 3
    • 子命令:0x23
    • 控制字:0x04
    • 结果:
      • 0:拨号中
      • 1:空闲
      • 2:通话失败
      • 3:通话中
    校验和 1 从帧头开始按字节求和,得出的结果对 256 求余

    示例:55 aa 00 71 00 03 23 04 01 9B

    电话状态上报(可选)(0x71 23 04)

    在模组通话状态发生改变时,自动上报通话状态,避免反复查询通话状态占用资源。

    模组发送

    字段 字节数 说明
    帧头 2 0x55aa
    版本 1 0x00
    命令字 1 0x71
    数据长度 2 0x0003
    数据 3
    • 子命令:0x23
    • 控制字:0x04
    • 结果:
      • 0:拨号中
      • 1:空闲
      • 2:通话失败
      • 3:通话中
    校验和 1 从帧头开始按字节求和,得出的结果对 256 求余

    示例:55 aa 00 71 00 03 23 04 01 9B

    设置 VoLTE 开关(0x72 94)

    设置 VOLTE 开关,打开时,支持 4G 模式下语音通话功能。否则,语音通话时,网络制式将自动切换到 2G。在 SIM 卡支持语音业务的情况下,如果运营商网络不支持 2G,需要打开此开关,才能支持通话功能。如果运营商网络同时支持 2G、4G 语音,用户可以自由选择是否开启 VOLTE。VOLTE 的开关设置掉电会保存。

    LZxxx-CN 模组目前仅支持 4G 网络,系统默认开启 VOLTE。LZ211-EAU 模组同时支持 2G、4G 网络,系统默认开启 VOLTE。如果用户不希望开启 VOLTE,可通过该接口关闭 VOLTE 功能。

    MCU 发送

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

    模组返回

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

    发送 DTMF 指令(0x72 95)

    用于实现 10086 之类的语音交互,语音提示后,用户操作按键,调用该接口将按键音频发送到语音通道,该函数只能在通话状态后调用,否则将调用失败。

    MCU 发送

    字段 字节数 说明
    帧头 2 0x55aa
    版本 1 0x03
    命令字 1 0x72
    数据长度 2 0x0002
    数据 n
    • Data[0] 子命令:0x95
    • Data[1] 信号音类型:
      • 0 DTMF 0
      • 1 DTMF 1
      • 2 DTMF 2
      • 3 DTMF 3
      • 4 DTMF 4
      • 5 DTMF 5
      • 6 DTMF 6
      • 7 DTMF 7
      • 8 DTMF 8
      • 9 DTMF 9
      • 10 DTMF A
      • 11 DTMF B
      • 12 DTMF C
      • 13 DTMF D
      • 14 DTMF #
      • 15 DTMF *
    • Data[2]-Data[5] 音频持续时长,单位为毫秒,高字节在前
    校验和 1 从帧头开始按字节求和,得出的结果对 256 求余

    模组返回

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

    DTMF 监听功能使能(0x72 99)

    MCU 发送

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

    模组返回

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

    DTMF 监听上报(0x71 95)

    模组发送

    字段 字节数 说明
    帧头 2 0x55aa
    版本 1 0x03
    命令字 1 0x71
    数据长度 2 0x0002
    数据 2
    • Data[0] 子命令:0x95
    • Data[1] 信号音类型:
      • 0 DTMF 0
      • 1 DTMF 1
      • 2 DTMF 2
      • 3 DTMF 3
      • 4 DTMF 4
      • 5 DTMF 5
      • 6 DTMF 6
      • 7 DTMF 7
      • 8 DTMF 8
      • 9 DTMF 9
      • 10 DTMF A
      • 11 DTMF B
      • 12 DTMF C
      • 13 DTMF D
      • 14 DTMF #
      • 15 DTMF *
    校验和 1 从帧头开始按字节求和,得出的结果对 256 求余

    设置或查询通话 MIC 增益(可选)(0x71 46)

    MCU 发送

    字段 字节数 说明
    帧头 2 0x55aa
    版本 1 0x03
    命令字 1 0x71
    数据长度 2 0x0002/0x0003
    数据 2 子命令:Data[0] 子命令:0x46
    查询命令:Data[1] 0 查询
    设置设置命令:
    Data[1] 1 – 设置
    Data[2] 设置值 0~30(0 静音)
    校验和 1 从帧头开始按字节求和得出的结果对 256 求余

    模组发送

    字段 字节数 说明
    帧头 2 0x55aa
    版本 1 0x00
    命令字 1 0x71
    数据长度 2 0x0003/0x0004
    数据 2 子命令:0x46
    查询 命令:
    Data[1] 0 查询
    Data[2] 0 失败 1 成功
    Data[3] 设置值 0~30(0 静音)

    设置命令:
    Data[1] 1 设置
    Data[2] 0 失败 1 成功
    校验和 1 从帧头开始按字节求和得出的结果对 256 求余

    数据设置后会保存在 FLASH 中,在进入通话模式后,会根据设置的值自动设置增益到 MIC 驱动中。如果设置的时候在通话模式中会实时设置的 MIC 驱动中。

    未设置会报查询失败。

    示例:

    • 查询命令:55 aa 03 71 00 02 46 00 BB

    • 设置命令: 55 aa 03 71 00 03 46 01 10 CD

    设置或查询侧音增益(可选)(0x71 47)

    该命令需要在通话过程中才有效。

    MCU 发送

    字段 字节数 说明
    帧头 2 0x55aa
    版本 1 0x03
    命令字 1 0x71
    数据长度 2 0x0002/0x0003
    数据 3 Data[0] 子命令:0x47
    查询命令:Data[1] 0 – 查询
    设置设置命令:
    Data[1] 1 – 设置
    Data[2] 0~100
    校验和 1 从帧头开始按字节求和得出的结果对 256 求余

    模组返回

    字段 字节数 说明
    帧头 2 0x55aa
    版本 1 0x00
    命令字 1 0x71
    数据长度 2 0x0004/0x0003
    数据 3 子命令:0x47
    Data[1]类型选择:
    Data[1] 0 查询
    Data[2] 0 失败 1 成功
    Data[3] 设置值 0~100

    设置命令:
    Data[1] 1 设置
    Data[2] 0 失败 1 成功
    校验和 1 从帧头开始按字节求和得出的结果对 256 求余

    数据设置后会保存在 FLASH 中,在进入通话模式后,会根据设置的值自动设置侧音增益到驱动中。如果设置的时候在通话模式中会实时设置到驱动中。

    未设置会报查询失败。

    示例:

    • 查询命令:55 aa 03 71 00 02 47 00 BC

    • 设置命令: 55 aa 03 71 00 03 47 01 05 C3

    短信服务

    接收到短信通知(可选)(0x71 24 00)

    模组收到短信后,会主动上报给 MCU,MCU 接收到短信后,模组会把收到的短信删除。以防止 SIM 中短信满后,无法接收到新的信息。

    如果不设置短信收发格式,收是默认 JSON 格式。

    模组发送

    字段 字节数 说明
    帧头 2 0x55aa
    版本 1 0x00
    命令字 1 0x71
    数据长度 2 0x0002+N
    数据 2+N
    • 子命令:0x24
    • 控制字:0x00
    • 短信内容:N 字节
    • 协议版本:0x03 格式如下:{“n”:“10086”, “t”:“2021-3-29 16:58” “c”:“xxxdfasfd”}
    • 协议版本:0x04 格式如下:
      • 电话号码长度:1 字节
      • 电话号码:N 字节
      • 日期内容长度:1 字节
      • 日期内容:N 字节
      • 短信内容长度:2 字节
      • 短信内容:N 字节
    校验和 1 从帧头开始按字节求和,得出的结果对 256 求余

    MCU 返回

    字段 字节数 说明
    帧头 2 0x55aa
    版本 1 0x03
    命令字 1 0x71
    数据长度 2 0x0003
    数据 3
    • 子命令:0x24
    • 控制字:0x0
    • 结果:
      • 0:失败
      • 1:成功
    校验和 1 从帧头开始按字节求和,得出的结果对 256 求余

    上报的短信内容为 JSON 格式,其那 n 表示电话号码,t 表示时间,c 表示短信中的具体内容,编码格式为 GB2312。

    发送短信(可选)(0x71 24 01)

    如果不设置短信收发格式,发短信是版本 03 为 JSON 格式,版本 04 为 HEX 格式。

    MCU 发送

    字段 字节数 说明
    帧头 2 0x55aa
    版本 1 0x03
    命令字 1 0x71
    数据长度 2 0x0002+N
    数据 2+N
    • 子命令:0x24
    • 控制字:0x01
    • 协议版本:0x03 格式如下:
    • {“n”:“10086”, “c”:“xxxdfasfd”}
    • 协议版本:0x04 格式如下:
      • 电话号码长度:1 字节
      • 电话号码:N 字节
      • 短信内容长度:2 字节
      • 短信内容:N 字节
    校验和 1 从帧头开始按字节求和,得出的结果对 256 求余

    以中文短信发送 您好 为例:

    55aa037100202401 7b226e223a223135383930393836373533222c2263223a22c4e3bac3227d A2

    模组返回

    字段 字节数 说明
    帧头 2 0x55aa
    版本 1 0x00
    命令字 1 0x71
    数据长度 2 0x0003
    数据 3
    • 子命令:0x24
    • 控制字:0x01
    • 结果:
      • 0:失败
      • 1:成功
    校验和 1 从帧头开始按字节求和,得出的结果对 256 求余

    以中文短信发送 您好 为例:

    55aa00710003240101 99

    设置短信编码格式(可选)(0x71 24 02)

    设置收发短信的编码方式。LZ211-EAU 模组的短信默编码是 UTF-8,CN 模组的短信默认编码均为 CP936。该设置掉电后失效。

    MCU 发送

    字段 字节数 说明
    帧头 2 0x55aa
    版本 1 0x03
    命令字 1 0x71
    数据长度 2 0x0003
    数据 3
    • 子命令:0x24
    • 控制字:0x02
    • 编码方式:
      • 0x00 ISO8859-1(不支持中文)
      • 0x01 UTF-8
      • 0x02 UTF-16BE
      • 0x03 UTF-16LE
      • 0x04 GSM
      • 0x05 CP936
    校验和 1 从帧头开始按字节求和,得出的结果对 256 求余

    模组返回

    字段 字节数 说明
    帧头 2 0x55aa
    版本 1 0x00
    命令字 1 0x71
    数据长度 2 0x0003
    数据 3
    • 子命令:0x24
    • 控制字:0x02
    • 结果:0:失败。1:成功
    校验和 1 从帧头开始按字节求和,得出的结果对 256 求余

    短信收发格式配置(0x71 24 03)

    MCU 发送

    字段 字节数 说明
    帧头 2 0x55aa
    版本 1 0x03
    命令字 1 0x71
    数据长度 2 0x0003
    数据 3
    • 子命令:0x24
    • 控制字:0x03
    • 编码方式:
      • 0x00:JSON 格式
      • 0x01:HEX 格式
    校验和 1 从帧头开始按字节求和,得出的结果对 256 求余

    模组返回

    字段 字节数 说明
    帧头 2 0x55aa
    版本 1 0x00
    命令字 1 0x71
    数据长度 2 0x0003
    数据 3
    • 子命令:0x24
    • 控制字:0x03
    • 结果:0:失败,1:成功。
    校验和 1 从帧头开始按字节求和,得出的结果对 256 求余

    电池服务

    电池电量查询(可选)(0x71 25)

    MCU 发送

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

    模组返回

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

    充电状态查询(可选)(0x71 26)

    MCU 发送

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

    模组返回

    字段 字节数 说明
    帧头 2 0x55aa
    版本 1 0x00
    命令字 1 0x71
    数据长度 2 0x0002
    数据 2
    • 子命令:0x26
    • 充电状态:
      • 0 初始状态 (启动时并未检测到充电状态变化)
      • 1 开始充电
      • 2 充电结束
      • 3 电量低
      • 4 电量超低
      • 5 电池拔出
      • 6 充电器拔出
      • 7 充电故障
    校验和 1 从帧头开始按字节求和,得出的结果对 256 求余

    音频服务

    音量设置(可选)(0x72 87)

    MCU 发送

    字段 字节数 说明
    帧头 2 0x55aa
    版本 1 0x03
    命令字 1 0x72
    数据长度 2 0x0003
    数据 3
    • 子命令:0x87
    • 类型(1 字节):1 表示本地音量,2 表示通话音量
    • 音量:0~100(0 静音)
    校验和 1 从帧头开始按字节求和,得出的结果对 256 求余

    模组返回

    字段 字节数 说明
    帧头 2 0x55aa
    版本 1 0x00
    命令字 1 0x72
    数据长度 2 0x0003
    数据 3
    • 子命令:0x87
    • 类型(1 字节):1 表示本地音量,2 表示通话音量
    • 结果:0 成功,其他失败
    校验和 1 从帧头开始按字节求和,得出的结果对 256 求余

    SD 卡中音频播放(可选)(0x71 27)

    本功能是需要 SD 卡支持。

    MCU 发送

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

    模组返回

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

    本地音频播放状态查询(可选)(0x71 28)

    MCU 发送

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

    模组返回

    字段 字节数 说明
    帧头 2 0x55aa
    版本 1 0x00
    命令字 1 0x71
    数据长度 2 0x0003
    数据 3
    • 子命令:0x28
    • 状态
      • 0:空闲
      • 1:播放中
      • 2:播放中止
      • 3:播放完成
    • 结果:0 成功,其他失败
    校验和 1 从帧头开始按字节求和,得出的结果对 256 求余

    本地音频播放完成上报(可选)(0x71 2a)

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

    模组发送

    字段 字节数 说明
    帧头 2 0x55aa
    版本 1 0x00
    命令字 1 0x71
    数据长度 2 0x0002
    数据 2
    • 子命令:0x2A
    • 状态:1 表示播放完成
    校验和 1 从帧头开始按字节求和,得出的结果对 256 求余

    设置模组静音(可选)(0x72 97)

    MCU 发送

    字段 字节数 说明
    帧头 2 0x55aa
    版本 1 0x03
    命令字 1 0x72
    数据长度 2 0x0003
    数据 3
    • Data[0] 子命令:0x97
    • Data[1] 类型选择
      • 0:SMS 静音
      • 1:呼入静音
      • 2:电话通话静音
    • Data[2] 设置值
      • 0:非静音
      • 1:静音
    校验和 1 从帧头开始按字节求和,得出的结果对 256 求余

    模组返回

    字段 字节数 说明
    帧头 2 0x55aa
    版本 1 0x00
    命令字 1 0x72
    数据长度 2 0x0003
    数据 3
    • 子命令:0x97
    • 类型选择:
      • 0:SMS 静音
      • 1:呼入静音
    • 状态:
      • 0x00:失败
      • 0x01:成功
    校验和 1 从帧头开始按字节求和,得出的结果对 256 求余

    在线 TTS 音频服务(可选)(0x71、0x45)

    • 涂鸦提供在线的 TTS(文本合成语音)的服务。对应的产品需要开通 TTS 服务。
    • 产品必须先连上涂鸦,否则无法提供本服务。
    • MCU 发送的文本编码格式必须是 UTF-8,否则不支持。
    • 由于是在线的服务,所以根据网络状况存在延时。而且会消耗流量。
    • 文本越长,从云端获取的合成的音频数据越大。不建议单次文本超过 64 个字符。
    • 由于本服务是异步执行,所以从涂鸦获取音频数据超过 10 秒钟未成功,则本次服务结束。

    MCU 发送

    字段 字节数 说明
    帧头 2 0x55aa
    版本 1 0x03
    命令字 1 0x71
    数据长度 2 0x0002
    数据 2
    • 子命令:0x45
    • {“opt”:“play”,
      “timeout”:xxx,
      “context”:“xxx”}
    校验和 1 从帧头开始按字节求和,得出的结果对 256 求余

    opt:表示模式选择。支持 playquery 两种模式。

    • play 模式:蜂窝模组获取到音频后,直接由蜂窝模组播放。

      • timeout 字段表示从云端获取音频的超时时间。音频播放时间不包含在内。默认为 10s,最低不能低于 5s。
    • query 模式:查询当前的 TTS 播放状态。当选择 query 的时候,contexttimeout 字段可以不填。

    模组返回

    字段 字节数 说明
    帧头 2 0x55aa
    版本 1 0x00
    命令字 1 0x71
    数据长度 2 N
    数据 3
    • 子命令:0x45
    • data[1]:result
    校验和 1 从帧头开始按字节求和,得出的结果对 256 求余

    result

    result 含义
    -7 语音服务器未连接
    -6 参数错误
    -5 文本编码错误
    -4 网络异常
    -3 设备忙
    -2 获取失败
    -1 超时
    0 请求成功
    1 TTS 服务空闲中
    2 TTS 信息获取成功
    3 TTS 音频数据请求中
    4 TTS 音频数据下载中
    5 TTS 音频数据播放中
    6 TTS 音频数据请求失败
    7 TTS 音频数据下载失败
    8 TTS 请求超时
    9 TTS 音频数据播放完成

    内存音频播放播放(可选)(0x71 49)

    • 本功能是用来传输、控制一段内存音频数据。当前的模组支持最多 4 个音频 ID,每个音频 ID 最多 16K 字节。

    • 音频数据保存在模组的内存中,设备重启就会丢失。随后,MCU 需要重新传输内存数据给模组。

    • 增加音频数据的时候,单个传输包音频数据长度不能超过 1024 字节。

    MCU 发送:

    字段 长度(byte) 说明
    帧头 2 0x55aa
    版本 1 0x03
    命令字 1 0x71
    数据长度 2 00009+N(增加音频数据)/0004(播放)/0003(删除、停止)/0002(查询)
    数据 Data
    • 子命令:0x49
    • 控制字:1 字节
      • 1:音频数据增加
      • 2:音频 ID 删除
      • 3:播放一个音频 ID
      • 4:停止一个音频 ID
      • 5:查询已经保存在内存中的音频 ID
    • 音频 ID:1 字节,针对控制字 1、2、3、4 有效
    • 端口:1 字节,针对控制字 3 有效
      • 0:播放到本地喇叭
      • 1:播放到通话的上行链路
    • 音频文件格式:1 字节,针对控制字 1 有效
      • 1:pcm
      • 2:wavpcm
      • 3:mp3
      • 4:amr-nb
      • 5:amr-wb
    • total_size:2 字节,针对控制字 1 有效
    • offset:2 字节,针对控制字 1 有效
    • 音频数据:N 字节,针对控制字 1 有效
    校验和 1 从帧头开始按字节求和得出的结果对 256 求余

    控制字

    控制字 组合内容
    1 音频 ID、音频格式、total_sizeoffset、音频数据
    2 音频 ID
    3 音频 ID、端口
    4 音频 ID
    5

    模组返回

    字段 长度(byte) 说明
    帧头 2 0x55aa
    版本 1 0x00
    命令字 1 0x71
    数据长度 2 0x0004/0x0005
    数据 5
    • 子命令:0x49
    • 控制字:1 字节
      • 控制字为 1~4 模式下:
        状态:1 字节,0 表示成功,其他表示失败。
      • 控制字为 5 模式下
        • 音频数量:1字节
        • 音频 ID:1 字节
    校验和 1 从帧头开始按字节求和得出的结果对 256 求余

    状态值

    含义
    0 成功
    1 超过限制 16K
    2 音频 ID 忙
    3 内存音频 ID 存储已满
    4 该音频 ID 不存在
    5 该音频 ID 数据不完整
    6 音频设备忙
    7 该音频 ID 播放失败
    8 单个数据包超过 1024 字节

    示例

    • 播放音频 ID

    • 55 AA 03 71 00 04 49 03 01 00 C4

    蓝牙服务

    启动或关闭蓝牙控制(可选)(0x72 89)

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

    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
    • 状态:
      • 0:失败
      • 1:成功
    校验和 1 从帧头开始按字节求和,得出的结果对 256 求余

    功能控制服务

    启动或关闭设备低电压关机功能(可选)(0x72 88)

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

    MCU 发送

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

    模组返回

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

    二维码主动推送给 MCU(0x72 93)

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

    模组发送

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

    设置模组网络状态持续异常的时间后重启(0x72 96)

    用于模组网络在连续一定时间内,无法驻网、拨号成功,执行设备重启。

    • 当前可设置的最小时间 180 秒(误差在 60 秒内)。
    • 如果持续时间是 0 秒,表示关闭该功能。设置进入飞行模式、未插入 SIM 卡、未开始拨号不重启设备。

    MCU 发送

    字段 字节数 说明
    帧头 2 0x55aa
    版本 1 0x03
    命令字 1 0x72
    数据长度 2 0x0003
    数据 3
    • Data[0] 子命令:0x96
    • Data[1]-Data[2] 连续异常时间单位秒,高字节在前
    校验和 1 从帧头开始按字节求和,得出的结果对 256 求余

    模组返回

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

    模组重启(可选)(0x72 98)

    MCU 发送

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

    模组自动直接重启。

    蜂窝告警事件上报(0x71 9a)

    模组发送

    字段 字节数 说明
    帧头 2 0x55aa
    版本 1 0x00
    命令字 1 0x71
    数据长度 2 0x0002
    数据 2
    • Data[0] 子命令:0x9A
    • Data[1] 类型:
      • 1:网络注册错误
      • 2:网络 PDP 激活错误
      • 3:TCP 网络无法连接(连接云端后网络异常才会上报)
    校验和 1 从帧头开始按字节求和,得出的结果对 256 求余

    外部唤醒管脚配置(0x72 9b)

    针对新增模组外部唤醒管脚变化时进行配置。

    目前使用 LZ501、LZ201、LZ211 已经默认配置,不需要使用此命令。

    MCU 发送

    字段 字节数 说明
    帧头 2 0x55aa
    版本 1 0x03
    命令字 1 0x72
    数据长度 2 0x0003
    数据 3
    • 子命令:0x9BGPIO
    • 管脚:1 字节
    • 低电平持续时间:1 字节(10ms 单位)
    校验和 1 从帧头开始按字节求和,得出的结果对 256 求余

    模组返回

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

    配置远程日志开关(0x72 9c)

    默认关闭,记录到 KV 存储中。

    MCU 发送

    字段 字节数 说明
    帧头 2 0x55aa
    版本 1 0x03
    命令字 1 0x72
    数据长度 2 0x0002
    数据 2 子命令:0x9C
    • 00:关闭
    • 01:开启
    校验和 1 从帧头开始按字节求和,得出的结果对 256 求余

    模组返回

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

    通知 MCU 主动重启设备(0x72 9d)

    只支持 MA510 模组。

    模组发送

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

    MCU 返回

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

    SIM 卡热插拔使能控制(0x72 9e)

    模组默认关闭,开启后会保存到 KV 存储。

    MCU 发送

    字段 字节数 说明
    帧头 2 0x55aa
    版本 1 0x03
    命令字 1 0x72
    数据长度 2 0x0001
    数据 1
    • 子命令:0x9E
    • 控制:
      • 1:使能
      • 0:关闭
    校验和 1 从帧头开始按字节求和,得出的结果对 256 求余

    模组返回

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

    模组拓展服务

    开模组重置状态通知(可选) (0x34 04)

    目前模组支持本地移除、App 移除、App 恢复出厂设置但是 MCU 没有办法知道模组这些

    状态的通知这个服务用于有需要的用户打开模组状态通知。

    MCU 发送

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

    模组返回

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

    模组重置状态通知(可选) (0x34 05)

    设备重置状态 描述 状态值
    状态 1 模组本地重置 0x00
    状态 2 App 远程重置 0x01
    状态 3 App 恢复出厂重置 0x02

    重置状态的发送最多也会重发两次,重发间隔保持 1 秒。

    模组发送

    字段 字节数 说明
    帧头 2 0x55aa
    版本 1 0x00
    命令字 1 0x34
    数据长度 2 0x0002
    数据 1 0x05(子命令)
    数据 1 重置状态:
    • 0x00:模组本地重置
    • 0x01:App 远程重置
    • 0x02:App 恢复出厂重置
    校验和 1 从帧头开始按字节求和,得出的结果对 256 求余

    MCU 返回

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

    更新记录

    文档版本 修订说明
    1.1.0
    • 增加在线 TTS 播放命令 0x45
    • 增加未知状态的网络状态说明
    • 增加传输、播放音频数据协议 0x49
    • 增加设备待配网网络状态
    1.0.20
    • 增加 DP 命令下发是否回复 ACK 标志
    • 增加电话通话中 MIC 及侧音增益设置和读取
    • TCS600U 模组 的默认唤醒脚改为 70
    • 增加 MC665EU 模组
    • 增加获取 PLMN 方式(仅 MA510 模组支持)
    • 移除获取 GPS 版本指令
    1.0.19 增加升级状态通知
    1.0.18 增加重置状态通知的命令
    1.0.17
    • 网络类型增加 NB 和 CATM
    • 通知 MCU 主动重启设备
    • 增加 SIM 卡热插拔使能控制命令
    • 产品信息查询中,增加运营商编码
    1.0.16
    • 增加配置远程日志开关
    • 增加 MCU 升级版本选择
    • 增加 DP 缓存功能配置
    • 增加记录类型 DP 上报
    • 增加 460800/921600 波特率自适应
    1.0.15
    • 增加 GNSS 版本信息获取
    • 增加 GNSS 可见星获取
    • 增加外部唤醒关键配置
    • 增加蓝牙状态读取
    • 增加网络类型状态上报和读取
    1.0.14
    • 修改心跳关闭功能,增加开启控制
    • 增加版本信息获取命令
    • 增加 DTMF 监听上报 MCU 功能
    • 增加蜂窝告警事件上报功能
    1.0.13
    • 增加静音设置(通话)
    • 增加 HEX 格式短信收发定义
    • 增加短信收发格式设置
    1.0.12
    • 添加设置模组网络状态持续异常的时间后重启命令
    • 增加静音设置(短信,呼入)
    • 增加不支持命令返回
    • 支持低功耗蓝牙+LTE Cat.1
      • 增加命令 D0 及其子命令
      • 产品信息返回里需要增加 slave 字段
    • MCU 升级包传输增加命令版本 01,为低功耗蓝牙升级增加 CRC32 字段
    • 短信编码设置支持 UTF-16BE、UTF-16LE、GSM
    • 增加蜂窝模组重启命令
    • 基础固件需要支持低功耗蓝牙+LTE Cat.X。
    • 中国大陆地区模组默认采用 CP936 编码格式
    • 其他国家或地区模组默认采用 UTF8 编码格式
    1.0.1 LTE Cat.1 特有命令采用子命令方式:
    • 0x71 > LTE Cat.1 读操作
    • 0x72 > LTE Cat.1 写操作
    1.0.0
    • LTE Cat.1 串口通用协议初版文档