Arduino ile İki HC05 Bluetooth Modül Kullanımı

Arduino ile İki HC05 Bluetooth Modül Kullanımı iki arduino bluetooth haberleşmesi,arduino bluetooth eşleştirme,iki arduino arası bluetooth haberleşme

İki Arduino bluetooth haberleşmesi sağlamak, uzaktan kontrol veya veri izleme gerektiren IoT ve robotik projeleri için son derece kullanışlı ve düşük maliyetli bir çözümdür. İki mikrodenetleyici arasında kablolu veri aktarımı sağlamak için alternatif yöntemleri daha önceki rehberlerimizde detaylıca ele almıştık. İlgili rehberlere aşağıdaki bağlantılardan ulaşabilirsiniz:

Daha önceki çalışmalarımızda, popüler HC-05 Bluetooth Modülünü Arduino ile entegre ederek, bir Android akıllı telefon üzerinden Arduino’yu nasıl kontrol edeceğimizi öğrenmiştik. O projelerimizde HC-05 modülünü varsayılan yapılandırması olan “Slave” (Bağımlı) modda çalıştırmıştık.

Mantıksal Seviye (Logic Level) Uyarısı: HC-05 modülünün besleme gerilimi (VCC) 5V olsa da, haberleşme (RX/TX) pinleri 3.3V mantıksal voltaj seviyesiyle çalışır. Arduino UNO gibi 5V mantıksal çıkış veren bir kart kullanıyorsanız, modülün RX pinine giden sinyali korumak adına mutlaka bir gerilim bölücü direnç ağı veya mantıksal seviye dönüştürücü (logic level shifter) kullanmalısınız. Aksi takdirde modül zamanla kalıcı hasar görebilir.

AT Komutları ile Modül Yapılandırması

İki modülün kendi arasında otomatik olarak eşleşebilmesi için birini Master (Ana), diğerini ise Slave (Bağımlı) olarak yapılandırmamız gerekir. Bu ayarları gerçekleştirmek için modülleri AT Komut Moduna almamız şarttır. Yapılandırma işlemi için öncelikle modülü aşağıdaki şemaya uygun olarak Arduino’ya bağlayın. AT moduna giriş yapabilmek için HC-05 üzerindeki “EN” (veya bazı modüllerde “KEY”) pinini Arduino’nun 5V çıkışına bağlamamız ve Arduino üzerindeki standart RX/TX pinlerini anahtarlamamız gerekmektedir.

Eğer kullandığınız HC-05 modülünün üzerinde küçük bir buton bulunuyorsa, EN pinini harici olarak 5V’a bağlamanıza gerek kalmayabilir. Bu durumda, Arduino’ya güç vermeden önce modül üzerindeki butona basılı tutun ve butonu bırakmadan USB kablosunu bilgisayara bağlayın.

Bağlantı Şeması

Modülleri sırayla yapılandırırken aşağıdaki tekil bağlantı şemasını kullanabilirsiniz:

İki Arduino Bluetooth Haberleşmesi
İki Arduino Bluetooth Haberleşmesi

Haberleşmenin sorunsuz kurulması için Arduino’nun TX pininden çıkan sinyal, 1kΩ ve 2kΩ dirençlerle oluşturulan bir gerilim bölücü üzerinden geçirilerek HC-05’in RX pinine bağlanmalıdır. Modül üzerindeki butona basılı tutarak (veya EN pinine 5V vererek) sisteme güç verdiğimizde modül üzerindeki dahili LED, yaklaşık 2 saniyede bir yavaşça yanıp sönmeye başlayacaktır. Bu yavaş flaşör efekti, modülün AT Komut Moduna başarıyla girdiğini gösterer.

Bu aşamada Arduino kartımıza boş bir taslak (örneğin içi boş setup ve loop barındıran kod) yüklemeliyiz. Yükleme esnasında Arduino’nun RX ve TX pinlerine bağlı olan kabloları sökmeyi unutmayın, aksi takdirde yükleme hatası alırsınız. Yükleme tamamlandıktan sonra Seri Monitörü (Serial Monitor) açın. Arayüzün sağ alt köşesinden haberleşme hızını HC-05’in varsayılan AT modu hızı olan 38400 baud olarak seçin ve satır sonu ayarını da “Both NL & CR” (Hem NL hem CR) şeklinde yapılandırın. Artık AT komutlarını göndermeye hazırsınız.

Göndereceğimiz tüm komutlar standart olarak “AT” ifadesi ile başlar, ardından parametreye bağlı olarak “+” işareti eklenir. Mevcut bir ayarı sorgulamak için komutun sonuna “?”, yeni bir değer atamak için ise “=” operatörü kullanılır.

Örnek Sorgulama ve Atama Komutları:

  • AT+ROLE? (Mevcut rol durumunu sorgular)
  • AT+ROLE=1 (Cihaz rolünü Master olarak atar)

1. Slave (Bağımlı) Modülün Yapılandırılması

Seri Monitör satırına büyük harflerle AT yazıp gönderdiğimizde modülden yanıt olarak OK mesajı almamız gerekir. Bağlantının çalıştığını teyit ettikten sonra sırasıyla şu komutları uygulayalım: – AT+UART? komutunu göndererek varsayılan haberleşme hızını sorgulayalım. Yanıt olarak 38400,0,0 şeklinde baud hızını doğrulayan mesaj dönmelidir. – AT+ROLE? sorgusuyla modülün rolünü kontrol edelim. Yanıt +ROLE:0 ise modül zaten Slave (Bağımlı) moddadır (Eğer 1 ise AT+ROLE=0 komutuyla Slave yapın). – Son olarak AT+ADDR? komutunu göndererek Slave modülün benzersiz fiziksel MAC adresini alalım. Alacağımız adres +ADDR:98d3:34:905d3f formatında olacaktır.

Seri Monitör Slave Yapılandırması

Master modülü yapılandırırken hedef belirtebilmemiz için aldığımız bu benzersiz adresi mutlaka bir kenara not edin. Bu projede sadece güvenli bir eşleşme kurmak adına MAC adresini alıyoruz. İsteğe bağlı olarak AT+NAME veya AT+PSWD komutlarıyla cihaz adını ve eşleşme şifresini de özelleştirebilirsiniz.

2. Master (Ana) Modülün Yapılandırılması

Şimdi ikinci HC-05 modülümüzü AT moduna alarak Arduino’ya bağlayalım. İlk olarak AT+UART? ile bu modülün de baud hızının Slave modülle aynı (38400) olduğundan emin olun. Ardından sırasıyla aşağıdaki komutları uygulayarak Master yapılandırmasını tamamlayın: – AT+ROLE=1 komutunu göndererek modülü Master (Ana Cihaz) moduna alın. – AT+CMODE=0 komutuyla bağlantı modunu “Yalnızca sabit adrese bağlan” (Address Binding) olarak tanımlayın. – AT+BIND=98d3,34,905d3f komutunu kullanarak, az önce not ettiğiniz Slave modülün adresini Master modüle tanımlayın.

Seri Monitör Master Yapılandırması

Önemli Detay: AT+BIND komutunda Slave adresini yazarken iki nokta üst üste (:) işaretleri yerine mutlaka virgül (,) kullanmalısınız. Eğer AT+CMODE=1 komutunu kullansaydık, Master modül etraftaki herhangi bir açık Slave modüle otomatik bağlanırdı. Ancak bu yöntem kararlı bir proje için güvenli değildir; bu yüzden adresi sabitlemek (CMODE=0) en profesyonel yaklaşımdır. Tüm AT komutlarının detaylı teknik listesine resmi dökümandan ulaşabilirsiniz: HC-05 AT Komutları Detaylı PDF Listesi

Böylece her iki modülün de rol ayarları tamamlanmış oldu. Şimdi modülleri AT komut modundan çıkarıp (EN pinlerini boşa alarak) normal veri iletim moduna geçirelim ve sistemi yeniden başlatalım. Birkaç saniye içerisinde modüller birbirini bularak eşleşecektir. Eşleşme başarılı olduğunda her iki modülün üzerindeki LED’ler de yaklaşık 2 saniyede bir eş zamanlı olarak çift flaş şeklinde yanıp sönmeye başlayacaktır.

İki Arduino Arasında Bluetooth Haberleşme Örneği

Yaptığımız bu yapılandırmayı test etmek adına pratik bir uygulama gerçekleştirelim: Master modülün bağlı olduğu Arduino’ya bir potansiyometre, Slave modülün bağlı olduğu Arduino’ya ise bir Servo Motor entegre edeceğiz. Böylece potansiyometreyi çevirerek uzaktaki bir servoyu kablosuz olarak kontrol edebileceğiz. Ek olarak, Slave cihazdaki bir butona basarak Master cihazdaki bir LED’i de kablosuz olarak yakıp söndüreceğiz (Çift yönlü haberleşme).

Devre Şeması

İki Arduino Bluetooth Haberleşme Devre Şeması

Haberleşme Programı Kodları

Kod yapısında öncelikle pin tanımlamalarımızı ve haberleşme değişkenlerimizi oluşturuyoruz. Master (Ana) cihaz tarafında, butondan gelen veriyi okuyup LED durumunu kontrol etmek için pinleri yapılandırıyor ve 38400 baud hızında seri haberleşmeyi başlatıyoruz. Aynı şekilde Slave (Bağımlı) cihaz tarafında juga buton pinini giriş olarak tanımlayıp, servo motor nesnemizi oluşturarak aynı haberleşme hızıyla (38400) bağlantıyı kuruyoruz.

Programın ana döngüsünde (loop), her iki kartta da Serial.available() fonksiyonu ile tampon bellekte okunmayı bekleyen veri olup olmadığını sorguluyoruz. Okunan veriler Serial.read() yardımıyla bir durum değişkenine aktarılır. Slave tarafındaki butona basıldığında Master tarafa gönderilen ‘1’ karakteri LED’i yakarken, buton bırakıldığında gönderilen ‘0’ karakteri ise LED’i söndürür.

Servo kontrolü için ise Master cihaz, potansiyometreden okuduğu 0-1023 arası analog değeri map() fonksiyonuyla 0-255 arasına indirgeyerek seri porttan gönderir. Slave cihaz bu değeri okuyup doğrudan servo motorun açısını (0-180 dereceye eşleyerek) günceller.

1. Master (Ana) Cihaz Yazılımı

2. Slave (Bağımlı) Cihaz Yazılımı

Projenizde kullanabileceğiniz orijinal HC-05 teknik veri kitapçığına (datasheet) ulaşmak için buradaki üretici bağlantısını inceleyebilirsiniz.

Yorum yapma özelliği, forum tarafından gelen istek sebebiyle kapatılmıştır. Lütfen tartışmalar ve sorularınız için topluluk forumumuza katılın.