天线|RF射频|微波|雷达技术
直播中

王尚岱

8年用户 1508经验值
擅长:电源/新能源
私信 关注
[经验]

无线通信之HC05/HC06经典蓝牙BT模块介绍

  蓝牙通信是支持手机、电脑、平板、无线耳机、无线音箱等常用电子设备的短距离无线通信技术,一般通信范围在10米以内。按照常用分法,一般把蓝牙模块分成经典蓝牙模块(BT)和低功耗蓝牙模块(BLE)。
  BT和BLE的区别
  这个分法源自2012年推出的蓝牙4.0标准。通常把蓝牙通信协议在4.0以下的模块,用于大数据量传输(比如流媒体视频或者音乐传输)的模块归为经典蓝牙模块(BT);而低功耗蓝牙模块(BLE)不像BT那样需要复杂匹配步骤,也不需要设备之间一直保持长连接,正如其名可以达到非常低的功耗。两者各有优点和缺点,市面上的蓝牙模块有单经典蓝牙模块,也有单低功耗蓝牙模块,还有同时支持两者的双模模块。
  HC05和HC06模块
  本篇我们先来学习一下经典蓝牙BT模块。市面上常用的Arduino传统蓝牙模块非HC05和HC06模块所属。
  HC05和HC06模块在硬件上并无太大区别,都是基于CSR(Cambridge Silicon Radio)的蓝牙芯片,但内部烧录的固件不一样,这导致它们主要有以下区别:
  AT命令集不一样,HC05命令集丰富些,HC06则精简很多。
  AT命令格式不一样,比如HC05命令需要回车换行,而HC06不用;HC06命令字符要求大写,而HC05不区分大小写等。
  HC05和HC06可以混用,但有些厂家的HC06出厂不能设置主从模式,HC06只能作为从机使用。
1.jpg
  一对蓝牙主从模块配对后,你就可以把它们之间的无线通信当作普通的有线串口使用,无需修改程序,省去布线工作,使用非常灵活。当然单一蓝牙模块也可以和带有蓝牙功能的电脑、平板或者手机配对使用,而且使用方法也和串口一样。
  如图为HC05的引脚图,HC06模块的引脚也基本一致:
1.jpg
  在购买HC05和HC06模块时,有一点注意事项:VCC一般能接受3.2V~6V的供电电压,平时使用Arduino的5V输出供电没有什么问题。但TXD和RXD的工作电平需要额外注意,因为有些厂商提供的HC05/06模块支持3.2V~6V,而有的只支持3.3V。
  这里一个潜在的问题是:3.3V电平的RXD和TXD和5V的Arduino引脚通信时,存在损坏蓝牙模块的风险,为了安全起见需要做「电平转换」。小编当然推荐直接购买支持3.2V~6V的模块,不然需要在RXD端加1KΩ限流电阻,或者采用电阻分压接法。
  了解了蓝牙模块的引脚功能,我们还需要了解一下蓝牙模块的工作模式。蓝牙串口通讯模块具有两种工作模式:命令响应工作模式和自动连接工作模式。
  当模块处于自动连接工作模式时,将自动根据事先设定的方式连接的数据传输,自动连接工作模式下又有三种模式可选:
  主模式(Master):该模块可以主动搜索并连接其它蓝牙模块并接收发送数据。
  从模式(Slave):只能被搜索被其它蓝牙模块连接进行接收发送数据。
  回环(Loopback):蓝牙模块就是将接收的数据原样返回给远程的主设备。当模块处于命令响应工作模式时才能执行AT命令,用户可向模块发送各种AT 指令,为模块设定控制参数或发布控制命令。
  利用TTL转串口下载器进行AT设置
  在使用模块前我们需要使用串口AT命令对模块进行设置。简单地来说,就是通过串口向模块发送命令,可以读取/修改模块的参数。下面就HC05模块,我们来实践一下如何通过AT命令进行设置。准备以下材料:
  HC05模块
  TTL转USB串口下载器
  杜邦线若干
  如何进入命令工作模式呢?HC05模块需要将KEY(EN)引脚拉高再供电就自动进入AT命令工作模式,而HC05模块上的KEY按键就是方便用户所设置的。HC05模块是否进入AT模式也可以通过板载的LED闪烁判断,在未配对连接时,HC05的LED是快闪,若进入AT模式,快闪变为慢闪 (两秒钟闪一次)。HC06模块与HC05模块不同,在未配对连接时,都处于命令响应工作模式中,换句话说只要模块上电,自动进入AT模式。
  要使用TTL转USB串口下载器连接电脑对HC05模块进行AT命令设置。如下图连接好HC05模块,按住HC05模块上的按钮,再把USB线接上电脑。
  当确认HC05模块进入AT命令工作模式后,我们打开电脑上的串口助手工具,使用通的串口调试工具也可以。
1.jpg
  选择正确的出厂波特率(具体咨询厂家,HC05模块出厂的通信波特率一般为38400bps,而HC06模块出厂的通信波特率一般为9600bps。)连接模块成功,我们就可以进行AT命令设置了。
  串口助手工具提供了一些快捷命令按键,当然我们也可以完全根据模块命令集说明发送特定指令,比如:
  AT+NAME=master 蓝牙主机名称为masterAT+ROLE=1 蓝牙模式为主模式,0为从模式AT+CMODE=1 蓝牙连接模式为任意地址连接模式AT+PSWD=1234 蓝牙配对密码为1234AT+UART=9600,0,0 蓝牙通信串口波特率为9600,停止位1位,无校验位AT+RMAAD 清空配对列表
1.jpg
2.jpg
  其实我们主要设置的参数就是蓝牙模块的主从模式、通信的波特率、蓝牙的名称和密码。如果系统中用到一对HC05模块,那么需要一个作为主机模式(Master),一个作为从机模式(Slave);如果是和电脑、手机或者平板配合使用,那么HC05模块可以设置为从机模式(Slave)。
  利用Arduino进行AT设置
  上述方法是通过TTL转串口下载器配合电脑串口对HC05/HC06模块进行AT命令设置,当你手上实在没有TTL转串口下载器, 其实借助Arduino 也可以进行AT命令设置。大致的思路就是Arduino作为透传设备,将串口监视器输入的命令直接传给蓝牙模块,将蓝牙模块返回的数据直接打印出来,起到“中介”作用。
  Arduino IDE烧录以下代码:
1.jpg
  这样,我们在电脑上打开Arduino IDE的串口监视器就可以进行AT命令设置了。这里要注意的是:因为HC05模块和HC06模块的命令格式不同,如果HC05模块,串口监视器换行选项要选择“NL和CR(Both NL and CR)”;如果是HC06模块,换行选项要选择“没有行结尾(No line ending)”。
1.jpg
  使用场景1: 主从Arduino蓝牙通信
  配置好蓝牙模块以后,我们就可以正常使用了。我们先实践一下主从Arduino互相通信的场景,即一个HC05/HC06模块设置为主机模式(Master)和一块Arduino相连,另一个HC05/HC06模块设置为从机模式(Slave)和另一块Arduino相连,它们之间相互传输数据。
1.jpg
  如图所示,我们在主机端添加一个按钮,从机端添加LED,从主机发送命令控制从机端LED的亮和灭。
  主机端代码:
1.jpg
  从机端代码:
1.jpg
  如此,我们就实现了蓝牙远程控制LED的亮灭。
  使用场景2: 配合手机/电脑使用
  另外一个常见的使用场景就是带有蓝牙功能的手机、电脑或者平板作为主机控制端,发送命令控制Arduino执行命令。下面我们也简化实践一下,利用手机,发送命令给HC05/HC06从机模块,进而控制Arduino实现LED的亮灭。
1.jpg
  从机端我们沿用场景1的威廉希尔官方网站 连接,代码修改如下:
1.jpg
2.jpg
  作为主机模式的手机端,我们需要下载一个蓝牙串口助手工具,安卓手机可以下载“蓝牙串口”或者“蓝牙调试器”,苹果手机可以在应用商城搜索“蓝牙串口助手”。下载APP后,先配对蓝牙模块,成功连上后,我们在APP里向蓝牙发送A就可以点亮LED,发送a就可以熄灭LED。
  总结
  至此,我们通过HC05/HC06模块的具体使用了解了如何使用经典蓝牙BT模块让Arduino与Arduino、或者Arduino与手机实现无线蓝牙通信。传统蓝牙模块现在主要还是用于大数据的音视频传输场景,虽然数据量大,但相对地设备功耗也大,配对复杂,这些缺点也直接催生了低功耗蓝牙协议(BLE)的诞生,更适合于数据量少、功耗小的嵌入式设备。



原作者:小B 爱上Arduino

更多回帖

发帖
×
20
完善资料,
赚取积分