目录

  • 前言
  • 参考链接
  • 常用的蓝牙模块有哪几种?
  • 如何设置蓝牙模块?
  • AT指令集
  • BT-04
  • HC-06
  • HC-05
  • 蓝牙主从配对工作
  • 手机与电脑端调试方法


前言

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

参考链接

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

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

android 蓝牙发送Modbus_蓝牙




  首先是使用方面。一般来说,这种蓝牙模块因为支持透传,一般的操作都是将其与单片机的串口相连,然后蓝牙连接到手机或者电脑,这样单片机串口发送的消息就能通过蓝牙传输到连接的手机或者电脑,而手机发送的数据也能通过蓝牙传输到单片机的串口,而用户不需要考虑这个数据内部的转换等问题,大大方便了使用。

  这种蓝牙模块支持多种运行模式:从设备模式、主设备模式、广播模式、Mesh组网模式【参考链接】,本文只讨论两种——从设备模式 和 主设备模式。

  而以上讨论的各种型号的蓝牙模块的一个重要区别在于HC-06和BT04只支持从设备模式,而HC-05支持从设备模式,也支持主设备模式。

  也正是因为这一点,也导致了它们的第二个重要区别:它们的AT指不同。

  那么,如何区分这些型号呢?这一点目前我还没有一个非常合理非常简便的方法,也只能看它默认的名称是什么,以及HC-05上面有一个小按钮。

如何设置蓝牙模块?

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

USB转TTL

蓝牙模块

RX

TX

TX

RX

5V

5V

GND

GND

  如果没有USB转TTL模块,也可以使用单片机通过串口给蓝牙模块发送数据,注意此时蓝牙模块不能处于连接状态,连线和上表一样。

  虽然连接蓝牙模块的设备不同,但其控制指令是一样,都是AT指令,下面将总结一下常用的蓝牙模块的AT指令。

AT指令集

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

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

BT-04

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

android 蓝牙发送Modbus_android 蓝牙发送Modbus_02


android 蓝牙发送Modbus_蓝牙_03


android 蓝牙发送Modbus_android 蓝牙发送Modbus_04


android 蓝牙发送Modbus_android 蓝牙发送Modbus_05


android 蓝牙发送Modbus_单片机_06


android 蓝牙发送Modbus_嵌入式_07


android 蓝牙发送Modbus_android 蓝牙发送Modbus_08


android 蓝牙发送Modbus_嵌入式_09


android 蓝牙发送Modbus_串口_10


android 蓝牙发送Modbus_串口_11


android 蓝牙发送Modbus_蓝牙_12


android 蓝牙发送Modbus_单片机_13

HC-06

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

  • 参考链接1
  • 参考链接2
  • android 蓝牙发送Modbus_蓝牙_14


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

HC-05

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

android 蓝牙发送Modbus_嵌入式_15

蓝牙主从配对工作

  上文提到,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的格式,如上所示。

参考链接

  • 完成以上操作,则两个蓝牙模块会自动连接,并在从设备上显示:
  • android 蓝牙发送Modbus_串口_16

  • 如果断开连接(主设备设置为从设备),则会在从设备收到:
  • android 蓝牙发送Modbus_嵌入式_17

手机与电脑端调试方法

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