1.1. 使用其他BLE调试App进行BLE通讯 对BLE调试主要是在BLE广播数据、RSSI信号强度和时序,各Service/characteristic的read/write/notify等底层特性。官方App是针对具体的例程进行的上层界面封装。而为了接触到BLE通讯的底层特性,探究各个Service与Characteristic的手动读写等操作,需要使用BLE调试App。 目前比较多的是lightblue以及BLE芯片厂商的调试App。这里主要借助Nordic的nRF Master Control Panel 以及 Cypress的CySmart两款App进行调试。 1.1.1 使用CySmart进行BLE调试广播发现BLE设备,可以显示RSSi信号强度数值。 图 112 CySmart扫描到的BLE广播设备(已修改设备名为Hi,KW40Z) 点击即可进行连接,连接后列举Service(对于BLE规范定义的标准Service都能显示标准的Service-Name,对于例程自定义的service只能显示UUID) 图 113 FRDM-KW40Z演示例程的详细Service列表 此处为LED控制对应的Service,代码中对应为led_control_service。 /* LED Control Service */ UUID128(uuid_service_led_control, 0xE0, 0x1C, 0x4B, 0x5E, 0x1E, 0xEB, 0xA1, 0x5C, 0xEE, 0xF4, 0x5E, 0xBA, 0x00, 0x56, 0xFF, 0x02) 读取Service的Characteristic,对于BLE规范定义的标准Characteristic都能自动读取并显示。 图 114 显示标准的Device Info Service和自定义的Led_control_service的Characteristic 对于例程自定义的Characteristic只能显示各个Characteristic的UUID,如需要读写则要点击相应的Characteristic后进入读/写界面。 从代码中得知led_control_service的Characteristic的UUID包含有LED的状态和控制两个Characteristic特征值。 /* LED Status Characteristic */ UUID128(uuid_characteristic_led_status, 0xE0, 0x1C, 0x4B, 0x5E, 0x1E, 0xEB, 0xA1, 0x5C, 0xEE, 0xF4, 0x5E, 0xBA, 0x00, 0x57, 0xFF, 0x02) /* LED Control Characteristic */ UUID128(uuid_characteristic_led_control, 0xE0, 0x1C, 0x4B, 0x5E, 0x1E, 0xEB, 0xA1, 0x5C, 0xEE, 0xF4, 0x5E, 0xBA, 0x01, 0x57, 0xFF, 0x02) 点击具有Read属性,即UUID为02ff5700开头的Characteristic,可以读取到LED的状态。其中07状态是在三个LED全部点亮的状态下读取的,04状态是在LED2单独点亮的状态读取的。浏览代码可以得知每个LED占用一个bit位,LED2/3/4分别为读取的LED Status Characteristic的0/1/2位。 图 115 读取的LED Status Characteristic 点击具有Write属性,即UUID为02ff5701开头的Characteristic写入LED,浏览代码后可以得知led Control Characteristic的格式为两个字节,第一个为需要控制的LED序号(0/1/2),第二个为需要控制的LED状态,0代表LED熄灭,1代表LED点亮。因此写入如下,此时LED点亮,通过读取LED状态值显示对应的LED状态。 图 116 写入的LED Control Characteristic 图 117 设置Switch的Notify并实时显示按键状态改变的时间和按键值 图 118 设置Potential Meter的Notify并实时显示电位器值和改变的时间 图 119 设置Accelerate的Notify并实时显示加速度传感器数据和改变的时间 图 120 设置Compass的Notify并实时显示磁传感器数据和改变的时间 其余各个Service及其Characteristic就不一一列举了,手动read/write//notify方式都类似。 1.1.2 使用nRF Master Control Panel进行调试广播扫描发现BLE设备 图 121 nRF Master Control Panel 扫描到的BLE广播设备和对应的RSSI曲线 nRF的BLE调试工具还能以曲线形式显示各广播BLE设备的RSSI信号强度,可见FRDM-KW40Z的信号强度远远高于周围的其他BLE设备,因为开发板就在手机附近。 点击Connect后,App会开始Discovery所有的Service和Characteristic,并以列表的形式显示。点击每一个Service显示该Service包含的Characteristic,再点击向下的箭头为读取,点击向上箭头为写入。 图 122 Service列表和标准的Device Info Service的各Characteristic值 点击第一个Unknown Service,同样的方式读取LED状态和写入LED控制字 图 123 读取LED Status Characteristic的值 图 124 写入LED Control Characteristic值 在按键的Service里面使能Notify后,实时显示按键状态改变值和时间。 图 125 Notify按键状态并显示按键状态和时间以及收发BLE数据包的日志记录 日志记录里面详细记录了每一次Discover Service/Characteristic,读/写/使能notify等操作。对于调试来说非常有帮助。 其余的操作类似,不一一列举。 |