求助ESP32蓝牙

[复制链接]
1158|11
Jzynhx 发表于 2025-10-22 12:57 | 显示全部楼层 |阅读模式

想用手机控制LED二极管亮灭。用ESP32wroom32,手机蓝牙连上了芯片,蓝牙串口调试助手上也连上了,但手机上发送ON或OFF,led始终亮



 楼主| Jzynhx 发表于 2025-10-22 14:13 | 显示全部楼层
  1. // 引入ESP32蓝牙串口库
  2. #include <BluetoothSerial.h>

  3. // 定义LED引脚(默认使用ESP32板载LED,引脚为GPIO2,低电平点亮)
  4. #define LED_PIN 2

  5. // 创建蓝牙串口对象
  6. BluetoothSerial SerialBT;

  7. // 存储手机发送的指令(初始化为空字符串)
  8. String receivedData = "";

  9. void setup() {
  10.   // 1. 初始化串口(用于VSCode串口监视器调试,波特率115200)
  11.   Serial.begin(115200);
  12.   // 等待串口监视器连接(仅调试用,可不加)
  13.   while (!Serial) {
  14.     delay(100);
  15.   }

  16.   // 2. 初始化LED引脚为输出模式
  17.   pinMode(LED_PIN, OUTPUT);
  18.   // 初始状态:LED熄灭(GPIO2高电平,因板载LED为共阳设计)
  19.   digitalWrite(LED_PIN, HIGH);

  20.   // 3. 初始化蓝牙(设备名称为“ESP32_LED_Control”,手机搜索时可见)
  21.   SerialBT.begin("ESP32_LED_Control");
  22.   // 打印蓝牙初始化结果(串口监视器查看)
  23.   Serial.println("蓝牙已开启,可在手机搜索并连接:ESP32_LED_Control");
  24.   Serial.println("连接后发送 'ON' 点亮LED,发送 'OFF' 熄灭LED");
  25. }

  26. void loop() {
  27.   // 4. 检查是否有蓝牙数据从手机发送过来
  28.   if (SerialBT.available() > 0) {
  29.     // 读取1字节数据(支持多字符指令,如“ON”“OFF”)
  30.     char c = SerialBT.read();
  31.    
  32.     // 若读取到换行符(手机APP发送时需勾选“发送新行”),说明指令完整
  33.     if (c == '\n') {
  34.       // 打印接收到的指令(调试用)
  35.       Serial.print("接收到指令:");
  36.       Serial.println(receivedData);

  37.       // 5. 解析指令并控制LED
  38.       if (receivedData.equalsIgnoreCase("ON")) {  // 忽略大小写,支持“on”“On”
  39.         digitalWrite(LED_PIN, LOW);  // 点亮LED(GPIO2低电平)
  40.         SerialBT.println("LED已点亮");  // 向手机回传状态
  41.         Serial.println("LED已点亮");     // 向串口监视器回传状态
  42.       }
  43.       else if (receivedData.equalsIgnoreCase("OFF")) {
  44.         digitalWrite(LED_PIN, HIGH);  // 熄灭LED(GPIO2高电平)
  45.         SerialBT.println("LED已熄灭");  // 向手机回传状态
  46.         Serial.println("LED已熄灭");     // 向串口监视器回传状态
  47.       }
  48.       else {
  49.         // 指令无效时,向手机提示正确格式
  50.         SerialBT.println("指令无效!请发送 'ON' 或 'OFF'");
  51.         Serial.println("指令无效!请发送 'ON' 或 'OFF'");
  52.       }

  53.       // 清空指令缓存,准备接收下一条指令
  54.       receivedData = "";
  55.     }
  56.     else {
  57.       // 未读到换行符时,将字符追加到指令缓存中
  58.       receivedData += c;
  59.     }
  60.   }

  61.   // 主循环空闲,可添加其他逻辑(如LED闪烁检测)
  62.   delay(10);
  63. }
 楼主| Jzynhx 发表于 2025-10-22 14:13 | 显示全部楼层

代码如上,图片好像看不到
 楼主| Jzynhx 发表于 2025-10-22 14:56 | 显示全部楼层
打错了,是手机可以和esp配对但蓝牙连接不上
凌老师 发表于 2025-10-22 16:34 | 显示全部楼层
你可以加我,我帮你问问启明云端
wangwu1976@ 发表于 2025-10-23 08:53 | 显示全部楼层
有想法
中国英茂科工 发表于 2025-10-24 09:19 | 显示全部楼层
Jzynhx 发表于 2025-10-22 14:56
打错了,是手机可以和esp配对但蓝牙连接不上

Wifi正常但蓝牙连不上,是这个意思吗?
我没做过,
如果我做,
会看串口助手的打印,
检查程序的引脚定义。
 楼主| Jzynhx 发表于 2025-10-25 17:20 | 显示全部楼层
中国英茂科工 发表于 2025-10-24 09:19
Wifi正常但蓝牙连不上,是这个意思吗?
我没做过,
如果我做,

我没有用到WiFi,只用到了蓝牙模块,能和手机蓝牙配对但是连接不上
 楼主| Jzynhx 发表于 2025-10-25 17:20 | 显示全部楼层

想不出来,求指点
 楼主| Jzynhx 发表于 2025-10-25 17:21 | 显示全部楼层
凌老师 发表于 2025-10-22 16:34
你可以加我,我帮你问问启明云端

感谢,我这个账号太低级了还加不了好友怎么办
中国英茂科工 发表于 2025-10-26 07:15 | 显示全部楼层
Jzynhx 发表于 2025-10-25 17:21
感谢,我这个账号太低级了还加不了好友怎么办

微信18731682394
中国英茂科工 发表于 2025-10-26 07:19 | 显示全部楼层
Jzynhx 发表于 2025-10-25 17:20
我没有用到WiFi,只用到了蓝牙模块,能和手机蓝牙配对但是连接不上

例程资料包发下,还有检查连线质量是否接触不良和引脚是否插对。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

3

主题

18

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部