基于CC2530的蓝牙模块实验
实验内容
- 了解蓝牙模块的基本原理
- 通过简单的编程实现手机连接蓝牙模块,实现数据收发。
实验环境
实验所需硬件
序号 | 名称 | 数量 | 备注 |
---|---|---|---|
1 | 电脑 | 1台 | 系统Windows7及以上 |
2 | CC2530底座模块 | 1个 | · |
3 | 蓝牙模块 | 1个 | · |
4 | CC Debugger 仿真器和连接线 | 1套 | · |
5 | USB线 | 1根 | · |
6 | 蓝牙模块实验代码 | 1份 | · |
实验所需软件
- IAR 驱动安装步骤
- CC Debugger 驱动安装步骤
- Git 软件下载(可选)
CC2530底座:HIVE ZigBee Pro(简称CC2530底座)是一种基于CC2530F256芯片的蜂巢底座。
CC Debugger 仿真器和连接线
USB线
实验原理
蓝牙是一种短距的无线通讯技术,可实现固定设备、移动设备之间的数据交换。一般将蓝牙3.0之前的BR/EDR蓝牙称为传统蓝牙,而将蓝牙4.0规范下的LE蓝牙称为低功耗蓝牙。
蓝牙4.0标准包括传统蓝牙模块部分和低功耗蓝牙模块部分,是一个双模标准。低功耗蓝牙也是建立在传统蓝牙基础之上发展起来的,并区别于传统模块,最大的特点就是成本和功耗降低,应用于实时性要求比较高。
蓝牙和蓝牙BLE对比:
BLE(Bluetooh Low Energy)蓝牙低能耗技术是短距离、低成本、可互操作性的无线技术,它利用许多智能手段最大限度地降低功耗。 BLE技术的工作模式非常适合用于从微型无线传感器(每半秒交换一次数据)或使用完全异步通信的遥控器等其它外设传送数据。这些设备发送的数据量非常少(通常几个字节),而且发送次数也很少(例如每秒几次到每分钟一次,甚至更少)。
BLE协议栈的结构和配置:
- 协议有两个部分组成:Controller和Host。
- Profiles和应用总是基于GAP和GATT之上。
- 在单芯片方案中,Controller和Host,profiles,和应用层都在同一片芯片中。
- 在网络控制器模式中,Host和Controller是在一起运行的,但是应用和profiles在另外一个器件上,比如PC或者其他微控制器,可以通过UART,USB进行操作。
- 在双芯片模式中,Controller运行在一个控制器,而应用层,profiles和Host是运行在另外一个控制器上。
BLE设备连接状态流程图
低功耗蓝牙体系结构:
BLE蓝牙模块主要应用领域:
- 移动扩展设备
- 汽车电子设备
- 健康医疗用品:心跳带、血压计等
- 定位应用:室内定位、井下定位等
- 近距离数据采集:无线抄表、无线遥测等
- 数据传输:智能家居室内控制、蓝牙调光、打印机等
实验步骤
① 将蓝牙模块安装到CC2530底座上,如下图所示:
② 轻按CCDebugger复位按键,指示灯变绿,表示连接正常。如下图:
③ 访问github,进入github界面后点击Code,Clone HTTPS安全链接,如下图所示:
④ 打开电脑终端,进入工作目录workspace (workspace 为工程文件夹所在目录):
$ cd workspace
⑤ 运行clone
命令:
$ git clone https://github.com/aiotcom/eps.git
下载目录至指定文件夹下。
如果提示“command not found”表示电脑没有安装Git,请至Git官网下载。
如果电脑没有安装 Git 软件,也可以进入Github,点击 Code
-> DownLoad ZIP
下载所有工程代码。如下图所示:
如果电脑没有公网,可以进:D盘\实验教程与代码选择相应的代码。
⑥ 打开 IAR Embedded Workbench
工程软件,点击工具栏: File
-> Open
-> Workspace
,选择工程文件:基于CC2530的模块实验\10.蓝牙模块\蓝牙模块程序\BLE.eww
并打开。
⑦ 点击Make
按钮,重新编译文件,显示没有错误。
⑧ 点击Download and Debug
按钮,将程序下载到模块中。
⑨ 点击X
退出仿真模式。
⑩ 移除CC Debugger
仿真器,采用USB线供电。
⑪ 手机上安装“蓝牙调试器.apk”(只支持安卓手机),到手机应用商中店,搜索“蓝牙调试器”,如下图:
⑫ 打开蓝牙调试器,找到BLE开头的蓝牙设备,如下图所示:
⑬ 点击设置按照下图选择最每个选择框最下面的选项,如图所示:
⑭ 出现红色加号表明连接成功,进入对话模式,如下图:
⑮ 输入在聊天框中输入123456,则会返回相同的数据信息,如下图所示。
代码讲解
① 程序目录结构,源代码文件如下图:
② main.c代码对蓝牙模块串口、蓝牙模块初始化,完成后,等待蓝牙设备被连接,连接后从串口接收数据,并返回接收到的数据。当设备被连接后,串口返回“Connected”,串口只要接收到这个字符器表明。
void main(void)
{
Hal_Init_32M();//初始化32M时钟
Init_Uart0();//初始化串口0,连接蓝牙模块,接收数据保存在USART0_RX_BUF
BLE_Init();//初始化蓝牙为从机模式
/*设备被连接后,返回“Connected”*/
while(!strstr((const char*)USART0_RX_BUF,(const char*)"Connected"));
USART0_RX_STA = 0;//清空串口接收计数
while(1)
{
if(USART0_RX_STA)//接收到数据
{
delay_ms(50);//延时50ms等待数据接收完成
UR0SendString(USART0_RX_BUF);//发送接收到的数据
USART0_RX_STA = 0;//清空串口接收计数
memset(USART0_RX_BUF,0,USART0_RX_SIZE);//清空数组
}
}
}
常见问题
-
弹出警告窗口,不能下载程序。
- 请确认CCDebugger驱动否安装。
- 轻按CCDebugger仿真器的按键,指示灯不是绿色连接有问题。
- CCDebugger仿真器是否正常接入到底座,参考实验步骤第一步。
-
下载代码后程序没观察到实验现象。
- 请重新上电,或者按下底座上的复位按键。
- 模块没有安装稳妥。
-
手机找不支蓝牙模块信号。
- 确认模块电源灯是亮起,模块是否安装稳妥。