Başa dön
Arduino ile İki HC05 Bluetooth Modülü Arası İletişim (Master-Slave)

Arduino ile İki HC05 Bluetooth Modülü Arası İletişim (Master-Slave)

Merhaba arkadaşlar, bu Arduino Eğitimi’nde iki HC05 Bluetooth Modülünün Master ve Slave cihazları olarak nasıl yapılandırılacağını, eşleştirileceğini ve iletişim kurulacağını öğreneceğiz. Öncelikle aşağıdaki videoyu izleyebilir ve sonra eğitimi okuyabilirsiniz.

HC-05 Bluetooth Modülünü Yapılandırma – AT Komutları

Öncelikle her iki modülü de yapılandırmamız gerekiyor. Bunu yapmak için AT Komut Moduna geçmemiz gerekiyor ve bunu nasıl yapacağız? Öncelikle, aşağıda açıklanan devre şemasına bakarak Bluetooth modülünü Arduino’ya bağlamamız gerekiyor. Ek olarak yapmamız gereken, Bluetooth modülünün EN pinini 5 volta bağlamak ve Arduino Kartındaki TX ve RX pinlerini değiştirmek.

Bu nedenle Arduino’nun RX pininin, voltaj bölücü aracılığıyla Bluetooth modülünün RX pinine ve Arduino’nun TX pininin Bluetooth modülünün TX pinine bağlanması gerekir. Şimdi küçük düğmeyi EN pininin üzerinde tutarken modüle güç vermeliyiz ve komut moduna bu şekilde gireceğiz. Bluetooth modülü ışığı her 2 saniyede bir yanıp sönüyorsa, AT komut moduna başarılı bir şekilde girdiğimiz anlamına gelir.

Bundan sonra Arduino’ya boş bir kod yüklememiz gerekiyor. Ancak yükleme sırasında RX ve TX hatlarının bağlantısını kesmeyi unutmayın. Sonra Seri Monitörü çalıştırmamız gerekiyor ve orada Bluetooth modülünün varsayılan baud hızı olan “NL ve CR” ve “38400 baud” oranını seçiyoruz. Şimdi komut göndermeye hazırız. Formatlar aşağıdaki gibidir.

Tüm komutlar “AT” ile başlar, ardından “+” işareti, ardından bir <Parametre Adı> ile başlar ve “?” İle biter parametrenin geçerli değerini döndüren işaret veya bu parametre için yeni bir değer girmek istediğimizde “=” işareti kullanırız.

HC05 Bluetooth Modülü Slave Yapılandırması

Örneğin, bir test komutu olan sadece “AT” yazarsak, “OK” mesajını geri almalıyız. Sonra “AT + UART?” Yazarsak 38400 olan varsayılan baud hızını gösteren masajı geri almalıyız. Sonra “AT + ROLE?” yazarsak “+ ROLE = 0” masajını geri alacağız, bu da Bluetooth cihazının bağımlı modda olduğu anlamına geliyor. “AT + ADDR?” Yazarsak Bluetooth modülünün adresini geri alacağız ve şöyle görünmelidir: 98d3: 34: 905d3f.

Şimdi bu adresi, ana cihazı yapılandırırken ihtiyaç duyacağımız için yazmamız gerekiyor. Aslında, adresi almak için slave cihazı yapılandırırken ihtiyacımız olan; adı, baud hızı, eşleştirme şifresi ve benzeri gibi birçok farklı parametreyi değiştirebiliriz. Ancak bu makalemizde bunu yapmayacağız.


Ana Yapılandırma

Tamam şimdi devam edelim ve diğer Bluetooth modülünü ana cihaz olarak yapılandıralım. Öncelikle, slave cihazla aynı değerde(38400) olduğundan emin olmak için baud hızını kontrol edeceğiz. Ardından “AT + ROLE = 1” yazarak Bluetooth modülünü bir ana cihaz(master) olarak ayarlayacağız. Bundan sonra “AT + CMODE = 0” kullanarak bağlantı modunu “sabit adres” olarak ayarlayacağız ve “AT + BIND =” komutunu kullanarak daha önce yazdığımız slave cihazın adresini ayarlayacağız.

Burada adresi yazarken iki nokta üst üste yerine virgül kullanmamız gerektiğini unutmayın. Ayrıca, “AT + CMODE” komutunda “0” yerine “1” girersek önceki adımı atlayabileceğimize dikkat edin; Bu, master’ın iletim aralığındaki herhangi bir cihaza bağlanmasını sağlar, ancak bu daha az güvenli yapılandırmadır. Burada komutların ve parametrelerin tam bir listesini bulabilirsiniz: HC05 AT Komut Listesi

Bununla birlikte, Bluetooth modüllerinin ana ve bağımlı cihazlar olarak çalışması için temel bir konfigürasyon için ihtiyacımız olan tek şey budur ve şimdi bunları normal, veri modunda yeniden bağlar ve modülleri yeniden çalıştırırsak, birkaç saniye içinde master ve köle(slave) bağlanır. Her iki modül de başarılı bir bağlantı olduğunu göstermek için her 2 saniyede bir yanıp sönmeye başlar.


İki HC05 Bluetooth Modülü Arasında İletişim

Pratik örnek için hazırız. Devre şemaları aşağıdadır. Slave‘de bir servo motoru kontrol etmek için master‘da bir potansiyometre kullanacağız. Ve tam tersi, master’da bir LED‘i kontrol etmek için slave’de bir tact switch kullanacağız.

Arduino ile bluetooth modülleri arası iletişim için gerekli bileşenleri aşağıdaki linklerden satın alabilirsiniz:

 


Arduino Kaynak Kodları

Açıklama:  Öncelikle program için gerekli olan pinleri ve bazı değişkenleri tanımlamamız gerekiyor. Kurulum bölümünde, master‘da LED pinini OUT ve LOW olarak ayarladık. Seri iletişimi 38400 baud hızında başlattık. Benzer şekilde, slave‘de de, düğme pimini IN olarak ayarladık, pimin bağlı olduğu servoyu tanımladık ve seri iletişimi aynı baud hızında başlattık.

Döngü bölümünde, her iki kodda, Serial.available () işlevi ile okunacak seri bağlantı noktasında kullanılabilir veri olup olmadığını kontrol edeceğiz ve Serial.read () işlevini kullanarak verileri okuyacağız. Böylece master da, düğme durumu HIGH olduğunda veya düğmeye basıldığında slave‘den gönderilen ‘1‘ karakterini alırsa, LED yanar. Karakter ‘0‘ ise, LED söner.

Servo motor kontrolüne gelince, önce master‘da, potansiyometre değerini okur ve servo için 0 ila 255 arasında uygun bir aralıkta eşleştiririz. Bu değer, servo motoru uygun şekilde döndürmek için kullanan slave‘e gönderilir.

Şimdi Kod’a geçelim.

Master Kod:

/*
 * How to configure and pair two HC-05 Bluetooth Modules
 * by Dejan Nedelkovski, www.HowToMechatronics.com
 * 
 *                 == MASTER CODE ==
 */
#define ledPin 9
int state = 0;
int potValue = 0;
void setup() {
  pinMode(ledPin, OUTPUT);
  digitalWrite(ledPin, LOW);
  Serial.begin(38400); // Default communication rate of the Bluetooth module
}
void loop() {
 if(Serial.available() > 0){ // Checks whether data is comming from the serial port
    state = Serial.read(); // Reads the data from the serial port
 }
 // Controlling the LED
 if (state == '1') {
  digitalWrite(ledPin, HIGH); // LED ON
  state = 0;
 }
 else if (state == '0') {
  digitalWrite(ledPin, LOW); // LED ON
  state = 0;
 }
 // Reading the potentiometer
 potValue = analogRead(A0);
 int potValueMapped = map(potValue, 0, 1023, 0, 255);
 Serial.write(potValueMapped); // Sends potValue to servo motor
 delay(10);
}

Slave Kodu:

/*
 * How to configure and pair two HC-05 Bluetooth Modules
 * by Dejan Nedelkovski, www.HowToMechatronics.com
 * 
 *                 == SLAVE CODE ==
 */
 
#include <Servo.h>
#define button 8
Servo myServo;
int state = 20;
int buttonState = 0;
void setup() {
  pinMode(button, INPUT);
  myServo.attach(9);
  Serial.begin(38400); // Default communication rate of the Bluetooth module
}
void loop() {
 if(Serial.available() > 0){ // Checks whether data is comming from the serial port
    state = Serial.read(); // Reads the data from the serial port
 }
 // Controlling the servo motor
 myServo.write(state);
 delay(10);
 
 // Reading the button
 buttonState = digitalRead(button);
 if (buttonState == HIGH) {
   Serial.write('1'); // Sends '1' to the master to turn on LED
 }
 else {
   Serial.write('0');
 }  
}

Hepsi bu kadar. Dilerseniz 2. makaleye devam edebilirsiniz.

 

2. MAKALE

Yukarıda bulunan ürünler elinizde mevcut değilse eğer, bir arduino seti almanızı öneririz.

Arduino Maker Seti (Kitaplı ve Videolu) 34 Parça 125 Adet

https://robocombo.com/arduino-maker-seti

Ve Diğer Malzemeler:


Adım 2: HC05 Bluetooth Modülü Kablolama!

EN pimine bağlı küçük bir butonu arduinonun ön tarafına yerleştireceğiz. Butona sahip değilseniz, bir sonraki adıma geçin, ancak eğer buton varsa, yukarıdaki kablolamayı uygulayın.

 

Adım Adım Yapılacaklar (NANO)

  • Bluetooth modülünü nano’nun sağına doğru breadboard’a takın.
  • Bluetooth modülünde 5VVCC arası bağlantı kurun.
  • Bluetooth modülünde GND pimini ilişkilendirin.
  • D10TXD‘yi ilişkilendirin.
  • DXRXD‘yi ilişkilendirin.
  • Bluetooth modülünü, breadboard’un ortasındaki buton ile köprüleyin.
  • D2 pimini sağ üst düğme ile ilişkilendirin.
  • Sol alt basma düğmesini 5V ile ilişkilendiren.
  • 1k direnci sağ alttan basma düğmesinden GND‘ye çıkarın.
  • Led’i breadboard’a takın.
  • D8 – LED pozitif.
  • GND – LED negatif.

 

Adım Adım Yapılacaklar (UNO)

  • Bluetooth modülünü nano karşısındaki breadboard’a takın.
  • Bluetooth modülünde 5VVCC arası bağlantı kurun.
  • Bluetooth modülünde GND pimini ilişkilendirin.
  • D10TXD‘yi ilişkilendirin.
  • DXRXD‘yi ilişkilendirin.
  • Led’i breadboard’a takın.
  • D8 – LED pozitif.
  • GND – LED negatif.

Bir sonraki adıma atlayın!

 

 

Ayrıca Bakınız

Arduino Bluetooth ile Uzaktan Kontrollü Araç Projesi

 

Adım 3: Anahtar Pimi Kablolaması

EN pininizde bir düğme yoksa, AT modunu başlatmak için anahtar pinine bir yenileme ile güç vermeniz gerekecektir. Kablolardaki tek değişiklik, pim 9’u anahtar piminize takmaktır. EN pininizde bir düğme varsa, bu adımı atlayın!

 

Adım Adım Yapılacaklar (Mine NANO)

  • Bluetooth modülünü nano’nun sağına doğru breadboard’a takın.
  • Bluetooth modülünde 5VVCC arası bağlantı kurun.
  • Bluetooth modülünde GND pimini ilişkilendirin.
  • Bluetooth ile D9 pinini ilişkilendirin.
  • D10TXD‘yi ilişkilendirin.
  • DXRXD‘yi ilişkilendirin.
  • Bluetooth modülünü, breadboard’un ortasındaki buton ile köprüleyin.
  • D2 pimini sağ üst düğme ile ilişkilendirin.
  • Sol alt basma düğmesini 5V ile ilişkilendiren.
  • 1k direnci sağ alttan basma düğmesinden GND‘ye çıkarın.
  • Led’i breadboard’a takın.
  • D8 – LED pozitif.
  • GND – LED negatif.

 

Adım Adım Yapılacaklar (UNO)

  • Bluetooth modülünü nano karşısındaki breadboard’a takın.
  • Bluetooth modülünde 5VVCC arası bağlantı kurun.
  • Bluetooth modülünde GND pimini ilişkilendirin.
  • Bluetooth ile D9 pinini ilişkilendirin.
  • D10TXD‘yi ilişkilendirin.
  • DXRXD‘yi ilişkilendirin.
  • Led’i breadboard’a takın.
  • D8 – LED pozitif.
  • GND – LED negatif.

 

Bir sonraki adıma atlayın!

 

Görseldeki kırmızı ok işaretleri ile gösterilen turuncu kablolar, üstteki kablolama ile aradaki tek farktır, diğer her şey aynıdır.

 

Adım 4: AT Moduna Girme

HC05’inizde bir düğme varsa

İlk olarak, BluetoothModuleMasterAndSlaveNoCode adlı kodu, şu anda yapılandırmakta olduğunuz bluetooth modülüne bağlı olan arduino’ya yükleyin.

Ardından, düğmeyi basılı tutun ve gücü tekrar açın, ardından düğmeyi bırakın. Bu, bluetooth modülünü, yukarıdaki gif’te görüldüğü gibi yanıp sönmesine ve her 2 saniyede bir kapanmasına neden olan AT moduna geçirmelidir.

 

HC-05’inizde bir düğme yoksa

Öncelikle, şu anda yapılandırmakta olduğunuz bluetooth modülüne bağlı olan arduino’ya MasterAndSlaveBluetoothNoCodeKeyPin adlı kodu aşağıya yükleyin.

Bu, arduino yenilendiğinde HC05 bluetooth modülünün AT moduna girmesine neden olur, bunu yapmak için USB kablosunu arduino’ya takmadan önce, bluetooth modülüne giden güç pimini çıkarın. Şimdi, güç pimini takın ve HC05 bluetooth modülü her 2 saniyede bir yanıp sönüyor olmalı ve modda göstermelidir.

Bu işe yaramazsa, lütfen alttaki eğitimi bakın ve bir sonraki adım için geri dönün.

https://www.instructables.com/id/Modify-The-HC-05-Bluetooth-Module-Defaults-Using-A/

 

Ekler

 

 

 

Adım 5: AT Komutlarına Girme ve Kodu Yükleme!

Slave(Köle) Modülü için

  • Bilgisayarı, yapılandırmak istediğiniz bluetooth modülüne bağlı olan arduino’yu bağlantı noktasına bağlayın.
  • Ekranı Açın.
  • Baud hızı olarak 9600’ü ve hem nl hem de cr‘yi seçin.
  • Şimdi AT yazın ve enter tuşuna basın. Tamam diyen bir mesaj almalısınız, ancak bir hata alırsanız bir kez daha deneyin.
  • İşe yararsa, AT + UART yazın ve baud hızınızı göstermek için enter tuşuna basın. 38400 olmalıdır, eğer öyleyse, devam edin, değilse, bir sonraki adımı deneyin, ardından bu komutu kullanarak tekrar kontrol edin. Baud hızı her iki modül için aynı olmalıdır ve bu genellikle yanlış ayarlandığı için sistem çalışmamaktadır.
  • Sonra AT + ORGL yazın ve enter tuşuna basın.
  • Son olarak, AT + ADDR yazın ve enter tuşuna basın.
  • Seri monitörü kapatın, arduino’yu çıkarın ve yeniden takın ve aşağıdaki B_SlaveLink adlı kodu yükleyin.

 

Ana Modül için

  • Bilgisayarı, yapılandırmak istediğiniz bluetooth modülüne bağlı olan arduino’ya bağlı bağlantı noktasına bağlayın (Slave olan).
  • Yukarıdaki 2-6. Adımları izleyin.
  • Şimdi, slave adresiniz için AT + BIND = 2016,3,250491 yazın. Slave modülü tarafından verilen sütunlar yerine virgüllere dikkat edin.
  • Alternatif olarak, AT + CMODE = 1 yazıp enter tuşuna basabilirsiniz. Bu, menzil içindeki tüm bluetooth modüllerine bağlanır, ancak ikiden fazla modülde çalışmaz.
  • Seri monitörü kapatın, arduino’yu çıkarın ve yeniden takın ve aşağıdaki B-Master adlı kodu yükleyin.
  • Arduino IDE’nin tüm örneklerini kapatın. Bu, herhangi bir bağlantıya karşı koyar ve programın çalışmasını yalnızca başlangıçta takılı olduğu sürece sınırlar.
  • Program şimdi çalışmalıdır. Değilse, kablolarınızı kontrol edin ve bir sonraki adıma bakın.

 

Ekler

 

 

 
 

6. Adım: Hata Ayıklama

Modüller takıldığında otomatik olarak bağlanmalı ve düğmeye basıldığında her iki LED de yanıp sönmelidir. Düzgün çalışma bu şekildedir.

 

Çalışmazsa ne yapmalı!

  • Sadece düğmeye basmak hiçbir işe yaramaz: Kablo tesisatınız yanlış veya kod bozulmuş ve yeniden yüklemeniz gerekiyor olabilir.
  • Düğmeye basılması yalnızca kendisine bağlı olan LED’in yanmasına neden olur.
  • LED’ler daima kapalı veya açık ise: Düğmeniz yanlış bağlanmış.
  • LED’im hala yavaş yanıp sönüyor diyorsanız: 30 saniye fişten çekin ve tekrar takın.
  • Seri monitörde herhangi bir mesaj almıyorum diyorsanız: Bağlandığınız iletişim portunu ve arduino tipinin programladığınız port ile eşleştiğini kontrol edin. Hem nl hem de cr‘nin ayarlandığından ve baud hızının doğru olduğundan emin olun.

Not: Bluetooth modüllerindeki LED’ler bir süre sonra durabilir, bu bluetooth bağlantısının durduğu anlamına gelmez.

 

Hepsi bu kadar. Umarım makalemizi beğenmiş ve yeni bir şeyler öğrenmişsinizdir.

Memnun kaldıysanız aşağıda bulunan “yukarı ok” işaretine tıklayarak +1 puan verebilirsiniz. 

Diğer Güncel Arduino Projeleri için BURAYA TIKLAYABİLİRSİNİZ.

Sizde Robotlara ve Maker’lığa Meraklıysanız Robotik Marketimiz ROBOCOMBO‘yu Ziyaret Edebilirsiniz.

 

Robot El Yapımı – İlginç Arduino Projeleri

Videodaki Robot El Ürünümüzü Satın Almak İsterseniz Bağlantıya Göz Atabilirsiniz.

Okuduğunuz İçin Teşekkürler.

 

Kaynak: howtomechatronics.com/tutorials/arduino/how-to-configure-pair-two-hc-05-bluetooth-module-master-slave-commands/

Kaynak: instructables.com/id/Arduino-Bluetooth-Master-and-Slave-Using-Any-HC-05/