Yazılardaki ürünleri komponentci.net'te inceleyebilir, hemen sipariş verebilirsiniz.komponentci.net →
KomponentciBlog Mağaza

HM-10 BLE Modülü: HC-05 Farkı, iPhone Uyumu ve Bağlantı

HM-10 BLE Modülü: HC-05 Farkı, iPhone Uyumu ve Bağlantı
Kısa cevap

HM-10, Texas Instruments CC2541 çipli bir Bluetooth 4.0 BLE (düşük enerjili Bluetooth) seri modülüdür; HC-05'ten temel farkı klasik Bluetooth yerine BLE kullanmasıdır. Bu sayede iPhone ve iPad ile haberleşebilir, HC-05 ise iOS cihazlara bağlanamaz. RXD pini 3,3V lojik çalıştığı için Arduino'nun 5V TX sinyali gerilim bölücüyle düşürülmelidir.

Arduino projenizi telefondan kontrol etmek istediğinizde ilk akla gelen modül HC-05'tir. Ancak HC-05 iPhone ile çalışmaz ve pille beslenen projelerde fazla enerji harcar. Bu yazıda HM-10 BLE modülünün ne olduğunu, HC-05'ten hangi noktalarda ayrıldığını, iPhone ile nasıl haberleştiğini, temel AT komutlarını ve Arduino'ya güvenli bağlantısını anlatıyoruz. Bluetooth ile yeni tanışan hobiciler ve öğrenciler için hazırlandı.

HM-10 nedir?

HM-10, Texas Instruments CC2541 çipi üzerine kurulu, Bluetooth 4.0 BLE ile seri (UART) veri aktaran küçük bir kablosuz haberleşme modülüdür. Arduino tarafında sıradan bir seri port gibi görünür: modüle yazdığınız baytlar telefona, telefondan gelen baytlar Arduino'ya aktarılır.

Piyasada iki biçimde bulunur: çıplak HM-10 modülü ve onu pin başlıklı bir taşıyıcı karta oturtan sürüm. HM-10 CC2541 Bluetooth 4.0 modülü ve HM10 CC2541 4.0 Bluetooth modülü gibi taşıyıcı kartlı sürümlerde genellikle VCC, GND, TXD, RXD, STATE ve BRK pinleri bulunur. Taşıyıcı kartların çoğunda 3,3V regülatör olduğu için VCC'ye 5V verilebilir; yine de kartınızın üzerindeki yazıyı ve ürün sayfasını kontrol edin.

BLE'de veri, "servis" ve "karakteristik" denen kayıtlar üzerinden taşınır. Orijinal HM-10 yazılımında seri veri FFE0 servisi içindeki FFE1 karakteristiğinden geçer. Telefon uygulaması bu karakteristiğe yazar ve buradan bildirim alır.

HM-10 ile HC-05 arasındaki fark nedir?

HM-10 BLE (Bluetooth Low Energy) kullanır, HC-05 ise klasik Bluetooth 2.0 + EDR ve seri port profili (SPP) kullanır; bu iki teknoloji birbiriyle doğrudan konuşmaz. Seçimi belirleyen asıl soru, karşı tarafta hangi cihazın olacağıdır.

ÖzellikHM-10HC-05
Bluetooth türü4.0 BLE2.0 + EDR (klasik)
Veri taşımaGATT, FFE0 servisi / FFE1 karakteristiğiSPP (sanal seri port)
iPhone ve iPadUygulama üzerinden çalışırÇalışmaz
AndroidBLE destekli uygulamaylaSPP uygulamalarıyla
Bilgisayarda COM portGenellikle oluşmazEşleşince oluşur
Enerji tüketimiDüşük, pil dostuDaha yüksek
Uygun veriKısa komut ve sensör değerleriSürekli seri akış
Varsayılan baud hızı96009600 (veri), 38400 (AT modu)

Sürekli veri akışı gereken, Android ya da bilgisayarla çalışan projelerde HC-05 Bluetooth seri modül hâlâ pratik bir seçimdir. HC-05'in kurulumunu Arduino ile Bluetooth kontrol: HC-05 yazımızda ayrıntılı anlattık. iPhone desteği ya da pil ömrü önemliyse HM-10 tercih edilir.

HM-10 iPhone ile çalışır mı?

Evet, HM-10 iPhone ve iPad ile çalışır; çünkü iOS, BLE cihazlarına uygulamaların doğrudan bağlanmasına izin verir. HC-05'in kullandığı klasik seri port profili ise iOS'ta yalnızca Apple'ın MFi sertifikalı aksesuarlarına açıktır, bu yüzden HC-05 iPhone'da görünmez.

Dikkat edilmesi gereken nokta şudur: HM-10, iPhone'un Ayarlar > Bluetooth menüsünden eşleştirilmez. Bağlantıyı bir uygulama kurar. Deneme için LightBlue ya da nRF Connect gibi genel amaçlı BLE uygulamaları kullanılabilir. Uygulamada modülü bulup bağlandıktan sonra FFE1 karakteristiğine metin yazarsınız; bu metin Arduino'nun seri portuna düşer. Kendi uygulamanızı yazacaksanız iOS'ta Core Bluetooth çatısı kullanılır.

HM-10 Arduino'ya nasıl bağlanır?

HM-10, Arduino Uno'ya dört kabloyla bağlanır: VCC 5V'a, GND GND'ye, TXD D10'a ve RXD bir gerilim bölücü üzerinden D11'e. Gerilim bölücü şarttır; modülün RXD girişi 3,3V lojik çalışır ve 5V sinyal onu zamanla bozabilir.

  1. Arduino'nun USB kablosunu çıkarın; bağlantıyı enerjisiz yapın.
  2. HM-10'un VCC pinini Arduino'nun 5V pinine, GND pinini GND pinine bağlayın. Çıplak modül kullanıyorsanız 5V yerine 3,3V verin.
  3. HM-10'un TXD pinini Arduino'nun D10 pinine bağlayın. Modülün 3,3V çıkışını Arduino doğrudan okuyabilir.
  4. Arduino'nun D11 pininden 1 kΩ direnç ile HM-10'un RXD pinine gidin; RXD noktasını 2 kΩ dirençle GND'ye bağlayın.
  5. STATE ve BRK pinlerini şimdilik boş bırakın.
  6. Arduino'yu bağlayın; modülün LED'i bağlantı beklerken yanıp söner, bir cihaz bağlanınca çoğu kartta sabit yanar.
HM-10 BLE modülü Arduino Uno bağlantı şeması: VCC 5V pinine, GND GND pinine, TXD D10 pinine; Arduino D11 pini 1 kΩ direnç üzerinden RXD pinine, RXD noktası 2 kΩ dirençle GND'ye
TXD doğrudan D10'a gider; D11'den gelen 5V sinyal 1 kΩ ve 2 kΩ bölücüyle yaklaşık 3,3V'a indirilip RXD'ye verilir.

Bu bölücü 5V'u yaklaşık 5 × 2 / (1 + 2) = 3,33V'a indirir. Direnç yerine lojik gerilim seviye dönüştürücü (3,3V-5V) de kullanabilirsiniz; bu yöntem daha temiz bir sinyal verir. Bağlantıda örneğin Arduino Uno R3 CH340 ve dişi-erkek jumper kablolar yeterlidir.

HM-10 AT komutları nasıl kullanılır?

AT komutları, HM-10'a hiçbir cihaz bağlı değilken seri porttan gönderilen ve modülün adını, baud hızını ya da rolünü değiştiren metin komutlarıdır. Bağlantı kurulduktan sonra modül AT komutlarını yorumlamaz, gelen her şeyi karşı tarafa iletir.

Arduino'yu bilgisayar ile HM-10 arasında köprü yapan şu kısa kodla komutları Seri Monitör'den gönderebilirsiniz:

#include <SoftwareSerial.h>

SoftwareSerial ble(10, 11); // RX = D10, TX = D11

void setup() {
  Serial.begin(9600);
  ble.begin(9600);          // HM-10 varsayilan hizi
  Serial.println("Hazir, AT komutu yazin.");
}

void loop() {
  if (ble.available()) Serial.write(ble.read());
  if (Serial.available()) ble.write(Serial.read());
}

Seri Monitör'ü 9600 baud'a ayarlayın. Orijinal HM-10 yazılımı komutları satır sonu olmadan bekler; bu yüzden "Satır sonu yok" seçeneğiyle başlayın. Sık kullanılan komutlar:

  • AT: Bağlantıyı sınar, yanıt OK olmalıdır.
  • AT+NAME? ve AT+NAMEsera1: Modül adını okur ya da "sera1" yapar.
  • AT+BAUD?: Baud hızını sorar; orijinal yazılımda 0 = 9600, 4 = 115200 anlamına gelir.
  • AT+ROLE?: 0 çevre birim (telefon bağlanır), 1 merkez (modül başka bir BLE cihazına bağlanır) demektir.
  • AT+ADDR?: Modülün Bluetooth adresini verir.
  • AT+RESET ve AT+RENEW: Yeniden başlatır ya da fabrika ayarlarına döner.

Baud hızını değiştirdikten sonra köprü kodundaki ble.begin() değerini de güncellemeyi unutmayın; aksi hâlde modülle bir daha konuşamazsınız.

HM-10 kullanırken nelere dikkat edilmeli?

En sık sorunlar klon yazılımlar, lojik gerilim ve paket boyutundan çıkar. Aşağıdaki maddeler arıza aramayı kısaltır:

  • Klon modüller: CC41-A ya da BT05 yazılımlı kartlar HM-10 adıyla satılabilir. Bunlar çoğu zaman komutları "NL ve CR" satır sonuyla bekler ve bazı komutları farklı yorumlar.
  • 3,3V lojik: ESP32 gibi 3,3V kartlarda gerilim bölücüye gerek yoktur; RXD ve TXD doğrudan bağlanır.
  • Paket boyutu: BLE 4.0'da tek bildirimde genellikle 20 bayt taşınır. Uzun metinler parçalanarak gelir; alıcı tarafta satır sonu karakterine göre birleştirin.
  • Menzil: Anten çevresini metal kutu ve kablolardan uzak tutun.

HM-10 ve diğer kablosuz modüllerin tamamını kablosuz haberleşme kategorisinde bulabilirsiniz. Projeniz zaten ESP32 kullanıyorsa ek modüle gerek kalmayabilir; ESP32'de BLE dahili olarak gelir. Bunun için ESP32 başlangıç rehberi yazımıza göz atabilirsiniz.

Sık sorulan sorular

HM-10 telefonun Bluetooth ayarlarından eşleştirilir mi?

Hayır, HM-10 telefonun Bluetooth ayarları menüsünden eşleştirilmez. BLE cihazlarına bağlantıyı uygulamanın kendisi kurar. Bu yüzden önce LightBlue ya da nRF Connect gibi bir BLE uygulaması açın, cihaz listesinde modülün adını bulun ve uygulama içinden bağlanın. Ayarlar menüsünde modülü göremiyorsanız bu bir arıza değildir; BLE cihazlarının çoğu orada listelenmez.

HM-10 ile HC-05 birbirine bağlanabilir mi?

Hayır, HM-10 ile HC-05 birbirine bağlanamaz. HM-10 yalnızca BLE, HC-05 ise yalnızca klasik Bluetooth konuşur ve bu iki protokol aynı radyo bandını kullansa da uyumlu değildir. İki Arduino'yu kablosuz haberleştirmek istiyorsanız iki tarafta aynı modülü kullanın: iki HC-05 ya da biri merkez rolüne ayarlanmış iki HM-10.

HM-10 için hangi baud hızı kullanılır?

HM-10'un fabrika ayarı 9600 baud'dur ve çoğu proje için yeterlidir. Daha hızlı aktarım gerekirse AT+BAUD komutuyla yükseltilebilir, ancak Arduino Uno'daki SoftwareSerial kütüphanesi yüksek hızlarda veri kaçırabilir. Hızı değiştirdikten sonra Arduino kodundaki değeri de aynı hıza ayarlayın. Modül yanıt vermiyorsa farklı hızları tek tek deneyerek mevcut ayarı bulabilirsiniz.

HM-10 ESP32 ile kullanılabilir mi?

Evet, HM-10 ESP32'nin donanım seri portlarından birine (örneğin UART2) doğrudan bağlanabilir. ESP32 3,3V lojik çalıştığı için gerilim bölücüye gerek yoktur. Yine de çoğu durumda HM-10'a ihtiyaç kalmaz; ESP32'nin kendi BLE donanımı aynı işi ek modül olmadan yapar. HM-10, ESP32'de daha çok hazır bir BLE köprüsü isteyen ve BLE kodu yazmak istemeyenler için anlamlıdır.

Modülümün klon olduğunu nasıl anlarım?

Modülün klon olup olmadığını en kolay AT komutlarına verdiği yanıtla anlarsınız. Orijinal HM-10, satır sonu olmadan gönderilen AT komutuna OK der ve AT+VERR? ile sürüm bilgisini döndürür. Yanıt yalnızca satır sonu eklendiğinde geliyorsa ya da sürüm komutu tanınmıyorsa büyük olasılıkla klon yazılım vardır. Klonlar çalışır, ancak komut listesi farklı olabilir.

Özet

  • HM-10, CC2541 çipli bir Bluetooth 4.0 BLE seri modülüdür ve Arduino'da sıradan bir seri port gibi kullanılır.
  • HC-05 klasik Bluetooth kullanır ve iPhone ile çalışmaz; HM-10 ise uygulama üzerinden iPhone ile çalışır.
  • Bağlantı: VCC 5V, GND GND, TXD D10, RXD ise 1 kΩ + 2 kΩ bölücü üzerinden D11.
  • AT komutları yalnızca bağlantı yokken çalışır; orijinal yazılım satır sonu beklemez.
  • BLE'de tek bildirim genellikle 20 bayt taşır; uzun mesajlar parçalanarak gelir.

Bu yazıdaki ürünler

Diğer yazılar