问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

ESP32 和 Arduino 之间建立蓝牙连接

创作时间:
作者:
@小白创作中心

ESP32 和 Arduino 之间建立蓝牙连接

引用
CSDN
1.
https://blog.csdn.net/sxstj/article/details/138366131

本文将介绍如何使用ESP32和Arduino Uno通过蓝牙模块进行通信。具体来说,我们将使用HC-05蓝牙模块作为通信媒介,实现两个设备之间的数据传输。

硬件连接

首先,我们需要将HC-05蓝牙模块连接到Arduino Uno。连接方式如下:

  • VCC引脚连接到Arduino的5V
  • GND引脚连接到Arduino的GND
  • RX引脚连接到Arduino的数字引脚2
  • TX引脚连接到Arduino的数字引脚3

具体连接示意图如下:

软件代码

ESP32代码

在ESP32端,我们需要使用BluetoothSerial.h库来实现蓝牙通信。以下是具体的代码实现:

#include "BluetoothSerial.h"

BluetoothSerial SerialBT;
uint8_t address_hc06[6] = {0x98, 0xDA, 0x60, 0x01, 0xF0, 0x57}; // HC-06的地址
String name_hc06 = "HC-06"; // HC-06的名字
bool connected;

void setup() {
  Serial.begin(115200); // 用物理串行接口来输出字符串看是否连接成功
  SerialBT.begin("ESP32_bluetooth", true); // 蓝牙名字任意
  Serial.println("ESP32 started in master mode!"); // ESP32开始进入主模式
  connected = SerialBT.connect(address_hc06); // 通过地址匹配HC-06
  // connected = SerialBT.connect(name_hc06); // 也可以通过名称匹配HC-06
  if (connected) {
    Serial.println("Connected!");
  } else {
    while (!SerialBT.connected(10000)) { // 10秒的timeout时间
      Serial.println("Failed to connect.");
    }
  }
}

void loop() {
  if (Serial.available()) {
    SerialBT.write(Serial.read()); // 可以替换成自己的代码。
  }
  if (SerialBT.available()) {
    Serial.write(SerialBT.read()); // 可以替换成自己的代码。
  }
  delay(20);
}

Arduino Uno代码

在Arduino Uno端,我们需要使用SoftwareSerial.h库来实现蓝牙通信。以下是具体的代码实现:

#include <SoftwareSerial.h>

SoftwareSerial BTSerial(2, 3); // RX、TX 使用软串口与以上的图片连接方式不同。

void setup() {
  Serial.begin(9600);
  BTSerial.begin(38400);
}

void loop() {
  if (BTSerial.available()) {
    Serial.write(BTSerial.read());
  }
  if (Serial.available()) {
    BTSerial.write(Serial.read());
  }
}

注意事项

在进行配对之前,请务必检查HC-05蓝牙模块是否已经与其他设备配对。如果模块上的指示灯常亮,表示已经配对。在这种情况下,必须先取消与其他设备的配对,否则无法成功连接。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号