#54 Arduino Bluetooth Modülü HC-05 ve HC-06
Merhabalar, bu yazımızda Arduino Bluetooth Modülü HC-05 ve HC-06 hakkında bilgi vereceğim. Arduino’ da kullanılan bluetooth modülleri nelerdir? HC-05 ve HC-06 arasındaki farklar nelerdir? HC-05 AT komutları nasıl kullanılır? Rx pinine nasıl 3.3 volt verebiliriz. HC-05 modülü devre bağlantısı nasıl yapılır? Bu soruların cevabını bu konuda işleyeceğiz.
Arduino programı ayrıntılı kod kısmı, devre bağlantı şeması, devre kurulumu detaylı anlatımı ve devre çalışma videosu şu şekildedir.
ARDUINO BLUETOOTH MODÜLÜ HC-05 ve HC-06
Bluetooth modülü, kablolu bir bağlantı kurmadan iki cihazın birbiri ile iletişim kurmasına olanak tanır. Seri Port (UART) üzerinden çalıştığı için pek çok cihaza bağlanabilir ve Arduino ile de kolaylıkla kullanılabiliriz. Bluetooth modülü ve Arduino kullanarak cihazları telefonumuz veya bilgisayarımızdan kontrol edebiliriz.
Piyasada bluetooth modülleri olarak HC-05, HC-06, HM-10 olarak çeşitleri vardır. HM-10, Bluetooth 4.0’ı destekleyen bir modül olup, 2.4GHz frekansında haberleşme yapmaktadır. Açık alanda yaklaşık 30 metrelik bir haberleşme mesafesine sahiptir. HC-05, HC-06 ve HM-10 modülleri görünüş itibariyle birbirlerine çok benzemektedirler.
HC-05 ve HC-06 modüllleri, Bluetooth 2.0’ı destekler ve 2.4 GHz frekansında haberleşme yapmaktadır. Açık alanda yaklaşık 10 metrelik bir haberleşme mesafesine sahiptir. HC-05 modülü ile HC-06 modülü özellik açısından da birbirleri ile aynıdır.
HC-05 ve HC-06 Bluetooth Modülü Özellikleri:
• Bluetooth Protokolü: Bluetooth 2.0+EDR(Gelişmiş Veri Hızı)
• 2.4GHz haberleşme frekansı – 10 Metre Haberleşme Mesafesi
• Hassasiyet: ?-80 dBm
• Çıkış Gücü: ?+4 dBm
• Asenkron Hız: 2.1 MBps/160 KBps
• Senkron Hız: 1 MBps/1 MBps
• Güvenlik: Kimlik Doğrulama ve Şifreleme
• Çalışma Gerilimi: 1.8-3.6V(Önerilen 3.3V)
• Akım: 50 mA
• Boyutları: 43x16x7mm
Genellikle HC-05 modülü 6 pinli olup HC-06 modülü 4 pinlidir. Piyasada 4 pinli HC-05 ile 6 pinli HC-06 modüllerine rastlamakta mümkündür. Kullanım amaçlı temel fark ise, HC-05 modülü hem master hem de slave modunda kullanılabilmektedir. HC-06 ise, yalnızca slave modda kullanılabilir. Peki master ve slave mod nedir?
Master Mod: Hem kendisine gelen bağlantıları kurabilir, hem de kendisi bir bağlantı oluşturabilir.
Slave Mod: Sadece kendisine gelen bağlantıları kurabilir. Kendisi bağlantı oluşturamaz. Yani ilk iletişimi hiçbir zaman kendisi kuramaz.
HC-05 modüllerinin bazılarında sağ alt köşesinde küçük bir buton bulunur. HC-05 Modülündeki Buton Ne İşe Yarar? Ne İçin Kullanılır
Bu buton modülü, AT modda çalıştırmak içindir. AT modu, ayar modudur. Modüle enerji verildiği sırada butona basılı tutulursa modül AT moduna geçer. Modül üzerindeki led, 2 saniye aralıklarla yanıp sönmeye başlar. Böylece modül, Arduino ile komut almaya hazır demektir. Modülün enerjisini kesip butona basmadan tekrar enerji verdiğinizde modül AT modundan çıkacaktır. Buton olmayan modüllerde AT moduna geçmek için “KEY” pinini (EN pini) VCC’ye bağlayabilirsiniz. Bu buton, AT moduna geçmek için kolaylık olacağından modül satın alınırken butonlu olmasına dikkat edilmelidir. Ayrıca HC-05 modülü HC-06 modülüne göre daha avantajlı olduğundan yine satın alırken HC-05 modülünü alabilirsiniz. Biz de aşağıdaki yazılarımızı artık HC-05 modülüne göre anlatmaya çalışacağız.
HC-05 Modül üzerinde bir adet LED bulunmaktadır. LED’in durumu modülün hangi işlemi yaptığını göstermektedir. Modül enerjilendiği zaman, eşleşme modunda başlar. Eşleşme modunda LED hızla yanıp söner. Modül bir cihazla eşleşirse LED, 1 kez hızlı yanıp söner ve ardından 2 saniye sönük kalır. Modül eşleşen cihaza bağlı kaldığı süre bu durum devam eder.
HC-05 modülü üzerinde 6 adet pin bulunmaktadır. Bu pinler şunlardır.
STATE : Modülün durumunu belirtir. Eşleşme olduğu zaman HIGH, diğer durumlarda LOW durumundadır. İstenilirse direnç+LED bağlantısı yapılarak eşleşme olduğunda LED diyotun yanması, bağlantı olmadığında led diyotun sönük kalması sağlanabilir.
RXD : Veri alma pini. Mikrodenetleyicide (Arduino) TX veri gönderme pinine bağlanmalıdır.
TXD : Veri gönderme pini. Mikrodenetleyici (Arduino) üzerinde RX veri alma pinine bağlanmalıdır
GND : Eksi pini. Toprak pini.
VCC : Voltaj giriş pini. 3.3V ile 6V arası voltaj uygulanabilir.
EN : Etkinleştirme pini. AT modu kullanılacağı zaman Arduino da 3.3V pinine bağlanarak enerji verilmelidir. EN pinine 3.3 volt bağlanıldığı zaman modül AT moduna geçer. Bu durum, sürekli butona basmak ile aynı şeydir.
Arduino ile bluetooth modülünün veri alışverişini yapabilmesi için RX ve TX pinleri ters olarak eşleştirilmelidir. Böylece biri veri gönderirken diğeri alabilir.
Bluetooth modülleri VCC girişi 3.6 ile 6 volt arasındaki gerilimle çalışır. Ancak TX ve RX pinleri 3.3 voltla çalışır. Bluetooth üzerindeki TX pininden Arduino Rx pinine 5 volt gittiğinde Arduino için problem teşkil etmeyecektir fakat Arduino Tx pininden bluetooth Rx pinine 5 volt gelirse bluetooth modülü zarar görebilir. Bunu önlemek için bluetooth modülüne gelen RX pinine gerilim bölücü bir devre yapılarak 3.3 volt gelmesi sağlanır. Böylece modül korunmuş olur. Aşağıdaki devrede basit bir gerilim bölücü devre görülmektedir. Birbirine seri bağlı 1 kΩ ve 2.2 kΩ direnç görülmektedir. Burada amaç dirençlerin üzerinde düşen gerilimden faydalanmaktır. Burada kullanılan dirençlerden birinin değeri, diğerinin 2 katı olacak şeklinde olduğu görülmektedir. Siz de bu hesaba göre farklı direnç değerleri kullanabilirsiniz. Peki bu nasıl hesaplanır?
Ohm kanununa göre seri bağlı dirençler üzerinden geçen akım ile dirençlerin toplamının çarpımı bize devre voltajını verir. Buradan önce akımı bulalım. (direnç değerleri kΩ olduğu için ohm değerine dönüştürüyoruz. Her bir direnç değerini 1000 ile çarpıyoruz.)
I = U / Rtoplam dersek I = 5 / (1000+2200) den I = 0,0015625 A. = 1,5625 miliAmper olarak bulabiliriz. Akım değeri belli olduğuna göre her bir direnç üzerinde düşen gerilimi bulabiliriz.
U1 = I x R1 dersek U1 = 0,0015625 x 1000 = 1,5625 Volt.
U2 = I x R2 dersek U2 = 0,0015625 x 2200 = 3,4375 Volt.
Sağlaması: Toplam Gerilim U = U1 + U2 ise 1,5625 + 3,4375 = 5 Volt olur.
Dirençlerin seri bağlanması ve gerilim düşümü hakkında ayrıntılı bilgiyi aşağıdaki makalelerimizde bulabilirsiniz.
https://egitim.ahmetcandemir.com.tr/seri-devreler-kirsof-gerilimler-kanunu
https://egitim.ahmetcandemir.com.tr/olcu-aleti-ile-seri-devrelerde-akim-ve-gerilim-olcme
2.2 kΩ direnç ucundan Rx pinine 3,43 volt gerilim gidecektir. Bu sayede modül korunmuş olacaktır.
Tüm Bluetooth modülleri, bağlandıkları cihazla seri iletişim kurarlar. Arduino’ da seri iletişim pinleri 0 ve 1 pinleridir. 0 ve 1 pinleri aynı zamanda Arduino’ nun USB üzerinden bilgisayarla iletişim kurduğu seri portlardır. Eğer Arduino’ nun aynı anda hem bilgisayarla hem de bluetooth modülü ile iletişim kurmasını istersek bir çakışma olacaktır. Bunu önlemek için Arduino içerisine ve kodlara SoftwareSerial.h kütüphanesi eklenerek ikinci bir seri iletişim portu açabiliriz.
Mega ve Mega 2560 kartlarındaki tüm pinler bu kütüphane tarafından desteklenmemektedir. Bu nedenle yalnızca aşağıdaki pinler RX için kullanılabilir: 10, 11, 12, 13, 14, 15, 50, 51, 52, 53, A8 (62), A9 (63), A10 (64), A11 (65), A12 (66), A13 (67), A14 (68), A15 (69). Leonardo ve Micro kartlarda RX için şu pinler kullanılabilir: 8, 9, 10, 11, 14 (MISO), 15 (SCK), 16 (MOSI).
ARDUINO BLUETOOTH MODÜLÜ İLE HABERLEŞME
HC-05 bluetooth modülüne AT komutları veri gönderip alabiliriz. AT komutları ile bluetooth modülünün her bir özelliğine erişebiliriz ve bazı ayarlarını değiştirebiliriz. Aşağıda AT komutları ve işlevlerini görebiliriz.
1 AT KOMUT BAŞLANGICI Test
2 AT+RESET Cihazı Sıfırla
3 AT+VERSION Querry Fabrika yazılımı sürümü
4 AT+ORGL Ayarları Fabrika Varsayılanlarına Geri Yükle
5 AT+ADDR Cihaz Bluetooth Adresini Sorgula
6 AT+NAME Cihaz Adını Sorgula/Ayarla
7 AT+RNAME Uzak Bluetooth Cihazının Adını Sorgula
8 AT+ROLE Cihaz Rolünü Sorgula/Ayarla
9 AT+CLASS Cihazın Sınıfını Sorgula/Ayarla CoD
10 AT+IAC Sorgulama/Sorgulama Erişim Kodunu Ayarlama
11 AT+INQM Sorgulama/Ayarlama Sorgulama Erişim Modu
12 AT+PSWD Eşleştirme Parolasını Sorgula/Ayarla
13 AT+UART Seri Haberleşme parametresini sorgula/ayarla
14 AT+CMODE Bağlantı Modunu Sorgula/Ayarla
15 AT+BIND Bağlama Bluetooth Adresini Sorgula/Ayarla
16 AT+POLAR LED Çıkış Polaritesini Sorgula/Ayarla
17 AT+PIO Bir Kullanıcı G/Ç pinini Ayarla/Sıfırla
18 AT+MPIO Çoklu Kullanıcı G/Ç pinini Ayarla/Sıfırla
19 AT+MPIO? Kullanıcı I/O pinini sorgula
20 AT+IPSCAN Tarama Parametrelerini Sorgula/Ayarla
21 AT+SNIFF SNIFF Enerji Tasarrufu Parametrelerini Sorgula/Ayarla
22 AT+SENM Güvenlik ve Şifreleme Modlarını Sorgula/Ayarla
23 AT+RMSAD Kimliği Doğrulanmış Cihazı Listeden Sil
24 AT+FSAD Kimliği Doğrulanmış Cihaz Listesinden Cihaz Bul
25 AT+ADCN Kimliği Doğrulanmış Cihaz Listesinden Toplam Cihaz Sayısını Sorgula
26 AT+MRAD En Son Kullanılan Kimlik Doğrulamalı Cihazı Sorgula
27 AT+STATE Cihazın Mevcut Durumunu Sorgulama
28 AT+INIT SPP Profilini Başlatın
29 AT+INQ Yakındaki Keşfedilebilir Cihazları Sorgula
30 AT+INQC Keşfedilebilir Cihazlar için Aramayı İptal Et
31 AT+PAIR Cihaz Eşleştirme
32 AT+LINK Uzak Bir Cihaza Bağlanma
33 AT+DISC Uzak Cihazdan Bağlantıyı Kesme
34 AT+ENSNIFF Enerji Tasarrufu moduna girin
35 AT+EXSNIFF Enerji Tasarrufu modundan çık
Yukarıdaki AT komutlarından bazılarını Arduino kartımızda deneyelim. Bunun için aşağıdaki devre bağlantı şemasına bakarak bluetooth sensörümüzün bağlantısını yapalım.
DEVRE BAĞLANTI ŞEMASI:
DEVRE KURULUMU:
Malzemeler:
Arduino Uno
Breadboard
1 adet bluetooth modülü (HC-05)
1 adet 1 kΩ direnç
1 adet 2.2 kΩ direnç
5 adet iki ucu erkek jumper kablo
Bluetooth modülü, breadboard üzerine yerleştirilir. Modülün VCC pini, Arduino +5 Volt pinine bağlanır. Modülün GND pini, Arduino GND pinine bağlanır. Modülün TXT pini, Arduino’nun 10 numaralı pinine bağlanır.
Breadboard üzerine 2 adet direnç, dirençlerin birer uçları bluetooth modülü RX pinine denk gelecek şekilde yerleştirilir. 2.2 kΩ direncin diğer ucu Arduino GND pinine bağlanır. 1 kΩ direncin diğer ucu Arduino’ nun 11 numaralı pinine bağlanarak devre kurulumu tamamlanır.
DEVRENİN ÇALIŞTIRILMASI:
Modülün AT moduna geçebilmesi ve AT komutlarının çalışabilmesi için modül üzerinde bulunan butona basılı tutarak Arduino’ yu USB kablosu ile bilgisayara bağlayalım. Bu işlemden sonra bluetooth modülü üzerinde bulunan led, 2 saniye aralıklarla yanıp sönecektir. Eğer led çok sık aralıklarla yanıp sönüyorsa modül AT moduna geçmemiş demektir. Bu şekilde AT moduna geçmiyor ise usb kablosunu bilgisayardan çıkartın. Modül üzerindeki Key pinini (EN pini) Arduino da 3.3 pinine bağlayınız ve bu şekilde usb kablosunu bilgisayara takın. Butona basmaya gerek kalmadan modül AT moduna geçecek ve led 2 saniye aralıklarla yanıp sönecektir.
Aşağıdaki kodları Arduino kartına gönderiniz.
Not: Bluetooth bağlantısı devresinde Arduino’ ya kod gönderimi yapmadan önce Bluetooth VCC (+) bağlantısını yada RX bağlantı pinini Arduino üzerinden çıkartıp kod gönderimini o şekilde yapın. Yoksa kod gönderimi esnasında hata mesajı vermektedir.
NOT: Kod bölümü içerisinde yer alan ve // işareti ile başlayan satırlar açıklama satırlarıdır. O satırdaki kod bloğunun ne anlama geldiği ve nasıl çalıştığı ile ilgili bilgi verir. Arduino // işaretli alanı çalıştırmaz. Kod satırından isterseniz // işaret ile başlayan açıklama satırlarını silebilirsiniz.
KOD BÖLÜMÜ:
//Bluetooth Sensör (BT-05) AT Komutları
#include <SoftwareSerial.h>
SoftwareSerial mySerial(10, 11); // Bluetooth TX çıkışı 10 numaralı pine, dirençten gelen RX çıkışı 11 numaralı pine bağlanacak.
void setup()
{
Serial.begin(9600);
Serial.println("AT Komutu Giriniz: ");
mySerial.begin(38400);// HC-05 38400 baud ile çalışmaktadır.
}
void loop()
{
if (mySerial.available()) //bluetooth'dan gelen veriler porta yazılır.
Serial.write(mySerial.read());
if (Serial.available()) //porttan gönderilen veriler bluetooth'a yazılır.
mySerial.write(Serial.read());
}
Arduino derleyicisindeki seri monitörü açıyoruz. Seri port ekranı baud ayarı “9600” olmalıdır. Komut satırı düzeni “NL ve CR ile Birlikte” seçeneğinde olmalıdır.
İlk olarak AT yazıp gönderiyoruz. Modül bize cevap olarak OK verdiği taktirde işlem başarılıdır. Vermediği taktirde herhangi bir basamakta hata yapmış olabiliriz.
Aşağıdaki AT komutlarını kullanarak modülün ismini, şifresini, seri haberleşme hızını vb. birçok bilgiyi değiştirebilir veya okuyabilirsiniz
Uygulayabileceğiniz AT Komutları:
AT
Cevap: OK
AT+NAME?
Cevap: +NAME:BT-05
OK
AT+VERSION
Cevap: +VERSION:2.0-20100601
OK
AT+UART?
Cevap: +UART:9600,0,0
OK
AT+PSWD?
Cevap: +PSWD:1234
OK
NOT: Eğer AT+NAME? yazdığınızda hiçbir yanıt alamıyorsanız usb kablosunu bilgisayardan çıkartın. Modül üzerindeki Key pinini (EN pini) Arduino da 3.3 pinine bağlayınız ve bu şekilde usb kablosunu bilgisayara takın ve işlemleri tekrarlayın.
Şimdi de AT komutlarını kullanarak bluetooth modülünün isim ve şifresini değiştirelim. Değişiklik yapmak için komutların sonuna eklediğimiz soru işareti ? yerine eşittir = işareti ekleriz. İsim olarak Türkçe karakter olmadan isim verebiliriz. Arada boşluk verebiliriz.
AT+NAME=AHMET BT-05
Cevap: OK
İsmin değişip değişmediğini sorgulamak için tekrar aşağıdaki komutları girelim.
AT+NAME?
Cevap: +NAME:AHMET BT-05
OK
İsim değişti. Şimdi de şifreyi değiştirelim.
AT+PSWD=4321
Cevap: OK
Şifrenin değişip değişmediğini sorgulamak için tekrar aşağıdaki komutları girelim.
AT+PSWD?
Cevap: +PSWD:4321
OK
Eğer fabrika ayarlarına dönmek isterseniz aşağıdaki komutu girebiliriz.
AT+ORGL
Cevap: OK
NOT: Eğer ORGL komutu ile fabrika ayarlarına geri dönerseniz AT+UART=9600,0,0 komutu ile seri haberleşme hızını 9600 olarak ayarlayınız. AT+ROLE komutu ile 0 (slave mode) olduğundan emin olunuz. Modüle yeni bir isim de tanımlayabilirsiniz.
AT komutları ile işiniz bittiğinde usb kablosunu çıkartın. (Eğer EN pinini 3.3 volt pinine bağladıysanız onu da çıkartın.) Tekrar usb kablosunu taktığınızda artık modülünüz, bluetooth bağlanma moduna geçecektir. Üzerindeki led diyot devamlı yanıp sönecektir. Modülü cep telefonunuz ve tabletinizden bluetooth ekranında görebilirsiniz.
Bluetooth modüllerde bağlantı sırasında modülün ismini siz değiştirmediyseniz “HC-05” veya “HC-06” olarak gözükecektir. Modülün ismini gördüğünüzde üzerine tıklarsanız size bir şifre soracaktır. Bağlantı için cihazda şifre istenirse eğer değiştirmediyseniz şifre olarak “1234” veya “0000” girilir. Şifreyi girdiğinizde bluetooth cihazınıza bağlanmış olursunuz.
NOT: Cihazı telefon yada tablet bluetooth ekranından sorgulama yaptıktan sonra modül isim değişikliğine giderseniz cep telefonu bluetooth ekranında ismin değişmediğini görebilirsiniz. Böyle bir durum oluştuğunda eski isim ile bağlantı kurup daha sonra telefondan bağlantıyı kesip tekrar bluetooth cihaz tara butonuna basın. Eski isim gözükse bile kısa bir süre sonra eski yerine yeni isim gözükecektir.
Bağlantı kurulduktan sonra modül üzerindeki LED, çok hızlı aralıklarla 2 kez yanıp sönecek ve sonra 2 saniye sönük kalacaktır. Bağlantı aktif olduğu sürece bu durum devam eder.
Bluetooth modüllerini, led yakma, RGB led yakma, servo motor çalıştırma, Bluetooth Kontrollü araç uygulamalarında kullanabiliriz.
HC-05 BLUETOOTH MODÜL İSİM DEĞİŞTİRME KODU:
İsterseniz aşağıdaki kodları kullanarak “Buraya isim yazın” yazan yere bir isim yazıp kodları Arduino kartına gönderip AT komutları ile uğraşmadan bluetooth ismini hızlıca değiştirebilirsiniz.
// İlk önce HC-05 modülün uzerindeki butona basılı tutarak USB kablosunu bilgisayara bağlayınız.
// Modülün üzerindeki led ışığı 2 saniye aralıklarla yanıp sönmeye başlayınca elinizi butondan çekiniz.
// Modül AT moduna geçmiş durumdadır.
// Programda Seri Port ekranını açınız. Satır kısmını "NL ve CR ile Birlikte" olarak değiştiriniz. Hız ayarını "9600 baud" yapınız.
// Kodları Arduino kartına gönderiniz. İsim değiştirme işlemi başlayacaktır.
// Eğer isim değiştirme olmuyorsa modülün EN pinini, Arduino 3.3 V. pinine bağlayıp tekrar deneyiniz.
// İşlem tamamlanınca usb kablosunu ve eğer yaptıysanız EN pin bağlantısını sökerek usb kablosunu tekrar takıp
// Bluetooth aygıt aramasında arama yaparak cihazın yeni ismini görebilirsiniz.
// Bluetooth aramasında halen eski isim gözüküyorsa eski cihaza bağlanın, sonra bağlantıyı kesin ve tekrar tarama yapın.
#include <SoftwareSerial.h>
SoftwareSerial mySerial(10, 11); // Bluetooth TX çıkışı 10 numaralı pine, dirençten gelen RX çıkışı 11 numaralı pine bağlanacak.
String isim = "Buraya isim yazın"; // Cihazınıza vereceğiniz ismi giriniz.
int sifre = 1234; // 1234 yerine istediğiniz bir şifre giriniz.
String uart = "9600,0,0";
void setup() {
Serial.begin(9600);
Serial.println("HC-05 MODULüNÜN HAZIRLANMASI İÇİN 3 SANİYE BEKLENİYOR...");
mySerial.begin(38400);
delay(3000);
Serial.println("İSİM AYARLANIYOR...");
delay(2000);
mySerial.print("AT+NAME=");
mySerial.println(isim);
Serial.print("YENİ İSİM: ");
Serial.println(isim);
delay(1500);
mySerial.print("AT+PSWD=");
mySerial.println(sifre);
Serial.print("YENİ ŞİFRE: ");
Serial.println(sifre);
delay(1500);
mySerial.print("AT+UART=");
mySerial.println(uart);
Serial.print("GÖNDERIM HIZI: ");
Serial.println(uart);
delay(1500);
Serial.println("İŞLEM TAMAMLANDI.");
}
void loop()
{
}
Arduino derleyicisindeki seri monitörü açıyoruz. Seri port ekranı baud ayarı “9600” olmalıdır. Komut satırı düzeni “NL ve CR ile Birlikte” seçeneğinde olmalıdır.
Arduino Bluetooth Modülü HC-05 ve HC-06
Devre hakkında yorumlarınızı aşağıdaki yorum kısmına yazabilirsiniz. Youtube kanalımızda da mBlock ve Arduino ile ilgili ders videoları bulabileceksiniz. Youtube kanalıma abone olmayı da unutmayınız.
https://www.youtube.com/@candemirahmet
Yorum Yap