蓝牙网关
蓝牙网关
DT02
本节主要描述 DT02 (数据采集器) 可选实现的蓝牙服务,特征值以及配置参数等
服务和特征值
下面是设备支持的服务和特征值列表
TYPE | UUID | REQ | MANDATORY | SECURITY |
---|---|---|---|---|
Generic Access Service |
0x1800 | M | - | - |
- Device Name | 0x2A00 | M | Read | Gateway |
- Appearance | 0x2A01 | M | Read | 0x00 |
- Slave Preferred .. | 0x2A04 | M | Read | - |
Generic Attribute Service |
0x1801 | M | - | - |
- Service Changed | 0x2A05 | M | Indicate | - |
Device Information Service |
0x180A | M | - | - |
- Manufacturer Name String | 0x2A29 | M | Read | TDK |
- Model Number String | 0x2A24 | M | Read | DT02 |
- Firmware Revision String | 0x2A26 | O | Read | x.x |
- Hardware Revision String | 0x2A27 | O | Read | x.x |
Configuration Service |
0x7600 | M | - | - |
- Capabilities | 0x7501 | M | Read | 需要解锁 |
- Configuration | 0x7680 | M | Write | 需要解锁 |
- Lock State | 0x7506 | M | Write | - |
- Unlock | 0x7507 | M | Write | - |
- Factory Reset | 0x750b | O | Write | 需要解锁 |
DFU Service |
- | M | - | - |
- 具体请参考 DFU Service | - | M | - | 需要解锁 |
备注:
M
表示必须实现的服务或特征值O
表示可选实现的服务或特征值A
表示需要认证 (解锁) 以后才能读写的特征值
配置参数
下面是设备支持的配置参数
Name | Type ID | SIZE | FORMAT | REQ | R/W | NOTE |
---|---|---|---|---|---|---|
Name | 0x01 | - | string | M | RW | 设备本地名称 |
ADV Tx Power(RSSI) | 0x02 | 1 | uint8 | M | RW | 1 米处测得的信号强度(RSSI) |
ADV Interval | 0x03 | 2 | uint16 | M | RW | 广播间隔,单位为毫秒 |
Radio Tx Power | 0x04 | 1 | uint8 | M | RW | 无线发射功率 |
Supported Tx Power | 0x08 | - | uint8[] | M | R | 只读,Beacon 支持的发射功率,从小到大排列 |
Server URI | 0x30 | <=30 | string | M | RW | 服务器 URI 地址, 最长 30 |
Server Key | 0x31 | <=20 | string | O | RW | 服务器公钥, 最长 20 |
Device ID | 0x32 | 6 | uint8[6] | O | RW | 设备 ID (即 MAC 地址) |
Device Secret | 0x33 | <=20 | string | M | RW | 设备密钥, 最长 20 |
Network Mode | 0x34 | 1 | uint8 | O | RW | 网络模式, 0 表示静态地址, 1 表示 DHCP |
Static Address | 0x35 | 20 | uint32[5] | O | RW | IP地址,子网掩码,网关地址,DNS 服务器(2组) |
主机控制接口
DT02 通过 UART 口和蓝牙模块进行双向通信
数据包格式
Start Code | Channel | Length | Data | CRC Code |
---|---|---|---|---|
1B | 1B | 2B | NB | 2B |
0x48 (H) | 0x00 ~ 0xFF | 0 ~ 65535 | - | 0x0000 ~ 0xFFFF |
Start Code
起始码,用于标记一个数据帧的开始,总是为0x48
Channel
从机或功能码,表示通道号或功能码- 0xFF 表示蓝牙广播通道
- 0x00 表示蓝牙模块本身
- 0x01 - 0x0E 表示蓝牙外围从机 UART 数据
- 0xE1 - 0xEE 表示蓝牙外围从机通知数据
Length
数据长度,表示这个帧随后的数据内容长度 (不包含起始码, 通道号,以及数据长度本身)Data
数据,原始数据内容CRC Code
校验码,暂时总是为0x0000
,可使用 Modbus CRC-16 的算法
通知数据包
DT02 蓝牙模块通过发送 Channel 通道号为 0xE1 - 0xEE 的数据包来传输通知数据:
命令格式
Start Code | Channel | Length | Handle | Data | CRC Code | NOTE |
---|---|---|---|---|---|---|
1Byte | 1Byte | 2Byte | 2Byte | NByte | 2Byte | 长度 |
0x48 (H) | 0xE1~0xEE | 0 ~ 65535 | 0x0001 | - | 16bits CRC Code | 特征值通知 |
0x48 (H) | 0xE0 | 10 | 0xFFFF | 6 Bytes MAC | 16bits CRC Code | 连接断开事件 |
0x48 (H) | 0xE0 | 10 | 0x0000 | 6 Bytes MAC | 16bits CRC Code | 连接成功事件 |
0x48 (H) | 0xE0 | 0 | 0xFFFE | - | 16bits CRC Code | 配置参数发生改变 |
Channel
0xE0 连接事件等, 0xE1 表示第一个从机,0xE2 表示第二个从机,其他以此类推Handle
特征值句柄Data
二进制数据- 特征值通知: 通知数据内容
- 连接断开:从机的 MAC 地址
- 连接成功: 从机的 MAC 地址
- 配置参数: 没有数据内容
控制数据包
DT02 可以通过发送 Channel 通道号为 0x00 的数据包来控制蓝牙模块,控制数据内容格式为指令格式:
请求命令
Start Code | Channel | Length | Code | Seq | Data | CRC Code |
---|---|---|---|---|---|---|
1Byte | 1Byte | 2Byte | 1Byte | 1Byte | NByte | 2Byte |
0x48 (H) | 0x00 | 0 ~ 65535 | 0x00~0xFF | 0x00~0xFF | - | 0x0000 ~ 0xFFFF |
Code
消息代码,0x01 表示请求,10 (0x0A) 表示应答- 10 表示成功
- 11 表示错误
- 错误内容格式:
errorCode
,message
, - errorCode 表示错误码,
- message 表示错误消息
- 例如:
400,Bad request
- 错误内容格式:
Seq
消息序号,请求和应答的序号必须一样Data
为字符串,参数以,
分隔,如mode=2,3
控制指令
用 []
的参数表示是可选的:
指令列表
指令 | 输入参数 | 输出参数 | 默认参数 |
---|---|---|---|
test | - | "ok" | 测试指令 |
reset | - | - | 恢复出厂设置 |
reboot | - | - | 重启蓝牙模块 |
name | name | name | 查询/设置设备名称 |
mac | mac | mac | 查询/设置 MAC 地址 |
tpl | level | level | 查询/设置发射功率 |
mode | mode | mode | 查询/设置工作模式,M 表示主机模式 |
config | config | config | 查询/设置配置参数,配置参数为 16 进制字符串 |
scan | [name],[uuid|company-id] | - | 开启搜索模式 |
connect | channel,mac | - | 查询/设置默认要连接的从机地址 |
version | - | version | 查询固件版本 |
link | - | mac,rssi,status\n... | 查询连接状态, status 为 1 表示已连接 |
disconnect | mac, [mac]... | - | 断开连接, mac 为 'all' 表示断开所有连接 |
services | mac | handle,end,uuid\n... | 返回所有的服务 |
characteristics | mac,[service-uuid] | handle,value,properties,uuid\n... | 返回所有的特征值,或指定 UUID 服务的特征值 |
descriptors | mac,char-uuid,[desc-uuid] | handle,uuid... | 返回所有的描述符,或指定 UUID 的描述符 |
read | mac,handle | bin: handle,data | 读特征值 |
write | mac,handle,flags,data | - | 写特征值, flags 为 1 表示需要应答 |
listen | mac,handle,indication | - | 侦听特征值, indication为 1 表示 Indication |
参数定义
- name 设备名称, 不要超过 16 个字符
- mac 16 进制字符串表示的 MAC 地址,12 个字符, 大小写不敏感
- level 发射功率, 数值,单位为 dBm
- mode 工作模式, M 表示主机模式, S 表示从机模式,如果默认为 主从一体模式,则这要命令无需实现
- uuid 16 进制字符串表示的 16 位或 128 位 UUID, 大小写不敏感
- company-id 16 进制字符串表示的 16 位公司 ID
- handle 16 进制字符串表示的 16 位句柄 ID
- rssi 接收信息强度, 数值,单位为 dBm
- status 连接状态,1 表示已连接,0 表示未连接
- properties 16 进制字符串表示的 9 位特征值属性
- flags 表示是否需要应答
- data 16 进制字符串表示的数据,大小写不敏感
- config 16 进制字符串表示的配置数据,大小写不敏感
- bin 二进制数据
- indication 表示 indication 或 notification 类型
指令详解
connect
- 可重复调用
- 如果指定的 MAC 地址已连接则立即返回
- 最多可连接 6 个从机 (具体和蓝牙模块型号有关)
- 超过连接上限时直接返回错误消息
示例
# 测试
1.0: test # 1 表示请求,0 表示序号 0
10.0: ok # 10 表示应答,0 表示序号 0
# 恢复出厂设置
1.1: reset # 1 表示请求,1 表示序号 1
10.1
# 重启蓝牙模块
1.2: reboot
10.2
# 查询名称
1.3: name
10.3: BN5001
# 设置名称
1.4: name=BN5002
10.4: BN5002
# 查询 MAC
1.3: mac
10.3: AA001122334455
# 设置 MAC
1.4: mac=BB001122334455
10.4: BB001122334455
# 查询发射功率
1.3: tpl
10.3: 0
# 设置发射功率 (5dBm)
1.4: tpl=5
10.4: 5
# 查询工作模式
1.5: mode
10.5: M
# 设置工作模式
1.6: mode=M
10.6: M
# 查询配置参数
1.5: config
10.5: [2A29 AABBCC]
# 设置工作模式
1.6: config=[2A29 AABBCC]
10.6:
# 查询搜索模式
1.7: scan
10.7: BN5001,040D
# 开启搜索模式 (搜索设备名称前缀为 BN5001,UUID 为 0x040D 的从机广播)
1.8: scan=BN5001,040D
10.8: BN5001,040D
# 连接指定的 MAC 地址的设备
1.9: connect=AA001122334455,BB001122334455
10.9
# 查询固件版本
1.0: version
10.0: 2.1.5
# 查询连接状态
1.1: link
10.1: AA001122334455,-60,1\nBB001122334455,-90,0\n...
# 断开连接 (all 表示断开所有连接)
1.2: disconnect=all
10.2
# 发现主服务
1.3: services=AA001122334455
# 0001 为 handle, 0010 为 end handle
10.3: 0001,0010,0000180000001000800000805f9b34fb\n...
# 发现特征值, (UUID 是可选的)
1.4: characteristics=AA001122334455,0000180000001000800000805f9b34fb
# 0002 为 handle, 0003 为 value handle, 02 为属性
10.4: 0002,0003,02,0000180000001000800000805f9b34fb
# 读特征值,(0x2A29 为 Value handle)
1.6: read=AA001122334455,2A29
# 返回值为二进制数据, 2A29 为 Value handle
10.6: [2A29 AABBCC]
# 写特征值,(0x2A29 为 handle, 1 表示需要应答, 0xAABBCC 表示数据内容)
1.7: write=AA001122334455,2A29,1,AABBCC
10.7
# 开启通知 (0x2A29 为 handle,1 表示 Indication)
1.8: listen=AA001122334455,2A29,1
10.8
10.1: [2A29 AABBCC]
10.2: [2A29 DDEEFF]
参数配置
通过蓝牙服务配置网关参数,主要可以配置的参数有:
- IP 获取模式
- IP 地址
- 子网掩码
- 网关地址
- DNS 地址
固件升级
通过串口更新蓝牙模块固件