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

如何在macOS上获取HC-05蓝牙模块的可用通信端口?

HC-05蓝牙模块Mac下通信端口问题及代码修复

问题概述

搭建HC-05蓝牙模块连接Mac控制LED开关电路时,执行终端命令:

ls /dev/cu.*
ls /dev/tty.*

已识别到cu.HC-05和tty.HC-05两个端口,但均无法正常通信,需确定正确端口并修复代码逻辑问题。

Arduino代码问题及修复

原代码中while(1)死循环会完全阻塞后续指令处理逻辑,导致无法响应蓝牙发送的控制命令,修复后的代码如下:

#include <SoftwareSerial.h>

const int RxD = 3;
const int TxD = 2;
const int LED_PIN = 6;

SoftwareSerial HC05(RxD, TxD);  // RX, TX

void setup() {
  pinMode(RxD, INPUT);
  pinMode(TxD, OUTPUT);
  pinMode(LED_PIN, OUTPUT);
  HC05.begin(9600);
  digitalWrite(LED_PIN, LOW); // 初始化LED为关闭状态
}

void loop() {
  // 仅在连接初期发送一次连接提示,避免频繁发送冗余信息
  static bool connectedPromptSent = false;
  if (!connectedPromptSent) {
    HC05.println("bluetooth connected!");
    connectedPromptSent = true;
  }

  // 处理蓝牙接收的指令
  if (HC05.available()) {
    String cmd = HC05.readStringUntil('\n');
    cmd.trim(); // 去除字符串首尾空白,避免换行/空格干扰指令匹配
    if (cmd == "on"){
      HC05.println("LED is on");
      digitalWrite(LED_PIN, HIGH);
    }
    else if (cmd == "off") {
      HC05.println("LED is off");
      digitalWrite(LED_PIN, LOW);
    }
    else {
      HC05.println("Command not found");
    }
  }
}

PySerial代码修复

原代码存在发送逻辑错误(直接发送字符串user_inp而非用户输入内容),同时需指定正确端口,修复后的代码:

import serial
import time

# Mac下蓝牙串口优先使用cu开头的端口
ser = serial.Serial(
    port='/dev/cu.HC-05',
    baudrate=9600,
    timeout=1
)

time.sleep(5)  # 给串口连接留足初始化时间

if ser.isOpen():
    print("Serial is open")
    try:
        while True:
            user_inp = input("输入on/off控制LED: ").strip()
            # 将用户输入转为字节流并添加换行符发送
            ser.write(f"{user_inp}\n".encode('utf-8'))
            # 读取并解码返回数据
            data = ser.readline().decode('utf-8').strip()
            print("Received data:", data)
    except KeyboardInterrupt:
        print("\n退出程序")
    finally:
        ser.close() # 确保程序退出时关闭串口

端口选择说明

Mac系统中:

  • /dev/cu.*是主动连接型端口,适合Mac作为主设备连接HC-05从设备,优先使用/dev/cu.HC-05
  • /dev/tty.*多用于被动监听场景,不推荐用于HC-05的主动连接

如果仍无法连接,可尝试:

  • 断开HC-05与Mac的蓝牙配对,重新配对后再执行ls /dev/cu.*确认端口
  • 检查HC-05的波特率是否与代码中9600一致(部分模块默认波特率为38400或115200)
  • 确认接线正确:HC-05的TX接Arduino的RX(引脚3),HC-05的RX需串联1k电阻后接Arduino的TX(引脚2),做5V转3.3V电平转换

内容的提问来源于stack exchange,提问作者Nothing Around Us

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 05:20:10