ESP32 和 Arduino Uno 可以通过蓝牙进行通信。为此,您必须使用与 Arduino 兼容的蓝牙模块。我们将使用 HC-05(06) 蓝牙模块。
连接Arduino Uno和HC-05蓝牙模块
将 HC-05 蓝牙模块连接到 Arduino 板。将模块的VCC、GND、RX、TX引脚连接到Arduino的相应引脚,如下所示:
使用 Arduino IDE 进行蓝牙通信的 ESP32 代码
#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 代码
#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-06是否与别的模块配对,模块上的指示灯常亮表示已经配对,如果是这样必须首先取消与其他设备的配对,否则也无法成功。