HC05采用的是AT指令进行配置, 采用串口通信进行数据传输。

指令集文档可以任意在互联网中查找到。

如何完成手机蓝牙和模块通信

电源是5V,同时采用CL/LF

连接之后,先通过

AT+ROLE=0

将其设置为从模式(slave),即可匹配(1234)

注意

  1. HC05,VCC接入3.3V可能没有反应,应连到5V
  2. 模块和电源相连时刻,有两种方法进入AT指令状态:
    1. 提前一直按下HC-05上的按键,直到其灯闪烁为缓慢亮起,即可松开
    2. 将EN引脚置高(3.3V即可),但需要注意EN为高电平是HC05不能正常工作,只有将EN调为低电平,HC05恢复
  3. 波特率需要一致,建议统一38400
  4. 模块所有AT指令需要加上换行符号否则无效(即选择CR/LF),且尽量大写

https://combofish.github.io/2020/02/08/how-to-use-hc-05-bluetooth-module.html

#include <SoftwareSerial.h>

// Pin3为RX,接HC05的TXD
// Pin2为TX,接HC05的RXD
SoftwareSerial BT(10, 11);
char val;
int ledPin=13;

void setup() {
  Serial.begin(38400);
  Serial.println("BT is ready!");
  // HC-05默认,38400
  BT.begin(38400);
  pinMode(ledPin, OUTPUT);
  digitalWrite(ledPin, HIGH);
  delay(500);
  digitalWrite(ledPin, LOW);
}

void loop() {
  if (Serial.available()) {
    val = Serial.read();
    BT.print(val);
  }
  if (BT.available()) {
    val = BT.read();
    Serial.print(val);

    if (val == '1')
      {
    // 返回到手机调试程序上
    // 此时的蓝牙状态应该正常模式,而不是调试模式
    Serial.write("Serial--ledPin--high\n");
    digitalWrite(ledPin, HIGH);
      }
    if (val == '2')
      {
    Serial.write("Serial--ledPin--low\n");
    digitalWrite(ledPin, LOW);
      }
  }
}

双蓝牙模块连接(主从模式)

一个通过连接PC由串口通信(模拟一个设备的指令操作)

另一个采用Arduino进行点灯来作为从设备的响应动作

首先需要将其配置

这里首先采用较为安全的固定地址相连接:

  1. 将主设备调试(测试能否正常工作)

    AT

    如果不能,可能是串口波特率问题

Untitled

  1. 调整设备通信波特率

    查看波特率:

    AT+UART?

Untitled 1

发现波特率不一致为9600时进行更改,默认状态下就是两个波特率,正常模式下就是9600,这里我们将其更改为38400方便调试,当然也可能会带来一定的问题。

更改波特率:

AT+UART=38400,0,0

  1. 调整主从设备模式

    AT+ROLE=1

  2. 调整连接模式:

    AT+CMODE=0

  3. 绑定从机:

    在获取到从机的address之后(查询从机地址指令AT+ADDR?),我们进行绑定:

Untitled 2

Untitled 3

注意:此处将冒号,替换成了逗号(英文状态下的逗号)

最后,(莫名)成功了,刚开始连接上后,无法正常通信,重启了就好了。

Untitled 5

从机代码较为简单:

在对芯片作简要的波特率修正和查询addr之后采用Arduino 编程即可,代码同上不用修改。

总结

在本次的实验中,我们通过PC端连接一个蓝牙模块作为主设备(master)来通过串口发送数据,通过另一个 HC-05 传递数据,进而使得另一边的Arduino设备实现点灯功能。

主要涉及了串口收发以及对多串口应用的理解,在Arduino和PC通信(下载线)的同时又通过另一个串口和HC05通信,两串口间的数据传递以及在PC屏幕上的数据呈现,要求了我们对于不同串口的特点的理解:即该串口Print将会到何处,该串口Receive将会收到谁的,我们如何呈现到PC(即将PC和设备相连的串口进行发送或者说转发),从而进一步熟悉了数据的流动特点。

串口的首发,乃至于说数据包的收发,可以参考另一个WiFi项目的串口收发,也可看出串口通信在实际的物联网通信应用中十分广泛。