HC-05: Kawal Arduino Guna Telefon Android (Bukan iPhone)

Smartphone controlling an Arduino Uno LED wirelessly through an HC-05 Bluetooth module with blue base board and green antenna daughter board

Ya — HC-05 membolehkan mana-mana telefon Android kawal Arduino Uno melalui Bluetooth: pair dengan PIN 1234, sambung empat jumper dan dua resistor, upload satu sketch, dan terminal app percuma boleh on/off LED Uno. Satu amaran jujur sebelum anda beli: HC-05 ialah Classic Bluetooth, jadi ia berfungsi dengan Android — bukan iPhone.

Kenapa HC-05 jalan dengan Android tapi tak jalan dengan iPhone?

HC-05 dibina di sekeliling radio BC417 yang bercakap Classic Bluetooth 2.0+EDR dengan Serial Port Profile (SPP) — ia bukan module BLE (Bluetooth Low Energy). Android sokong SPP secara native, jadi telefon Android sambung tanpa masalah. Apple lain cerita: iOS langsung tak sokong Serial Port Profile di peringkat app — aksesori Bluetooth Classic yang stream data ke app mesti ada pensijilan MFi Apple dan guna protokol aksesori iAP2 Apple sendiri, dan HC-05 bukan salah satunya, jadi tiada app iPhone biasa boleh buka serial link dengannya. Inilah kekecewaan nombor satu yang kami nampak dengan module ini, sebab itu kami cakap awal-awal.

Kalau projek anda mesti bercakap dengan iPhone, guna module serial BLE sebagai ganti — atau pilih board yang datang dengan Bluetooth built-in. Perbandingan ESP32 vs ESP8266 vs Arduino Uno kami menerangkan kenapa Bluetooth built-in pada ESP32 ialah laluan upgrade yang paling semula jadi di sini.

Gambar rajah menunjukkan telefon Android berjaya menyambung ke module Bluetooth HC-05 manakala sambungan iPhone disekat
Android sambung ke Classic Bluetooth SPP HC-05 secara native; iOS sekat hardware yang bukan MFi, jadi iPhone tak boleh guna module ini.

Untuk voltage divider

ItemPriceQty
400 pcs 1/4W Resistor Pack Resistor Kit 20 Common Value with 20 each400 pcs 1/4W Resistor Pack Resistor Kit 20 Common Value with 20 each400RPACRM7.95

Divider ini perlukan satu resistor 1k dan satu resistor 2k. Set 400 keping ini ada kedua-duanya, tambah semua nilai lain yang anda akan perlukan kemudian nanti.

Anda juga perlukan breadboard dan beberapa jumper wire male-female supaya binaan kekal tanpa solder, tambah dua resistor biasa (1kΩ dan 2kΩ) untuk voltage divider di bawah.

Macam mana nak wiring HC-05 ke Arduino Uno?

Module HC-05 ada enam pin header male: STATE, RX, TX, GND, VCC dan EN. Bahagian power senang — board ini terima 3.6–6V pada VCC kerana regulator onboard turunkannya ke 3.3V, jadi pin 5V Uno memang sesuai. Yang jadi hal ialah logic level: pin RX HC-05 ialah logic 3.3V dan tak tahan 5V, manakala Uno transmit pada 5V. Penyelesaiannya voltage divider dua resistor: Uno D3 → 1kΩ → HC-05 RX, tambah 2kΩ dari HC-05 RX ke GND. Itu bahagikan 5V × 2000 ÷ (1000 + 2000) = 3.33V — tepat seperti yang pin itu mahu. Arah sebaliknya, signal TX 3.3V dari HC-05 cukup tinggi untuk Uno baca terus, jadi tak perlu divider di situ. Nota jujur: banyak tutorial skip divider ini dan module biasanya survive buat sementara — tapi pin itu memang tak rated untuk 5V, dan penyelesaian yang betul cuma berharga dua resistor.

Pin HC-05 Sambung ke Nota
VCC Uno 5V Board terima 3.6–6V; regulator onboard hasilkan 3.3V.
GND Uno GND Ground bersama.
TX Uno D2 Signal 3.3V — Uno baca terus.
RX Uno D3 melalui 1kΩ, tambah 2kΩ ke GND Divider turunkan 5V Uno kepada 3.3V.
STATE Tidak disambung Pilihan: jadi HIGH semasa telefon tersambung.
EN Tidak disambung Biarkan tak bersambung — guna butang onboard untuk AT mode.

Semuanya duduk tanpa solder atas breadboard. Kalau nanti anda pindahkan litar ini ke board kekal, panduan solder header pin kami tunjukkan tekniknya.

Gambar rajah wiring voltage divider dua resistor antara pin D3 Arduino Uno dan pin RX module Bluetooth HC-05
Divider yang melindungi HC-05: Uno D3 melalui 1k ke pin RX, 2k dari RX turun ke GND — 5V masuk, 3.3V di pin.

Apa code Arduino yang membolehkan telefon kawal LED?

HC-05 mahu datanya pada pin selain 0 dan 1, jadi sketch ini guna SoftwareSerial pada pin 2 dan 3, biarkan hardware serial port bebas untuk upload dan serial monitor. Kebanyakan board clone HC-05 datang dalam data mode pada 9600 baud. Hantar 1 dari telefon untuk hidupkan LED built-in pada pin 13, 0 untuk padamkannya; Uno akan echo status baharu semula setiap kali.

#include <SoftwareSerial.h>

// HC-05 TX -> Uno D2 (terus), Uno D3 -> divider 1k/2k -> HC-05 RX
SoftwareSerial bt(2, 3);  // RX, TX

const int LED_PIN = 13;   // LED built-in Uno

void setup() {
  pinMode(LED_PIN, OUTPUT);
  Serial.begin(9600);     // serial monitor USB
  bt.begin(9600);         // data mode HC-05 (default pada kebanyakan board)
  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");        // echo status semula ke telefon
      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");
    }
    // character lain (macam newline) diabaikan
  }
}

Bila LED dah ikut arahan, digitalWrite yang sama boleh kawal benda lebih besar — tukar pin 13 kepada pin signal relay dan telefon anda boleh hidupkan lampu atau pam. Baca panduan keselamatan relay module kami dulu, terutamanya bahagian voltan mains.

Macam mana nak sambungkan telefon Android ke HC-05?

Sambungan HC-05 ialah aliran dua langkah, dan skip langkah pertama ialah sebab paling biasa “app tak jumpa module”. Pertama, pair dalam Android sendiri: Settings → Bluetooth → scan → tekan HC-05 → masukkan PIN 1234 (sesetengah batch guna 0000). Pairing cuma memperkenalkan kedua-dua peranti — belum ada apa-apa yang tersambung lagi.

Kedua, connect dalam serial terminal app. Kami syorkan Serial Bluetooth Terminal oleh Kai Morich dari Google Play — ia sokong Bluetooth Classic SPP, profile yang HC-05 guna. Dalam app itu buka Devices → Bluetooth Classic, tekan HC-05, dan bila dah tertulis connected, taip 1 dan hantar — LED Uno menyala dan “LED ON” muncul semula dalam terminal.

Nak tengok keseluruhan aliran sekali sebelum mula membina? Walkthrough ini merangkumi wiring yang serupa, sketch yang serupa dan pairing app dari awal hingga akhir:

Macam mana nak masuk AT mode untuk tukar nama atau configure HC-05?

Tetapan HC-05 — nama, PIN, baud rate — ditukar dalam AT command mode, dan di sinilah kebanyakan orang tersangkut. Kuncinya ialah timing: tekan dan tahan butang kecil onboard semasa anda sambungkan power, kemudian lepaskan. LED status akan berkelip perlahan — lebih kurang sekali setiap dua saat — bukannya kelipan pantas biasa — itu tandanya AT mode, yang berjalan pada 38400 baud tetap bila dimasuki cara ini, tak kira apa tetapan data mode anda.

Upload sketch jambatan ini (wiring sama seperti di atas), kemudian power-cycle HC-05 dengan butang ditahan:

#include <SoftwareSerial.h>

SoftwareSerial bt(2, 3);  // RX, TX

void setup() {
  Serial.begin(9600);     // sebelah serial monitor
  bt.begin(38400);        // AT mode sentiasa 38400 baud
}

void loop() {
  // salurkan semua antara serial monitor dan HC-05
  if (bt.available()) Serial.write(bt.read());
  if (Serial.available()) bt.write(Serial.read());
}

Buka serial monitor pada 9600 baud dan set line ending kepada Both NL & CR — HC-05 abaikan command tanpa carriage return dan newline. Taip AT dan anda patut dapat OK. Command yang berguna:

Command Fungsi Contoh
AT Test sambungan — balas OK AT
AT+NAME= Tukar nama module (muncul pada scan telefon seterusnya) AT+NAME=MyRobot
AT+PSWD= Tukar PIN pairing AT+PSWD=4321
AT+UART= Set baud data mode, stop bit, parity AT+UART=9600,0,0

Dua kerenah: pada banyak board, query command seperti AT+NAME? hanya jawab semasa butang ditahan, dan firmware clone berbeza sedikit antara versi — kalau command yang nampak betul balas ERROR, tahan butang semasa menghantarnya. Dah siap? Power-cycle tanpa butang dan module kembali ke data mode.

Jari menahan butang kecil pada module Bluetooth HC-05 semasa power disambungkan untuk masuk AT command mode
Masuk AT mode semuanya soal timing: tahan butang, kemudian sambungkan power. Kelipan perlahan dua saat pada LED sahkan anda dah masuk, pada 38400 baud.

Kesilapan biasa yang kami nampak daripada pelanggan sebenar

Segelintir masalah yang sama merangkumi hampir semua chat support HC-05 yang kami terima.

  1. Beli untuk projek iPhone. HC-05 ialah Classic Bluetooth SPP dan iOS memang tak akan sambung dengannya. Android sahaja — untuk iPhone, pilih BLE atau ESP32.
  2. Bercakap dengannya pada baud yang salah. Data mode ialah 9600 pada kebanyakan board; AT mode sentiasa 38400. Character bersepah atau terus senyap hampir selalu bermaksud dua-dua ini tertukar.
  3. Wiring TX ke TX dan RX ke RX. Talian serial bersilang: TX module pergi ke pin Uno yang sketch baca (D2), dan RX module datang dari pin yang sketch tulis (D3, melalui divider).
  4. Sangka pairing itu sudah dikira sambungan. Pairing dalam tetapan Android cuma langkah pertama — tiada apa yang berfungsi sehingga terminal app buka sambungan ke HC-05 yang sudah pair.
  5. Hantar AT command tanpa NL & CR. Dengan line ending serial monitor diset ke “No line ending”, HC-05 abaikan semuanya dan orang baru terus sangka module dah rosak.

FAQ

Boleh tak guna HC-05 dengan iPhone?

Tidak. HC-05 bercakap Classic Bluetooth SPP, dan iOS langsung tak sokong Classic Bluetooth SPP di peringkat app; aksesori data Bluetooth Classic perlukan pensijilan MFi Apple dan protokol iAP2, dan HC-05 bukan salah satunya. Untuk projek iPhone, guna module serial BLE, atau board dengan Bluetooth built-in seperti ESP32.

Kenapa telefon saya boleh pair dengan HC-05 tapi app tak boleh connect?

Pairing dan connect ialah langkah berasingan. Selepas pair dalam tetapan Android, anda mesti buka sambungan itu dalam serial terminal app. Pastikan juga tiada app lain yang sedang memegang sambungan — HC-05 hanya terima satu sambungan pada satu masa.

Kenapa saya dapat character bersepah atau tiada OK dalam AT mode?

Hampir selalu baud rate atau line ending. AT mode tetap pada 38400 baud tak kira apa baud data mode anda, dan serial monitor mesti hantar Both NL & CR. Betulkan dua tetapan itu dan AT sepatutnya jawab OK.

Apa beza HC-05 dengan HC-06?

HC-05 boleh jadi master atau slave dan ada set AT command yang lebih lengkap; HC-06 slave sahaja dengan command yang lebih sedikit. Untuk projek telefon-kawal-Arduino macam ini, kedua-duanya berkelakuan sama — telefon jadi master dalam kedua-dua kes.

Berapa jauh jarak yang boleh diharapkan daripada HC-05?

Ia peranti Bluetooth Class 2, secara nominal dinilai sekitar 10 meter di kawasan lapang. Dinding dan gangguan mengurangkannya dalam praktik, jadi anggap ia jarak dalam bilik yang sama, bukan jarak satu rumah.

Kemas kini terakhir Ogos 2026. Tersangkut? Chat dengan kami di WhatsApp.

Leave a Reply

Your email address will not be published. Required fields are marked *