Arduino UNO搭配HC-06蓝牙模块在MacBook上无法接收数据
Arduino UNO + HC-06蓝牙模块:仅能发送数据无法接收的排查方案
问题描述
我使用Arduino UNO搭配HC-06蓝牙模块,代码如下:
#include <SoftwareSerial.h> SoftwareSerial BTSerial(10, 11); void setup() { Serial.begin(9600); BTSerial.begin(9600); } void loop() { if (BTSerial.available()) { char data = BTSerial.read(); Serial.print("get data:"); Serial.println(data); } if (Serial.available()) { char data = Serial.read(); BTSerial.write(data); Serial.print("send data: "); Serial.println(data); } }
设备与MacBook Pro通过蓝牙连接后,在串口监视器测试时,仅能打印send data信息,无法打印get data信息。
排查与解决方法
核对硬件接线
HC-06的TX引脚必须连接Arduino软件串口的RX引脚(即代码里的引脚10),HC-06的RX引脚连接Arduino软件串口的TX引脚(引脚11),交叉接线不能搞反。另外注意HC-06的供电电压是3.3V,不要直接接5V,避免模块损坏。确认波特率匹配
HC-06默认波特率为9600,但如果之前修改过模块波特率,必须同步修改代码中BTSerial.begin(xxx)的数值,确保两端波特率一致。Mac端正确发送数据
Arduino串口监视器是和硬件USB串口通信的,要给HC-06发送数据,需要通过Mac的蓝牙串口:- 打开终端,输入
ls /dev/tty.*,找到HC-06对应的串口设备(格式类似/dev/tty.HC-06-DevB) - 执行命令
screen /dev/tty.HC-06-DevB 9600连接蓝牙串口 - 在这个screen窗口输入的内容,才会被HC-06接收,此时Arduino串口监视器就能打印
get data信息
- 打开终端,输入
修正代码语法错误
原代码开头缺少#,正确的头文件引用应为#include <SoftwareSerial.h>,确保代码编译通过后再上传。排查模块硬件故障
用USB转TTL模块单独连接HC-06,测试模块的收发功能是否正常,排除模块本身损坏的可能。
内容的提问来源于stack exchange,提问作者CYC
相关产品推荐
相关产品推荐

