1、由浅入深蓝牙40BLE协议栈开发攻略大全本系列教程将结合TI推出的CC254x SoC 系列,讲解从环境的搭建到蓝牙4.0协议栈的开发来深入学习蓝牙4.0的开发过程。教程共分为六部分,本文为第五部分:第五部分知识点:第二十一节 DHT11温湿度传感器第二十二节 蓝牙协议栈之从机通讯第二十三节 蓝牙协议栈主从一体之主机通讯第二十四节 OAD空中升级第二十五节 SBL串口升级有关TI 的CC254x芯片介绍,可点击下面链接查看:主流蓝牙BLE控制芯片详解(1):TI CC2540同系列资料推荐:由浅入深,蓝牙4.0/BLE协议栈开发攻略大全(1)由浅入深,蓝牙4.0/BLE协议栈开发攻略大全(2)
2、由浅入深,蓝牙4.0/BLE协议栈开发攻略大全(3)由浅入深,蓝牙4.0/BLE协议栈开发攻略大全(4)有关本文的工具下载,大家可以到以下这个地址:朱兆祺ForARM第二十一节 DHT11温湿度传感器DHT11简介DHT11数字温湿度传感器是一款含有已校准数字信号输出的温湿度复合传感器,它应用专用的数字模块采集技术和温湿度传感技术,确保产品具有极高的可靠 性和卓越的长期稳定性。传感器包括一个电阻式感湿元件和一个NTC测温元件,并与一个高性能8位单片机相连接。因此该产品具有品质卓越、超快响应、抗干扰 能力强、性价比极高等优点。每个DHT11传感器都在极为精确的湿度校验室中进行校准。校准系数以程序
3、的形式存在OTP内存中,传感器内部在检测型号的处 理过程中要调用这些校准系数。单线制串行接口,使系统集成变得简易快捷。超小的体积、极低的功耗,使其成为给类应用甚至最为苛刻的应用场合的最佳选择。产 品为4针单排引脚封装,连接方便。技术参数供电电压: 3.35.5V DC输 出: 单总线数字信号测量范围: 湿度20-90%RH, 温度050测量精度: 湿度+-5%RH, 温度+-2分 辨 率: 湿度1%RH,温度1互 换 性: 可完全互换 ,长期稳定性: 0 ) / 显示扫描到的设备/ Increment index of current result (with wraparound)simpl
4、eBLEScanIdx+;if ( simpleBLEScanIdx = simpleBLEScanRes )simpleBLEScanIdx = 0;LCD_WRITE_STRING_VALUE( “Device”, simpleBLEScanIdx + 1,10, HAL_LCD_LINE_1 );LCD_WRITE_STRING( bdAddr2Str( simpleBLEDevListsimpleBLEScanIdx.addr ),HAL_LCD_LINE_2 );if ( keys & HAL_KEY_RIGHT ) / 右/ Connection updateif ( simple
5、BLEState = BLE_STATE_CONNECTED ) / 如果连接,则更新连接GAPCentralRole_UpdateLink( simpleBLEConnHandle,DEFAULT_UPDATE_MIN_CONN_INTERVAL,DEFAULT_UPDATE_MAX_CONN_INTERVAL,DEFAULT_UPDATE_SLAVE_LATENCY,DEFAULT_UPDATE_CONN_TIMEOUT );if ( keys & HAL_KEY_CENTER ) / 中间键uint8 addrType;uint8 *peerAddr;/ Connect or disco
6、nnectif ( simpleBLEState = BLE_STATE_IDLE ) / 空闲则连接/ if there is a scan resultif ( simpleBLEScanRes 0 )/ connect to current device in scan resultpeerAddr = simpleBLEDevListsimpleBLEScanIdx.addr;addrType = simpleBLEDevListsimpleBLEScanIdx.addrType;simpleBLEState = BLE_STATE_CONNECTING;GAPCentralRole_
7、EstablishLink( DEFAULT_LINK_HIGH_DUTY_CYCLE,DEFAULT_LINK_WHITE_LIST,addrType, peerAddr );LCD_WRITE_STRING( “Connecting”, HAL_LCD_LINE_1 );LCD_WRITE_STRING( bdAddr2Str( peerAddr ), HAL_LCD_LINE_2 );else if ( simpleBLEState = BLE_STATE_CONNECTING | / 连接则断开连接simpleBLEState = BLE_STATE_CONNECTED )/ disc
8、onnectsimpleBLEState = BLE_STATE_DISCONNECTING;gStatus = GAPCentralRole_TerminateLink( simpleBLEConnHandle );LCD_WRITE_STRING( “Disconnecting”, HAL_LCD_LINE_1 );if ( keys & HAL_KEY_DOWN ) / 下/ Start or cancel RSSI pollingif ( simpleBLEState = BLE_STATE_CONNECTED ) / 连接则读取RSSi的值if ( !simpleBLERssi )s
9、impleBLERssi = TRUE;GAPCentralRole_StartRssi( simpleBLEConnHandle, DEFAULT_RSSI_PERIOD );elsesimpleBLERssi = FALSE;GAPCentralRole_CancelRssi( simpleBLEConnHandle );LCD_WRITE_STRING( “RSSI Cancelled”, HAL_LCD_LINE_1 );因为从机一直处于广播状态,所以秩序将上一节中的从机程序烧录进开发板即可,然后将主机程序烧录到另外一快开发板,通过五向按键来实现和从机的连接和读写功能。(1) 上电提示
10、从机上电提示:主机上电提示:(2)根据主机的按键功能,我们按“UP”键,开始搜索周边设备。搜索完成后,可以看到,扫描到了一个设备。(3)接着我们查看扫描到的设备地址,按左键。可以看到扫描到的设备地址为0x7C669D9F638A。这个地址正是我们的从机地址。(4)按中间键连接从机,可以看到主机提示连接成功,从机也提示连接成功。(5)接着我们开始读取从机的RSSI值,按下键。(6)再次按下键,取消RSSI值的读取。(7)对从机的CHAR1进行读写,再次按上键读取到CHAR1的值为1。(8)接着按上键,对CHAR1写入0,同时看到从机提示CHAR1的值被修改为0。主机写入成功:从机提示CHAR1被改变:上电自动连接上一节中我们通过五向按键实现了主机连接从机的功能,这一节中们来实现主机上电后自动搜索连接从机。要实现连接,从机必须处于广播状态,剩下的工作全部由主机完成,扫描、发起连接。主机的状态也有回调函数,主机启动后,第一个状态是初始化,所以我们在初始化完成时开始扫描,这样开机后主机就会开始扫描周边设备,接下来我们在扫描完成后对扫描到的设备发起连接。将工程编译下载后通过串口助手观察主机
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1