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!