Arduino'ya Bluetooth eklemenin klasik yolu HC-05 gibi seri (UART) Bluetooth modülleridir: modülün TX ucu Arduino'nun RX'ine, RX ucu bir gerilim bölücü üzerinden Arduino'nun TX'ine bağlanır ve telefondan gönderilen karakterler Serial ile okunur. Daha modern yol ise Bluetooth'u dahili olan ESP32'dir; BluetoothSerial ya da BLE kütüphanesiyle ek modül gerekmeden telefonla haberleşir. Klasik Bluetooth modülleri iPhone ile çalışmaz; iPhone için BLE gerekir.
Telefondan bir robot arabayı yönetmek, bir LED şeridin rengini değiştirmek ya da bir sensörün verisini telefonda görmek için en kolay kablosuz yöntem Bluetooth'tur. Bu rehberde Arduino'ya seri Bluetooth modülü bağlamayı ve dahili Bluetooth'lu ESP32 ile aynı işi ek modül olmadan yapmayı anlatıyoruz.
Bluetooth ile Arduino nasıl haberleşir?
HC-05 ve HC-06 gibi modüller, telefondan Bluetooth ile gelen veriyi seri port (UART) üzerinden Arduino'ya aktarır; Arduino açısından bu, USB kablosuyla seri monitörden veri gelmesiyle aynıdır. Telefon tarafında bir "Bluetooth seri terminal" uygulaması ya da düğmeli hazır kontrol uygulamaları kullanılır. ESP32 ise Bluetooth'u çipin içinde barındırır; ayrıca modül gerekmez.
Klasik Bluetooth ve BLE farkı
| Özellik | Klasik Bluetooth (SPP) | Bluetooth Low Energy (BLE) |
|---|---|---|
| Örnek | HC-05, HC-06, ESP32 BluetoothSerial | HM-10, ESP32 BLE |
| Enerji tüketimi | Daha yüksek | Çok düşük |
| Veri modeli | Sürekli seri veri akışı | Servis ve karakteristikler |
| Android | Destekler | Destekler |
| iPhone | Seri profil desteklenmez | Destekler |
HC-05 Arduino'ya adım adım nasıl bağlanır?
- Besleme: Modülün VCC ucunu 5V'a, GND'yi GND'ye bağlayın (modül kartı 3,3V regülatörlüdür; kartın etiketini kontrol edin).
- TX → RX: Modülün TX ucunu Arduino'nun yazılımsal seri port RX pinine (ör. D10) bağlayın.
- RX ← TX (gerilim bölücüyle): Modülün RX girişi 3,3V seviyesindedir. Arduino'nun TX pinini (ör. D11) 1 kΩ ve 2 kΩ dirençlerden oluşan bir gerilim bölücüyle modülün RX'ine bağlayın ya da bir 3,3V-5V lojik seviye dönüştürücü kullanın.
- Kod: SoftwareSerial bt(10, 11); bt.begin(9600); ile seri portu başlatın. bt.available() ile gelen karakteri okuyun; örneğin "1" gelirse LED'i yakın, "0" gelirse söndürün.
- Eşleştirme: Telefonda Bluetooth ayarlarından modülü bulun ve eşleştirin (varsayılan şifre genellikle 1234 ya da 0000'dır), ardından terminal uygulamasından bağlanıp karakter gönderin.
Yükleme sırasında modül donanımsal seri porta (D0-D1) bağlıysa kod yüklenmez; bu yüzden yazılımsal seri port kullanmak ya da yüklerken modülü ayırmak gerekir. Gerilim bölücü hesabını Ohm kanunu rehberimizde anlattık.
AT komutları ile ayar
HC-05, AT moduna alındığında (modüle göre EN/KEY pini HIGH yapılarak ya da butona basılı tutularak açılır) seri port üzerinden komutlarla ayarlanır: AT+NAME ile cihaz adı, AT+PSWD ile eşleştirme şifresi, AT+UART ile haberleşme hızı değiştirilir. AT modunda haberleşme hızı genellikle 38400'dür. Komutların tam listesi ve söz dizimi modülün belgesinde yer alır.
ESP32 ile ek modülsüz Bluetooth
ESP32'de klasik Bluetooth ve BLE dahilidir; BluetoothSerial kütüphanesiyle birkaç satırda telefonla seri haberleşme kurulur.
- Kodda BluetoothSerial SerialBT; tanımlayın ve setup() içinde SerialBT.begin("ESP32-Kontrol"); çağırın.
- Telefonda "ESP32-Kontrol" adlı cihazı eşleştirin.
- SerialBT.available() ve SerialBT.read() ile gelen veriyi okuyun, SerialBT.println() ile telefona veri gönderin.
- iPhone ile çalışmak için BLE kütüphanesiyle bir servis ve karakteristik tanımlayın.
Uygun kartlar: ESP32 30 pin geliştirme kartı ve kendi tasarımınız için ESP32-WROOM-32E modülü. Başlangıç için ESP32 rehberimize, kart karşılaştırması için ESP32 ve ESP8266 farkı yazımıza bakın.
Bluetooth ses modülleri
Telefondan müzik çalmak için seri modüller değil, Bluetooth ses alıcı modülleri kullanılır; ör. XY-WRBT kumandalı Bluetooth ses alıcı modülü ve BK6988 Bluetooth 5.0 modülü. Bunların bir amfiye bağlanmasını TPA3116 Bluetooth amfi yazımızda anlattık.
Sık sorulan sorular
HC-05 ile HC-06 farkı nedir?
HC-05 hem ana (master) hem bağımlı (slave) modda çalışabilir ve başka bir modüle kendisi bağlanabilir. HC-06 yalnızca bağımlı modda çalışır; telefon ona bağlanır.
Bluetooth modülü iPhone ile çalışır mı?
HC-05 ve HC-06 gibi klasik seri Bluetooth modülleri iPhone ile seri haberleşme yapamaz. iPhone için HM-10 gibi BLE modülleri ya da ESP32'nin BLE özelliği kullanılmalıdır.
Bluetooth menzili ne kadardır?
Bu tür modüllerde menzil açık alanda genellikle 10 metre civarındadır. Duvarlar, metal yüzeyler ve diğer kablosuz cihazlar menzili kısaltır.
Modül eşleşiyor ama veri gelmiyor, neden?
TX ve RX'in çapraz bağlanmadığı, haberleşme hızının (baud) iki tarafta farklı olduğu ya da telefonda yanlış uygulama ile bağlanıldığı durumlarda veri gelmez. Bağlantıları ve baud hızını kontrol edin.
Bluetooth mu, Wi-Fi mı kullanmalıyım?
Yakın mesafede telefonla doğrudan kontrol için Bluetooth basittir. Evin her yerinden ya da internetten erişim gerekiyorsa Wi-Fi daha uygundur; bkz. ESP8266 ve NodeMCU rehberimiz.
Özet
- HC-05 gibi modüller Bluetooth verisini seri porttan Arduino'ya aktarır.
- Modülün RX girişi 3,3V'tur; Arduino TX'i gerilim bölücüyle bağlanır.
- AT komutlarıyla ad, şifre ve hız ayarlanır.
- ESP32'de Bluetooth dahilidir; BluetoothSerial ve BLE ile kullanılır.
- iPhone için BLE gereklidir.