HC-05 Master Slave Eşleştirmesi

Başlatan Mucit23, 30 Kasım 2015, 21:51:24

Mucit23

Bu problemle uğraşıyorum

Amacım İki bluetooth modülünü birbiriyle eşleştirme.
Şuanda Bluetooth modülü ile telefonumu birbirleriyle haberleştirebiliyorum.. Bluetooth modülüne default ayarlarıyla Bluetooth terminal programlarından bağlanıp veri transferi yaptım.

Şimdi Bluetooth modülünü AT moduna sokup ayarlarıyla oynamam lazım. Yapamadım bir türlü
Elimdeki modül budur.

Bunun tam şemasınıda bulamadım. Ama arduino forumlarından araştırdığım kadarıyla aşağıdaki işlemleri yapmak gerekiyor.
Alıntı YapModel ZS-040
1º Push button in bluetooth module and hold
2º Disconnect VCC of bluetooth module
3º Connect VCC
4º Release button - Led must flash very slow. Now you are in AT MODE
5º Reset Arduino with reset button
6º Start the Monitor Serial, select "Both NL & CR"
7º Enter command "AT" and Enter. You must receive OK.

Yaptım yukarıda bahsettiği gibi. LED yavaş bir şekilde yanıp sönüyor. Fakat gönderdiğim hiçbir komuta cevap vermiyor.  Ne yapmak gerek bu iş için bilgisi olan var mı?

baran123

hocam key pinini LOW da tutunca at moduna geçiyor diye biliyorum tam terside olabilir.Diğer türlü komutları direk data olarak alıyordu.

ogy

HC-05'in 34 numaralı KEY pinini 4.7k ile pull-down bağlayın.Aynı pini 500ms kadar süre ile 3.3 volta çekip bıraktığınızda modül AT moduna geçecektir.

görkem

bu modül ile uğraşmıştım ve değiştirmiştim default ayarlarını, modülün pin uçlarının en sağı ve en solundaki bağlantıların biri state ucu diğeri wakeup ucu,(yanlış hatırlamıyorsam sağdaki pin wakeup ucu) wakeup ucunu eksiye bağlayın ve enerjilendirin direk at moduna geçicektir.Modül fabrika çıkışı baud hızı 9600 dür modül at ile resetlenirse 38400 baunda haberleşmeye başlar.

Mucit23

#4
Yok sorun ondan değilmiş. AT moda giriyorum ama AT modda default baudrate 38400 imiş. Halbuki haberleşmede 9600 kullanılıyordu.

mesaj birleştirme:: 01 Aralık 2015, 10:25:11

ZS-040 isimli modülün şemasını bulabilen varmı. Şu STATE pini ne iş yapıyor anlamadım. Modülü AT moda sokmak için butona basıp enerji vermek gerekiyor. Bundan sonra 38400 baud ile haberleşiyorum. Amacım iki adet HC05 modülü eşleştirmek. Bunun için sırasıyla komutları göndermek gerekiyor ama bazı komutların kabul edilmesi için 34 numaralı pin HIGH konumda olması gerekiyormuş.

Alıntı YapAT+INQM=0,5,9, AT+INIT and AT+INQ require pin 34 to be HIGH. If pin 34 is not HIGH then you will not receive any reply from these commands. No message, no error message.
Kaynak: http://www.martyncurrey.com/connecting-2-arduinos-by-bluetooth-using-a-hc-05-and-a-hc-06-pair-bind-and-link/

Denedim hatta Normalde AT+INQM=0,5,9 komutuna cevap alamazken Butona basılı tutunca OK cevabı geldi. Butona basınca 34 numaralı pine +3.3v gidiyor. O halde State pinini ne iş için koymuşlar oraya. Modülün şemasını bulamıyorum. Takip etmek çok zor

Mucit23

Eşleştirme işlemini yaptım. Sıkıntı modül AT Modda iken 34 Numaralı pine 3.3V gitmemesiymiş.

Benim aldığım modül üzerinde bir tane buton var. Bu butona basınca 34 numaralı pine +3.3v gidiyor.  Modül bu komumdayken birçok mesaja cevap veriyor Ama o pinde sürekli +3.3V olmayınca AT+INQM=0,5,9,    AT+INIT  gibi komutlara cevap vermiyordu. Şimdi o pine bir kablo bağlayıp AT moda sokmak istediğimde o pini +3.3V'a bağlayıp modüle enerji veriyordum. İşim bitene kadarda çekmiyordum. Şuanda bağlantıda sıkıntı kalmadı.

Yapılması gerekenleri şuraya yazalım birilerine lazım olur. Kırmızı ile yazdıklarım benim verdiğim komutlar, Maviler modülden gelen cevaplar.

İlk başta Slave modülün ayarlarını yapmak gerekiyor. Bu ayarlara geçmeden önce Baudrate işini halletmek gerek. Modül default olarak 9600 baudrate ile haberleşiyor. Ben modülü ilk kez enerji verdiğimde hazır bir bluetooth terminal programı ile 9600 baudrate ile veri gönderip aldım. Ama AT moda soktuğumda ise modül 38400 baudrate ile haberleştiğini gördüm. Bu yüzden haberleşmede sıkıntı yaşamamak için en başta baudrate ayarını yapmak lazım.  Bu iş için aşağıdaki komutları göndermek gerek.

AT+UART=38400,0,0 
OK

Aynı işlemi master modül içinde yapmak gerekiyor.

Sonra slave modüle aşağıdaki komutu gönderin
AT+ROLE=0  //1 olursa Master, 0 olursa Slave olarak çalışır. Biz slave olarak ayarlıyoruz.
Şimdilik slave'da başka yapmak gereken birşey yok.

Master'a gelirsek sırayla aşağıdaki komutları gönderiyoruz.
AT+ORGL  //Modülü default ayarlarına getiriyoruz. (Yapmak şart değil)
OK

AT+RMAAD  //Daha önce eşleşilmiş cihazlar temizleniyor.
OK

AT+ROLE=1 //Master olarak ayarlıyoruz.
OK

AT+RESET  //Modül Resetleniyor.
OK

AT+CMODE=1
OK

AT+INQM=0,5,5
OK

AT+PSWD=1234  //Bağlanmadan önce Modülün pini ayarlanmalıdır. Eşlenme yapılabilmesi için master ile Slave cihazın şifreleri aynı
OK   //olmalıdır. Eğer şifreler aynı ise bu komutu girmeye gerek yoktur.

AT+INIT
OK 

AT+INQ  //Arama yapılıyor. Bundan sonra bulunan cihazlar listelenmesi lazım.
+INQ:98D3:31:3086D0,1F00,7FFF

OK 

Burada ufak bir açıklama yapalım. Gelen veri Adress, Type, Signal şeklinde sıralaması vardır. Yani yukarıda gelen cevapda Adres verisi 98D3:31:3086D0  Type 1F00 ve Signal yani RSSI değeri ise 7FFF dir. Bize adres lazım.

Şimdi devam edelim
AT+PAIR=98D3,31,3086D0,5 //Adres girildi. En sonki 5 değeri ise bizim belirlediğimiz timeout değeridir.
OK 

AT+BIND=98D3,31,3086D0
OK 

AT+CMODE=0
OK 

AT+LINK=98D3,31,3086D0
OK 

Bu işlemlerden sonra artık kapı açılmış olur. Artık ne gönderirseniz doğrudan karşıya gider. Aynı şekilde veri alırsınız. Ben iki adet HC05 için denedim. HC-06 doğrudan slave olduğu için onu tekrardan slave yapmaya gerek yoktur.

Çok zor değilmiş.  :)


Mucit23

Bu modülle ilgili sormak istediğim bir konu var.

bu modülü başka bir modülle eşleştirdigimizi varsayalım. Daha sonra iki module tekrar enerji verdiğimde master olan modülün slave olana otomatik olarak bağlanmasını istiyorum. Bu mümkündür?

MrDarK

#7
Mümkün fakat ne derece sağlıklıdır bilemiyorum.

AT komutları arasında hatırla , hafıza gibi şeyler vardı. Denemiştim hatta :)

Notes 
(1) HC‐05's command should end up with "\r\n". It means when you finish 
programming, you should add terminator ("ENTER" or "0x0d 0x0a") to the 
program. 
(2) The most common commands for HC‐05 are: AT+ROLE (set master–slave), 
AT+CMODE( set address pairing) , AT+PSWD (set password). 
If you want the master module has the function of remembering slave 
module,the most simply way is: First, set AT+CMODE=1. Make the master 
module pair with the slave module. Second, set AT+CMODE=0. Then the 
master module just can make pair with that specified slave module.


Üstte verdiğim şeyden çok emin değilim AT+BIND yapabilir mi acaba ?
Picproje Eğitim Gönüllüleri ~ MrDarK

wtrk

Alıntı yapılan: Mucit23 - 16 Aralık 2015, 17:12:57
Bu modülle ilgili sormak istediğim bir konu var.

bu modülü başka bir modülle eşleştirdigimizi varsayalım. Daha sonra iki module tekrar enerji verdiğimde master olan modülün slave olana otomatik olarak bağlanmasını istiyorum. Bu mümkündür?

Hocam bu modüle At komutlarını işletmek için yaptığın düzenek yada sistem hakkında bilgi verrbilir misin ??
Ben hala hc05 e at komutlarını atamadım
NoBody Can Stop Me!!!!!

Mucit23

Bendeki modülleri at moda sokmak için 34 nolu pine 1 vermek gerekiyor. Buton var ama tam olarak iş görmüyor.  Sürekli 1 de kalması gerekiyor o pinin.

akşam bir deneyeyim otomatik bağlanma işini

kantirici

#10
HC05 iki farklı şekilde AT moda giriyor.

1. modulün key pinine lojik 1 ver verip modülü enerjiledirmek. Bu durumda modül 38400 bps de at moduna giriyor.

2. durum ise normal çalışma modunda key pinine lojik 1 vermek. Bu durumda modül o anki baudrate e göre AT moduna giriyor. Datasheet birinci olanı tavsiye ediyor.

@Mucit23 o butona sürekli basmak gerek. Yani bas çek olmuyor.

Mucit23

Teşekkürler,

Az önce test yaptım, Daha önce eşleştirdiğim bluetooth modüller enerjisi kesilip tekrar verilince otomatikmen bağlanıyor. Hiç birşey yapmadım aslında Yukarıda anlattığım eşleştirme işlemini yaptım ilk önce. Sonra iki modülün enerjisini kesip tekrar açtım. Ortalama 10 sn içerisinde tekrar bağlantı kuruldu. Önceki ayarlanan baudrate ile haberleştim.

burak54

O pine ya da modülde buton varsa ona basıt tekrar enerjilendirince AT komut moduna giriyor ve AT komutlarını TX RX üzerinden alıyor Bluetooth üzerinden değil.

elektronikDelisi

Alıntı yapılan: Mucit23 - 01 Aralık 2015, 20:25:52

AT+UART=38400,0,0 
OK

Aynı işlemi master modül içinde yapmak gerekiyor.

Sonra slave modüle aşağıdaki komutu gönderin
AT+ROLE=0  //1 olursa Master, 0 olursa Slave olarak çalışır. Biz slave olarak ayarlıyoruz.
Şimdilik slave'da başka yapmak gereken birşey yok.

Master'a gelirsek sırayla aşağıdaki komutları gönderiyoruz.
AT+ORGL  //Modülü default ayarlarına getiriyoruz. (Yapmak şart değil)
OK

AT+RMAAD  //Daha önce eşleşilmiş cihazlar temizleniyor.
OK

AT+ROLE=1 //Master olarak ayarlıyoruz.
OK

AT+RESET  //Modül Resetleniyor.
OK

AT+CMODE=1
OK

AT+INQM=0,5,5
OK

AT+PSWD=1234  //Bağlanmadan önce Modülün pini ayarlanmalıdır. Eşlenme yapılabilmesi için master ile Slave cihazın şifreleri aynı
OK   //olmalıdır. Eğer şifreler aynı ise bu komutu girmeye gerek yoktur.

AT+INIT
OK 

AT+INQ  //Arama yapılıyor. Bundan sonra bulunan cihazlar listelenmesi lazım.
+INQ:98D3:31:3086D0,1F00,7FFF

OK 

Burada ufak bir açıklama yapalım. Gelen veri Adress, Type, Signal şeklinde sıralaması vardır. Yani yukarıda gelen cevapda Adres verisi 98D3:31:3086D0  Type 1F00 ve Signal yani RSSI değeri ise 7FFF dir. Bize adres lazım.

Şimdi devam edelim
AT+PAIR=98D3,31,3086D0,5 //Adres girildi. En sonki 5 değeri ise bizim belirlediğimiz timeout değeridir.
OK 

AT+BIND=98D3,31,3086D0
OK 

AT+CMODE=0
OK 

AT+LINK=98D3,31,3086D0
OK 




Merhaba, açıklamalar için teşekkürler.

Birşey sormak istiyorum. HC-05 ile HC-06 Modülü bu şekilde bağladıktan sonra elimde ki ikinci HC-06 yı da HC-05 e bağlamak istiyorum.
Yani bir kaç saniye birinci HC-06 modül bağlı olacak veriyi alacak. sonra ikinci HC-06 ya bağlanacak veriyi alacak. böyle döngüye girecek.

Baud ayarları vs. yapıldıktan sonra bu döngüyü kullanmak için bütün modüllerin şifrelerinin aynı olduğunu varsayarak yazdığınız AT komutlarından hangi aşamayı atlamam gerekiyor?
Anladığım kadarıyla siz ilk başta yapılması gereken ayarlar ile birlikte yazmışsınız.

Teşekkür Ederim.
aramızda bir elektrik var..

Mucit23

O şekilde bir işlem mümkünmü bilmiyorum. Sürekli bağlantıyı kesip diğer modüle bağlanmanız gerekli.  İki modülü adresi biliniyorsa eğer doğrudan bağlantı kurulabilir herhalde. Denemek lazım.