esp32经典蓝牙和单片机连接,,,手机蓝牙作为主机

95 篇文章 5 订阅

步骤
1、编译AT固件,把金典蓝牙打开,默认不打开,烧录esp32;
2、按照
https://docs.espressif.com/projects/esp-at/zh_CN/latest/esp32/Compile_and_Develop/how_to_enable_at_classic_bluetooth.html
在这里插入图片描述
置开启SPP功能,上面截图的A2DP 不打开。

3、https://docs.espressif.com/projects/esp-at/zh_CN/latest/esp32/AT_Command_Examples/classic_bluetooth_at_examples.html

以透传模式在移动电话或者 PC 和 ESP32 之间建立 SPP 连接并且设置 IO 能力为 NoInputNoOutput
在本例中,移动电话或 PC 为主机,ESP32 为从机。该示例展示了如何建立 SPP 连接。

Classic Bluetooth 初始化。

命令:

AT+BTINIT=1
响应:

OK
Classic Bluetooth SPP 协议初始化并且设置角色为 slave。

命令:

AT+BTSPPINIT=2
响应:

OK
设置 Classic Bluetooth 设备名称。

命令:

AT+BTNAME=“EXAMPLE”
响应:

OK
设置 Classic Bluetooth 扫描模式为可发现可连接。

命令:

AT+BTSCANMODE=2
响应:

OK
设置 Classic Bluetooth 安全参数。设置 io_cap 为 NoInputNoOutput,pin_type 为 fixed,pin_code 为 9527。

命令:

AT+BTSECPARAM=3,1,“9527”
响应:

OK
开启 Classic Bluetooth SPP 协议。

命令:

AT+BTSPPSTART
响应:

OK
移动电话或者 PC 发起连接。

移动电话或 PC 应能找到名为 “EXAMPLE” 的蓝牙设备。如果移动电话或 PC 发起连接并成功建立连接,ESP32 将提示:

+BTSPPCONN:0,“e0:24:81:47:90:bc”
说明:

您获取到的地址可能与上述响应中的不同。

在透传模式下发送数据。

命令:

AT+BTSPPSEND
响应:

OK

上述响应表示 AT 已经进入透传模式。

说明:

AT 进入透传模式后,串口收到的数据会传输到移动电话或者 PC 端。

停止发送数据。

在透传发送数据过程中,若识别到单独的一包数据 +++,则系统会退出透传发送。此时请至少等待 1 秒,再发下一条 AT 命令。请注意,如果直接用键盘打字输入 +++,有可能因时间太慢而不能被识别为连续的三个 +。更多介绍请参考 AT+BTSPPSEND。

重要

使用 +++ 可退出透传发送数据,回到正常 AT 命令模式。您也可以使用 AT+BTSPPSEND 命令恢复透传。

断开 Classic Bluetooth SPP 连接。

命令:

AT+BTSPPDISCONN=0
响应:

+BTSPPDISCONN:0,“e0:24:81:47:90:bc”

OK
说明:

您获取到的地址可能与上述响应中的不同。

实现成功,是透传模式。。

从机发送+++,退出透传。

后面实现以下两个ESP32自动进入透传。。

测试

AT回车,发送,返回OK;
AT+BTINIT=1 初始化,有时候会失败,不管。
设置从机
AT+BTSPPINIT=2

打开扫描,AT+BTSCANMODE=2
开始通信,之后等待蓝牙连接。
AT+BTSPPSTART如果已经拦截,这个返回错误。

手机发送55556
串口助手得到返回
在这里插入图片描述

串口助手发送透传模式,进入透传模式就没有前面的返回,或者关闭回显ATE0

AT+BTSPPSEND
在这里插入图片描述
在这里插入图片描述
手机发送
在这里插入图片描述

串口助手退出透传 +++,连续三个+++
发现只有自动发送才能顺利退出透传。

在这里插入图片描述
基本连接之后,不会自动退出连接。除非断电。。

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1. 准备工作 在开始连接之前,需要确保ESP32板子上已经安装了蓝牙库,并且手机上已经打开了蓝牙。同时需要确保ESP32板子可以正常工作,并且已经连接到了Wi-Fi网络。 2. 建立蓝牙连接ESP32板子中,使用以下代码建立蓝牙连接: ```c++ #include "BluetoothSerial.h" BluetoothSerial SerialBT; void setup() { SerialBT.begin("ESP32"); //设置蓝牙名称 } void loop() { if (SerialBT.available()) { Serial.write(SerialBT.read()); } if (Serial.available()) { SerialBT.write(Serial.read()); } } ``` 这段代码会在ESP32板子上建立一个蓝牙串口,可以通过这个串口与手机进行通信。在此之后,打开手机上的蓝牙设置界面,搜索蓝牙设备并连接ESP32板子。 3. 在手机上发送数据 连接成功后,在手机上可以使用蓝牙串口助手等工具向ESP32板子发送数据。ESP32板子会接收到数据并输出到串口中,可以通过串口监视器查看。 ```c++ void loop() { if (SerialBT.available()) { Serial.write(SerialBT.read()); } if (Serial.available()) { SerialBT.write(Serial.read()); } } ``` 同时,ESP32板子也可以向手机发送数据,只需要在代码中添加相应的输出语句即可。 ```c++ void loop() { if (SerialBT.available()) { Serial.write(SerialBT.read()); } if (Serial.available()) { SerialBT.write(Serial.read()); Serial.println("Hello World!"); //向手机发送数据 } } ``` 4. 断开蓝牙连接 在使用完毕后,需要断开蓝牙连接以释放资源。可以使用以下代码断开蓝牙连接: ```c++ void loop() { if (SerialBT.available()) { Serial.write(SerialBT.read()); } if (Serial.available()) { SerialBT.write(Serial.read()); Serial.println("Hello World!"); if (Serial.read() == 'q') { //如果收到'q',断开蓝牙连接 SerialBT.disconnect(); } } } ``` 通过输入'q',可以断开蓝牙连接

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值