《传感网应用开发(高级)课件第5章.ppt》由会员分享,可在线阅读,更多相关《传感网应用开发(高级)课件第5章.ppt(109页珍藏版)》请在三一办公上搜索。
1、,“1+X”传感网应用开发 蓝牙技术.模块及BLE协议栈,01,蓝牙技术,02,蓝牙模块,03,BLE协议栈,目录,CONTENTS,1.蓝牙技术简介,历史,蓝牙4.0技术规格,蓝牙4.0规范,高可靠性,低成本,低功耗,高安全性,快速启动,瞬间连接。,其他几种常见的短距离无线通信技术,2.蓝牙模块简介,新大陆NewLab实验箱中蓝牙模块,外设,开发工具,3.BLE协议栈简介,什么是协议栈?,注意:虽然协议是统一的,但是协议的实现是变化的,即不同厂家提供的协议栈是有区别的。,如何使用协议栈?,如何使用协议栈?,如何使用协议栈?,如何使用协议栈?,“1+X”传感网应用开发 基于BLE协议栈的串口通
2、信,01,任务要求,02,知识链接,03,任务实施,目录,CONTENTS,1,任务要求,任务要求,搭建蓝牙通信模块与PC机串口通信系统,要求蓝牙信模块上电时,向串口发送 Hello NEWLab!”,并在PC机的串口调试软件上显示。另外,在串口调试软件上发送信息给蓝模块时,蓝牙通信模块收到信息后,立刻原样返回串口接收到的数据给串口调试软件,并显示出来。,2,知识链接,知识链接,蓝牙4.0BLE协议栈具有很多版本,不同厂家提供的蓝牙4.0BLE协议栈有一些不同,本书选用TI公司推出的BLE-CC254x-.4.1.43908b版本,双击BlE-CC254x-1.4.1.43908BLE-cc2
3、54x-1.3.2.exe文件,即可以进行安装,默认安装在C盘。,BLE协议栈,3,任务实施,搭建蓝牙串口通信系统,打开SimpleBLEPeripheral工程,串口初始化,串口发送数据,串口接收数据,串口显示SimpleBLEPeripheral工程初始化信息,搭建蓝牙串口通信系统,01,首先把蓝牙通信模块固定在NEWLab平台上,再通过串口线把平台与PC机连接起来,并将NEWLab平台上的通讯方式旋钮转到“通讯模式”,最后给CC2541上电,将拨码开关JP2拨到J9位置。,打开SimpleBLEPeripheral工程,02,打开“bleSimpleBLEPeripheralCC2541
4、DB 目录下的SimpleBLEPeripheral.ew工程,在 Workspace栏内选择CC2541,串口初始化,03,打开工程中NPI文件夹下的npi.c文件,串口初始化函数void NPI_InitTransport(npiCBack_t npiCBack)串口号、波特率、流控、校验位等进行配置。,串口发送数据,04,打开 simpleBLEPeripheral.c文件中的初始化函SimpleBLEPeripheral_Ini t(uint8 task_id),在此函数中添加NPI_InitTransport(NUll),在后面再加上一条上电提示 Hello NEWLab!的语句,添
5、加头文件语句:#includenpi.h,串口接收数据,05,在simpleBLEPeripheral1.c文件声明串口回调函数NpiSerialCallback,并在 SimpleBLEPeripheral_init函数中传入串口回调函数,将NPI_InitTransport(NULL)修改为:NPI_InitTransport (NpiSerialCallback),串口显示SimpleBLEPeripheral工程初始化信息,06,打开工程目录中HALTargetCC2540EBDrivershal_lcd.c文件,在HalLcdWriteString函数中添加代码,串口显示Simple
6、BLEPeripheral工程初始化信息,06,在预编译中添加LCD_TO_UART, HAL_LCD=TRUE并且在hal_lcd.c文件中添加#include“npi.h”,编译无误后,下载程序,模块上电后,打开串口调试助手,可以看到图中所示结果,这样就可以把LCD上显示的内容传送到PC机端显示,极大地方便调试。,主从机建立连接与数据传输,主从机建立连接与数据传输,提纲, 原理及流程图 从机连接过程 主机连接过程 任务实施 总结,提纲, 原理及流程图 从机连接过程 主机连接过程 任务实施 总结,结合蓝牙 4.0 BLE协议,采用两块蓝牙模块,一个模块作为从机,另一个模块作为主机,使主从机建
7、立连接,并能进行简单的无线数据传输。,原理及流程图,原理及流程图,开始,初始化,发送广播,发送广播,建立连接并作为从机,开始,初始化,按键搜索,发现设备,建立连接并作为主机,SimpleBLEPeripheral工程(节点设备),SimpleBLECentral工程(集中器设备),搜索回应,搜索请求,发起连接请求,响应连接请求,提纲, 原理及流程图 从机连接过程 主机连接过程 任务实施 总结,以 SimpleBLEPeripheral 工程作为节点设备的程序,初始化完成后,节点设备处于可发现状态,以广播的形式向外界发送数据。,从机连接过程,只有GAP服务的UUID相匹配,设备才能建立连接。,从
8、机连接过程,集中器设备可以通过搜索来发现正在发送广播数据的节点设备。当节点设备接收到集中器设备的搜索请求时,定义了回应数据。static uint8 scanRspData 当集中器设备接收到节点设备搜索回应的数据后,向节点设备发送连接请求,节点设备接受请求并作为从机进入连接状态。,从机连接过程,提纲, 原理及流程图 从机连接过程 主机连接过程 任务实施 总结,以 SimpleBLECentral 工程作为集中器设备(主机)的程序,主机的连接过程大致可分为初始化、搜索节点设备、查看及选择从机并连接。,主机连接过程,任务初始化函数 SimpleBLECentral_Init (uint8 tas
9、k_id)主要功能包括:设置最大扫描节点个数,8个 GAP服务设置,绑定管理设置, GATT初始化,注册按键服务。,主机连接过程,集中器发起搜索请求,调用GAP事件回调函数SimpleBLECentralEventCB( )在设备发现过程中,当一个设备被发现,产生一个GAP_DEVICE_INFO_EVENT 事件,发送一个OSAL消息。设备搜索完成后,集中器显示搜索到的从机,并提示主机连接。,主机连接过程,如果未连接,并且已经扫描到设备,主机向从机发起连接请求。调用GAP状态回调函数simpleBLECentralEventCB( ).回调函数中使用OSAL定时器,定时触发START_DIS
10、COVERY_EVT事件,定时时间到达后调用事件处理函数 SimpleBLECentral_ProcessEvent( )。,主机连接过程,SimpleBLECentral 工程默认采用按键进行搜索、连接,当有按键动作时,会触发KEY_CHANGE事件,进入simpleBLECentral_HandleKeys( )函数。,主机连接过程,提纲, 原理及流程图 从机连接过程 主机连接过程 任务实施 总结,由于蓝牙模块中没有Joystick按键,所以采用串口发指令方式代替按键。串口指令1,2,3,4,5分别对应按键的UP, LEFT, RIGHT, CENTER, DOWN。需要把按键程序simp
11、leBLECentral_HandleKeys( )中的代码移植到串口接收处理函数NpiSerialCallback( )中去。,任务实施,任务实施,任务实施,主机对应的PC机串口发送指令“1”,搜索节点设备。,任务实施,任务实施,主机对应的PC机串口发送指令“2”,查看节点设备,显示编号。发送指令“4”,进行连接,显示连接信息。,任务实施,主机对应的PC机串口发送指令“5”,周期显示RSSI信号值,再发送指令“5”则取消显示。,任务实施,当前状态下,主机对应的PC机串口发送指令“1”,执行读写char。发送指令先write char再次发送是read char每一次循环,char值加1。,任
12、务实施,当前状态下,主机对应的PC机串口发送指令“4”,主从机断开连接,从机再次处于广播状态。,提纲, 原理及流程图 从机连接过程 主机连接过程 任务实施 总结,介绍了基于蓝牙4.0BLE协议的主从机的连接与数据传输。重点掌握 事件处理、回调函数、按键服务等操作的流程,以加深对蓝牙4.0 BLE 协议栈的机制的理解。,总结,“1+X”传感网应用开发 基于BLE协议栈的无线点灯,01,蓝牙技术与BLE协议栈,02,任务及实验准备,03,关键知识点,目录,CONTENTS,04,任务实现,05,运行测试,06,特别关注,一、蓝牙技术与BLE协议栈,蓝牙无线技术是主要应用于短距离无线通信领域,牙无线
13、技术是全球使用范围最广的短距离无线标准之一。其最高数据传输速率1Mbps、最大传输距离为10厘米10米。 BLE( Bluetooth Low Energy,低功耗蓝牙)是蓝牙 4.0 的核心规范,其凭借超低的运行功耗、待机功耗等技术,使得其在以手机为智能终端的物联网应用中具有强有力的发展前景。,CC2541 是一款针对 低能耗及私有 2.4-GHz 应用的功率优化的片载系统 (SoC) 解决方案,是蓝牙通信模块使用的芯片,芯片内部集成增强型8051内核。 BLE协议栈是在蓝牙 4.0 的基础上推出的低功耗蓝牙通信标准,其包括一个小型操作系统(抽象层OSAL),负责系统的调度,收发双方需要共同
14、按照这一标准进行正常数据的收发,其大部分代码被封装成库,用户通过API调用完成系统开发。,一、蓝牙技术与BLE协议栈,在NewLab实验平台上固定两块蓝牙通信模块、一块继电器模块,安放一个灯泡模块,按图示把模块连起来,在PC机上,通过BTool工具发送命令,使主、从机建立连接,控制灯泡亮和灭。,二、任务及实验准备,1. BLE协议栈的安装,双击工具包中的“BLE-CC254x-1.3.2.exe” 。 2. 开发工具的安装,解压工具包中的“IAR Embedded Workbench.rar”,双击” autorun.exe”双击安装开发工具。 3. 烧写工具的安装,双击” Setup_Sma
15、rtRFProgr_1.12.7.exe”双击安装烧写工具。,二、任务及实验准备,1.profile规范是一种标准通信协议,定义了设备如何实现一种连接。 2.GATT服务:用于应用程序在两个连接设备之间的数据通信,设备连接后,主机将作为GATT Client,是从GATT服务器读/写数据的设备,从机将作为GATT Server,是包含主机需要读/写的设备。 3.特征值:主从机通信通过特征值来实现,通过特征值可以获取或写入先要的内容。 4. 统一识别码( UUID):GATT服务和特征值都有UUID。 5. 句柄( handle):GATT服务将整个服务加载到属性表中,并为每个属性分配唯一的句柄
16、。,三、关键知识点,5. 主从机建立连接流程:(1)从机启动发送广播。(2)主机启动搜索广播节点。(3)从机回应搜索请求。(4)主机发现设备,发起连接请求。(5)从机响应连接请求。(6)主从机连接完成。,三、关键知识点,7.数据传输流程:(1)主机发送主服务UUID,从机收到主服务UUID并回应服务信息。(2)主机发送主服务UUID,从机收到特征UUID并回应特征值句柄。(3)主机发送特征句柄,从机查找特征值并回应给主机。(4)主机通过句柄,对特征值进行读/写操作。,三、关键知识点,1.主机代码:(1)打开“HostTestRelease.eww” 工程,workspace选择“CC2541E
17、M”。(2)在 “_hal_uart_dma.c”文件中找到“HalUARTOpenDMA()”函数,新增“config-flowControl=0;”代码,关闭流控。(3)将主机拨码开关JP2拨到J9位置,编译下载程序到蓝牙模块中,按“复位”重新运行。,四、任务实现,1.从机代码(以任务2为基础):(1)打开“SimpleBLEPeripheral.eww” 工程,workspace选择“CC2541”。(2)在 “hal_board_cfg.h”文件修改LED1的定义,通过从机模块P1.2端口控制继电器的动作。,四、任务实现,(3)在“simpleBLEPeripheral.c”文件的“s
18、impleProfileChangeCB()”函数中添加红框所示代码控制P1.2端口电平的高低,以此控制灯的亮灭,四、任务实现,(4)在“simpleBLEPeripheral.c”文件的“peripheralStateNotificationCB ()”函数中添加红框所示代码,设置P1.2端口在从机处于广播和已连接状态时为低电平。,四、任务实现,(5)将从机拨码开关JP2拨到J9位置,编译下载程序到蓝牙模块中,下载完毕,将拨码开关JP2拨到J2位置,按“复位”重新运行。,四、任务实现,(1)NewLab平台通过USB转串口线连接PC机,运行“BTool”工具,设置串口参数,通过搜索找到从机,
19、选中从机,建立与从机的连接。,五、运行测试,(1) 利用“BTool”工具对CHAR1特征值写入“1”,点亮灯泡。,五、运行测试,(1) 利用“BTool”工具对CHAR1特征值写入“0”,熄灭灯泡。,五、运行测试,(1) 两根线的串口通信连接务必关闭流控,否则无法收发数据。(2) 修改预编译选项,添加:HAL_UART=TRUE 、LCD_TO_UART、HAL_LCD=TRUE预编译选项,删除或禁用POWER_SAVING预编译选项。(3)从机烧写完毕,拨码开关拨到J2位置,只有主机芯片与NewLab平台串口相连。(4)硬件连接,不能带电操作。,六、特别关注,基于BLE协议栈的串口透传,0
20、1,任务引入,02,相关知识点,03,任务实施,目录,CONTENTS,任务引入,同学们,你们有没有过直接用串口线连接两台电脑,然后通过串口调试助手进行聊天的经历?,任务引入,那么如果我们想通过串口调试助手实现两台电脑之间信息的发送,并且希望是通过无线而不是直接用串口线将两台电脑相连的方式,我们可以选择前面所学的蓝牙方式来实现。原理框图如下图所示,任务引入,任务要求:采用两个蓝牙通信模块,分别与PC机串口相连,一个模块作为从机(SimpleBLEPeripheral工程),另一个模块作为主机(SimpleBLECentral工程),是主从机建立连接,并进行无线串口数据透传,同时可以通过串口调试
21、软观察到主机和从机的发送与接收信息,相关知识点,1、在Profiles中添加特征值(P237),2、特征值的定义(P238-239)注:P239代码纠错,3、特征值的相关函数与初始化(P239-P244)注:P239代码纠错,任务实施,1. 系统构成,本案例要求搭建一个基于BLE协议栈的串口透传系统,所需设备:PC机两台蓝牙模块两个串口线两条NEWLab两台,任务实施,2. 实现主从机上电自动连接,(1)添加扫描节点设备的代码(P245-P246)(2)添加连接设备代码(P246-P247)(3)给主从设备上电,实现自动连接:编辑程序并下载到主机中,在workspace栏内选择“CC2541E
22、M”从机采用任务5.2和任务5.3的SimpleBLEPeripheral.eww,只要在LCD上显示的内容能在串口显示就可以先给从机上电,再给主机上电,主从机串口打印输出信息,任务实施,任务实施,3. 实现主机向从机单方向传输,(1)主机采用UUID方式读取CHAR6句柄(P248-P249)(2)修改主机的串口回调函数代码(P249-P250)(3)修改从机的特征值改变回调函数(P250)(4)编译、下载主从机程序,并依次复位从机、主机(P251),任务实施,3. 添加从机向主机发送数据代码,实现主从机串口透传,(1)主机打开CHAR7的通知功能(P252-P253);(2)主机响应CHA
23、R7的通知,并得到从机发送的数据,上传给PC机(P253);(3)打开SimpleBLEPeripheral工程SimpleBLEPeripheral.c文件,从机接收串口数据,并更新CHAR7特征值数据;(P253-P254)(4)打开SimpleBLEPeripheral工程simpleGATTprofile.c文件,“1+X”传感网应用开发 蓝牙采集心率数据,目录,CONTENTS,1,任务要求,采用Android智能手机作为主机,蓝牙模块作为从机,使主从机建立连接,并能把蓝牙模块上连接的心率传感器的数值发送到手机上显示。,2,知识必备,01,MAX30102芯片,01,MAX30102
24、芯片是一个集成脉搏血氧仪和心率监测仪生物传感器的模块,由发光LED及驱动电路、光感应电路、AD转换电路、环境光干扰消除及数字滤波电路组成。,应用于可穿戴设备进行心率和血氧采集检测。,通信接口:I2C。,02,物理拓扑,串行数据线,串行时钟线,半双工通信,02,物理拓扑,02,02,特 征,02,02,协 议,总线空闲时,总线忙,其他设备不能访问总线,总线空闲时,起始结束条件,02,协 议,数据传输过程,02,协 议,主设备向指定设备发送数据的格式,从设备地址,0:主向从写;1:主向从读。,有效数据,02,02,操 作,主设备往从设备中写,02,操 作,主设备从从设备中读,02,操 作,复合格式,3,任务实施,I2C,主从连接,安装相应显示程序的apk,下载Hex文件,传感器安装,3,任务实施,给蓝牙通信模块上电,此时连接/通讯灯不亮,说明蓝牙通信模块还未广播蓝牙信号。按下功能键持续1.5秒以上,连接/通讯灯快速闪烁,说明蓝牙通信模块正在广播蓝牙信号。,连接/通讯灯,功能键,