前言
后面可能需要用到蓝牙远程控制,所以提前了解了一下。主要是用买来的蓝牙模块HC-05,主要包括一个蓝牙芯片CSR BC417(该公司是剑桥的一个公司,现已被高通收购)和一个FLASH芯片,调试一下两个HC-05之间基本的通讯以及与手机蓝牙的通讯。
一、蓝牙技术介绍
蓝牙(Bluetooth)是一种短距离的无线通讯技术,最初是研究在移动电话和其它配件间进行低功耗、低成本无线通信连接的方法。发明者希望为设备间的通讯创造一组统一的标准化协议,以解决用户间互不兼容的移动电子设备的互连互通,这些设备之间省去了传统的电线。透过芯片上的无线接收器,配有蓝牙技术的电子设备能够在短距离内彼此相通,传输速度可以达到每秒钟1Mbps。和当时流行的红外线技术相比,蓝牙有着更高的传输速度,而且不需要像红外线那样进行接口对接口的连接,所有蓝牙设备基本上只要在有效通讯范围内使用,就可以进行随时连接。
蓝牙的创始人是瑞典爱立信公司,爱立信早在1994年就已进行研发,1997年,与其他设备生产商联系,并激发了他们对该项技术的浓厚兴趣,1998年2月,5个跨国大公司,包括爱立信、诺基亚、IBM、东芝及Intel组成了一个特殊兴趣小组SIG(Special Interest Group),他们共同的目标是建立一个全球性的小范围无线通信技术,即现在的蓝牙技术,目前SIG已经发展成为一个会员达4000多家,由电信、计算机、汽车制造、工业自动化和网络等行业的领先厂商组成。
当蓝牙1.0版本推出以后,并未立即受到广泛的应用,除了当时对应蓝牙功能的电子设备种类少,蓝牙装置也十分昂贵。2001年的1.1版正式列入IEEE标准,蓝牙1.1即为IEEE 802.15.1。几年之后,采用蓝牙技术的电子装置如雨后春笋般增加,售价也大幅回落。为了扩宽蓝牙的应用层面和传输速度,SIG先后推出了1.2版、2.0版,以及其它附加新功能,例如增强型速率EDR(Enhanced Data Rate),配合2.0的技术标准,将最大传输速度提高到3Mbps;音频传输模型协定A2DP(Advanced Audio Distribution Profile)是一个控音轨分配技术,提高声音的清晰度,主要应用于立体声耳机;还有音频/视频远程控制配置文件AVRCP(A/V Remote Control Profile)等等。蓝牙3.0在适配层协议应用了Wi-Fi技术,即可在需要的时候调用802.11 Wi-Fi用于实现高速数据传输,数据传输率提高到了大约24Mbps。而最新推出的蓝牙4.0技术在电池时间、节能和设备种类上,以及有效传输距离上均有所提升。
二、模块介绍
2.1 概述
- HC-05 蓝牙串口通信模块,是基于 Bluetooth Specification V2.0 带 EDR 蓝牙协议的数传模块。无线工作频段为 2.4GHz ISM,调制方式是 GFSK。模块最大发射功率为 4dBm,接收灵敏度-85dBm,板载 PCB 天线,可以实现 10 米距离通信。
模块采用邮票孔封装方式,模块大小 27mm×13mm×2mm,方便客户嵌入应用系统之内,自带 LED 灯,可直观判断蓝牙的连接状态。
模块采用 CSR 的 BC417 芯片,支持 AT 指令,用户可根据需要更改角色(主、从模式)以及串口波特率、设备名称等参数,使用灵活。(在www.hc01.com下载到手册)
2.2 工作模式
具有两种工作模式:命令响应工作模式(AT模式)和自动连接工作模式
- 命令工作模式:能执行下述所有 AT 命令,用户可向模块发送各种 AT 指令,为模块设定控制
参数或发布控制命令。也就是在该模式下可以设置波特率、密码、查询蓝牙地址等等。需要在断电时按住按钮,上电之后松开。模块上的绿灯会每隔2s闪一次,并且在串口助手中输入AT,回复OK,表示进入AT模式;
- 自动连接工作模式:当模块处于自动连接工作模式时,将自动根据事先设定的方式连接的数据传输;可分为主(Master)、从(Slave)和回环(Loopback)三种工作角色;
- 主模式:该模块可以主动搜索并连接其它蓝牙模块并接收发送数据;
- 从模式:只能被搜索被其它蓝牙模块连接进行接收发送数据;
- 回环:蓝牙模块就是将接收的数据原样返回给远程的主设备;
2.3 常用指令说明
指令 |
响应 |
参数 |
AT |
OK |
无 |
AT+ROLE=< param > |
OK |
0-从机;1-主机 |
AT+ROLE? |
+ROLE:< param> OK |
查询模式 |
AT+CMODE=< param > |
OK |
0-指定蓝牙地址连接模式;1-任意蓝牙地址连接模式;2-回环角色 |
AT+BIND=< param > |
OK |
param:绑定蓝牙地址,查询的地址中间是:,在绑定时修改为, |
AT+ADDR? |
+ADDR:< Param > OK |
param:模块蓝牙地址 |
AT+PSWD=< param > |
OK |
param:配对码 |
AT+PSWD=< param1 >,< param2 >,< param3 > |
OK |
param1:波特率;param2:停止位;param3:校验位; |
三、功能实现
使用三种方式测试功能:HC-05+USB——HC-05+USB;手机——HC-05+单片机;HC-05+USB——手机
3.1 HC-05+USB——HC-05+USB
该方式是通过USB-TTL模块,将两个蓝牙分别接入电脑的USB接口,在串口助手上进行测试
3.1.1 硬件连接
如下图所示,通过一个USB-TTL的模块,与蓝牙模块连接之后插入PC的USB接口,注意RX——TX;
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200108181545993.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MTc5NjA1Mg==,size_16,color_FFFFFF,t_70)
3.1.2 参数配置
-
进入命令响应模式(AT模式)
-
设置主从模式(发送:AT+ROLE=1/0)
-
查找从机物理地址并连接
-
设置匹配码
-
发送数据
3.2 手机——HC-05+单片机
通过手机的蓝牙发送指令给连接到单片机的蓝牙模块,单片机做处理器,根据接收到的数据做不同的命令。
- 安卓手机需下载蓝牙助手,开始使用的是3.3这种的官方APP,但是不能发送16进制的数据,只能发送图形变量,例如当我发送1的时候,在串口助手16进制中显示为31。
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200113155649902.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MTc5NjA1Mg==,size_16,color_FFFFFF,t_70)
因此在应用市场搜索了“蓝牙串口”这个APP,支持16进制发送,并经过测试可以work。
手机蓝牙连接参考3.3,当可以正常连接后,只需要识别串口接收到的数据,然后单片机对数据做出命令就可以了,接收数据的函数为:
uint16_t USART_ReceiveData(USART_TypeDef* USARTx);
需要注意的地方就是波特率需要匹配。
3.3 HC-05+USB——手机
3.3.1 环境
- 蓝牙模块还是不变,手机因为智能用安卓手机,所以找了公司的一个小米4c手机,还需要下载官方的一个APP,安装包在官网可以下载。
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200108185814372.png)
直接通过QQ发送到手机上,然后点开就自动安装了。
- 在软件界面搜索蓝牙模块,默认名字是HC-05,可以在命令模式下更改名字。需要注意的是,CMODE需要是1,第一次连接的实话同样需要匹配码。搜索到之后连接就可以了,连接上之后可以观察到模块上的灯变成每隔2s快速闪两次。因为我之前连接过了,所以没有输入匹配码的步骤。
- 大功告成,接下来就可以正常发送数据了。