可以 — HC-05 能让任何一台 Android 手机通过蓝牙控制 Arduino Uno:用 PIN 码 1234 配对,接四根杜邦线加两个电阻,上传一个程序,再用一个免费的串口终端 App 就能开关 Uno 的 LED。买之前先把话说清楚:HC-05 是经典蓝牙,只支持 Android — 不支持 iPhone。
为什么 HC-05 支持 Android 却不支持 iPhone?
HC-05 的核心是一颗 BC417 射频芯片,走的是经典蓝牙 2.0+EDR 加串口协议(SPP) — 它不是 BLE(低功耗蓝牙)模块。Android 原生支持 SPP,所以 Android 手机连起来毫不费劲。Apple 那边则是另一回事:iOS 在 App 层面完全不支持经典蓝牙 SPP;经典蓝牙数据配件必须通过 Apple MFi 认证并使用 iAP2 协议,HC-05 两者都不是,所以 iPhone 无法使用这个模块。这是我们卖这颗模块见得最多的失望点,所以放在最前面讲清楚。
如果你的项目必须和 iPhone 通讯,请改用 BLE 串口模块,或者干脆选一块自带蓝牙的开发板。我们的 ESP32、ESP8266 与 Arduino Uno 对比解释了为什么 ESP32 自带的蓝牙是这里最自然的升级路线。

零件清单
分压电阻用
| Item | Price | Qty | |
|---|---|---|---|
400 pcs 1/4W Resistor Pack Resistor Kit 20 Common Value with 20 each400RPAC | RM7.95 |
分压电路需要一个 1k 和一个 2k 电阻。这盒 400 只装的电阻包两种都有,以后要用到的其他阻值也基本备齐了。
你还需要一块面包板和几根公对母杜邦线,整个项目免焊接就能完成,另外准备两个普通电阻(1kΩ 和 2kΩ)用来搭下面的分压电阻。
HC-05 怎么接到 Arduino Uno?
HC-05 模块有六根公排针:STATE、RX、TX、GND、VCC 和 EN。供电很简单 — 板子的 VCC 可接受 3.6–6V,因为板载稳压器会把它降到 3.3V,所以直接用 Uno 的 5V 引脚就行。真正要注意的是逻辑电平:HC-05 的 RX 引脚是 3.3V 逻辑,并不耐 5V,而 Uno 的输出是 5V。解决办法是用两个电阻搭一组分压电阻:Uno D3 → 1kΩ → HC-05 RX,再从 HC-05 RX 接一个 2kΩ 到 GND。这样 5V × 2000 ÷ (1000 + 2000) = 3.33V — 正好是这个引脚想要的电压。反方向上,HC-05 的 3.3V TX 信号足够让 Uno 直接读取,那一侧不需要分压。说句实话:不少教程直接省掉分压电阻,模块往往也能撑一阵子 — 但这个引脚的额定电压确实不是 5V,而正确的做法只花两个电阻的钱。
| HC-05 引脚 | 接到 | 说明 |
|---|---|---|
| VCC | Uno 5V | 板子可接受 3.6–6V;板载稳压器输出 3.3V。 |
| GND | Uno GND | 共地。 |
| TX | Uno D2 | 3.3V 信号 — Uno 可以直接读取。 |
| RX | Uno D3 经 1kΩ,另加 2kΩ 接 GND | 分压电阻把 Uno 的 5V 降到 3.3V。 |
| STATE | 不接 | 可选:手机连接期间输出高电平。 |
| EN | 不接 | 保持悬空 — 进 AT 模式请用板上的按钮。 |
以上全部在面包板上免焊完成。以后要把电路搬到永久板子上时,可以参考我们的排针焊接教程。

用什么 Arduino 代码让手机控制 LED?
HC-05 的数据不能占用 0、1 号引脚,所以程序用 SoftwareSerial 走 2、3 号引脚,把硬件串口留给上传程序和串口监视器。大多数 HC-05 克隆板出厂即为数据模式、9600 波特率。手机发 1,13 号引脚的板载 LED 点亮;发 0 熄灭;每次 Uno 都会把新状态回传给手机。
#include <SoftwareSerial.h>
// HC-05 TX -> Uno D2(直连),Uno D3 -> 1k/2k 分压电阻 -> HC-05 RX
SoftwareSerial bt(2, 3); // RX, TX
const int LED_PIN = 13; // Uno 板载 LED
void setup() {
pinMode(LED_PIN, OUTPUT);
Serial.begin(9600); // USB 串口监视器
bt.begin(9600); // HC-05 数据模式(多数板子的默认值)
bt.println("HC-05 ready. Send 1 for ON, 0 for OFF.");
}
void loop() {
if (bt.available()) {
char c = bt.read();
if (c == '1') {
digitalWrite(LED_PIN, HIGH);
bt.println("LED ON"); // 把新状态回传给手机
Serial.println("Phone sent 1 - LED ON");
} else if (c == '0') {
digitalWrite(LED_PIN, LOW);
bt.println("LED OFF");
Serial.println("Phone sent 0 - LED OFF");
}
// 其他字符(比如换行符)一律忽略
}
}
LED 听话之后,同一句 digitalWrite 就能驱动更大的东西 — 把 13 号引脚换成继电器的信号引脚,手机就能开关一盏灯或一台水泵。动手之前请先读我们的继电器模块安全指南,尤其是市电那一节。
Android 手机怎么连接 HC-05?
HC-05 的连接分两步,跳过第一步是“App 找不到设备”最常见的原因。第一步先在 Android 系统里配对:设置 → 蓝牙 → 扫描 → 点 HC-05 → 输入 PIN 码 1234(少数批次是 0000)。配对只是让两台设备互相认识 — 此时什么都还没连上。
第二步在串口终端 App 里建立连接。我们推荐 Google Play 上 Kai Morich 出品的 Serial Bluetooth Terminal — 它支持经典蓝牙 SPP,正是 HC-05 用的协议。在 App 里打开 Devices → Bluetooth Classic,点 HC-05,显示已连接后,输入 1 并发送 — Uno 的 LED 亮起,终端里同时收到“LED ON”。
想先完整看一遍流程再动手?这段视频演示了类似的接线、类似的程序和 App 配对全过程:
怎么进入 AT 模式给 HC-05 改名或改设置?
HC-05 的各项设置 — 名称、PIN 码、波特率 — 都要在 AT 指令模式里改,而这也是最多人卡住的地方。诀窍全在时机:先按住板上的小按钮,再接通电源,然后松开。状态 LED 会变成慢闪 — 大约每两秒一次,而不是平时的快闪 — 那就是 AT 模式;用这种方式进入时波特率固定为 38400,与你的数据模式设置无关。
上传下面这个桥接程序(接线和上面完全一样),然后按住按钮给 HC-05 重新上电:
#include <SoftwareSerial.h>
SoftwareSerial bt(2, 3); // RX, TX
void setup() {
Serial.begin(9600); // 串口监视器这一侧
bt.begin(38400); // AT 模式固定 38400 波特率
}
void loop() {
// 在串口监视器和 HC-05 之间双向转发所有数据
if (bt.available()) Serial.write(bt.read());
if (Serial.available()) bt.write(Serial.read());
}
以 9600 波特率打开串口监视器,并把行尾设置为 Both NL & CR — 没有回车加换行,HC-05 会无视所有指令。输入 AT,应该收到 OK。常用指令:
| 指令 | 作用 | 示例 |
|---|---|---|
| AT | 连接测试 — 回复 OK | AT |
| AT+NAME= | 给模块改名(下次手机扫描时生效) | AT+NAME=MyRobot |
| AT+PSWD= | 修改配对 PIN 码 | AT+PSWD=4321 |
| AT+UART= | 设置数据模式的波特率、停止位、校验位 | AT+UART=9600,0,0 |
两个小怪癖:很多板子上,查询类指令(例如 AT+NAME?)只有按住按钮时才会应答;另外克隆板固件版本之间略有差异 — 如果一条看起来没问题的指令返回 ERROR,就按住按钮再发一次。改完了?不按按钮重新上电,模块就回到数据模式。

真实客户最常踩的几个坑
我们收到的 HC-05 求助,几乎都绕不开下面这几个问题。
- 买来想配 iPhone 用。HC-05 是经典蓝牙 SPP,iOS 不会连接它。只支持 Android — iPhone 项目请选 BLE 或 ESP32。
- 用错波特率。多数板子的数据模式是 9600;AT 模式固定 38400。出现乱码或完全没反应,基本都是这两个搞反了。
- TX 接 TX、RX 接 RX。串口线要交叉:模块的 TX 接到程序里负责读取的 Uno 引脚(D2),模块的 RX 接程序里负责发送的引脚(D3,经过分压电阻)。
- 以为配对就等于连接。在 Android 设置里配对只是第一步 — 必须由串口终端 App 打开与已配对 HC-05 的连接,一切才会开始工作。
- 发 AT 指令时没加 NL & CR。串口监视器行尾设成“No line ending”时,HC-05 会无视一切,新手常常以为模块坏了。
常见问题
HC-05 可以配 iPhone 用吗?
不可以。HC-05 走的是经典蓝牙 SPP,而 iOS 在 App 层面完全不支持经典蓝牙 SPP;经典蓝牙数据配件必须通过 Apple MFi 认证,HC-05 并没有这个认证。iPhone 项目请改用 BLE 串口模块,或选择 ESP32 这类自带蓝牙的开发板。
为什么手机能和 HC-05 配对,App 却连不上?
配对和连接是两个独立的步骤。在 Android 设置里配对之后,还必须在串口终端 App 里打开连接。另外检查是不是有别的 App 已经占着连接 — HC-05 一次只接受一个连接。
为什么 AT 模式下出现乱码,或者收不到 OK?
基本都是波特率或行尾设置的问题。AT 模式固定在 38400 波特率,跟你的数据模式波特率无关;串口监视器必须发送 Both NL & CR。把这两项改对,AT 就会回复 OK。
HC-05 和 HC-06 有什么区别?
HC-05 可以当主机也可以当从机,AT 指令集更完整;HC-06 只能做从机,指令也更少。像本文这种手机控制 Arduino 的项目,两者表现完全一样 — 反正手机都是主机。
HC-05 的传输距离有多远?
它是 Class 2 蓝牙设备,标称空旷环境约 10 米。实际使用中墙壁和干扰会让距离缩水,所以把它当作同一个房间内的距离,别指望覆盖整栋屋子。
最后更新:2026年8月。有问题?WhatsApp 联系我们。



Arduino Uno Compatible SMD UNO R3 with Type B Cable - ATMEGA328P with CH340G-Microcontroller Project
Wireless Bluetooth Module HC-05 HC-06 Master Slave Bluetooth Module HC05 HC06 - HC-05 BLUETOOTH MODULE
400 pcs 1/4W Resistor Pack Resistor Kit 20 Common Value with 20 each