【蓝牙模块】[arduino+HC-06]连接[PC+HC-05]

物品\软件准备

arduino uno
公对母杜邦线
HC-06/HC-05各一个
USB转TLL
串口调试助手Xcom
Arduino IDE

连接方法HC-06

HC-06端 VCC - 5V Arduino端
HC-06端 GND - GND Arduino端
HC-06端 TXD - 串口8(自定) Arduino端
HC-06端 RXD - 串口9(自定) Arduino端

配置方法HC-06

先配置从机。
将Arduino与电脑通过USB数据线连接,通过Arduino IDE烧录如下程序到板子,以改变TXD和RXD的连接位置,防止与板子输入输出冲突。

#include <SoftwareSerial.h>
//使用软件串口,能讲数字口模拟成串口
SoftwareSerial BT(8, 9);  //TXD 8, RXD 9
char val;  //存储接收的变量
void setup() {
  Serial.begin(9600);   //与电脑的串口连接
  Serial.println("BT is ready!");
  BT.begin(9600);  //设置波特率
}

void loop() {
  //如果串口接收到数据,就输出到蓝牙串口
  if (Serial.available()) {
    val = Serial.read();
    BT.print(val);
  }
  //如果接收到蓝牙模块的数据,输出到屏幕
  if (BT.available()) {
    val = BT.read();
    Serial.print(val);
  }
}

默认波特率为9600,直接用不用改。

点击打开串口。

测试:
然后输入指令AT,进入设置成功则返回OK
正式配置:
①设置配对码(从机主机要一致)
AT+PIN1234
1234为配对码,可自行修改。
②设置从机蓝牙地址
AT+LADDR查询当前蓝牙地址
AT+LADDR12:34:56:AB:CD:EF设置地址为12:34:56:AB:CD:EF,注意地址格式。
可以不修改地址,直接把主机绑定地址设置成当前从机地址,只要保证一致即可。

连接方法HC-05

HC-05端 VCC - 5V USB TO TLL端
HC-05端 GND - GND USB TO TLL端
HC-05端 TXD - RXD USB TO TLL端
HC-05端 RXD - TXD USB TO TLL端

配置方法HC-05

同样在串口助手中配置。

设置阶段
在供电前手按住蓝牙模块上的按钮,供电后松开,看到蓝牙模块的红灯变成两秒一闪,即进入了设置模式。此时波特率为38400。

测试:
然后输入指令AT,进入设置成功则返回OK
正式配置:
①设置蓝牙模块的角色
AT+ROLE=1设置成主机模式。
成功则返回OK,以下指令均如此。
②设置配对码
AT+PSWD="1234"要与从机设置的配对码相同。
③设置连接模式
AT+CMODE=0设置成只对特定蓝牙地址的配对模式。
④设置绑定配对的蓝牙地址
AT+BIND=1234,56,ABCDEF注意此时的地址格式,与从机不同,可以通过AT+BIND查看当前绑定的从机蓝牙地址以及格式。
⑤拔掉电源,停止供电,即退出了设置模式。

连接阶段

先打开从机HC-06
再打开主机HC-05
此时两个蓝牙模块红灯均是一秒闪烁两次,
等待一会儿后会发现闪烁频率发生变化,
可以通过串口通信查看是否已经连接完成。

我又使用外接电源给Arduino进行供电,同样连接成功。
测试代码如下。通过串口调试工具,发送指令1,Arduino内的LED灯会亮一下,每发送一次会亮一下。

#include <SoftwareSerial.h>
SoftwareSerial BT(8, 9);  //TXD 8, RXD 9
char val;  //存储接收的变量

void setup() {
  Serial.begin(9600);
  pinMode(LED_BUILTIN, OUTPUT); //11引脚连接演示用LED
  BT.begin(9600);  //设置波特率

}
void loop(){
    //如果接收到蓝牙模块的数据,输出到屏幕
  if (BT.available()) {
    val = BT.read();
    Serial.print(val);
    if (val == '1' ) {  //接收到点亮LED指令
      Serial.print("Got command: ");  
      Serial.println(val);  
      digitalWrite(LED_BUILTIN, HIGH);  //点亮LED指令
    } else {    //接收到熄灭LED指令
      Serial.print("Got command: ");  
      Serial.println(val); 
      digitalWrite(LED_BUILTIN, LOW);      //熄灭LED指令  
    }
  }
}
posted @ 2023-01-15 00:33  iuk11  阅读(2091)  评论(0)    收藏  举报