扩展联网服务

更新时间:2024-06-24 08:13:32下载pdf

蓝牙单点通用模组可提供扩展联网模组的服务,支持设备在未连接蓝牙的情况下接入云服务。蓝牙主要用于近场通信,而联网模组可直接连接云服务,实现远距离通信。扩展联网模组的方案填补了单蓝牙通信距离有限的不足,使设备应用场景更加多样化。

简介

适用场景

适用于需要在不依赖网关的情况下,随时连接云服务实现远距离通讯的蓝牙设备。

方案特点

  • 提供蓝牙单点配网控制支持,完成蓝牙配网后可激活扩展联网模组,实现双链路控制。

  • 在无蓝牙连接的情况下,可通过扩展联网模组使用涂鸦 App 以及云服务。

  • 提供更为可靠的连接,模组将自动根据蓝牙连接情况和扩展联网模组的在线情况,选择合适的通信链路,以便提供云服务和涂鸦 App 控制。

  • 通过扩展联网模组也可以给设备推送远程升级,升级速度相较于蓝牙更为迅速,同时升级场景更为自由。

扩展联网模组协议

帧数据包结构

蓝牙扩展联网模组相关命令帧格式如下:

序号 字节数 字段 说明
0
1
2 帧头 0x55
0xAA
2 1 版本号 0x00
3 1 命令字 CMD 0xC0
4
5
2 数据长度 Len Len 高 8 位
Len 低 8 位
6~6+Len-1 1 SubCmd 子命令字
Len-1 数据 子命令数据
6+Len 1 CRC8 从帧头开始按字节求和得出的结果对 256 求余

所有大于 1 个字节的数据均采用大端模式传输。

跨协议数据透传(CMD-0xC000)

当 MCU 需要访问联网模组(当前为 Cat.1)特有的一些信息时,例如定位信息等,可以通过该指令按照 Cat.1 串口协议 直接访问 Cat.1 模组。

模组 <-> MCU:

序号 字节数 字段 说明
0
1
2 帧头 0x55
0xAA
2 1 版本号 0x00
3 1 命令字 CMD 0xC0
4
5
2 数据长度 Len Len 高 8 位
Len 低 8 位
6~6+Len-1 1 SubCmd 0x00
Len-1 DATA 包含透传协议的版本号、命令字、数据长度、数据字段。
6+Len 1 CRC8 从帧头开始按字节求和得出的结果对 256 求余
扩展联网服务

扩展模组电源控制(CMD-0xC001)

  • 该指令的应用需要与具体硬件设计结合,蓝牙模组仅向 MCU 提供 GPIO 电平的控制权限。
  • 有关蓝牙模组上扩展模组电源控制引脚的详细信息,请查阅模组规格书和开发设计说明部分。
  • 配置支持掉电记忆。在蓝牙模组复位情况下,蓝牙模组的电平可能发生翻转。等待蓝牙模组准备就绪后,将恢复之前的引脚配置。

MCU 发送:

序号 字节数 字段 说明
0
1
2 帧头 0x55
0xAA
2 1 版本号 0x00
3 1 命令字 CMD 0xC0
4
5
2 数据长度 Len Len 高 8 位
Len 低 8 位
6~6+Len-1 1 SubCmd 0x01
Len-1 DATA 见下表
6+Len 1 CRC8 从帧头开始按字节求和得出的结果对 256 求余

DATA 数据格式:

1 字节 1 字节
op_type op_object
  • op_type

    • 0x01:通知。当 MCU 不通过蓝牙模组而直接控制扩展模组电源开关时,需要通知蓝牙模组,以便更新工作状态。
    • 0x02:控制。MCU 通过控制蓝牙模组上的扩展模组电源控制引脚,来控制扩展模组电源的开关。
    • 0x03:读取。MCU 可通过该操作读取当前扩展模组的电源配置情况。
  • op_object

    • bit0:扩展模组 1(蜂窝模组)电源控制引脚,0 表示写入/读出为低电平,1 表示写入/读出为高电平。
    • bit1:扩展模组 2(GPS 模组)电源控制引脚,0 表示写入/读出为低电平,1 表示写入/读出为高电平。
    • 其他 bit 保留。

模组回复:

序号 字节数 字段 说明
0
1
2 帧头 0x55
0xAA
2 1 版本号 0x00
3 1 命令字 CMD 0xC0
4
5
2 数据长度 Len Len 高 8 位
Len 低 8 位
6~6+Len-1 1 SubCmd 0x01
Len-1 DATA 见下表
6+Len 1 CRC8 从帧头开始按字节求和得出的结果对 256 求余

DATA 数据格式:

1 字节 1 字节 1 字节
op_type op_object status

status

  • 0x00:成功。
  • 其他:失败。

扩展模组在位查询(CMD-0xC002)

  • 当蜂窝模组插入或拔出时,蓝牙模组将主动发送通知,MCU 也可以通过主动查询来获取相关信息。
  • 当蜂窝模组离位时,为了降低功耗,在 MCU 进入低功耗模式之前,应该通过扩展模组电源控制指令,控制扩展模组的电源关闭。

MCU 发送:

序号 字节数 字段 说明
0
1
2 帧头 0x55
0xAA
2 1 版本号 0x00
3 1 命令字 CMD 0xC0
4
5
2 数据长度 Len Len 高 8 位
Len 低 8 位
6 1 SubCmd 0x02
7 1 CRC8 从帧头开始按字节求和得出的结果对 256 求余

模组回复:

序号 字节数 字段 说明
0
1
2 帧头 0x55
0xAA
2 1 版本号 0x00
3 1 命令字 CMD 0xC0
4
5
2 数据长度 Len Len 高 8 位
Len 低 8 位
6 1 SubCmd 0x02
7 1 Status
  • 0x00:蜂窝离位
  • 0x01:蜂窝在位
8 1 CRC8 从帧头开始按字节求和得出的结果对 256 求余

扩展模组功能配置(CMD-0xC003)

  • 根据实际需求,MCU 可选择对扩展模组进行配置,当前仅支持 apncopsmmhtdp_cachedp_ack 选项的配置。
  • 所有配置将被永久存储,支持掉电存储。
  • 蓝牙模组将在合适的时机根据此设置,自动配置扩展模组。
  • 蓝牙模组会记忆上一次的配置。当配置发生变化时,蓝牙模组会重置蜂窝以使用新的配置,所以禁止动态配置,否则可能影响蜂窝网络状态。

MCU 发送:

序号 字节数 字段 说明
0
1
2 帧头 0x55
0xAA
2 1 版本号 0x00
3 1 命令字 CMD 0xC0
4
5
2 数据长度 Len Len 高 8 位
Len 低 8 位
6 1 SubCmd 0x03
N 配置 {
“apn”:“”,
“cops”:“”,
“m”:0,
“mht”:120,
“dp_cache”:0,
“dp_ack”:0 
}
所有配置均是可选项。如果没有配置,模组将自动配置默认值如上。
数值的含义参考:Cat.1 串口协议-查询产品信息(0x01)
6+N 1 CRC8 从帧头开始按字节求和得出的结果对 256 求余

示例

  • 设置 apncniot{"apn":"cniot"}

    55 AA 00 C0 00 10 03 7B 22 61 70 6E 22 3A 22 63 6E 69 6F 74 22 7D EB
    
  • 清空 apn 设置,{"apn":""}

    55 AA 00 C0 00 0B 03 7B 22 61 70 6E 22 3A 22 22 7D C6
    
  • 设置多个可选项,{"apn":"cniot","m":0,"mht":100,"cops":"12345","dp_cache":1,"dp_ack":1}

    55 AA 00 C0 00 47 03 7B 22 61 70 6E 22 3A 22 63 6E 69 6F 74 22 2C 22 6D 22 3A 30 2C 22 6D 68 74 22 3A 31 30 30 2C 22 63 6F 70 73 22 3A 22 31 32 33 34 35 22 2C 22 64 70 5F 63 61 63 68 65 22 3A 31 2C 22 64 70 5F 61 63 6B 22 3A 31 7D CB
    

模组回复:

序号 字节数 字段 说明
0
1
2 帧头 0x55
0xAA
2 1 版本号 0x00
3 1 命令字 CMD 0xC0
4
5
2 数据长度 Len Len 高 8 位
Len 低 8 位
6 1 SubCmd 0x03
7 1 Status
  • 0x00:设置成功
  • 0x01:设置失败
8 1 CRC8 从帧头开始按字节求和得出的结果对 256 求余

示例55 AA 00 C0 00 02 03 00 C4

扩展模组功能配置查询(CMD-0xC004)

MCU 发送:

序号 字节数 字段 说明
0
1
2 帧头 0x55
0xAA
2 1 版本号 0x00
3 1 命令字 CMD 0xC0
4
5
2 数据长度 Len Len 高 8 位
Len 低 8 位
6 1 SubCmd 0x04
6+N 1 CRC8 从帧头开始按字节求和得出的结果对 256 求余

示例55 AA 00 C0 00 01 04 C4

模组回复:

序号 字节数 字段 说明
0
1
2 帧头 0x55
0xAA
2 1 版本号 0x00
3 1 命令字 CMD 0xC0
4
5
2 数据长度 Len Len 高 8 位
Len 低 8 位
6 1 SubCmd 0x04
7 1 配置 {
“apn”:“”,
“cops”:“”,
“m”:0,
“mht”:120,
“dp_cache”:0,
“dp_ack”:0 
}
打印所有配置,对于未进行配置的选项,模组将显示默认配置值。
数值的含义参考:Cat.1 串口协议-查询产品信息(0x01)
8 1 CRC8 从帧头开始按字节求和得出的结果对 256 求余

示例

55 AA 00 04 00 3D 04 7B 22 61 70 6E 22 3A 22 22 2C 22 63 6F 70 73 22 3A 22 22 2C 22 6D 22 3A 30 2C 22 6D 68 74 22 3A 31 32 30 2C 22 64 70 5F 63 61 63 68 65 22 3A 30 2C 22 64 70 5F 61 63 6B 22 3A 30 7D EA({"apn":"","cops":"","m":0,"mht":120,"dp_cache":0,"dp_ack":0})

常见问题

Q:通过蜂窝链路进行 MCU OTA 时,应当注意什么?

A:由于 Cat.1 串口通讯协议和蓝牙串口通讯协议上的差异,通过蜂窝链路 MCU OTA 升级无法下发有效的文件 CRC32,所以 MCU OTA 应当使用文件 MD5 进行完整性校验。

如果在开发过程遇到问题,您可以登录 TuyaOS 开发者论坛 TuyaOS-蓝牙设备开发 版块进行沟通咨询。咨询前,建议首先查阅 官方资料 或参考已有帖子,并认真阅读 发帖规范