树莓派Pico与HC05蓝牙通信问题:AT指令无正常响应
问题分析与解决方案
你的核心问题是HC05模块未正确响应AT指令,仅回显发送的指令内容,主要原因集中在接线错误、指令格式缺失和代码逻辑优化这几点,以下是具体排查和修复步骤:
1. 优先检查接线(最常见错误)
UART通信的TX和RX必须交叉连接:
- Pico的TX引脚(GP0) 应连接HC05的RX引脚
- Pico的RX引脚(GP1) 应连接HC05的TX引脚
你当前的接线是发送端连发送端、接收端连接收端,完全无法建立双向通信,这是导致无响应的首要原因。
2. 修正AT指令格式
HC05要求AT指令必须以换行符结尾(通常是\r\n),否则不会识别为完整指令。你的代码仅发送了指令文本(如AT),缺少结尾符,模块不会处理请求。
3. 调整代码逻辑
针对以上问题,修改后的代码如下:
from machine import UART, Pin from time import sleep import uos # 正确交叉接线:Pico TX(GP0) → HC05 RX;Pico RX(GP1) → HC05 TX uart = UART(0, baudrate=38400, tx=Pin(0), rx=Pin(1)) print("Pico HC05 AT Tool") print(uos.uname()) print("Type 'quit' to exit") while True: command = input("PicoTerm>") if command == 'quit': print("-"*50) print('Bye.') break # 给指令添加换行符,符合HC05的AT指令要求 uart.write(f"{command}\r\n") # 延长等待时间,确保模块有足够时间响应 sleep(0.5) # 读取所有可用响应字节 response = uart.read() if response: try: print(f"Response: {response.decode('utf-8').strip()}") except: print(f"Raw response: {response}") else: print("No response from HC05")
4. 波特率排查
如果修改后仍无响应,尝试更换波特率:
- HC05 AT模式默认波特率通常为38400,但部分模块可能是9600、19200或115200
- 逐一测试这些波特率,确认模块实际使用的AT波特率
5. 硬件额外检查
- 确保HC05的VCC接5V(Pico的VBUS引脚),GND接Pico的GND,电压不足会导致模块工作异常
- 确认HC05确实处于AT模式:指示灯每2秒闪烁一次,若闪烁频率不对,需重新进入AT模式(按住模块上的按键再上电)
内容的提问来源于stack exchange,提问作者kak_taki
相关产品推荐
相关产品推荐

