Komponen · 5 mnt baca

Modul Bluetooth HC-05: Mengendalikan Arduino dari Ponselmu

Bagaimana cara menghubungkan modul Bluetooth HC-05? Pin dan pembagi tegangan, pairing dengan ponsel, kontrol LED dan relay, perintah AT, HC-05 vs HC-06 vs HM-10, kompatibilitas iPhone, ESP32, dan Pico.

HC-05 adalah modul Bluetooth murah dan sangat umum yang menambahkan komunikasi serial nirkabel ke proyek Arduino. Dengan modul ini kamu bisa menyalakan LED dari ponsel, menyalakan dan mematikan lampu dengan relay, mengemudikan mobil remote, atau mengirim data sensor ke ponsel. Di artikel ini kamu akan melihat langkah demi langkah cara menghubungkan HC-05 dengan benar dan aman, melakukan pairing dengan ponsel, menulis kode pertamamu, dan memakai perintah AT untuk mengubah pengaturan modul.

Modul Bluetooth HC-05 dan kabel jumper
Modul Bluetooth HC-05: jalur zig-zag di bagian atas adalah antena, dan di kiri ada 6 pin: EN, VCC, GND, TXD, RXD, dan STATE.

Bagaimana cara kerja HC-05?

HC-05 memakai SPP (Serial Port Profile) dari Bluetooth klasik dan berperilaku seperti “kabel serial nirkabel”. Begitu ponsel di-pairing dan terhubung, setiap karakter yang dikirim dari ponsel sampai ke Arduino lewat pin TXD modul, dan semua yang ditulis Arduino ke pin RXD dikirim ke ponsel. Di sisi Arduino, kamu tidak perlu tahu apa pun tentang Bluetooth: kamu memakai Serial.print() dan read() persis seperti ketika berbicara dengan Serial Monitor.

FiturNilai
Versi Bluetooth2.0 + EDR (klasik, SPP)
Jangkauan~10 m di ruang terbuka
Tegangan catu3,6–6 V (board modul punya regulator)
Level logika3,3 V
Baud rate bawaan9600 baud (38400 di mode AT)
PIN bawaan1234 atau 0000
PeranMaster dan slave

HC-05 vs HC-06 vs HM-10

ModulBluetoothPeranPiniPhone
HC-052.0 klasikMaster dan slave6Tidak bisa
HC-062.0 klasikHanya slave4Tidak bisa
HM-104.0 BLEMaster dan slave6Bisa
Modul Bluetooth HC-06
Modul Bluetooth HC-06: sangat mirip HC-05 tetapi dengan 4 pin, dan hanya bekerja sebagai slave; itu sudah cukup untuk berbicara dengan ponsel.
HC-05 dan HC-06 tidak bisa dipakai dengan iPhone: iOS tidak mengizinkan aplikasi biasa membuka koneksi serial Bluetooth klasik. Kalau ingin berbicara dengan iPhone, pakai modul BLE (Bluetooth Low Energy) seperti HM-10, atau ESP32 dengan BLE. Ponsel Android dan komputer bisa terhubung ke HC-05 tanpa masalah.

Pin dan pengkabelan HC-05

Modul ini bisa diberi daya dari 5V karena ada regulator di board-nya, tetapi pin datanya bekerja di 3,3 V. Arduino membaca sinyal 3,3 V dari pin TXD HC-05 tanpa masalah. Untuk arah sebaliknya, daripada menghubungkan sinyal TX 5 V dari Arduino langsung ke pin RXD modul, pakai pembagi tegangan: TX Arduino → 1 kΩ → RXD, RXD → 2 kΩ → GND. Dengan begitu sekitar 3,3 V yang sampai ke RXD.

Pin HC-05FungsiArduino Uno
EN (KEY)Masuk mode ATTidak disambung (3,3 V untuk mode AT)
VCCDaya5V
GNDGroundGND
TXDOutput data modulD10 (RX SoftwareSerial)
RXDInput data modul (3,3 V)D11, lewat pembagi 1 kΩ / 2 kΩ
STATEHIGH ketika terhubungTidak disambung, atau ke pin input kalau mau
HC-05 juga bisa dihubungkan ke pin 0 dan 1 di Uno, tetapi pin itu juga dipakai untuk upload kode lewat USB, jadi upload gagal selama modul tersambung. Memakai pin 10 dan 11 dengan SoftwareSerial membuat upload dan Serial Monitor tetap bebas.

Status LED dan pairing dengan ponsel

Ketika modul diberi daya, LED-nya berkedip cepat: artinya modul menunggu koneksi. Di pengaturan Bluetooth ponsel Android-mu, cari perangkat bernama “HC-05” lalu lakukan pairing dengan PIN 1234 (atau 0000 kalau tidak berhasil). Pairing saja belum membuka koneksi; yang membukanya adalah aplikasi terminal serial Bluetooth. Begitu terhubung, LED-nya berkedip pendek dua kali setiap 2 detik. Kalau LED menyala 2 detik lalu mati 2 detik, modul sedang dalam mode perintah AT.

Komunikasi pertama dengan ponsel

Kode di bawah mengubah Arduino menjadi jembatan antara ponsel dan komputermu: setiap karakter dari ponsel dikirim ke Serial Monitor, dan semua yang kamu ketik di Serial Monitor dikirim ke ponsel. Inilah titik awal terbaik untuk menguji koneksi:

C++ (Arduino IDE)
1#include <SoftwareSerial.h>
2
3SoftwareSerial bt(10, 11);   // RX, TX → HC-05 TXD, RXD
4
5void setup() {
6  Serial.begin(9600);
7  bt.begin(9600);            // veri modu hızı / data mode baud rate
8}
9
10void loop() {
11  if (bt.available()) {
12    Serial.write(bt.read());   // telefondan bilgisayara / phone to PC
13  }
14  if (Serial.available()) {
15    bt.write(Serial.read());   // bilgisayardan telefona / PC to phone
16  }
17}

Upload kodenya dan buka Serial Monitor di 9600 baud. Di ponsel, hubungkan ke HC-05 dengan aplikasi dari Google Play seperti Serial Bluetooth Terminal lalu ketik sesuatu: yang kamu ketik akan muncul di Serial Monitor. Teks yang kamu ketik di Serial Monitor juga muncul di ponsel. Kalau ini berhasil, koneksi, pengkabelan, dan baud rate-mu sudah benar semua.

Mengendalikan LED dan relay dari ponsel

Sekarang mari bertindak berdasarkan karakter yang datang dari ponsel: ketika 1 datang, LED menyala, dan ketika 0 datang, LED mati. Arduino juga mengirim balasan ke ponsel setelah setiap perintah:

C++ (Arduino IDE)
1#include <SoftwareSerial.h>
2
3SoftwareSerial bt(10, 11);   // RX, TX
4const int LED = 13;
5
6void setup() {
7  pinMode(LED, OUTPUT);
8  bt.begin(9600);
9  bt.println("Ready");
10}
11
12void loop() {
13  if (bt.available()) {
14    char c = bt.read();
15    if (c == '1') {
16      digitalWrite(LED, HIGH);   // LED'i yak / turn the LED on
17      bt.println("LED ON");
18    } else if (c == '0') {
19      digitalWrite(LED, LOW);    // LED'i söndür / turn the LED off
20      bt.println("LED OFF");
21    }
22  }
23}

Banyak aplikasi Bluetooth memungkinkanmu memberi karakter apa pun ke sebuah tombol, jadi kamu bisa membuat remote kecil dengan tombol “On” dan “Off” di ponselmu. Kalau yang kamu hubungkan modul relay, bukan LED, kode yang sama mengendalikan lampu atau kipas dari ponsel. Mengarahkan karakter F, B, L, dan R untuk maju, mundur, kiri, dan kanan ke driver motor L298N juga merupakan dasar mobil yang dikendalikan Bluetooth.

Mengubah pengaturan modul dengan perintah AT

Nama, PIN, dan baud rate HC-05 bisa kamu ubah dengan perintah AT. Untuk masuk mode AT, beri daya modul sambil menahan tombol kecil di atasnya (atau dengan pin EN tersambung ke 3,3 V); LED mulai berkedip pelan, sekali setiap 2 detik. Di kode jembatan, tulis bt.begin(38400), atur akhir baris di Serial Monitor ke Both NL & CR, lalu kirim perintahnya:

PerintahFungsi
ATTes koneksi, membalas OK
AT+NAME=BlueGraysMengganti nama modul yang terlihat
AT+PSWD="4321"Mengganti PIN (tanpa tanda kutip di versi lama)
AT+UART=9600,0,0Mengatur baud rate di mode data
AT+ROLE=0Menjadikannya slave (1 menjadikannya master)
AT+VERSION?Menampilkan versi firmware
AT+ORGLMengembalikan pengaturan pabrik
Di beberapa versi HC-05, beberapa perintah AT (misalnya AT+NAME) hanya dibalas kalau kamu menahan tombol selama mengirim perintah. Kalau kamu mendapat OK untuk AT tetapi tidak ada balasan untuk beberapa perintah, coba lagi sambil menahan tombol.

Bluetooth dengan ESP32 dan Raspberry Pi Pico

ESP32 klasik punya Bluetooth klasik dan BLE bawaan; dengan library BluetoothSerial kamu bisa terhubung ke ponsel tanpa HC-05. Namun ESP32-S3 dan ESP32-C3 hanya mendukung BLE. Raspberry Pi Pico W juga punya Bluetooth bawaan. Di Raspberry Pi Pico standar yang tanpa Bluetooth, kamu menghubungkan HC-05 ke pin UART; karena Pico bekerja di 3,3 V, kali ini tidak perlu pembagi tegangan. Beri daya modul dari pin VBUS (5V):

MicroPython
1from machine import UART, Pin
2
3bt = UART(0, baudrate=9600, tx=Pin(0), rx=Pin(1))   # GP0 → RXD, GP1 ← TXD
4led = Pin("LED", Pin.OUT)                           # kart üstü LED / onboard LED
5
6while True:
7    if bt.any():
8        c = bt.read(1)
9        if c == b'1':
10            led.on()
11            bt.write(b'LED ON\n')
12        elif c == b'0':
13            led.off()
14            bt.write(b'LED OFF\n')

Ide proyek HC-05

  • Mobil yang dikendalikan Bluetooth: robot yang dikemudikan dari ponsel dengan driver motor L298N dan dua motor DC.
  • Saklar rumah pintar: nyalakan dan matikan lampu serta stopkontak dari ponsel dengan modul relay.
  • Lampu pemilih warna: atur warna LED RGB dengan nilai yang dikirim dari ponsel.
  • Tampilan sensor nirkabel: kirim suhu dan kelembapan yang dibaca dari DHT11 ke terminal di ponselmu.
  • Lengan robot: kendalikan motor servo dengan slider di ponsel.
  • Komunikasi antara dua Arduino: jadikan satu HC-05 master dan yang lain slave untuk mengirim data secara nirkabel.

Kesalahan umum dan cara mengatasinya

  • Ponsel tidak bisa menemukan modul: kamu memakai iPhone, modulnya sedang terhubung ke perangkat lain, atau modul tertahan di mode AT.
  • Karakter yang datang kacau: baud rate-nya tidak cocok; mode data biasanya memakai 9600 dan mode AT 38400.
  • Perintah AT tidak dibalas: modul tidak dalam mode AT, baud rate-nya bukan 38400, atau Both NL & CR tidak dipilih sebagai akhir baris.
  • Kode tidak mau ter-upload: modul terhubung ke pin 0 dan 1; cabut ketika upload atau pakai SoftwareSerial.
  • Koneksi putus ketika motor mulai berjalan: motor mengganggu catu daya; beri daya motor dari sumber terpisah dan tambahkan kapasitor di catu daya modul.
  • Modul rusak setelah beberapa waktu: mungkin pin RXD diberi 5 V tanpa pembagi; selalu pakai pembagi 1 kΩ / 2 kΩ.

HC-05 adalah cara termudah untuk membawa proyek berkabelmu ke dunia nirkabel; gabungkan dengan kontrol motor, dan kamu siap membuat robot remote pertamamu. Di aplikasi BlueGrays ada mobil yang dikendalikan Bluetooth dengan L298N dan robot penghindar rintangan, lengkap dengan skema rangkaian dan kode.

Pertanyaan umum

Apakah HC-05 bisa dipakai dengan iPhone?

Tidak. iOS tidak mengizinkan aplikasi biasa membuka koneksi serial Bluetooth klasik yang dipakai HC-05 dan HC-06. Untuk iPhone, sebaiknya pakai modul BLE seperti HM-10, atau ESP32 dengan BLE.

Berapa jangkauan HC-05?

Sekitar 10 meter di ruang terbuka. Dinding, permukaan logam, dan perangkat nirkabel lain memperpendek jarak itu. Di dalam ruangan, modul ini bekerja dengan andal di ruangan yang sama atau ruangan sebelah.

Apa perbedaan HC-05 dan HC-06?

Keduanya memakai Bluetooth klasik. HC-05 bisa menjadi master atau slave dan punya 6 pin; HC-06 hanya slave dan biasanya punya 4 pin. Keduanya cukup untuk berbicara dengan ponsel; untuk menghubungkan dua Arduino, kamu butuh minimal satu HC-05.

Berapa PIN bawaan HC-05?

Di kebanyakan modul 1234, dan di sebagian 0000. Kamu bisa menggantinya di mode AT dengan perintah AT+PSWD; kalau tidak ingin orang lain mengendalikan proyekmu, mengganti PIN bawaan adalah ide yang bagus.

Bisakah dua Arduino saling berbicara dengan HC-05?

Bisa. Jadikan satu HC-05 master dengan AT+ROLE=1 dan berikan alamat modul lainnya dengan perintah AT+BIND; modul kedua tetap menjadi slave. Ketika dinyalakan, master otomatis terhubung ke slave dan kedua Arduino berbicara lewat port serial.

Apakah pembagi tegangan di pin RXD benar-benar perlu?

Disarankan. Pin data HC-05 bekerja di 3,3 V; banyak modul bertahan dengan 5 V untuk sementara, tetapi bisa rusak seiring waktu. Pembagi sederhana dari resistor 1 kΩ dan 2 kΩ menghilangkan risiko itu. Pin TXD tidak butuh pembagi.

Lihat semua proyek