乐鑫技术交流
直播中

李华

7年用户 1322经验值
私信 关注
[问答]

ESP32-AT开启经典蓝牙作为蓝牙模块,和MCU连接发送AT之后,返回值没有OK是怎么回事?

我编译了AT固件,开启了经典蓝牙。
进行了测试。
测试1:目的是验证是否开启成功。具体步骤如下:用ch340模块连接txd2和rxd2,打开串口助手,发送AT回车换行,返回AT换行以及OK;有返回OK,应该说明烧录成功,然后用蓝牙连接了手机,可以正常收发数据字符串等;

说明烧录成功了。

然后进行测试2,测试2有问题了。具体如下。

51通过串口和ESP32连接(作为蓝牙模块)。。。。。。。。。。手机蓝牙;

我将ESP32当作蓝牙模块,将51单片机的串口连接ESP32的TX2和RX2,用51单片机的串口发送字符串函数,给ESP32发送AT,返回的是AT,但是没有OK。发送其他指令也是没返回Ok,
比如发送 AT+BtiNIT=1 ,返回AT而没有OK。
但是经过一系列发送指令,也能和手机的蓝牙连接,连接之后,用手机蓝牙助手,发送字符给ESP32蓝牙模块,单片机收到的字符之后打印出来,发现和发送的不一样,接收到的都是+B。。
如果手机发送了xxxxxxP,前面需要先发6个字符,后面P或者其他字符才是有效字符,之后,单片机收到的是+BP空空。
uart3 rec = +
uart3 rec = B
uart3 rec = P
uart3 rec =
uart3 rec =


请问为什么直接用CH340模块连接ESP32可以正常蓝牙通信,单片机接ESP32,和手机蓝牙连接,却不能正常呢?
谢谢。
                        

回帖(1)

张玲

2024-6-27 16:55:48
以下是一些建议和可能的原因:

1. 确保ESP32和51单片机之间的串口连接正确。检查TX2和RX2引脚是否正确连接,以及TX和RX是否交叉连接。

2. 检查51单片机的串口波特率是否与ESP32的波特率匹配。如果波特率不匹配,可能导致通信问题。您可以在ESP32-AT固件中设置波特率,例如:

   ```
   void setup() {
       Serial.begin(9600); // 设置ESP32的波特率为9600
   }
   ```

3. 确保51单片机发送AT命令的方式正确。在51单片机中,您需要在发送AT命令后添加一个换行符('n'或'rn'),例如:

   ```
   Serial.print("ATrn");
   ```

4. 检查ESP32-AT固件是否支持在运行时接收AT命令。有些固件可能需要在启动时发送特定的AT命令来启用或配置某些功能。

5. 如果以上方法都无法解决问题,您可以尝试使用其他AT命令来检查ESP32的状态,例如:

   ```
   AT+RST  // 重启模块
   AT+GMR  // 获取模块固件版本信息
   ```


举报

更多回帖

发帖
×
20
完善资料,
赚取积分