Node.js与Arduino HC05蓝牙模块通信无接收问题排查
HC05与Arduino UNO蓝牙通信故障排查方案
问题概述
HC05模块连接Arduino UNO R3,通过Node.js的bluetooth-serial-port库发送数据,已确认蓝牙连接成功且数据发送提示正常,但Arduino端无任何接收内容,更换RX/TX为0、1引脚后问题仍存在。
涉及代码
Node.js 代码
var BluetoothSerialPort = new (require("bluetooth-serial-port").BluetoothSerialPort)(); const arduinoMACAddress = 'XXXXXXXX'; // MAC地址已确认正确 BluetoothSerialPort.findSerialPortChannel(arduinoMACAddress, function(channel) { BluetoothSerialPort.connect(arduinoMACAddress, channel, function() { console.log('Connected to Arduino'); BluetoothSerialPort.write(Buffer.from('test', 'utf-8'), function(err, bytesWritten) { if (err) { console.error('Error writing data:', err); } else { console.log(`Sent ${bytesWritten} bytes to Arduino`); } }); }, function() { console.log('Cannot connect to Arduino'); }); });
Arduino 代码
#include <SoftwareSerial.h> #define rxPin 10 #define txPin 11 SoftwareSerial mySerial = SoftwareSerial(rxPin, txPin); void setup() { pinMode(rxPin, INPUT); pinMode(txPin, OUTPUT); mySerial.begin(9600); } void loop() { if (mySerial.available() > 0) { Serial.println("Connected"); mySerial.read(); } }
排查与解决步骤
- 校验HC05波特率匹配
HC05默认波特率可能为38400、115200而非9600,需用AT指令确认模块实际波特率,确保Arduino代码中mySerial.begin(XXX)的参数与之完全一致。 - 修正硬件连接逻辑
HC05的TX需接Arduino软件串口的RX引脚(代码中rxPin),HC05的RX需接Arduino软件串口的TX引脚(代码中txPin);注意HC05的RX引脚仅支持3.3V电平,需加分压电阻避免Arduino的5V输入烧坏模块。 - 完善Arduino接收调试代码
当前代码仅打印固定字符串且丢弃接收数据,改为读取完整内容并通过硬件串口输出,方便排查:void setup() { pinMode(rxPin, INPUT); pinMode(txPin, OUTPUT); mySerial.begin(9600); Serial.begin(9600); // 初始化硬件串口用于调试 } void loop() { if (mySerial.available() > 0) { String receivedData = mySerial.readStringUntil('\n'); Serial.print("收到数据:"); Serial.println(receivedData); } } - 硬件串口使用注意事项
若使用Arduino原生0(RX)、1(TX)引脚,上传代码前需断开HC05连接(避免占用串口导致上传失败);上传完成后重新连接,此时直接用Serial对象替代SoftwareSerial,代码中无需再初始化软件串口。 - Node.js发送数据补全结束符
配合Arduino的readStringUntil('\n'),Node.js发送时需添加换行符,确保模块能识别完整数据:BluetoothSerialPort.write(Buffer.from('test\n', 'utf-8'), function(err, bytesWritten) { // 原有错误处理与日志代码 }); - 确认HC05工作模式
确保HC05处于透传模式(非AT指令模式),配对成功后指示灯应常亮或慢闪,而非快速闪烁的配对模式。
内容的提问来源于stack exchange,提问作者Overdrive
相关产品推荐
相关产品推荐

