可以 — 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 联系我们。


Ultrasonic Sensor HC-SR04 Ultrasonic Range Detection Distance Finder Obstacle avoidance For Arduino Application
16 Key Capacitive Touch Keypad Module TTP229 Switch Touch Sensor Keypad Module For Arduino IOT 
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