HC-05 Bluetooth Modülü: Arduino'yu Telefondan Kontrol Etmek
HC-05 Bluetooth modülü nasıl bağlanır? Pinler ve gerilim bölücü, telefonla eşleştirme, LED ve röle kontrolü, AT komutları, HC-05 ile HC-06 ve HM-10 farkı, iPhone uyumu, ESP32 ve Pico.
HC-05, Arduino projelerine kablosuz seri haberleşme ekleyen ucuz ve çok yaygın bir Bluetooth modülüdür. Onunla telefondan bir LED'i yakabilir, bir röleyle lambayı açıp kapatabilir, uzaktan kumandalı bir araba sürebilir ya da sensör verilerini telefonuna gönderebilirsin. Bu yazıda HC-05'i doğru ve güvenli bağlamayı, telefonla eşleştirmeyi, ilk kodları ve modül ayarlarını değiştiren AT komutlarını adım adım göreceksin.

HC-05 nasıl çalışır?
HC-05, klasik Bluetooth'un SPP (Seri Port Profili) özelliğini kullanır ve bir "kablosuz seri kablo" gibi davranır. Telefon eşleşip bağlandıktan sonra telefondan gönderilen her karakter modülün TXD pininden Arduino'ya ulaşır; Arduino'nun RXD pinine yazdığı her şey de telefona gider. Arduino tarafında Bluetooth hakkında hiçbir şey bilmen gerekmez: tıpkı Seri Monitör'le konuşur gibi Serial.print() ve read() kullanırsın.
| Özellik | Değer |
|---|---|
| Bluetooth sürümü | 2.0 + EDR (klasik, SPP) |
| Menzil | Açık alanda ~10 m |
| Besleme gerilimi | 3,6–6 V (modül kartında regülatör vardır) |
| Mantık seviyesi | 3,3 V |
| Varsayılan hız | 9600 baud (AT modunda 38400) |
| Varsayılan PIN | 1234 ya da 0000 |
| Rol | Master (ana) ve slave (bağımlı) |
HC-05, HC-06 ve HM-10 farkı
| Modül | Bluetooth | Rol | Pin sayısı | iPhone |
|---|---|---|---|---|
| HC-05 | 2.0 klasik | Master ve slave | 6 | Çalışmaz |
| HC-06 | 2.0 klasik | Yalnızca slave | 4 | Çalışmaz |
| HM-10 | 4.0 BLE | Master ve slave | 6 | Çalışır |

HC-05 pinleri ve bağlantı
Modül 5V ile beslenebilir çünkü kartın üzerinde bir regülatör vardır, ama veri pinleri 3,3 V ile çalışır. HC-05'in TXD pininden gelen 3,3 V'luk sinyali Arduino sorunsuz okur. Tersi yönde ise Arduino'nun 5 V'luk TX sinyalini modülün RXD pinine doğrudan bağlamak yerine bir gerilim bölücü kullan: Arduino TX → 1 kΩ → RXD, RXD → 2 kΩ → GND. Böylece RXD'ye yaklaşık 3,3 V ulaşır.
| HC-05 pini | Görevi | Arduino Uno |
|---|---|---|
| EN (KEY) | AT moduna geçiş | Boş (AT modu için 3,3 V) |
| VCC | Besleme | 5V |
| GND | Toprak | GND |
| TXD | Modülün veri çıkışı | D10 (SoftwareSerial RX) |
| RXD | Modülün veri girişi (3,3 V) | D11, 1 kΩ / 2 kΩ bölücü üzerinden |
| STATE | Bağlıyken HIGH | Boş ya da istenirse bir giriş pini |
LED durumları ve telefonla eşleştirme
Modüle enerji verdiğinde üzerindeki LED hızlı hızlı yanıp söner: bu, bağlantı beklediği anlamına gelir. Android telefonun Bluetooth ayarlarında "HC-05" adlı cihazı bul ve PIN olarak 1234 (olmazsa 0000) girerek eşleştir. Eşleştirme tek başına bağlantı kurmaz; bağlantıyı Bluetooth seri terminal uygulaması açar. Bağlantı kurulunca LED 2 saniyede bir iki kez kısa yanıp söner. LED'in 2 saniye yanıp 2 saniye sönmesi ise modülün AT komut modunda olduğunu gösterir.
Telefonla ilk haberleşme
Aşağıdaki kod Arduino'yu telefonla bilgisayar arasında bir köprüye çevirir: telefondan gelen her karakter Seri Monitör'e, Seri Monitör'e yazdığın her şey telefona gider. Bağlantıyı test etmek için en iyi başlangıçtır:
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}Kodu yükle, Seri Monitör'ü 9600 baud ile aç. Telefonda Google Play'deki Serial Bluetooth Terminal gibi bir uygulamayla HC-05'e bağlan ve bir şeyler yaz: yazdıkların Seri Monitör'de görünecektir. Seri Monitör'den yazdığın metin de telefonda belirir. Bu çalışıyorsa bağlantı, kablolama ve hız ayarı doğru demektir.
Telefondan LED ve röle kontrolü
Şimdi telefondan gelen karakterlere göre işlem yapalım: 1 gelince LED yansın, 0 gelince sönsün. Arduino her komuttan sonra telefona bir cevap da gönderir:
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}Pek çok Bluetooth uygulaması butonlara istediğin karakteri atamana izin verir; böylece telefonda "Aç" ve "Kapat" butonları olan küçük bir kumanda yapabilirsin. LED yerine bir röle modülü bağlarsan aynı kodla bir lambayı ya da fanı telefondan kontrol edersin. İleri, geri, sol ve sağ için F, B, L ve R karakterlerini L298N motor sürücüsüne yönlendirmek de Bluetooth kontrollü bir arabanın temelidir.
AT komutlarıyla modül ayarları
HC-05'in adını, PIN'ini ve haberleşme hızını AT komutlarıyla değiştirebilirsin. AT moduna girmek için modülün üzerindeki küçük butona basılı tutarken (ya da EN pinini 3,3 V'a bağlayıp) enerji ver; LED 2 saniyede bir yavaşça yanıp sönmeye başlar. Köprü kodunda bt.begin(38400) yaz, Seri Monitör'de satır sonunu Both NL & CR (NL ve CR ikisi birden) olarak seç ve komutları gönder:
| Komut | Görevi |
|---|---|
| AT | Bağlantı testi, cevap OK |
| AT+NAME=BlueGrays | Modülün görünen adını değiştirir |
| AT+PSWD="4321" | PIN'i değiştirir (eski sürümlerde tırnaksız) |
| AT+UART=9600,0,0 | Veri modundaki hızı ayarlar |
| AT+ROLE=0 | Slave yapar (1 yazarsan master olur) |
| AT+VERSION? | Yazılım sürümünü gösterir |
| AT+ORGL | Fabrika ayarlarına döndürür |
ESP32 ve Raspberry Pi Pico ile Bluetooth
Klasik ESP32'nin içinde hem klasik Bluetooth hem de BLE vardır; BluetoothSerial kütüphanesiyle HC-05'e gerek kalmadan telefona bağlanabilirsin. ESP32-S3 ve ESP32-C3 ise yalnızca BLE destekler. Raspberry Pi Pico W'da da dahili Bluetooth bulunur. Bluetooth'suz standart Raspberry Pi Pico'ya ise HC-05'i UART pinlerinden bağlarsın; Pico 3,3 V ile çalıştığı için bu sefer gerilim bölücüye gerek yoktur. Modülü VBUS (5V) pininden besle:
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')HC-05 ile proje fikirleri
- Bluetooth kontrollü araba: L298N motor sürücüsü ve iki DC motorla telefondan sürülen bir robot.
- Akıllı ev anahtarı: Röle modülüyle lambaları ve prizleri telefondan aç kapat.
- Renk seçici lamba: Telefondan gönderilen değerlerle bir RGB LED'in rengini ayarla.
- Kablosuz sensör ekranı: DHT11'den okunan sıcaklık ve nemi telefondaki terminale gönder.
- Robot kol: Servo motorları telefondaki kaydırıcılarla kontrol et.
- İki Arduino arasında haberleşme: Bir HC-05'i master, diğerini slave yaparak kablosuz veri gönder.
Sık yapılan hatalar ve çözümleri
- Telefon modülü bulamıyor: iPhone kullanıyorsun, modül başka bir cihaza bağlı ya da modül AT modunda kalmış.
- Anlamsız karakterler geliyor: Hızlar uyuşmuyor; veri modunda genellikle 9600, AT modunda 38400 kullanılır.
- AT komutlarına cevap yok: Modül AT modunda değil, hız 38400 değil ya da satır sonu Both NL & CR seçilmemiş.
- Kod yüklenmiyor: Modül 0 ve 1 numaralı pinlere bağlı; yüklerken çıkar ya da SoftwareSerial kullan.
- Motorlar çalışınca bağlantı kopuyor: Motorlar beslemeyi bozuyor; motorları ayrı bir kaynaktan besle ve modülün beslemesine kondansatör ekle.
- Modül bir süre sonra bozuldu: RXD pinine bölücüsüz 5 V verilmiş olabilir; her zaman 1 kΩ / 2 kΩ bölücü kullan.
HC-05, kablolu projelerini kablosuza taşımanın en kolay yoludur; motor kontrolüyle birleştirdiğinde ilk uzaktan kumandalı robotunu yapmaya hazırsın. BlueGrays uygulamasında L298N ile Bluetooth kontrollü araba ve engelden kaçan robot projelerini devre şemaları ve kodlarıyla bulabilirsin.
Sıkça sorulan sorular
HC-05 iPhone ile çalışır mı?
Hayır. iOS, sıradan uygulamaların HC-05 ve HC-06'nın kullandığı klasik Bluetooth seri bağlantısını kurmasına izin vermez. iPhone için HM-10 gibi bir BLE modülü ya da BLE destekli bir ESP32 kullanmalısın.
HC-05'in menzili ne kadar?
Açık alanda yaklaşık 10 metredir. Duvarlar, metal yüzeyler ve diğer kablosuz cihazlar bu mesafeyi kısaltır. Ev içinde aynı oda ya da bitişik oda için güvenilir çalışır.
HC-05 ile HC-06 arasındaki fark nedir?
İkisi de klasik Bluetooth kullanır. HC-05 hem master hem slave olabilir ve 6 pinlidir; HC-06 yalnızca slave'dir ve genellikle 4 pinlidir. Telefonla haberleşmek için ikisi de yeterlidir; iki Arduino'yu birbirine bağlamak için en az bir HC-05 gerekir.
HC-05'in varsayılan şifresi nedir?
Çoğu modülde 1234, bazılarında 0000'dır. AT modunda AT+PSWD komutuyla değiştirebilirsin; projeni başkalarının kontrol etmesini istemiyorsan varsayılan şifreyi değiştirmek iyi bir fikirdir.
İki Arduino'yu HC-05 ile haberleştirebilir miyim?
Evet. Bir HC-05'i AT+ROLE=1 ile master yap ve AT+BIND komutuyla diğer modülün adresini tanıt; ikinci modül slave olarak kalır. Enerji verildiğinde master otomatik olarak slave'e bağlanır ve iki Arduino seri port üzerinden konuşur.
RXD pini için gerilim bölücü şart mı?
Önerilir. HC-05'in veri pinleri 3,3 V ile çalışır; birçok modül bir süre 5 V'a dayansa da zamanla bozulabilir. 1 kΩ ve 2 kΩ dirençlerle yapılan basit bir bölücü bu riski ortadan kaldırır. TXD pini için bölücüye gerek yoktur.
Bu yazıdan sonra yapabileceğin projeler
Tüm projeleri gör
L298N ile Bluetooth Kontrollü Araba
Arduino ve HC-05 Bluetooth modülü ile telefondan kontrol edilebilen 2WD (iki motorlu, dört tekerlekli) robot araba projesi. L298N motor sürücü kartı üzerinden her bir taraftaki iki motor paralel bağla

Engelden Kaçan Robot
Kendi yolunu bulan akıllı bir araç yapmaya ne dersin? Engelden Kaçan Robot, önündeki ultrasonik sensör sayesinde çevresini sürekli tarar. Bir engelle karşılaştığında durur, servo motoruyla sağına ve s
Diğer yazılar
HC-05 Bluetooth modülünü Arduino'ya güvenle bağlamayı, telefonla eşleştirmeyi, telefondan LED ve röle kontrol etmeyi ve modülün adını, şifresini AT komutlarıyla değiştirmeyi adım adım öğren.

