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 模组的功能和服务支持情况。
- 表示支持
- 表示不支持
- 表示需要额外设备支持
功能 LZ201CN
LZ501CN
LZ211CN LZ201EU LZ211EU TCS600U TCS600E
TCS800E
NL668 AM MA510 MC665eu
MC661CN
MG661LA
MG661EU
L511A L511C
L511E
基础服务 Y Y Y Y Y Y Y Y Y Y Y DP 服务 Y 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 N N N N N N 天气服务 Y Y Y Y Y Y Y Y Y Y Y 低功耗蓝牙搭配 LTE Cat.1 Y Y Y Y Y Y Y Y Y Y Y 定位服务 O Y O Y O O Y O O O O AGNSS 服务 Y Y Y Y Y Y Y Y Y Y Y Wi-Fi Scan Y Y Y Y Y Y Y N Y Y N 电话服务 Y Y Y Y Y N N N N N N 短信服务 Y Y Y Y Y N Y N N N N 电池服务 Y Y Y Y Y N N N N N N 音频服务 Y Y Y Y Y N N N N N N 蓝牙服务 Y Y N 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 Y Y GPIO Y Y Y Y Y N N N Y Y Y ADC Y Y Y Y Y N N N Y Y Y
当模组需要发送串口数据给 MCU 时,模组的一个引脚将产生一个持续默认 60 毫秒的低电平。下表列出了不同模组的默认引脚配置。
- LZ201CN
- LZ211CN
- LZ211EAU
- LZ201EAU
- LZ501CN
- TCS600U
- 通用对接默认管脚 61:LZ501CN
- 通用对接默认管脚 62:
- LZ201CN
- LZ211CN
- LZ211EAU
- LZ201EAU
- 拉低该 PIN,持续 60ms
- UART2 支持涂鸦 GNSS 模组
- 基础固件唤醒脚 62。参考 AT+GTWAKE,不建议使用
- UART2 支持涂鸦 GNSS 模组
- 启动高电平无法开机
- UART2 支持涂鸦 GNSS 模组
- UART1 支持 AT 命令
- 低功耗下,默认使用管脚 41,拉低 30ms 以上唤醒蜂窝模组
MC661CN
MG661LA
通用对接默认管脚 20 MAIN_TXD(18),MAIN_RXD(17) AUX_UART(RX28,TX29) 支持涂鸦 GNSS 模组 L511A
L511C
L511E
通用对接默认管脚 20 MAIN_TXD(18),MAIN_RXD(17)
- AUX_UART(RX28,TX29)支持涂鸦 GNSS 模组
- 低功耗下,默认使用管脚 19,拉低 30ms 以上唤醒蜂窝模组
TCS800E
0-1 3400mV 24(用于唤醒),其他 见 TCS600E 模组规格书 和 TCS800E 模组规格书 MG665EU 0-1 VBAT,测量范围(0-VBAT) 2,4,6(用于唤醒),8-11,14-23,29 2(38),4(41),8(39),9(40),10(75),11(76),14(21),15(20),16(78),17(77),18(82),19(85),20(84),21(83),22(100),23(99),29(56) MC661CN
MG661LA
AMG661EU
0-1 VBAT,测量范围(0-VBAT 0,1(用于唤醒),2,6-8,10,16-18,20-22,29-35,42-43 0(25),2(16),6(28),7(29),8(84),10(85),16(68),17(69),18(101),20(31),21(32),22(33),29(5),30(6),31(75),32(83),33(86),34(76),35(74),42(67),43(66) L511A 0-1 0-1.2V 16,19(低功耗下唤醒模组用),20(用于唤醒 MCU),21-23,25,26,30-33,49-58,78 / L511C
L511E
0-1 0-1.2V 16,19(低功耗下唤醒模组用,不可用于普通 GPIO),20(用于唤醒 MCU),21-23,25 /
- 所有大于一个字节的数据均采用大端模式传输。
- 一般情况下,采用同命令字一发一收同步机制,即一方发出命令,另一方应答,如下图所示。若发送方超时未收到正确的响应包,则超时传输。
- 若 MCU 发送命令后,模组在 2 分钟内无任何回复,则 MCU 需重启模组。MA510 模组在系统固件 OTA 升级完成后会重启,该重启无法通知 MCU。若 MA510 模组启动时 为高,则会导致模组无法启动,需 MCU 重启模组。
- 模组控制命令下发,MCU 状态上报则采用异步模式。假设模组控制命令下发 命令字 为 X,MCU 状态上报 命令字 为 Y,如下所示:
- 模组下发控制命令:
- MCU 上报状态:
模组返回
- Data[0]:命令字
- Data[1]:子命令
- Data[2:–]:版本信息字符串
示例:
- 以 15s 的间隔定期发送心跳。若在 90s 超时时间内未收到 MCU 的任何回应,则认为与 MCU 通信异常模组自动内部软件重启复位。
- MCU 也可依据此心跳定期检测模组是否正常工作。若模组无心跳下发,则 MCU 可通过模组提供的硬件复位引脚复位模组。
模组发送
示例:
MCU 返回
- :MCU 重启后第一次心跳返回值。仅发送一次,用于模组判断工作过程中 MCU 是否重启。
- :除 MCU 重启后第一次返回 外,其余均返回此值。
示例:
- (MCU 第一次返回)
- (除第一次外,正常返回)
产品信息由 PID(product ID)和 MCU 软件版本构成:
- PID:为产品标识,由 涂鸦开发者平台 生成,用于云端记录产品相关信息。
- MCU 软件版本号格式定义:采用点分十进制形式,格式为 (0<=x<=99),x 为十进制数。
模组发送
示例:
MCU 返回
“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 }
其中 是可选项。如果没有配置 ,系统会根据卡自动配置 ,一般二级运营商的卡都需要配置。、、 是可选项。
校验和 1 从帧头开始按字节求和,得出的结果对 256 求余
示例:
- :表示产品 ID 为 。
- :表示 MCU 版本为 1.0.0。
- :表示模组的功耗:
- :正常功耗
- :低功耗,提供的定时器为 1 秒一个周期
- :表示模组的 MQTT 心跳间隔时间,单位秒。默认心跳间隔 300s。
- :表示模组获取扫码配网使用的二维码的短码的字段。
- 字段设置为 时,会获取二维码短码。
- 设置为 时不会获取二维码短码。如果设备已经绑定,不再获取短码地址。
- :表示低功耗蓝牙搭配 LTE Cat.1 的模式。
- :表示附属 MCU 多通道固件版本。 版本信息最大 10 字节,最多支持 6 组。但是,应用固件和基础固件占用的通道不能用。
- :表示 MCU OTA 升级方式选择:
- :协议版本为 0
- :协议版本为 1
- :是否开启 DP 缓存。开启 DP 缓存需要额外的云端功能,如果您有需求,请联系您的涂鸦客户经理。
- :开启。
- 其他:关闭。
- :该字段为可选项。设置运营商 PLMN(Public Land Mobile Network)值。该值必须是数字编码。例如 ,该字段等同于 AT 指令:。
- :该字段为可选项。 为开启,开启后下发 DP 数据给 MCU,会进行 ACK 确认,未收到 ACK 会进行重发。最多重发三次、每次等待 ACK 为 500ms。
- :该字段设置为 的时候,表示支持涂鸦在线 TTS(Text-to-Speech)音频功能。该功能只有在模组支持音频服务时才有效。
- :GPS 型号,默认为和芯星通 UFirebird。Allystar 为华大 GPS 模组,使用 AGNSS 服务时需指定 GPS 型号。通用对接协议版本为 1.1.3 及以上。
- : 表示预发环境,其余为正式环境。通用对接协议版本为 1.1.3 及以上。
- (仅 MA510 支持):通用对接协议版本为 1.1.4 及以上。
- 或者无该字段时:自动
- :GSM 网络
- :LTE 网络
- :CATM 网络
- :NB-IoT 网络
模组工作模式区分设置模组的工作状态以及重置模组方式,分两种情况:
- MCU 与模组配合处理:
- 即模组通过串口通知 MCU 当前的工作状态,由 MCU 提供显示支持。
- MCU 检测出模组的重置需求,通过串口通知模组重置模组。
- 模组自处理:
- 模组的工作状态通过模组的 引脚驱动 LED 状态显示。
- 模组重置通过检测 GPIO 输入需求处理。模组重置方法为,模组检测 GPIO 入口低电平持续 3s 以上触发模组重置。指示灯与按钮所使用的 GPIO 管脚由以下命令配置,但是在低功耗模式无法触发该功能。
模组发送
示例:
MCU 返回
- :指示模组工作为 MCU 与模组配合处理 模式,MCU 需实现上述 说明 中提及的功能。
- :指示模组工作为 模组自处理 模式。
示例:
- (MCU 与模组配合处理)
- (模组自处理,指示灯 :GPIO12,复位按钮,:GPIO13)
- 设备联网状态:
- :SIM 卡未连接
- :搜索网络中
- :已成功注册未联网
- :联网成功并获取到 IP
- :设备已连接到云端
- :是 SIM 基站注册被拒绝,可能是 SIM 当前的业务未开通
- :设备等待配网
- 当模组检测到 MCU 重启或 MCU 断线再上线的事件,会主动下发联网状态至 MCU。
- 当模组的联网状态发生变化,会主动下发联网状态至 MCU。
- 如设置模组工作模式为 模组自处理,则 MCU 无需实现该协议。
模组发送
示例:
MCU 返回
示例:
LTE Cat.1 模组接收到重置命令后,解除设备和云端绑定。
MCU 发送
示例:
模组返回
示例:
MCU 发送
模组返回
- 子命令:
- 结果: 表示失败, 表示成功
- 版本信息:内容字符串,示例:
fw_name:xxx,fw_ver:xxx;app_name:xxx,app_ver:xxx;pro_name:xxx,pro_ver:xxx;
命令数据单元和状态数据单元()如下所示:
中的 字段说明:
模组发送
示例:系统开关对应 3 号 DP,使用 bool 型变量,开机数值为 1 0x55aa 00 06 0005 03 01 0001 01 10
- datapoint 状态数据单元,说明详见 数据单元 章节。
- 状态上报为异步处理协议,状态上报触发机制有三类:
- MCU 收到命令下发处理帧时,正确执行相应 datapoint 命令,再通过状态上报帧,将变化后的 datapoint 状态发送至模组。
- MCU 主动检测到 datapoint 有变化,将变化后的 datapoint 状态发送至模组。
- MCU 收到 状态查询 帧时,将所有的 datapoint 状态发送至模组。
- 状态上报可含多个 datapoint 命令数据单元。
MCU 发送
示例:湿度对应 5 号 DP,使用 value 型变量,湿度为 30% 0x55aa 03 07 0008 05 02 0004 0000001e 3a
- 状态查询为异步处理协议,主要用于模组查询 MCU 所有的 Object 类型的 datapoint 状态,当 MCU 收到此帧时,通过 状态上报 章节状态上报帧上报 datapoint 状态。
- 状态查询发送时机主要有两种:
- 模组首次上电,通过心跳与 MCU 建立连接后,当设备连接到涂鸦开发者平台后查询发送。
- 模组工作过程中检测到 MCU 重启或发生了离线再上线的过程,查询发送。
模组发送
示例:
- 此命令为同步指令,MCU 数据状态上报后,需要等待模组返回结果。
- 每次发送模组都会有响应,模组未响应前不可多次上报。
- 网络较差,数据难以及时上报时,模组会在 5 后返回失败,MCU 需要等待大于 5 秒。
- Datapoint 状态数据单元说明详见 状态数据单元。
- 状态上报可含多个 datapoint 命令数据单元。
MCU 发送
模组返回
- 0x00:表示失败
- 0x01:表示成功
- 此命令为同步指令,MCU 数据状态上报后,需要等待模组返回结果。
- 每次发送模组都会有响应,模组未响应前不可多次上报。
- 网络不好,数据难以及时上报时,模组会在 5 后返回失败,MCU 需要等待大于 5 秒。
- Datapoint 状态数据单元说明详见 状态数据单元。
- 状态上报可含多个 datapoint 命令数据单元。
MCU 发送
- 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 结束
模组返回
- 0x00:表示失败
- 0x01:表示成功
- 升级时,您可以在涂鸦开发者平台上的产品页面配置相关升级选项触发。模组仅作为支持 MCU 升级的数据传输通道,不对数据内容做任何解析。
- 目前,支持四种 MCU 升级方式的配置:
- App 提醒升级:用户每次进入设备控制面板都会收到升级提醒的弹窗,是否确认升级由用户自己在 App 确认。
- App 静默升级:App 不会有任何提醒弹窗,固件上电后一分钟内会去自动去检测升级发现有高版本的升级包会自动开始获取相关升级包,第一次上电后模组会间隔 24 小时去云端检测一次是否有升级包配置。
- App 强制升级:App 端会有升级提醒弹窗,如果用户不确认升级用户就没法正常使用这个产品的控制面板。
- App 检测升级:App 端不会有任何升级提醒的弹窗,必须要用户在 App 端自己去单击相关固件版本检测,如果有高版本的固件配置才会显示升级提示信息。
- MCU 升级相关流程:
模组发送完所有的升级包,重新发送 01 命令字(查询产品信息)。MCU 需要在一分钟内回复产品信息中的软件版本号,带上升级后的 MCU 版本号,版本号需要和在涂鸦开发者平台配置升级的版本号保持一致。
升级启动方式含自动及手动升级。
- 当处于自动升级时,模组检测云端 MCU 有更新版本固件,则自动启动与 MCU 升级包交互流程。
- 当处于手动升级时,通过 App 确定,模组才启发与 MCU 升级包交互流程
模组发送
- U: 0 协议版本:0x00
字段 字节数 说明 帧头 2 0x55aa 版本 1 0x00 命令字 1 0x0a 数据长度 2 0x0004 数据 4 固件包字节数,类型为 unsigned int,采用大端传输 校验和 1 从帧头开始按字节求和,得出的结果对 256 求余
示例:(固件包长度 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
MCU 返回
- :默认 256 bytes(兼容旧固件)
- :512 bytes
- :1024 bytes
示例:
- 升级包传输数据格式为:
通道号(协议版本 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 字节,固定为包偏移
- 后面为数据包内容
示例:若要升级的文件大小 530 Bytes,最后一包数据可不回复。
- 第一包数据,包偏移为 ,数据包长度为
- 第二包数据,包偏移为 ,数据包长度为
- 第三包数据,包偏移为 ,数据包长度为
- 最后一包,包偏移为 ,数据包长度为
MCU 返回
示例:
模组发送
- (子命令):1 字节
- (状态):1 字节,表示升级文件校验失败
MCU 返回
- 格林时间(GMT)不带有时区和夏令时的因素,是一个国际标准的时间基准。
- 当模组连接上网络后,本地的时间戳校准后才会返回成功,并带有有效的时间数据。
MCU 发送
示例:
模组返回
- 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 结束
示例:(格林时间 2016 年 4 月 19 日 5 时 6 分 7 秒)
- 模组需要插入 SIM 卡,检查 SIM 卡是否检测成功。
- 检测模组是否经过授权。
- 检测模式是否经过射频(RF)校准。
- 获取当前 4G 信号强度(必须插入 SIM 卡)。范围为 0~31,您可以根据自己所处的环境来判断是否合格。
MCU 发送
模组返回
- Data[0]:0 表示 SIM 卡未检测到,1 表示 SIM 卡检测成功
- Data[1]:0 表示未写过授权,1 表示写过授权
- Data[2]:0 表示 RF 未校准,1 表示已经校准
- Data[3]:信号强度(0~31)
- 本地时间是在格林时间的基础上,加上当地(设备激活所在地)时区和夏令时的时间。
- 当模组连接上网络之前本地的时间戳校准后才会返回成功,并带有有效的时间数据。
MCU 发送
模组返回
- 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 代表星期一
示例:
- 如设备在国内激活使用,则当地时间为北京时间(东 8 区):(北京时间 2016 年 4 月 19 日 5 时 6 分 7 秒)
- 如果设备在国外激活使用,则当地时间为设备所处时区时间
获取模组剩余内存,返回 表示不支持获取内存。
MCU 发送
模组返回
- MCU 可以获取当前 Unix 时间戳,时区信息以及夏令时范围。
- 该协议仅支持保活门锁产品。
MCU 发送
模组返回
- Data[0]:获取时间成功与否, 表示成功, 表示失败
- Data[1]-Data[4]:Unix 时间戳
- Data[5]:获取时区信息是否成功, 表示成功, 表示失败
- Data[6]: 表示东区, 表示西区
- Data[7]:表示时区
- Data[8]:是否有夏令时, 表示有夏令时, 表示没有夏令时
- Data[9]-Data[12]:进入夏令时时间戳(大端)
- Data[13]-Data[16]:退出夏令时时间戳(大端)
MCU 发送
模组返回
- 表示 -113 dBm 或以下
- 表示 -51dBm 或以上
MCU 发送
- 03 版本:
字段 字节数 说明 帧头 2 0x55aa 版本 1 0x03 命令字 1 0x25 数据长度 2 0x0000 数据 0 无 校验和 1 从帧头开始按字节求和,得出的结果对 256 求余
- 04 版本:
字段 字节数 说明 帧头 2 0x55aa 版本 1 0x04 命令字 1 0x25 数据长度 2 0x0001 数据 1
- :关闭
- :打开
模组返回
- :表示失败
- :表示成功
对于需要休眠降低功耗的 MCU,可在休眠前发送该指令关闭模组心跳,方便进入休眠状态。该指令请勿在设备刚上电时发送,模组上电后需要和 MCU 建立心跳连接。
MCU 发送
模组返回
MCU 发送
模组返回
- Data[0] 为获取 MAC 地址是是否成功的标志:
- 表示成功,表示后面 6 字节的 MAC 地址有效。
- 表示获取 MAC 失败,表示后面 6 字节的 MAC 无效。
- Data[1]~Data[6] 则表示模组有效的 MAC 地址。
模组有全功能工作模式,飞行模式两种。
MCU 发送
- :全功能模式
- :飞行模式
示例:
模组返回
- :设置成功
- :设置失败
示例:
模组有全功能工作模式,飞行模式两种。
MCU 发送
示例:
模组返回
- 子命令:0x01
- 数据:
- :全功能模式
- :飞行模式
本命令可以由 MCU 控制主动发送一个 IMSI 获取包,可用于获取模组的国际移动用户识别码。
MCU 发送
模组返回
- 子命令:0x02
- 15 字节的 IMSI,示例为
示例:
- MCU 主动下发给模组获取 ICCID 指令,模组将 ICCID(长度 20 的字串)返回给 MCU。
- 本命令可以由 MCU 控制,主动发送 ICCID 获取包,以用于获取模组的 SIM 卡识别号码。
MCU 发送
模组返回
- 子命令:0x03
- 20 字节的 ICCID 示例为
示例:
MCU 主动下发给模组获取 IMEI 指令,模组将 IMEI(长度 15 的字串)返回给 MCU。本命令可以由 MCU 控制,主动发送 IMEI 获取包,以用于获取设备的 IMEI 码。
MCU 发送
模组返回
- 子命令:0x04
- 15 字节的 IMEI,示例:
示例:
MCU 发送
模组返回
- 子命令:
- 类型:
- :GPRS 网络
- :LTE Cat.1 网络
- :CATM 网络
- :NB-IoT 网络其他异常码
- 该命令只支持 MA510 模组,并且只有在产品信息返回里有设置 COPS 才支持。
- 该命令需要注网成功后,才能获取到 PLMN(Public Land Mobile Network)。
MCU 发送
模组返回
- 子命令:0x48
- Data[1]:返回结果 1 成功,0 失败
- PLMN:4 字节,当前的注网国家的 PLMN。返回大端格式的 PLMN 数组,每个 PLMN 值为 4 个字节,采用大端模式格式:
当前 PLMN + PLMN1 … + PLMNn
示例:
通用对接协议版本 1.1.1 及以上支持本功能。
MCU 发送
0x0003
- 子命令:
- 控制字(1 个字节):
- :获取
- :设置
- 若为设置时:RRC 值(1 个字节)范围 0-20,对应 0-10s
模组回复
0x0004
- 子命令:
- 控制字(1 个字节):
- :获取
- :设置
- 若为设置时:RRC 值(1 个字节)范围 0-20,对应 0-10s
- 若为获取时:
- RRC 值(1 个字节)范围 0-20,对应 0-10s
设备长时间不联网也可使用的动态密码。
MCU 发送
示例:
- 离线密码:
- 格林时间:2021-01-11 08:18:42
- 发送示例:
模组回复
- : 表示正确,非 表示错误(无后续数据)
- : 表示限时开门密码, 表示单次开门密码, 表示清除密码
- :解密后数据长度
- :解密数据
- 门锁主板当检测到用户使用的是多组临时密码,才调用此接口去云端获取相关数据,更新本地的密码数据和状态,这样可以最大程度节约功耗。
- 密码每次服务端都是全量下发,门锁需要每次根据服务端返回的所有密码和状态进行更新。
- 保留原生效周期设置,在生效周期基础上,可以按照每周重复的方式添加密码生效的计划。最多可以添加 3 个 schedule。
MCU 发送
门锁获取当前生效临时密码:
模组返回
- 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:周六
密码进制指连续的密码数字按键范围,包含以下两个概念:
- 进制:表示所有密码数字的个数,支持 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 发送
示例:
- 配置数字 12345,分别配置进制为 5,起始值为 1。
- 配置数字 012345,分别配置进制为 6,起始值为 0。
模组返回
- 0 表示设置成功
- 非 0 表示设置失败
请求云端临时密码(带 schedule 列表)(0x14)
- 门锁主板当检测到用户使用的是多组临时密码才去调用此接口去云端获取相关数据,更新本地的密码数据和状态,这样可以最大程度节约功耗。
- 注意,模组给门锁给的相关时间数据都是基于格林时间,请门锁本地通过获取格林时间的接口同步自己的时钟数据。
- 密码每次服务端都是全量下发,门锁需要每次根据服务端返回的所有密码和状态进行更新。
- 保留原生效周期设置,在生效周期基础上可以按照每周重复的方式添加密码生效的计划。最多可以添加 3 个 schedule。
MCU 发送
门锁获取当前生效临时密码:
模组返回
- 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:周六
MCU 发送
- :占用 1 字节,表示 的长度
- :请求参数名称
- L:0x06 K:w.temp
- L:0x06 K:w.pm25
- L:0x0a K:w.humidity
模组返回
- 结果(1 个字节):
- :表示失败
- :表示成功
- 错误码(1 个字节):
- :无错误
- :数据格式非法
- :异常错误
下发天气数据,在打开天气数据功能后模组定时下发。
模组发送
- :表示失败
- :错误码,表示参数服务没权限,可以确认是否购买了该参数服务
- :表示成功
- :参数名长度
- :参数名
- : 整形, 字符串
- :字段名长度
- :字段值
MCU 返回
授权信息储存在低功耗蓝牙芯片内部,如果 Cat.1 模组接入,低功耗蓝牙通过 UART 将授权信息和激活信息传输到 Cat.1 模组。Cat.1 不支持主动绑定云端,也不支持从云端解绑。当低功耗蓝牙设备进行解绑的时候,需要发送命令给 Cat.1 通知已经解绑。
基本交互:
低功耗蓝牙发送
模组回复
- : 表示信息获取成功,非 表示信息获取失败,
- 失败后,后续数据无效
- :NB-IoT
- :Wi-Fi
- :LTE Cat.1
- :Zigbee
- :低功耗蓝牙(目前只有 和 用到)
低功耗蓝牙发送
- 子命令
- 加密方式
- :AES-CBC
- :AES_CCM
- :其他
- 随机数:16 字节
- {“uuid”:“xxxx”,
“auth_key”:“xxxx”,
“psk_key”:“xxxx”}
uuid、auth_key、psk_key
模组回复
- 子命令 0x01
- : 表示信息获取成功,非 表示信息获取失败
- 加密方式
- :AES-CBC
- :AES_CCM
- :其他
- 对随机数做 , 使用共享秘钥, 为 32 字节
低功耗蓝牙发送
- 子命令
- {
“devId”:“xxxx”,
“localKey”:“xxxx”,
“secKey”:“xxxx”,
“env”:“xxxx”,
“region”:“xxxx”
}
该字段部分加密,采用 AES 加密,具体算法由加密方式字段决定。其中:- :取共享秘钥的前 16 字节
- :全 0
- Padding:补齐非 16 整数倍相差的字节
模组回复
低功耗蓝牙发送
- 子命令
- 加密曲线类型
- :secp192r1
- :secp224r1
- :secp256r1
- :secp256k1
- MCU 公钥:64 字节
模组回复
- 子命令
- 加密曲线类型
- :secp192r1
- :secp224r1
- :secp256r1
- :secp256k1
- 模组公钥:64 字节
MCU 主动下发给模组设置 GNSS 启动或者关闭定位功能。该功能由于 GNSS 模组的处理事务比较多,应答的消息超时时间最大为 3 秒。
MCU 发送
- 子命令:
- 控制命令: 启动、 关闭
- 定位类型:(开启模式下值有效)
- :GPS 搭配北斗
- :GPS 搭配 GLONASS 需要确认 GNSS 模组是否支持
- :GPS
- :北斗,需要确认 GNSS 模组是否支持
- :GLONASS,需要确认 GNSS 模组是否支持
- :Galileo,需要确认 GNSS 模组是否支持
模组返回
- 子命令:,启动或者关闭状态:
- :失败
- :成功
- 定位类型状态:关闭时该状态显示值无效。部分 GPS 模组不支持,该返回值可以忽略:
- :失败
- :成功
MCU 主动下发给模组设置 GNSS 启动或者关闭定位功能。该功能由于 GNSS 模组的处理事务比较多,应答的消息超时时间最大为 3 秒。启用该功能,需要首先开启 GNSS 定位功能。
MCU 发送
- 子命令:
- 上报周期:2 字节(秒),大端模式上报
- DPID:1 字节
模组返回
- 子命令:
- 状态:
- :失败
- :成功
MCU 主动下发给模组根据设置的 DPID 和上报间隔,模组自动上报 GPS 定位信息到云端。启动 Wi-Fi 定位功能后,蓝牙会被关闭。
MCU 发送
- 子命令:
- 控制命令:
- :启动
- :关闭
模组返回
- 子命令:
- 状态:
- :失败
- :成功
MCU 主动下发给模组根据设置的 DPID 和上报间隔,模组自动上报定位信息到云端。启用该功能,需要首先开启 Wi-Fi 定位功能。
MCU 发送
- 子命令:
- 上报周期:2 字节(秒)
- (大端模式)上报的 DPID:1 字节
模组返回
- 子命令:
- 状态:
- :失败
- :成功
MCU 主动下发给模组根据设置的 DPID 和上报间隔,模组自动上报定位信息到云端。
MCU 发送
- 子命令:
- 上报周期:2 字节(秒)
- 大端模式上报的 DPID:1 字节
模组返回
- 子命令:
- 状态:
- :失败
- :成功
- 上报周期为 0 的时候,表示取消自动上报。上报周期大于 5 秒。自动上报的数据通过蜂窝通道。仅支持 String 类型的 DP。
- 建议 Wi-Fi、GNSS、LBS 三种定位模式只开启一种自动上报,上报周期和设定值可能有 1~2 秒的偏差。当某个定位信息在定时时间去获取信息失败后,会停止计时,延时 1~2 秒后再去获取,直到获取成功后,重新计时。
- LBS 获取需要 1 秒左右的时间。
- MCU 主动下发给模组复位 GNSS 设备。
- LZ201 模组支持。
- LZ211 模组不支持。
MCU 发送
- 子命令:
- 复位 GPIO:0~31,根据实际产品的 GNSS 设备的复位 GPIO 口
- 复位电平: 表示低电平, 表示高电平
模组返回
- 子命令:
- 状态:
- :失败
- :成功
MCU 主动下发给模组获取 GNSS 定位信息。
MCU 发送
模组返回
- 子命令:
- 状态:
- :失败
- :成功
- N 字节的定位信息,采用字符串格式,字符串为经纬度格式:
模组返回的定位信息为字符串类型,MCU 在获取到后定位信息后,按照 状态上报 章节把模组返回的定位信息上报给云端。如果云端的 DP 是要求纬经度格式,则 MCU 需要将收到的定位信息转为纬经度。
MCU 主动下发给模组获取 GNSS 定位信息。
MCU 发送
模组返回
- 子命令:
- 状态:
- :失败
- :成功
- N 字节的定位信息,采用字符串格式,字符串为经纬度格式:
模组返回的定位信息为字符串类型,MCU 在获取到后定位信息后,按照 状态上报 章节把模组返回的定位信息上报给云端。
MCU 主动下发给模组获取 GNSS 信号强度。
MCU 发送
模组返回
- 子命令:
- 状态:
- :失败
- :成功
- 信号强度:0~100(1 字节)
MCU 主动下发给模组获取 GNSS 瞬时速度。
MCU 发送
模组返回
- Data[0] 子命令:
- Data[1] 状态:
- :失败
- :成功
- Data[2] = (速度)高数据位
- Data[3] = (速度)低数据位。例如 Data[2] =SPEED>>8 Data[3] =SPEED&0xFF
MCU 主动下发给模组获取 Wi-Fi 定位信息。
MCU 发送
模组返回
- 子命令:
- AP 信息个数:1(字节)
- N 字节的定位信息(字符串)
模组返回的定位信息为字符串类型,MCU 在获取到后定位信息后,按照 状态上报 章节把模组返回的定位信息上报给云端。
目前定位信息只上报最多 10 个最好信号的 AP 信息。
MCU 发送命令给模组,获取定位信息。
- LBS 定位信息的格式是:运营商编码(MCC+MCN)+位置区域码+基站编号+信号强度。
- 例如中国电信:
MCU 发送
模组返回
- 子命令:
- 状态 1 字节:
- :失败
- :成功
- N 字节的 LBS 定位信息(字符串格式),示例:
模组返回示例:
MCU 发送命令给 LZ211 模组控制 GNSS 电源。LZ211 模组内置 GNSS 芯片,GNSS 备用电源处于常供电,主电源属于可控制模式,主电源上电属于热启动。
MCU 发送
- 子命令:,
- 数据:Data[1]:
- :打开电源
- :关闭电源
模组返回
- 子命令:
- 状态:
- :失败
- :成功
MCU 发送命令查询 LZ211 模组的 GNSS 电源状态。
MCU 发送
模组返回
- 子命令:
- 状态:
- :电源关闭
- :固件加载中
- :电源开启,固件记载完成
- 启动或者关闭 GNSS 辅助定位。启动服务定位后,会消耗移动数据流量。模组当前默认未启动辅助定位。
- 每 2 小时内,仅更新一次。
- 通用对接协议版本 1.1.4 及以上支持本功能。
MCU 发送
- 子命令:
- 数据:Data[1]:
- :启动
- :关闭
模组返回
- 子命令:
- 状态:
- :失败
- :成功
MCU 发送
模组返回
- 子命令:
- 状态:
- :失败
- :成功
- 获取可见卫星数:1 字节
获取是否启动 GNSS、Wi-Fi、LBS 定位功能。
MCU 发送
模组返回
- 子命令:
- 状态:
- GNSS 定位: 启动, 关闭
- Wi-Fi 定位: 启动, 关闭
- LBS 定位: 启动, 关闭
MCU 发送
模组返回
- Data[0] 子命令:
- Data[1] 状态:
- :失败
- :成功
- 航向(2 个字节):取值是实际航向的 10 倍,失败则无该数据
通用对接协议版本为 1.1.3 及以上支持本功能。
MCU 发送
模组返回
- Data[0] 子命令:
- Data[1] 状态:
- :失败
- :成功
- 水平精度因子(2 个字节):取值是实际水平精度因子的 10 倍,失败则无该数据
通用对接协议版本为 1.1.3 及以上支持本功能。
MCU 发送
模组返回
- Data[0] 子命令:
- Data[1] 状态:
- :失败
- :成功
- 海拔高度(2 个字节):取值是实际海拔高度的 10 倍,失败则无该数据
通用对接协议版本为 1.1.3 及以上支持本功能。
MCU 发送
模组返回
- Data[0] 子命令:
- Data[1] 状态:
- :失败
- :成功
通用对接协议版本为 1.1.3 及以上支持本功能。
MCU 发送
HDOP 阈值(2 个字节):取值是实际 HDOP 阈值的 10 倍,默认 HDOP 阈值为 2.0,范围 0~99.9
校验和 1 从帧头开始按字节求和,得出的结果对 256 求余
模组返回
- Data[0] 子命令:
- Data[1] 状态:
- :失败
- :成功
通用对接协议版本为 1.1.3 及以上支持本功能。
MCU 发送
模组返回
- Data[0] 子命令:
- Data[1] 状态:
- :失败,失败则无后续数据。若经纬度获取成功,其他失败则值为
- :成功
- 经度:浮点型,4 字节
- 纬度:浮点型,4 字节
- 信号强度:1 个字节
- 卫星数量:1 个字节
- 速度:2 个字节,单位:100 米/小时
- 航向:2 个字节,取值是实际航向的 10 倍
- 水平精度因子:2 个字节,取值是实际水平精度因子的 10 倍
- 海拔高度:2 个字节,取值是实际海拔高度的 10 倍
由于 MCU 与模组属于一问一答交互方式,故 MCU 收到电话呼入提醒时,应予以答复,3 秒内 MCU 不做对应指令响应,呼入即被挂断。
模组发送
- 子命令:
- 控制字:
- 电话号码(字符串 N 字节)
例如:
MCU 返回
- 子命令:
- 控制字:
例如:
呼出返回成功仅代表指令下发成功。具体对方是否收到,需要通过电话状态查询。
MCU 发送
- 子命令:
- 控制字:
- 电话号码(字符串)
示例:
模组返回
- 子命令:
- 控制字:
- 结果: 表示成功, 表示失败
示例:
MCU 发送
- 子命令:
- 控制字:
示例:
模组返回
- 子命令:
- 控制字:
- 结果: 表示成功, 表示失败
示例:
MCU 发送
- 子命令:
- 控制字:
示例:
模组返回
- 子命令:
- 控制字:
- 结果: 表示成功, 表示失败
示例:
MCU 发送
- 子命令:
- 控制字:
示例:
模组返回
- 子命令:
- 控制字:
- 结果:
- :拨号中
- :空闲
- :通话失败
- :通话中
示例:
在模组通话状态发生改变时,自动上报通话状态,避免反复查询通话状态占用资源。
模组发送
- 子命令:
- 控制字:
- 结果:
- :拨号中
- :空闲
- :通话失败
- :通话中
示例:
设置 VoLTE 开关,打开时,支持 4G 模式下语音通话功能。否则,语音通话时,网络制式将自动切换到 2G。在 SIM 卡支持语音业务的情况下,如果运营商网络不支持 2G,需要打开此开关,才能支持通话功能。如果运营商网络同时支持 2G、4G 语音,用户可以自由选择是否开启 VoLTE。VoLTE 的开关设置掉电会保存。
MCU 发送
- 子命令:
- 控制命令:
- :打开
- :关闭
模组返回
- 子命令:
- 状态:
- :失败
- :成功
用于实现 10086 之类的语音交互,语音提示后,用户操作按键,调用该接口将按键音频发送到语音通道,该函数只能在通话状态后调用,否则将调用失败。
MCU 发送
- Data[0] 子命令:
- Data[1] 信号音类型:
- :DTMF 0
- :DTMF 1
- :DTMF 2
- :DTMF 3
- :DTMF 4
- :DTMF 5
- :DTMF 6
- :DTMF 7
- :DTMF 8
- :DTMF 9
- :DTMF A
- :DTMF B
- :DTMF C
- :DTMF D
- :DTMF
- :DTMF *
- Data[2]-Data[5] 音频持续时长,单位为毫秒,高字节在前
模组返回
- 子命令:
- 状态:
- :失败
- :成功
MCU 发送
- 子命令:
- 控制命令:
- :关闭
- :开启
模组返回
- 子命令:
- 结果:
- :失败
- :成功
模组发送
- Data[0] 子命令:
- Data[1] 信号音类型:
- :DTMF 0
- :DTMF 1
- :DTMF 2
- :DTMF 3
- :DTMF 4
- :DTMF 5
- :DTMF 6
- :DTMF 7
- :DTMF 8
- :DTMF 9
- :DTMF A
- :DTMF B
- :DTMF C
- :DTMF D
- :DTMF
- :DTMF *
MCU 发送
查询命令:Data[1] 0 查询
设置命令:
Data[1] 1 – 设置
Data[2] 设置值 0~30(0 静音)
校验和 1 从帧头开始按字节求和得出的结果对 256 求余
模组发送
查询 命令:
Data[1] 0:查询
Data[2] 0:失败,1:成功
Data[3] 设置值 0~30(0 静音)
设置命令:
Data[1] 1:设置
Data[2] 0:失败,1:成功
校验和 1 从帧头开始按字节求和得出的结果对 256 求余
示例:
- 查询命令:
- 设置命令:
该命令需要在通话过程中才有效。
MCU 发送
查询命令:Data[1] 0 – 查询
设置命令:
Data[1] 1 – 设置
Data[2] 0~100
校验和 1 从帧头开始按字节求和得出的结果对 256 求余
模组返回
Data[1]类型选择:
Data[1] 0:查询
Data[2] 0:失败,1:成功
Data[3] 设置值 0~100
设置命令:
Data[1] 1:设置
Data[2] 0:失败,1:成功
校验和 1 从帧头开始按字节求和得出的结果对 256 求余
示例:
- 查询命令:
- 设置命令:
模组收到短信后,会主动上报给 MCU,MCU 接收到短信后,模组会把收到的短信删除。以防止 SIM 中短信满后,无法接收到新的信息。
模组发送
- 子命令:0x24
- 控制字:0x00
- 短信内容:N 字节
- 协议版本:0x03 格式如下:{“n”:“10086”, “t”:“2021-3-29 16:58” “c”:“xxxdfasfd”}
- 协议版本:0x04 格式如下:
- 电话号码长度:1 字节
- 电话号码:N 字节
- 日期内容长度:1 字节
- 日期内容:N 字节
- 短信内容长度:2 字节
- 短信内容:N 字节
MCU 返回
- 子命令:
- 控制字:
- 结果:
- :失败
- :成功
上报的短信内容为 JSON 格式,其那 表示电话号码, 表示时间, 表示短信中的具体内容,编码格式为 GB2312。
如果不设置短信收发格式,发短信是版本 03 为 JSON 格式,版本 04 为 HEX 格式。
MCU 发送
- 子命令:
- 控制字:
- 协议版本: 格式如下:
- {“n”:“10086”, “c”:“xxxdfasfd”}
- 协议版本: 格式如下:
- 电话号码长度:1 字节
- 电话号码:N 字节
- 短信内容长度:2 字节
- 短信内容:N 字节
以中文短信发送 您好 为例:
模组返回
- 子命令:
- 控制字:
- 结果:
- :失败
- :成功
以中文短信发送 您好 为例:
设置收发短信的编码方式。LZ211-EAU 模组的短信默编码是 UTF-8,CN 模组的短信默认编码均为 CP936。该设置掉电后失效。
MCU 发送
- 子命令:
- 控制字:
- 编码方式:
- :ISO8859-1(不支持中文)
- :UTF-8
- :UTF-16BE
- :UTF-16LE
- :GSM
- :CP936
模组返回
- 子命令:
- 控制字:
- 结果::失败,:成功
MCU 发送
- 子命令:
- 控制字:
- 编码方式:
- :JSON 格式
- :HEX 格式
模组返回
- 子命令:
- 控制字:
- 结果::失败,:成功
MCU 发送
模组返回
- 子命令:0x25
- 电量:0~100
MCU 发送
模组返回
- 子命令:
- 充电状态:
- :初始状态(启动时并未检测到充电状态变化)
- :开始充电
- :充电结束
- :电量低
- :电量超低
- :电池拔出
- :充电器拔出
- :充电故障
MCU 发送
- 子命令:
- 类型(1 字节): 表示本地音量, 表示通话音量
- 音量:0~100, 表示静音
模组返回
- 子命令:
- 类型(1 字节): 表示本地音量, 表示通话音量
- 结果: 表示成功,其他表示失败
本功能是需要 SD 卡支持。
MCU 发送
- 子命令:
- 端口(1 字节): 播放到本地喇叭, 播放到通话的上行链路
- 控制字(1 字节): 停止, 播放, 暂停, 恢复
- 音频文件格式:
- :pcm
- :wavpcm
- :mp3
- :amr-nb
- :amr-wb
- 音频文件所在模组的路径(N 字节),例如
模组返回
- 子命令:
- 端口(1 字节)
- 控制字(1 字节)
- 音频文件格式
- 状态( 成功,其他失败)
MCU 发送
模组返回
- 子命令:
- 状态
- :空闲
- :播放中
- :播放中止
- :播放完成
- 结果: 表示成功,其他表示失败
在本地音乐播放完成后,模组会主动上报播放完成的状态给 MCU。
模组发送
- 子命令:
- 状态: 表示播放完成
MCU 发送
- Data[0] 子命令:
- Data[1] 类型选择
- :SMS 静音
- :呼入静音
- :电话通话静音
- Data[2] 设置值
- :非静音
- :静音
模组返回
- 子命令:
- 类型选择:
- :SMS 静音
- :呼入静音
- 状态:
- :失败
- :成功
- 涂鸦提供在线的 TTS(文本合成语音)的服务。对应的产品需要开通 TTS 服务。
- 产品必须先连上涂鸦,否则无法提供本服务。
- MCU 发送的文本编码格式必须是 UTF-8,否则不支持。
- 由于是在线的服务,所以根据网络状况存在延时。而且会消耗流量。
- 文本越长,从云端获取的合成的音频数据越大。不建议单次文本超过 64 个字符。
- 由于本服务是异步执行,所以从涂鸦获取音频数据超过 10 秒钟未成功,则本次服务结束。
MCU 发送
- 子命令:0x45
- {“opt”:“play”,
“timeout”:xxx,
“context”:“xxx”}
:表示模式选择。支持 和 两种模式。
- 模式:蜂窝模组获取到音频后,直接由蜂窝模组播放。
- 字段表示从云端获取音频的超时时间。音频播放时间不包含在内。默认为 10s,最低不能低于 5s。
- 模式:查询当前的 TTS 播放状态。当选择 的时候, 和 字段可以不填。
模组返回
- 子命令:
- data[1]:
- 本功能是用来传输、控制一段内存音频数据。当前的模组支持最多 4 个音频 ID,每个音频 ID 最多 16K 字节。
- 音频数据保存在模组的内存中,设备重启就会丢失。随后,MCU 需要重新传输内存数据给模组。
- 增加音频数据的时候,单个传输包音频数据长度不能超过 1024 字节。
MCU 发送:
- 子命令:
- 控制字:1 字节
- :音频数据增加
- :音频 ID 删除
- :播放一个音频 ID
- :停止一个音频 ID
- :查询已经保存在内存中的音频 ID
- 音频 ID:1 字节,针对控制字 1、2、3、4 有效
- 端口:1 字节,针对控制字 3 有效
- :播放到本地喇叭
- :播放到通话的上行链路
- 音频文件格式:1 字节,针对控制字 1 有效
- :pcm
- :wavpcm
- :mp3
- :amr-nb
- :amr-wb
- :2 字节,针对控制字 1 有效
- :2 字节,针对控制字 1 有效
- 音频数据:N 字节,针对控制字 1 有效
控制字
模组返回
- 子命令:
- 控制字:1 字节
- 控制字为 1~4 模式下:
状态:1 字节, 表示成功,其他表示失败。 - 控制字为 5 模式下
- 音频数量:1 字节
- 音频 ID:1 字节
- 控制字为 1~4 模式下:
状态值
示例
- 播放音频 ID
在设备注册后,可以启动或关闭蓝牙连接。默认启动蓝牙连接。
MCU 发送
- 子命令:
- 控制命令: 启动, 关闭
模组返回
- 子命令:
- 状态:
- 0:失败
- 1:成功
启动或关闭电池供电情况下低电压关机功能,默认处于关闭状态。
MCU 发送
- 子命令:0x88
- 控制命令:0x01 启动、0x00 关闭
模组返回
- 子命令:0x88
- 状态:
- 0:失败
- 1:成功
设备从云端获取二维码短连接后,主动发送给 MCU。该功能一般使用在有屏的设备且需要在屏幕上显示绑定二维码。
模组发送
- 子命令:0x93
- 短连接地址(字符串格式)
用于模组网络在连续一定时间内,无法驻网、拨号成功,执行设备重启。
- 当前可设置的最小时间 180 秒(误差在 60 秒内)。
- 如果持续时间是 0 秒,表示关闭该功能。设置进入飞行模式、未插入 SIM 卡、未开始拨号不重启设备。
MCU 发送
- Data[0] 子命令:0x96
- Data[1]-Data[2] 连续异常时间单位秒,高字节在前
模组返回
- 子命令:
- 状态:
- :失败
- :成功
MCU 发送
模组自动直接重启。
模组发送
- Data[0] 子命令:
- Data[1] 类型:
- :网络注册错误
- :网络 PDP 激活错误
- :TCP 网络无法连接(连接云端后网络异常才会上报)
针对新增模组外部唤醒管脚变化时进行配置。
目前使用 LZ501、LZ201、LZ211 已经默认配置,不需要使用此命令。
MCU 发送
- 子命令:
- 管脚:1 字节
- 低电平持续时间:1 字节(10ms 单位)
模组返回
- 子命令:
- 状态:
- :失败
- :成功
默认关闭,记录到 KV 存储中。
MCU 发送
- :关闭
- :开启
模组返回
- 子命令:
- 状态:
- :失败
- :成功
- 只支持 MA510 模组。
模组发送
MCU 返回
- 子命令:
- 状态:
- :失败
- :成功
默认状态以模组实际情况为准,开启后会保存到 KV 存储。
MCU 发送
- 子命令:
- 控制:
- :使能
- :关闭
模组返回
- 子命令:
- 状态:
- :失败
- :成功
- 开启定时读取时,设置读取周期为 或者单次读取,都会停止定时读取。
- 通用对接协议版本 1.1.3 及以上支持本功能。
MCU 发送
- 子命令:
- 控制字:
- :ADC 初始化
- :ADC 单次读取
- :ADC 设置定时读取
- :ADC 去初始化
- Port(1 个字节)
- 控制字为 时:
- 参考电压(2 个字节)
- 控制字为 时:
- 读取次数(1 个字节)
- 控制字为 时:
- 读取周期(2 个字节),单位 ms
- 读取次数(1 个字节)
模组返回
- 子命令:
- 控制字:
- :ADC 初始化
- :ADC 设置定时读取
- 和 :ADC 上报
- :ADC 去初始化
- Port(1 个字节)
- 控制字为 / 时:
- 结果(1 个字节): 表示成功, 表示失败
- 控制字为 / 时(1+2N 字节):
- 结果(1 个字节): 表示成功, 表示失败
- 读取次数(1 个字节):N
- ADC 值(2 个字节*N)
通用对接协议版本为 1.1.3 及以上支持本功能。
MCU 发送
- 子命令:
- 控制字:
- :GPIO 初始化
- :GPIO 去初始化
- :GPIO 写
- :GPIO 读
- :周期输出
- 引脚编号(1 个字节)
- 控制字为 时:
- 设置方向(1 个字节): 表示输入, 表示输出
- 设置模式(1 个字节):
- 输入模式: 表示上拉, 表示下拉, 表示高阻
- 输出模式: 表示推挽
- 初始电平(1 个字节):
- 表示低电平
- 表示高电平
- 控制字为 时(1 个字节):
- :低电平
- :高电平
- 控制字为 时:
- 起始电平(1 个字节):
- :低电平
- :高电平
- 高电平时间(2 个字节):单位 ms
- 低电平时间(2 个字节):单位 ms
模组返回
- 子命令:
- 控制字:
- :GPIO 初始化
- :GPIO 去初始化
- :GPIO 写
- :GPIO 读
- :周期输出
- 引脚编号(1 个字节)
- 控制字为 /// 时:
- 结果(1 个字节): 表示成功, 表示失败
- 控制字为 时(1 个字节):
- 结果(1 个字节): 表示成功, 表示失败
- 电平(1 个字节)
目前,模组支持本地移除、App 移除、App 恢复出厂设置,但是 MCU 无法知道模组这些状态。通过状态通知服务,有需要的用户可以打开模组状态通知。
MCU 发送
模组返回
- :成功
- :失败
重置状态的发送最多也会重发两次,重发间隔保持 1 秒。
模组发送
- :模组本地重置
- :App 远程重置
- :App 恢复出厂重置
MCU 返回
- 仅 MA510 模组支持,通用对接协议版本 1.1.4 及以上支持。
- 若模组处于系统固件升级状态中,对于指令,模组会回复该状态而不执行命令,MCU 需等待模组升级完成。
- 模组处于升级中,会主动关闭所有命令上报,仅上报升级状态。若模组重启需要 MCU 控制 电平,那 MCU 在收到升级状态后,可直接将 电平拉低。待模组重启后,MCU 收到模组心跳数据时,重新设置成 。
模组发送
升级状态::模组处于升级中
校验和 1 从帧头开始按字节求和,得出的结果对 256 求余
- 产品信息中增加强制网络类型字段
- 增加 AGNSS 控制命令
- 增加系统固件 OTA 状态发送指令(仅 MA510)
- 增加 GNSS 的水平精度因子获取(HDOP)
- 增加 GNSS 的海拔高度获取
- 增加 GNSS 的方位角获取
- 增加 GNSS 的滤波算法(启动/关闭,HDOP 阈值设定,系统内部默认为 2)
- 产品信息中支持配置 GPS 模组
- 增加 ADC 和 GPIO 控制
- 产品信息增加预发环境设置
- 增加 RRC 控制指令
- MCU 升级,升级包传输时关闭 MCU 唤醒脚控制,加快 MCU 升级速度
- 增加在线 TTS 播放命令 0x45
- 增加未知状态的网络状态说明
- 增加传输、播放音频数据协议 0x49
- 增加设备待配网网络状态
- 增加 DP 命令下发是否回复 ACK 标志
- 增加电话通话中 MIC 及侧音增益设置和读取
- TCS600U 模组 的默认唤醒脚改为 70
- 增加 MC665EU 模组
- 增加获取 PLMN 方式(仅 MA510 模组支持)
- 移除获取 GPS 版本指令
- 网络类型增加 NB 和 CATM
- 通知 MCU 主动重启设备
- 增加 SIM 卡热插拔使能控制命令
- 产品信息查询中,增加运营商编码
- 增加配置远程日志开关
- 增加 MCU 升级版本选择
- 增加 DP 缓存功能配置
- 增加记录类型 DP 上报
- 增加 460800/921600 波特率自适应
- 增加 GNSS 版本信息获取
- 增加 GNSS 可见星获取
- 增加外部唤醒关键配置
- 增加蓝牙状态读取
- 增加网络类型状态上报和读取
- 修改心跳关闭功能,增加开启控制
- 增加版本信息获取命令
- 增加 DTMF 监听上报 MCU 功能
- 增加蜂窝告警事件上报功能
- 增加静音设置(通话)
- 增加 HEX 格式短信收发定义
- 增加短信收发格式设置
- 添加设置模组网络状态持续异常的时间后重启命令
- 增加静音设置(短信,呼入)
- 增加不支持命令返回
- 支持低功耗蓝牙+LTE Cat.1
- 增加命令 D0 及其子命令
- 产品信息返回里需要增加 字段
- MCU 升级包传输增加命令版本 01,为低功耗蓝牙升级增加 CRC32 字段
- 短信编码设置支持 UTF-16BE、UTF-16LE、GSM
- 增加蜂窝模组重启命令
- 基础固件需要支持低功耗蓝牙+LTE Cat.X。
- 中国大陆地区模组默认采用 CP936 编码格式
- 其他国家或地区模组默认采用 UTF8 编码格式
- 0x71 > LTE Cat.1 读操作
- 0x72 > LTE Cat.1 写操作
- LTE Cat.1 串口通用协议初版文档
版权声明:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权、违法违规、事实不符,请将相关资料发送至xkadmin@xkablog.com进行投诉反馈,一经查实,立即处理!
转载请注明出处,原文链接:https://www.xkablog.com/bcyy/60279.html