ESP32蓝牙应用入门与实战
19
2025-12-24
经典蓝牙串口通信
硬件准备
一块ESP32开发板(例如ESP32 DevKitC)。
一条Micro USB线,用于连接电脑供电和串口通信。
板载LED(大部分ESP32开发板的GPIO2脚上有一个内置LED,如果不确认直接接入一个LED模块即可)。
软件准备
安装 Arduino IDE。
在Arduino IDE中选择ESP32开发板支持:
打开“首选项”,在“附加开发板管理网址”填入:https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json
通过工具 -> 开发板 -> 开发板管理,搜索ESP32并安装。
选择正确的开发板型号和端口。
代码烧录
#include "BluetoothSerial.h" // 引入蓝牙串口库
#if !defined(CONFIG_BT_ENABLED) || !defined(CONFIG_BLUEDROID_ENABLED)
#error Bluetooth is not enabled! Please run `make menuconfig` to enable it
#endif
const int led = 2; // LED连接GPIO2(板载LED)
BluetoothSerial SerialBT; // 创建蓝牙串口对象
void setup() {
pinMode(led, OUTPUT);
digitalWrite(led, LOW); // 默认LED关闭
Serial.begin(115200);
Serial.println("Starting Bluetooth...");
if(!SerialBT.begin("ESP32_Blue")) { // 启动蓝牙设备,名称为ESP32_Blue
Serial.println("An error occurred initializing Bluetooth");
} else {
Serial.println("Bluetooth initialized. Device name: ESP32_Blue");
}
}
void loop() {
// 判断是否有蓝牙数据可读
if (SerialBT.available()) {
char res = SerialBT.read(); // 读取一个字符
Serial.print("Received via BT: ");
Serial.println(res);
if (res == 'A') {
digitalWrite(led, LOW); // 关闭LED
Serial.println("LED OFF");
}
else if (res == 'B') {
digitalWrite(led, HIGH); // 打开LED
Serial.println("LED ON");
}
else {
Serial.println("Unknown command");
}
}
// 你可以在这里添加更多命令处理逻辑
delay(10); // 延时,降低CPU使用率
}代码说明
BluetoothSerial SerialBT;用于创建一个蓝牙串口设备。SerialBT.begin("ESP32_Blue")初始化蓝牙,设备名为“ESP32_Blue”。SerialBT.available()判断是否收到蓝牙数据。收到的字符为
A时关闭LED,B时点亮LED。使用
Serial.print在串口监视器中输出调试信息。
使用方法
将ESP32通过USB连接电脑,下载烧录代码。
打开Arduino串口监视器,波特率设置为115200,观察启动及命令反馈。
使用手机或PC蓝牙,搜索名为
ESP32_Blue的设备并连接(通常不需要配对密码)。打开蓝牙串口终端APP(安卓系统上可以用如“Serial Bluetooth Terminal”等应用)。
在APP发送字符
A测试关闭LED,发送B打开LED。观察串口监视器的反馈信息。