如何获取与Arduino连接的HC-06蓝牙模块的已连接设备名称?
获取HC-06蓝牙模块已连接设备列表的可行方案
刚接触Arduino+HC-06的话,确实会遇到这类模块功能边界的问题——先给你明确一点:HC-06作为蓝牙从模块,本身没有内置指令能直接返回已连接设备的列表,但我们可以通过两种思路来实现你的需求:
方法1:通过安卓APP获取列表并转发到Arduino/电脑
这是最直接可行的方案,因为HC-06的核心是串口透传,它本身不存储配对/连接设备的信息,所以得让作为蓝牙主设备的安卓APP来主动获取已连接设备,再把数据传给Arduino,最后转发到电脑。
具体步骤:
- 在你的安卓APP里,用Android蓝牙API(比如
BluetoothAdapter相关类)获取已配对或已连接的蓝牙设备列表,过滤出串口类型的设备(HC-06属于SPP串口蓝牙) - 把设备名称、MAC地址等信息打包成易解析的字符串格式,比如:
HC-06_1,AA:BB:CC:DD:EE:FF;MyPhone,GG:HH:II:JJ:KK:LL - 通过蓝牙串口把这个字符串发送给HC-06,模块会自动透传给Arduino
- 用Arduino代码读取串口数据,再通过USB串口打印到电脑的串口监视器里
给你一段简单的Arduino代码示例:
#include <SoftwareSerial.h> // 假设HC-06接在D2(RX)和D3(TX)引脚,用软串口 SoftwareSerial hc06(2, 3); void setup() { Serial.begin(9600); // 电脑USB串口,用于输出到监视器 hc06.begin(9600); // HC-06的串口波特率,默认9600 Serial.println("Waiting for device list from Android..."); } void loop() { if (hc06.available()) { String deviceList = hc06.readStringUntil('\n'); Serial.println("=== Received connected device list ==="); Serial.println(deviceList); Serial.println("====================================="); } }
方法2:用AT指令检测连接状态(仅判断是否连接,无法获取列表)
如果你的需求只是确认HC-06当前是否有设备连接,而非具体的设备列表,可以用HC-06的AT+STATE指令:
- 先把HC-06切换到AT指令模式:多数模块需要在未连接状态下,将KEY引脚接高电平后重启;部分模块也支持在连接状态下直接发送AT指令(波特率默认9600)
- 发送
AT+STATE,模块会返回以下状态之一:INITIALIZED:未连接任何设备CONNECTED:已连接到某个设备PAIRED:已配对但未建立连接
但要注意,这个指令只能告诉你连接状态,拿不到具体的设备信息。
额外小提醒
HC-06本质是从设备,只能被其他主设备(比如你的手机、电脑)连接,它没有主动扫描或存储设备列表的能力,所以核心还是得靠主设备端(安卓APP或电脑)来提供设备信息。如果想直接在电脑端获取,也可以让电脑作为蓝牙主设备连接HC-06,然后用电脑的蓝牙工具(比如Linux的bluez、Windows的蓝牙设置API)来查询已连接设备,这样就不用经过Arduino了。
内容的提问来源于stack exchange,提问作者MissPaper
相关产品推荐
相关产品推荐

