文档中心

串口协议

更新时间:2020-09-10 09:55:42下载pdf

版本记录

版本 编写/修订说明 修订人 修订日期 备注
0.5.1 继承 Wi-Fi 通用门锁对接文档 郑梓滨 2019.03.08 首次创建
0.5.2 修正睡眠锁说明错误 郑梓滨 2019.03.20
0.6.0 完善文档,修改跟 Wi-Fi 一些细节差异 郑梓滨 2019.06.24
0.6.1 对记录型上报协议中的时间字段规则更新 郑梓滨 2019.09.05
0.6.2 增加发送心跳包命令 郑梓滨 2019.11.09
0.6.3 增加发送设备IMEI信息命令 刘江涛 2020.04.16
0.6.4 增加获取/发送设备运行状态信息命令,增加发送强制设备进入睡眠命令 刘江涛 2020.04.28
0.6.5 获取/发送设备运行状态信息命令中增加SIM卡识别成功,设备绑定,解绑,schema下载完成等状态 刘江涛 2020.05.14
0.6.6 增加记录型数据唤醒时间功能 周瑞鹏 2020.07.27
0.6.7 查询产品信息中增加功耗模式及云连接方式返回 刘江涛 2020.08.13
0.6.8 更新 MCU 获取查询模组 NB 网络强度数据表示 刘江涛 2020.08.17

串口通信约定

波特率:115200

数据位:8

奇偶校验:无

停止位:1

数据流控:无

MCU:用户设置控制板控制芯片,与涂鸦模块通过串口对接,在涂鸦的协议设计上,所有包的交互均为全双工通信。

帧格式说明

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

说明:

  • 所有大于 1 个字节的数据均采用大端模式传输
  • 协议中所有举例说明数据都是十六进制数据
  • NB 模块主动发起的通信发送包超时时间为 1s,重发机制会重发三包
  • 一般情况下,采用同命令字一发一收同步机制,即一方发出命令,另一方应答,若发送方超时未收到正确的响应包,则视为超时传输,如下图所示:

串口协议

说明:具体通信方式以 协议详述 章节中为准

  • MCU 状态上报则采用同步模式,MCU 状态上报“命令字”为 y,如下所示:

串口协议

协议详述

查询产品信息

说明:

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

模块发送:

55 aa 00 01 00 00 00

MCU 返回:

字段 长度(byte) 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0x01
数据长度 2 N
数据 N {“p”:“gl9iswyeobu5s93j”,“v”:“1.0.0”,“s”:“psm”,“c”:“isp”}
校验和 1 从帧头开始按字节求和得出的结果对 256 求余

例:{"p":"gl9iswyeobu5s93j","v":"1.0.0","s":"psm","c":"isp"}

p 表示产品 ID 为 gl9iswyeobu5s93j ,这里参数为用户在涂鸦官网创建的产品 PID

v 表示 MCU 版本为 1.0.0

s 表示设备的功耗模式(“psm”/“drx”/edrx")

c 表示设备连接云的方式(“isp”:通过运营商平台转发到涂鸦云;“tuya”:直接连涂鸦云)

MCU 返回信息样例:

55 AA 00 01 00 38 7B 22 70 22 3A 22 67 6C 39 69 73 77 79 65 6F 62 75 35 73 39 33 6A 22 2C 22 76 22 3A 22 31 2E 30 2E 30 22 2C 22 73 22 3A 22 70 73 6D 22 2C 22 63 22 3A 22 69 73 70 22 7D 02

报告设备联网状态

设备联网状态 描述 状态值
状态1 搜索 NB 网络中 0x01
状态2 搜索到 NB 网络 0x02
状态3 已连接到电信平台,设备未绑定 0x03
状态4 设备已绑定,已连接到涂鸦云 0x04

模块发送:

字段 长度(byte) 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0x02
数据长度 2 0x0001
数据 1 指示 NB 模组工作状态:
0x01 : 状态1
0x02 : 状态2
0x03 : 状态3
0x04 : 状态4
校验和 1 从帧头开始按字节求和得出的结果对 256 求余

模块发送:

55 aa 00 02 00 01 04 06(设备已绑定,已连接到涂鸦云)

MCU 返回:

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

MCU 返回:

55 aa 00 02 00 00 01

重置NB模组,恢复出厂设置

说明:

设备将会重置一切设置,并刷新模组到出厂状态,模组会重新向云端请求激活

MCU 发送:

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

MCU 发送:

55 aa 00 03 00 00 02

模块返回:

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

模块返回:

55 aa 00 03 00 00 02

实时状态上报

使用场景:类似报警器等要求实时推送状态的设备

说明:当 MCU 需要上报实时状态的数据时,可通过此条协议上报数据

  1. 状态数据会直接上报到云端,故 设备联网状态 必须为已连接到云端,否则数据上报失败
  2. 该条指令为同步指令,MCU 数据上报后需等待模块返回上报结果,在信号良好的情况下通常在 5 秒内可收到云端的上报应答结果
  3. 命令支持单、多个数据单元上报,用户根据自己的需要来选择发送组包的方式,具体数据包可以参见下面的例子

MCU 发送:

字段 长度(byte) 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0x05
数据长度 2 取决于 状态数据单元 类型以及个数
数据 N 一个或多个组合 状态数据单元
校验和 1 从帧头开始按字节求和得出的结果对 256 求余

模块返回:

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

“单个状态数据单元”上报样例

DP 点 109 bool 型变量,数值为 1

55 aa 00 05 00 05 6d 01 00 01 01 79

“多个状态数据单元”上报样例:

DP 点 109 bool 型变量,数值为 1

DP 点 102 string 型变量,“201804121507”(具体传输对应 ASCII 值)

55 aa 00 05 00 15 6d 01 00 01 01 66 03 00 0c 32 30 31 38 30 34 31 32 31 35 30 37 5d

记录型状态上报

使用场景:对于类似门锁等包含多个 需要上报到服务端、当作整条信息处理的 DP 点 数据的类记录型的设备,若设备短暂断网,本条命令会要求设备暂存下无法上报成功的数据,以满足记录型设备的上报需求。命令上报需要带上本地的时间

说明:MCU 的记录型数据是由多个 DP 点组合的整条数据,因此需要整体上报,上报可通过向 NB 模块发送下方描述的命令。若数据上报时设备断网,这条数据则会暂时在模块端存储下来,在下次网络通常、有数据上报的时候模块会再次上传存储的数据

  • 当模块存在滞留的记录时,每上报成功一条内容,模块就会主动发送一条 08 命令字数据为 01 的回复包告知 MCU
  • 当网络状态正常时,模块首次上电后大约需要 30s 左右以连接上服务器,在此之后每当记录产生时,可以先让 MCU 等待 报告设备联网状态 章节所描述的设备联网状态包,但是若等待 6s 以上还没收到模块连接成功的状态报告,也可选择使用该条指令上报数据,且需要在此之后重复等待模块联网成功并返回上报结果
  • 单次记录上报的数据区域(多个状态数据单元)最大长度为 100,根据实际的 DP 点的数据的不同,最后组合实际储存的长度可能会有所变化,因此当模块没有网络时,超过限制长度的数据上报会导致 NB 模块返回记录发送失败
  • 模块可以储存历史记录的条数最长限制为 20 条,当超过 20 条 后,模块会从最早储存的记录开始循环覆盖
  • NB 模块接收到一条数据并成功上报后会返回上报成功的状态报告,每当有网络推送成功一条且模块无滞留数据,就会返回状态字 00,若还有滞留记录的话则会返回 01,其他的情况则均返回推送失败 02。在模块没有连接到网络时,记录成功存储进 flash 中也视作推送成功,返回 00
  • 在数据上报中夹杂时间数据,是为了保证记录数据在设备没有网络的情况下上报的时间和有网络时上报的时间一致。如果以记录到达服务端的时间为准,则当设备暂时处于没有网络的状态时,产生的记录数据会和在下次网络恢复正常后上传的记录时间不符合。所以每当设备第一次和 NB 模块配网的时候,在网络环境可以保证的情况下,MCU 最好可以通过协议获取一次准确的时间数据。在之后所有上传记录的时候带上当前设备的时间数据,服务端的记录时间也可以根据设备提供的时间为准

MCU 发送:

字段 长度(byte) 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0x08
数据长度 2 取决于 状态数据单元 类型以及个数
数据 7 数据长度为 7 字节:
(保留该字段是为了跟原有的协议兼容,
在 NB 模组的上,只需要将该字段填充 0,
模组内部将自动将内部 RTC 时间填充到记
录型数据上)
N 一个或多个组合 状态数据单元
校验和 1 从帧头开始按字节求和得出的结果对 256 求余

具体上报数据包举例:

“单个状态数据单元” MCU 上报样例

DP 点 109 bool 型变量,数值为1

以模组内部 RTC 时间为准

55 aa 00 08 00 0c 00 00 00 00 00 00 00 6d 01 00 01 01 d1

“多个状态数据单元” MCU 上报样例

DP 点 109 bool 型变量,数值为 1

DP 点 102 string 型变量,“201804121507”(具体传输对应 ASCII 值)

以服务端时间为准

55 aa 00 08 00 1c 00 00 00 00 00 00 00 6d 01 00 01 01 66 03 00 0c 32 30 31 38 30 34 31 32 31 35 30 37 a7

模块返回:

字段 长度(byte) 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0x08
数据长度 2 0x0001
数据 1 0x00 上报成功
0x01 当前记录上报成功,并且还有滞留记录需要上报
0x02 上报失败
校验和 1 从帧头开始按字节求和得出的结果对 256 求余

模块命令下发

说明:

“命令下发” 为异步处理协议,MCU 收到相关控制包,确认接收到回复下发包后,完成相关的控制动作。MCU 状态反馈通过 MCU 的 状态上报 来实现

模块发送:

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

模块下发控制命令:(系统开关对应 3 号 DP ,使用 bool 型变量,开机数值为 1)

55 aa 00 09 00 05 03 01 00 01 01 13

MCU回复:

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

MCU 确认回复:
55 aa 00 09 00 00 08

命令/状态数据单元

说明:

  • datapoint 命令/状态数据单元如下所示:
数据段 长度(Byte) 说明
dpid 1 datapoint 序号
type 1 对应开放平台上某 datapoint
具体的数据类型,通过如下“表示值”标识
类型 表示值 长度(Byte) 说明
raw 0x00 N 对应于 raw 型 datapoint(模块透传)
bool 0x01 1 value 范围:0x00/0x01
value 0x02 4 对应 int 类型,大端表示
string 0x03 N 对应于具体字符串
enum 0x04 1 枚举类型,范围 0-255
bitmap 0x05 1/2/4 长度大于 1 字节时,大端表示
len 2 长度对应 value 的字节数
value 1/2/4/N hex 表示,大于 1 字节采用大端传输
  • datapoint 命令/状态数据单元除 “raw” 类型外,其他类型均属于 “obj” 型 datapoint
  • “状态数据” 可含多个 datapoint “命令数据单元”

获取本地时间

说明:

  • 需要等待设备连接上网络(报告设备联网状态)后,开始发送获取本地时间的数据包
  • 在设备连接上服务器后,在网络情况非常差的情况下,有可能会获取时间数据失败。对于依赖时间的设备(例如门锁),当本地时间没有校准过的情况下获取失败时,需要完善一个间隔3S的获取时间值的功能,确保时间数据获取成功

MCU发送:

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

MCU 获取本地时间:

55 aa 00 06 00 00 05

模块返回:

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

模块返回本地时间数据:

55 aa 00 06 00 08 01 12 09 11 10 09 05 01 59

本地时间:18 年 9 月 17 日 16 时 9 分 5 秒星期一

1.如设备在国内激活使用,则当地时间为北京时间 (东 8 区)

2.如果设备在国外激活使用,则当地时间为设备所处时区时间。

获取格林时间

  • 格林时间不带有时区和夏令时等相关因素,因此带动态密码功能的设备(门锁等)不需要显示设备所在当地时间,本地只需要运行格林时间,在使用带记录型上报的通道时也只需上报格林时间
  • 带动态密码功能的设备(门锁等)如需显示设备所在地的当前时间,在设备本地运行格林时间的同时,也需要在定时获取本地时间,并在本地储存格林时间和当地时间的时间差,每次显示本地时间时,只需在格林时间的基础上加上时间差算出当地时间即可

MCU 发送:

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

MCU 获取格林时间:

55 aa 00 10 00 00 0F

模块返回:

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

模块返回设备格林时间:

55 aa 00 10 00 08 01 12 09 11 08 15 03 01 65

格林时间: 2018 年 9 月 17 日 8 时 21 分 3 秒星期一

查询NB网络强度

说明:

查询设备 NB-IoT 的信号强度

MCU 发送:

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

MCU 获取查询模组 NB 网络强度:

55 aa 00 0b 00 00 0a

模块返回:

字段 长度(byte) 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0x0b
数据长度 2 0x0002
数据 2 数据长度为 2 字节:
Data[0] : 0x00 失败,
0x01 成功;当 Data[0] 为 0x01,
即成功时 Data[1] 表示 rssi
0: -140 dBm 或以下
1: -140 dBm ≤ RSRP < -139 dBm
2: -139 dBm ≤ RSRP <-138 dBm

95: -46 dBm ≤ RSRP < -45 dBm
96: -45 dBm ≤ RSRP < -44 dBm
97: -44 dBm ≤ RSRP
255:未知
校验和 1 从帧头开始按字节求和得出的结果对 256 求余

模块返回当前强度值 (80):

55 aa 00 0b 00 02 01 50 5D

查询绑定状态

说明:

查询设备是否已经被用户绑定

MCU 发送:

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

MCU获取查询模组是否已被用户绑定:

55 aa 00 bb 00 00 0a

模块返回:

字段 长度(byte) 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0xbb
数据长度 2 0x0001
数据 1 数据长度为 1 字节:0x00 未绑定, 0x01 绑定;
校验和 1 从帧头开始按字节求和得出的结果对 256 求余

模块返回:

55 aa 00 bb 00 01 01 bc

设置NB模组睡眠锁

说明:

MCU 一旦将睡眠锁置 1 后,模组将禁止进入睡眠,反之设置为 0 后,模组将自动在 IDLE 进入 PSM 模式低功耗待机,在 PSM 模式下,可以拉低 PSM-INT 引脚唤醒模组

MCU 发送:

字段 长度(byte) 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0xb2
数据长度 2 0x0001
数据 1 数据长度为 1 字节:
0x00 解锁睡眠锁,
0x01 锁住睡眠锁,禁止自动进入睡眠;
校验和 1 从帧头开始按字节求和得出的结果对 256 求余

MCU 设置 NB 模组睡眠锁:

55 aa 00 b2 00 01 01 00

模块返回:

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

模块返回:

55 aa 00 b2 00 00 b1

设置NB网络心跳间隔时间

说明:

用户可以根据自己的业务需求,设置模组的 NB 网络心跳周期,默认心跳间隔是 8 小时

MCU 发送:

字段 长度(byte) 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0xb3
数据长度 2 0x0004
数据 4 uint32_t 类型,单位为秒,大端格式
校验和 1 从帧头开始按字节求和得出的结果对 256 求余

MCU设置模组心跳间隔时间:

55 aa 00 b3 00 04 00 00 0e 10 da (设置心跳间隔为1个小时)

模块返回:

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

模块返回:

55 aa 00 b3 00 01 01 b4

设置NB记录型数据唤醒间隔时间

说明:

1.只要flash内记录型数据未成功发出时,就使用该时间进行下一次唤醒,直到记录型数据成功发出后,又恢复默认的唤醒心跳间隔。

2.最小唤醒间隔120s,设置小于120s,则为120s。

3.用户可以设置记录型数据唤醒时间功能,进行紧急记录型数据发送的快速唤醒重发。

MCU 发送:

字段 长度(byte) 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0xc1
数据长度 2 0x0004
数据 4 uint32_t 类型,单位为秒,大端格式
校验和 1 从帧头开始按字节求和得出的结果对 256 求余

MCU设置记录型数据唤醒间隔时间:

55 aa 00 c1 00 04 00 00 00 b4 78 (设置下一次唤醒为3分钟)

模块返回:

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

模块返回:

55 aa 00 c1 00 01 01 c2

自动发送心跳包

说明:

通过设置网络心跳间隔时间,模组将周期性的自动发送心跳包,本命令可以由 MCU 控制主动发送一个心跳包,以用于主动同步下发数据

在通常情况下,可以由 实时状态上报(如上报电量)替代本命令的功能

MCU发送:

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

MCU 主动发送一个心跳包:

55 AA 00 B1 00 00 B0

模块返回:

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

模块返回:

55 AA 00 B1 00 01 01 B2

获取设备联网状态

设备联网状态 描述 状态值
状态1 搜索 NB 网络中 0x01
状态2 搜索到 NB 网络 0x02
状态3 已连接到电信平台,设备未绑定 0x03
状态4 设备已绑定,已连接到涂鸦云 0x04

说明:

MCU 发送:

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

MCU 发送:

55 aa 00 2b 00 00 2c

模块返回:

字段 长度(byte) 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0x2b
数据长度 2 0x0001
数据 1 指示NB模组工作状态:0x01:状态10x02:状态20x03:状态30x03:状态4
校验和 1 从帧头开始按字节求和得出的结果对 256 求余

模块返回:

55 aa 00 2b 00 01 04 2f (设备已绑定,已连接到涂鸦云)

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

说明:

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

MCU 发送:

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

MCU 发送:

55 AA 00 B5 00 00 B4

模块返回:

字段 长度(byte) 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0xb5
数据长度 2 0x000F
数据 15 “460113012467340”
校验和 1 从帧头开始按字节求和得出的结果对 256 求余

模块返回 imsi(“460113012467340”):

55 AA 00 B5 00 0F 34 36 30 31 31 33 30 31 32 34 36 37 33 34 30 BD

获取SIM卡识别码ICCID

说明:

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

MCU 发送:

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

MCU 发送:

55 AA 00 B6 00 00 B5

模块返回:

字段 长度(byte) 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0xb6
数据长度 2 0x0014
数据 20 “89861118249000363490”
校验和 1 从帧头开始按字节求和得出的结果对 256 求余

模块返回 iccid (“89861118249000363490”):

55 AA 00 B6 00 14 38 39 38 36 31 31 31 38 32 34 39 30 30 30 33 36 33 34 39 30 DB

获取拓展信号质量CESQ

说明:

本命令可以由 MCU 控制主动发送一个 cesq 获取包,可用于获取模块的拓展信号质量参数

MCU 发送:

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

MCU 发送:

55 AA 00 B7 00 00 B6

模块返回:

字段 长度(byte) 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0xb7
数据长度 2 0x0006
数据 6 由 rxlev, ber, rscp, ecno, rsrq, rsrp 组成,其中:
BYTE[0] rxlev : 接收信号强度等级
0: -100dBm or less
1: -110dBm <= rssi<-109dBm
2: -109dBm <= rssi<-108dBm
…: …
61: -50dBm <= rssi<-49dBm
62: -49dBm <= rssi<-48dBm
63: -48dBm <= rssi
99: not known or not detectable

BYTE[1] ber:信道位错误百分率
0…7 as RXQUAL valuses
RXQUAL_0…RXQUAL_7 as defined in 45.008
99: not known or not detectable

BYTE[2] rscp:接收信号 code power
0: -120dBm or less
1: -120dBm<= rscp<-119dBm
2: -119dBm<= rscp<-118dBm
…: …
94: -27dBm <= rscp<-26dBm
95: -26dBm <= rscp<-25dBm
96: -25dBm <= rscp
255: not known or not detectable

BYTE[3] ecno:Ec/No
0: -24dBm or less
1: -24dBm <= Ec/Lo<-23.5dBm
2: -23.5dBm <= Ec/Lo<-23dBm
… : …
47: -1dBm <= Ec/Lo<-0.5dBm
48: -0.5dBm <= Ec/Lo<0dBm
49: 0 dBm <= Ec/Lo
255: not known or not detectable

BYTE[4] rsrq : 参考信号接收质量
0: -19.5dB or less
1: -19.5dB <= rsrq<-19dB
2: -19dB <= rsrq<-18.5dB
… : …
32: -4dB <= rsrq<-3.5dB
33: -3.5dB <= rsrq<-3dB
34: -3dB <= rsrq
255: not known or not detectable

BYTE[5] rsrp : 参考信号接收power
0: -140dBm or less
1: -140dBm<= rsrp<-139dBm
2: -139dBm<= rsrp<-138dBm
…: …
95: -46dBm<= rsrp<-45dBm
96: -45dBm<= rsrp<-44dBm
97: -44dBm<= rsrp
255: not known or not detectable
校验和 1 从帧头开始按字节求和得出的结果对 256 求余

模块返回 cesq:

55 AA 00 B7 00 06 28 00 FF FF 22 44 48

设置活动定时器T3324

说明:

本条指令需要 SIM 卡支持设置有效

本命令可以由 MCU 控制主动发送一个 Active Timer 指令包,可用于设置模块的从空闲模式进入 PSM 模式的超时时间(单位:秒)

MCU 发送:

字段 长度(byte) 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0xb9
数据长度 2 0x0004
数据 4 act_time[4]:是活动时间的转换,
单位:秒,
例如:活动时间设置为 120(0x78)秒,
转换后为
act_time[0] = 0x00,
act_time[1] = 0x00,
act_time[2] = 0x00,
act_time[3] = 0x78
校验和 1 从帧头开始按字节求和得出的结果对 256 求余

MCU 发送:

55 AA 00 B9 00 04 00 00 00 78 34

模块返回:

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

模块返回:

55 AA 00 B9 00 01 01 BA

固件升级电量检测

说明:

对于使用电池供电的设备,在模组进行固件升级时,固件升级过程意外断电将可能会导致模组无法正常工作,因此需要电池剩余足够的电量以完成升级整个过程。当用户 App 中触发升级模组且下载完固件后,App 会向 MCU 询问电池电量是否正常,厂商需要根据硬件设计,确定一个电池电量充足的阈值(通常电量剩余至少 > 50%)来应答模组,而不使用电池供电的设备可以直接应答非低电量状态后开始升级

模块发送:

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

模块发送:

55 AA 00 BC 00 00 BB

MCU 返回:

字段 长度(byte) 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0xbc
数据长度 2 0x0001
数据 1 0x00 低电量0x01 电量正常
校验和 1 从帧头开始按字节求和得出的结果对 256 求余

MCU 返回信息样例:

55 AA 00 BC 00 01 01 BD

获取设备IMEI

说明:

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

MCU 发送:

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

MCU 发送:

55 AA 00 BD 00 00 BC

模块返回:

字段 长度(byte) 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0xbd
数据长度 2 0x000f
数据 15 “864237040014733”
校验和 1 从帧头开始按字节求和得出的结果对 256 求余

模块返回 imei (“864237040014733”):

55 AA 00 BD 00 0F 38 36 34 32 33 37 30 34 30 30 31 34 37 33 33 CF

报告设备运行状态

设备运行状态 描述 状态值
状态1 设备初始化中 0x00
状态2 设备识别到SIM卡 0x01
状态3 设备正常运行中 0x02
状态4 设备被绑定 0x03
状态5 设备被解绑 0x04
状态6 设备成功下载SCHEMA 0x05
状态7 设备正准备进入睡眠 0x06
状态8 设备正准备重启 0x07

模块发送:

字段 长度(byte) 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0xbe
数据长度 2 0x0001
数据 1 指示 NB 模组工作状态:
0x00 : 状态1
0x01 : 状态2
0x02 : 状态3
0x03 : 状态4
0x04 : 状态5
0x05 : 状态6
0x06 : 状态7
0x07 : 状态8
校验和 1 从帧头开始按字节求和得出的结果对 256 求余

模块发送:

55 aa 00 be 00 01 02 c0(设备正常运行中)

获取设备运行状态

设备运行状态 描述 状态值
状态1 设备初始化中 0x00
状态2 设备识别到SIM卡 0x01
状态3 设备正常运行中 0x02
状态4 设备被绑定 0x03
状态5 设备被解绑 0x04
状态6 设备成功下载SCHEMA 0x05
状态7 设备正准备进入睡眠 0x06
状态8 设备正准备重启 0x07

说明:

MCU 发送:

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

MCU 发送:

55 aa 00 bf 00 00 be

模块返回:

字段 长度(byte) 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0xbf
数据长度 2 0x0001
数据 1 指示NB模组运行状态:
0x00 : 状态1
0x01 : 状态2
0x02 : 状态3
0x03 : 状态4
0x04 : 状态5
0x05 : 状态6
0x06 : 状态7
0x07 : 状态8
校验和 1 从帧头开始按字节求和得出的结果对 256 求余

模块返回:

55 aa 00 bf 00 01 01 c0 (设备识别到SIM卡)

设置设备进入睡眠

说明:

本命令可以由 MCU 控制主动发送 指令包,使模块立刻进入睡眠状态

MCU 发送:

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

MCU 发送:

55 AA 00 C0 00 00 BF

模块返回:

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

模块返回:

55 AA 00 C0 00 00 BF

点击获取服务和帮助