You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 03:22:42