【嵌入式模块】蓝牙模块使用总结

前言

  作为最为常用的无线通信模块,蓝牙可以说是一些小型项目(比如智能小车)无线通信模块的首选了,之前研究了好几个蓝牙,碰了很多壁,写一篇博客记录一下!

参考链接

常用的蓝牙模块有哪几种?

  很多人一提到蓝牙就会想到一个长方形的扁平的带有四个或六个引脚的小型长方形板子,如下图所示。以为都是一样的蓝牙。。。但其实它们是分型号的。从我目前接触过的蓝牙主要有HC-05HC-06BT-04等型号的蓝牙,它们在使用、控制等方面存在一些区别。
在这里插入图片描述


  首先是使用方面。一般来说,这种蓝牙模块因为支持透传,一般的操作都是将其与单片机的串口相连,然后蓝牙连接到手机或者电脑,这样单片机串口发送的消息就能通过蓝牙传输到连接的手机或者电脑,而手机发送的数据也能通过蓝牙传输到单片机的串口,而用户不需要考虑这个数据内部的转换等问题,大大方便了使用。
  这种蓝牙模块支持多种运行模式:从设备模式、主设备模式、广播模式、Mesh组网模式参考链接】,本文只讨论两种——从设备模式主设备模式
  而以上讨论的各种型号的蓝牙模块的一个重要区别在于HC-06BT04只支持从设备模式,而HC-05支持从设备模式,也支持主设备模式。
  也正是因为这一点,也导致了它们的第二个重要区别:它们的AT指令不同。
  那么,如何区分这些型号呢?这一点目前我还没有一个非常合理非常简便的方法,也只能看它默认的名称是什么,以及HC-05上面有一个小按钮。

如何设置蓝牙模块?

  从上面的讲述来看,蓝牙模块可以设置为主设备模式和从设备模式,此外蓝牙模块默认的串口传输波特率也不一定符合我们的需要,这个时候就需要对这个模块进行重新设置,而这个设置的过程就是对蓝牙模块发送AT指令
  操作时,我们可以用一个USB转TTL的模块来连接蓝牙模块,一般只需要四根线即可:

USB转TTL蓝牙模块
RXTX
TXRX
5V5V
GNDGND
  如果没有USB转TTL模块,也可以使用单片机通过串口给蓝牙模块发送数据,注意此时蓝牙模块不能处于连接状态,连线和上表一样。
  虽然连接蓝牙模块的设备不同,但其控制指令是一样,都是AT指令,下面将总结一下常用的蓝牙模块的AT指令。

AT指令集

  首先需要明确一点,那就是不同型号的蓝牙的AT指令是不完全一样的【一定要参考手册!】,而且AT指令只有蓝牙在AT状态下才能有效。
  对于这些AT指令,我简单粗暴地将它们分为两类,即查询类指令控制类指令。其中,两类指令中又分为很多种操作,包括设置波特率,蓝牙名称等。需要注意的是:某些型号的蓝牙模块在某些操作上只有操作指令,没有查询指令!

注意:部分蓝牙模块AT指令之后要加回车(\r\n),有些不用,且AT指令不分大小写。

BT-04

  参考链接
  BT-04蓝牙模块是一旦上电即进入AT模式,不连接的状态下。AT指令需要换行。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

HC-06

  HC-06也和BT-04一样,都是一上电时且不连接设备时为AT模式。HC-06只能工作在从设备模式下

  HC-06的AT指令不需要回车换行,且虽然HC-06具有设置角色的AT指令,但HC-06不能作为主设备运行【参考链接1】。

HC-05

  HC-05直接连接USB转TTL是无法进入AT模式的,需要先按住按钮再上电,这样就能进入到AT模式,此时灯为慢闪状态;而如果直接上电,指示灯为快闪状态,这种状态为等待连接状态,AT指令无效。而且HC-05进入AT模式默认的波特率为38400

请添加图片描述

蓝牙主从配对工作

  上文提到,HC-05为主从一体的蓝牙模块,既可以工作在主设备模式,也可以工作在从设备模式,如果需要将两个蓝牙模块连接起来时,则可以使用两个HC-05,一主一从;也可以用一个HC-05(主)加上一个HC-06或者BT-04(从)。两种方案大同小异。

  • 首先将两个蓝牙通过USB转TTL连接到电脑上,进入AT模式。【其中HC-05要按住按键再上电】

  • 然后打开两个串口调试助手,设置好串口【HC-05的AT模式下波特率默认为38400,BT-04和HC-06为9600】,并输入“AT”或者“AT\r\n”进行测试。并分别输入“AT+ORGL\r\n”和“AT+DEFAULT\r\n”进行复位。【HC-05会自动退出AT模式,需要重插一遍】

  • 【设置密码】 初始化完毕后,将两个蓝牙的密码设置为一样的。(默认为1234)

  • 【设置波特率】 将两个蓝牙的波特率设置为一样的,默认状态都为9600【需要注意工作波特率和AT模式下的波特率是不一样的!设置完波特率后可能要重启才能生效】

  • 【设置角色】 如果是两个HC-05相互连接,那么一个要设置为主设备,一个设置为从设备,如果是一个HC-05,一个BT-04或HC-06,则只需要将HC-05设置为主设备。(默认为从设备)即可

  • 【设置连接模式为单地址并修改绑定地址】 对主设备进行设置。AT+CMODE=0\r\n,将连接模式设置为单地址模式,这样一上电蓝牙模块就会自动连接该地址对应的设备;AT+BIND=1234,56,abcdef\r\n,设定自动连接的地址。这个地址是从设备使用AT+ADDR指令得到的地址,一般是12位16进制的格式,比如12:34:56:ab:cd:ef,但在绑定地址时,要改成4,2,6的格式,如上所示。

    参考链接

  • 完成以上操作,则两个蓝牙模块会自动连接,并在从设备上显示:
    在这里插入图片描述

  • 如果断开连接(主设备设置为从设备),则会在从设备收到:
    在这里插入图片描述

手机与电脑端调试方法

  在很多智能小车的项目中,往往会有用手机通过蓝牙模块操作小车的环节,这是通过在手机上下载支持蓝牙传输的APP【蓝牙串口,应用商店即可下载】,然后在APP中进行数据传输,当然,电脑上也有类似的APP,也可以在微软商店中下载到,但是要付费,使用教程参考下面两个链接。
  参考链接1
  参考链接2
  参考链接3

步骤: 1. 两个蓝牙模块必须一个作为主机,另一个作为从机才能建立连接(上电后,从机一直处于接受状态,等待被连接。而主机则主动发出信号,寻找目标从机,前提是该目标从机的mac地址事先被写入到主机的flash芯片中储存) 2. 蓝牙模块上电前一直按住key按键不放,上电后松开,此时LED灯处于慢闪状态(每秒闪1次),提示已经进入AT指令响应状态,可以进行接收AT指令控制 3. PC端打开安可信串口助手(带AT指令),打开相应的串口,发送AT+ROLE?\n查询该模块的主从角色,如果为0,则为从机,如果为1则为主机。本例中,此模块(图中左边的HC-05模块)设为主机,则发送AT+ROLE=1\n,设为主机,成功返回OK 4. 发送AT+ADDR?\n查询此模块的mac地址,本例中为98d3:33:80ebdf,记下来稍后为从机的地址绑定用。同样的方法将另一个模块(图中右边的HC-05模块)设置为从机(AT+ROLE=0\n),并且查询到mac地址为98d3:36:aac2 5. 向主机串口中发送AT+BIND=98d3,36,aac2\n绑定从机的mac地址,成功则返回OK。发送AT+CMODE=0\n将主机设为指定蓝牙地址连接模式(即只允许主机向绑定好mac地址的蓝牙从机设备发起连接) 6. 同样地,向从机串口发送AT+BIND=983d,33,80ebdf\n绑定主机的mac地址,成功则返回OK。发送AT+CMODE=0\n将从机也设为指定蓝牙地址连接模式(即只允许从机接受绑定好mac地址的蓝牙主机设备发起的连接) 7. 至此,主从机均设置完毕。主从两模块松开key键重新上电,LED都快闪(每秒闪2次),表明均处于等待配对状态,随后大约几秒钟后,LED闪烁频率发生变化(不确定),表明已经侦测到目标设备,正在建立连接。随后大约一秒钟,很快 LED变成慢双闪状态(每2秒闪一次,每次连闪2下),提示已经配对成功,可以通过蓝牙协议传输数据了 8. 此时,在串口助手中发送一串字符,如果另一个蓝牙模块的串口助手里收到了同样的字符,且回送的字符,对方亦能收到,则通信成功。
STM32是一款广泛应用于嵌入式系统开发的微控制器,它具有强大的处理能力和丰富的外设资源。要驱动蓝牙模块实现手机收发功能,可以按照以下步骤进行: 1. 硬件连接:将蓝牙模块与STM32微控制器连接,通常通过串口进行通信。将蓝牙模块的TX引脚连接到STM32的RX引脚,将蓝牙模块的RX引脚连接到STM32的TX引脚,同时将它们的地线连接在一起。 2. 引入相关库文件:在开发环境中引入蓝牙通信相关的库文件,以便在编程中使用蓝牙模块的相关函数和变量。 3. 初始化蓝牙模块:通过调用库函数,设置蓝牙模块的波特率、工作模式等参数,并使其处于可用状态。 4. 与手机进行通信:使用STM32的串口通信功能,通过发送和接收数据的指令与手机进行通信。可以使用蓝牙模块提供的AT指令集来发送和接收数据,从而实现与手机的数据收发。 5. 处理手机数据:在STM32的程序中,可以通过接收到的数据类型和内容进行相应的处理。例如,如果接收到的数据是传感器数据,可以进行解析和存储;如果接收到的数据是命令或控制指令,可以进行相应的操作和反馈。 6. 错误处理与异常情况处理:在实际应用中,可能会遇到蓝牙模块无法正常连接、数据传输失败等问题。对于这些异常情况,需要通过错误处理机制进行处理,并进行相应的提示或修复操作。 通过以上步骤,就可以实现STM32对蓝牙模块的驱动和手机收发功能。具体的实现细节和代码编写需根据不同的STM32型号和蓝牙模块进行适配。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

记录无知岁月

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值