打印
[蓝牙]

多协议无线开发板FRDM-KW40Z 学习笔记2_BLE-Demo演示程序试用

[复制链接]
1649|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
多协议无线开发板FRDM-KW40Z
学习笔记
(BLE+Zigbee+Thread+802.15.4+Proprietory/SMAC)
文档编号
AN1200-0000-A0
关键字
KW40Z, ARM, Cortex-M, SOC, Bluetooth, BLE, Zigbee, Thread, SMAC
摘要
本文记录、整理了学习采用多协议无线开发板FRDM-KW40Z的开发试验过程和心得体会,报过对NXP/FreescalKW40Z系列无线SoC的芯片特性、开发平台的特性和功能、BLE802.15.4ThreadZigbee以及NXP私有的SMAC无线通讯协议的开发。列举了无线应用的系统架构搭建,硬件设计和软件开发[size=10.5000pt]。
Mars4zhu


1 FRDM-KW40Z开发板BLE-Demo-Software例程1.1. 设置开发板,编译下载demo例程固件
BLE-Demo-Software要求开发板的电路配置与默认配置不一样,主要是因为DCDC管理要求不同。因此需要对开发板进行跳线设置。
11  FRDM-KW40Z演示例程的硬件跳线设置
其中跳帽是2mm间距的,不是常用的2.54mm,可以从开发板上不用的跳帽如J23/J27等来补充使用。
首先安装KW40Z_Connectivity_Software_1.0.1,然后从网上下载FRDMKW40ZDAUGSW.zip并解压frdm_kw40z_demo_1.0,用IAR打开frdm-kw40z_demo.eww,点击编译并下载即可。
1.2. 使用官方App-Kinetis BLE Toolbox进行BLE通讯
FRDM-KW40Z自带的例程充分演示了KW40ZBLE与手机进行无线通讯,并向手机App发送各种状态和传感器数据,同时手机App也可以通过BLE控制板载的LED以及蜂鸣器等外设。
上电开发板,默认上电是初始化后进入Idle状态,需要按下SW4使得开发板开始广播BLE数据,此时LED1会不停地闪动。
在手机上安装kinetis-ble-toolbox(截止2017-02-18版本为v4.0.0),打开后点击FRDM-KW40Z-Dmo界面,搜索FRDM开发板(此处App用了UUID过滤器,只会显示运行了FRDM-KW40Z-Demo固件的BLE设备,在其他BLE-App中如果没有过滤器,则会显示周围所有搜索到的BLE设备)。当出现设备后点击即可进行连接,连接后开发板的LED一直亮,表明建立了连接。
连接后App首先会Discover所有的ServiceCharacteristic,并显示对应的Service列表。包含有LEDSwitchService
12  FRDM-KW40Z演示例程的App连接界面
点击LED,则可以通过手机App界面上的三个按钮对板载的3LEDLED2/3/4LED1作为连接/广播状态显示)。
13  FRDM-KW40Z演示例程的LED控制
返回后点击Switch,则可以在手机App界面显示板载的SW1/2/3的开关状态,其中SW3是机械按键,按下后即可切换一次App界面上对应的按键状态。SW1SW2是电容感应的触摸按键,触摸一次后即可切换App对应的按键状态,而触摸后一直停留在电容按键位置上,则会不停地切换按键状态。
14  FRDM-KW40Z演示例程的按键状态显示
返回后点击Buzzer,可以通过App控制蜂鸣器的鸣叫。点击一次即可使蜂鸣器发声,再点击一次则停止。
15  FRDM-KW40Z演示例程的蜂鸣器控制
返回后点击Chip Temperate,则App显示芯片温度,该温度值通过读取芯片内部集成的温度传感器获得芯片温度,把手指放在芯片上,可以看到温度发生变化。
16  FRDM-KW40Z演示例程的芯片温度显示
返回后点击PotentiometerApp显示板载电位器的位置。旋转电位器可以看到App界面上的变化。
17  FRDM-KW40Z演示例程的电位器状态显示
返回后点击Accelerometer,则App显示开发板上的复合传感器FXOS8700CQ读取开发板的加速度(重力加速度+位移加速度的叠加)的XYZ三轴方向上的加速度值,移动摇晃开发板后,曲线发生变化。
18  FRDM-KW40Z演示例程的加速度传感器状态显示
返回后点击e-Compass,则App首先指示开发板对复合传感器FXOS8700CQ的磁传感器部分进行校准(地磁场+外部磁性物体磁场的叠加),即通过读取刚开始静态的磁场作为原始位置,然后转动开发板后,手机App上显示与开发板所指定的方向一致。
19  FRDM-KW40Z演示例程的磁传感器状态显示
返回后点击Remote Control,可以通过App控制红外遥控设备如电视等。在下方选择电视品牌,然后可以点击开关机、切换音量/频道等功能。该功能通过板载的红外发射管发射与原装遥控器同样的红外遥控信号实现外部设备的控制。
110  FRDM-KW40Z演示例程的红外遥控
在测试过程中如果用串口调试软件打开FRDM-KW40Z的串口,则会有信息输出。
111  FRDM-KW40Z演示例程的调试串口信息输出



图片13.png (40.73 KB )

图片13.png

图片14.png (83.42 KB )

图片14.png

图片15.png (153.37 KB )

图片15.png

图片16.png (90.14 KB )

图片16.png

图片17.png (68.5 KB )

图片17.png

图片18.png (297.99 KB )

图片18.png

图片19.png (135.75 KB )

图片19.png

图片20.png (164.38 KB )

图片20.png

图片21.png (141.38 KB )

图片21.png

图片22.png (488.9 KB )

图片22.png

图片23.png (378.76 KB )

图片23.png

图片24.png (544.78 KB )

图片24.png

图片25.png (423.84 KB )

图片25.png

图片26.png (140.84 KB )

图片26.png

相关帖子

沙发
mars4zhu|  楼主 | 2017-2-22 10:35 | 只看该作者

使用特权

评论回复
板凳
mars4zhu|  楼主 | 2017-2-22 10:38 | 只看该作者
1.1. 使用其他BLE调试App进行BLE通讯
BLE调试主要是在BLE广播数据、RSSI信号强度和时序,各Service/characteristicread/write/notify等底层特性。官方App是针对具体的例程进行的上层界面封装。而为了接触到BLE通讯的底层特性,探究各个ServiceCharacteristic的手动读写等操作,需要使用BLE调试App
目前比较多的是lightblue以及BLE芯片厂商的调试App。这里主要借助NordicnRF Master Control Panel 以及 CypressCySmart两款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)
读取ServiceCharacteristic,对于BLE规范定义的标准Characteristic都能自动读取并显示。
114  显示标准的Device Info Service和自定义的Led_control_serviceCharacteristic
对于例程自定义的Characteristic只能显示各个CharacteristicUUID,如需要读写则要点击相应的Characteristic后进入读/写界面。
从代码中得知led_control_serviceCharacteristicUUID包含有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属性,即UUID02ff5700开头的Characteristic,可以读取到LED的状态。其中07状态是在三个LED全部点亮的状态下读取的,04状态是在LED2单独点亮的状态读取的。浏览代码可以得知每个LED占用一个bit位,LED2/3/4分别为读取的LED Status Characteristic0/1/2位。
115  读取的LED Status Characteristic
点击具有Write属性,即UUID02ff5701开头的Characteristic写入LED,浏览代码后可以得知led Control Characteristic的格式为两个字节,第一个为需要控制的LED序号(0/1/2),第二个为需要控制的LED状态,0代表LED熄灭,1代表LED点亮。因此写入如下,此时LED点亮,通过读取LED状态值显示对应的LED状态。
116  写入的LED Control Characteristic
117  设置SwitchNotify并实时显示按键状态改变的时间和按键值
118  设置Potential MeterNotify并实时显示电位器值和改变的时间
119  设置AccelerateNotify并实时显示加速度传感器数据和改变的时间
120  设置CompassNotify并实时显示磁传感器数据和改变的时间
其余各个Service及其Characteristic就不一一列举了,手动read/write//notify方式都类似。
1.1.2 使用nRF Master Control Panel进行调试
广播扫描发现BLE设备
121  nRF Master Control Panel 扫描到的BLE广播设备和对应的RSSI曲线
nRFBLE调试工具还能以曲线形式显示各广播BLE设备的RSSI信号强度,可见FRDM-KW40Z的信号强度远远高于周围的其他BLE设备,因为开发板就在手机附近。
点击Connect后,App会开始Discovery所有的ServiceCharacteristic,并以列表的形式显示。点击每一个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等操作。对于调试来说非常有帮助。
其余的操作类似,不一一列举。

使用特权

评论回复
地板
vb说的不V| | 2017-3-16 15:44 | 只看该作者
太需要了。谢谢楼主

使用特权

评论回复
5
lyfly_away| | 2017-3-16 22:47 | 只看该作者
感谢分享,又多知道一些调试APP

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

17

主题

139

帖子

4

粉丝