Klasik ve BLE( Low energy)_BLUETOOTH Modüllerin Kullanımı

HC-06 Bluetooth Modül :

Bu modül sadece slave olarak çalışır yani kendisine bağlantı yapılır. Bir başka modüle ya da bluetooth cihaza eşleştirme isteği yollayamaz.
Bunu yanlış anlamamak lazım. Sadece eşleştirme isteği yollayamaz. Bir bluetooth cihazdan gelen eşleştirme isteğini kabul eder ve Bilgi Alıp, Bilgi Gönderebilir.

Bu tip modüller aksi belirtilmedikçe, 3.3V olarak düşünülmelidir. Tüm 3.3V luk devrelerinizde, 5V luk devrelerden, Modüle giriş yapılırken, mutlaka seviye dönüştürücü devre kullanmanız gerekir. Bazı modüllerin üzerinde 3.3V-6V yazar. Bu durumda 5V ile beslenebilir. Fakat aynı zamanda Rx girişinde de level 3.3V yazar. Bu demektir ki 5V ile beslenebilir fakat giriş yapılacaksa 3.3V seviye dönüşümü yapılmalıdır. 

Nedir bu seviye dönüştürücü :
5V luk bir devre ile 3.3V luk bir devrenin çalışması esnasında bir dengeleyici diye düşünebiliriz. Örnek olarak, Arduino ile HC-06 modülü ya da ESP modülleri gibi 3.3V luk devrelerle çalışırken, sadece Arduino üzerinden 3.3V besleme alıp, verdim bu yeter demeyin. 5V luk devrelerde çıkış pinleri de 5V vermektedir. 3.3V luk devrelerde de girişler 3.3V seviyede olmalıdır.
Bundan dolayı HC-06 nın RX girişine bilgi gönderirken, MUTLAKA seviye dönüşüm yapılmalıdır. 
Seviye dönüşüm devreleri çeşitli şekillerde olabilir. Aşağıda birkaç örnek görüyorsunuz.

C1 kondansatörü kullanılmayabilir.

 

 

 

 

 

 

 

 

 

HC-06 diğer bluetooth ve esp modülleri gibi AT komutlarına sahiptir. Bluetooth modüllerde AT komut seti, modülün ayarlanması için kullanılır. Modül ismi, şifre,çalışma şekli gibi bilgileri ayarlayabilirsiniz.  AT komut setleri benzer gibi görünse de her modüle göre farklılık gösterebilir.
Örnek : HC-06 haberleşme hızını ayarlarken AT+BAUD4 gibi bir komut kullanılırken, HC-05 modülünde, AT+UART=115200,0,0 gibi bir komut kullanılır.  Bu tip farklılıklara dikkat etmeniz gerekmektedir.
Önemli : 
1-) AT komutları, mutlaka BÜYÜK HARF İLE YAZILMALIDIR.
2-) HC-06 AT komut setine girmek için mutlaka herhangi bir cihazla eşleştirilmemiş olmalı, üzerindeki LED yanıp sönüyor durumda olmalı.
Her modülün AT komut setine girişi ve haberleşme hızı farklı olacaktır. 

AT komut setleri için bu dosyaya bakabilirsiniz.
( HC-06=EGBT-046S ve  HC-05=EGBT-045MS modüller için.)

HC-06 Modülünün ilk geldiğindeki standart değerleri şunlardır. ( Daha sonra bu değerleri AT komut setiyle, değiştirebilirsiniz. )
Baud Rate: 9600 bps
Data : 8 bits
Stop Bits: 1 bit
Parity : None
Handshake: None
Passkey: 1234  ya da 0000
Device Name: linvor

İlk defa bağlantı yapıp kontrol edecekseniz FT232RL usb seri çevirici ile birlikte seri port terminal programını kullanabilirsiniz. ( FT232RL  modülü 5V-3.3V jumper ayarını 3.3V  kısmına getirirsek seviye çevirici kullanmamız gerekmeyecektir. )
Seri port terminal programı TERATERM bu linkten alınabilir. Kullanımı videoda gösterilecektir. AT komut seti için TERATERM programı sorun yaratıyor bundan dolayı REALTERM programını kullanmanızı öneririm.

Programı kurduğunuzda HC-06 modülünü FT232 usb seri çevirici ile Bilgisayara bağlarsınız. Daha sonra aygıt yöneticisinden USB çeviricinin, seri portunu öğrenirsiniz.
Bu portu teraterm programına girip, seri port ayarlarını yukarıdaki modülün standart değerleri gibi ayarlayın.
Modülün eşleştirilmesi için Bilgisayarınızın Bluetooth ayarlarına gidip modülü eşleştirin.
Eşleştirme bittikten sonra, HC-06 nın kullandığı seri portu Aygıt yöneticisinden görüp, 2. bir teraterm programı açarak, seri port ayarlarını hc-06 modülün seri portuna ayarlayın.
Artık bilgisayarınızı temsil eden teraterm penceresinden bir komut yollarsanız diğer hc-06 teraterm penceresinden görebilirsiniz. Bunun tam tersini de yapabilirsiniz. ( Videoda gösterildiği gibi)
AT komutlarını çalıştırmak için USB çeviriciye ait port’un bulunduğu pencereyi, kullanmanız gerekmektedir. Ayrıca önemli bir nokta EŞLEŞTİRMEYİ İPTAL etmeniz gerekmektedir. Bu şekilde Modül üzerindeki LED yanıp sönerken AT komutlarını verebilirsiniz.

Arduino, PIC ve diğer sistemlerle kullanmak isterseniz aynı mantıkla çalışmanız gerekmektedir.
Mikro denetleyicilerle kullanırken, mutlaka seviye dönüştürücü kullanmanız gerekecektir.

FT232RL USB Seri çevirici modül. 3.3V jumper ayarını unutmayın.

FT232RL USB Seri çevirici modül. 3.3V jumper ayarını unutmayın.

HC-06 konusunda son ve önemli bir nokta şudur. AT komut seti ile değiştirdiğiniz haberleşme hızı(baud), aynı zamanda AT komut seti ve eşleştirildikten sonraki haberleşme hızıdır. Şayet bu ayarı yaparken PC kullanıyorsanız, PC lerin 115200 baud’a kadar çalıştığını unutmayın. Şayet tabloya bakıp, 230400 baud ayarlarsanız, resetlediğinizde modül ile PC arasında haberleşme kuramazsınız bunun yerine mikroişlemcilerden birini 230400 haberleşme hızına ayarlayıp, AT komut setini yeniden kullanabilirsiniz. HC-05 için böyle bir durum söz konusu değil. Çünkü AT komut seti her zaman 38400 baud ile kullanılır. Çalışma hızı ne ayarlanırsa ayarlansın, AT komut seti hızı değişmez.

HC-05 Bluetooth Modül :
Bu modül hem MASTER hem de SLAVE olarak çalışır. Bu modül ile HC-06 modülü birlikte kullanarak 2 ayrı devreyi bluetooth üzerinden haberleştirebilirsiniz. HC-06 için anlatılan seviye dönüştürücü devrelerin burada da kullanılması gerekmektedir.

Buradaki bacak bağlantılarını açıklayalım. Vcc, GND, Tx, Rx, bacakları zaten biliniyor. burada farklı olarak 2 bacak daha bulunmaktadır. Bunlardan biri, KEY, diğeri ise STATE  bacağıdır.
KEY bacağı AT komut setine girişi sağlamaktadır. Şayet devreye enerji verirken KEY bacağını HIGH seviyesine çekerseniz, AT komut setine girmiş olursunuz. (AT komut setine girdiğinizde led uzun süreli yanıp sönme yapıyorsa bu moda girmiş demektir.)
Ayrıca modül eşleşmesi sonlandıysa modülü kapatmadan KEY butonuna bassanız bile AT komut setine girmiyor. Sadece ilk enerji verildiğinde kontrol edip HIGH seviyesindeyse AT komut setine giriyor.

AT komut setinde seri port ayarları 38400 baud olarak seçilmelidir. Normal çalışmadaki haberleşme hızı ilk çalıştığında 9600 baud tur. Siz bunu değiştirebilirsiniz.
Burada kavram karmaşasına düşmeyin. AT komut seti 38400 baud hızında çalışırken sizler bu hızı değiştiremezsiniz. AT+UART komutuyla değiştirdiğiniz hız, EŞLEŞTİĞİNDE çalışacağı hız olacaktır.

AT komut setiyle çalışmak için sadece 38400 ayarlamanız yetmez. Göndereceğiniz bilginin arkasına CR+LF dediğimiz ENTER+LINEFEED( satır ekleme) eklemelisiniz. Bunu yapmazsanız  error 0 alacaksınız. Mutlaka CR+LF eklemelisiniz.

NOT: Şayet eski telefonlar yada aygıtlar HC-05 i görmezse yani eşleştirme yapmaz ise, AT+CLASS? işareti ile kontrol edin. 0 ise, 1 durumuna getirmek için AT+CLASS=1 kullanın. Bazı eski cihazlarla uyumluluk sağlayacaktır. 

Bu tip bir modülünüz varsa, AT komut setine girecekseniz, Button’u basılı tutarken enerji vermeniz gerekir. Bu şekilde AT komut seti seçilir.
STATE pin ise eşleşmeden önce, LOW durumundadır. Eşleştiğinde ise bu pin, HIGH durumuna gelecektir. Bunu kullanarak arduino gibi sistemler eşleşme olduğunu anlayıp bilgi göndermeye başlayabilir.
STATE piminin durumu, AT komut setinde görülebilir. Aşağıdaki durumlardan biri ile cevap verir.

Bu modül Master ve slave olarak çalışır dedik. Master olarak ayar yapmak istersek Aşağıdaki gibi At komutlarını kullanabiliriz.
Master ayarı :
AT
OK
AT+BIND     // bu komut hangi slave cihaza bağlanacağını ayarlar. 
+BIND:3014:12:121894
OK
AT+BIND=F003,8C,4D125C  // bu komut hangi slave cihaza bağlanacağını ayarlar. 
OK
AT+BIND
+BIND:F003:8C:4D125C
OK
AT+ROLE        // role =0 slave , role=1 master olarak ayarlanır. 
+ROLE:1
OK
AT+CMODE     // bu kısım bağlantının nasıl yapılacağını gösterir. sabit bir cihaza mı yoksa farklı cihazlara mı. cmode=0 sabit  bir cihaz, yani BIND komutunda adresi yazılan cihaza bağlantı yap demektir. Cmode=1 faklı cihazlara bağlanılabilir. 
+CMODE:0
OK
AT+NAME       // buradan isim değişikliği yapabilirsiniz. 
+NAME:HC-05
OK
AT+VERSION      // modülün versiyonu öğrenilir. Bu önemlidir bazı AT komut ları versiyona göre değişebilir. 
VERSION:3.0-20170601
OK

Slave olmasını istiyorsanız AT+ROLE=0 yapmanız yetecektir.

Bunun yanı sıra bazı AT komutları var ki, bunlarda AT komut seti ile bazı işlevleri yapmanızı sağlayabilir. Mesela modül üzerinde bulunan dijital giriş çıkış pimlerini kontrol edebilirsiniz. Belki ekstra giriş ya da çıkış ucu olarak kullanılabilir. Eşleştirme yapılasıya kadar bu tip AT komutlarını kullanabilirsiniz. Fakat şunu da söylemem gerekiyor. AT komut setine, modülü kapatıp açarak ulaşabileceğiniz için bu da çok fazla rağbet görmemiş durumda. Sanırım bundan dolayı internette konuyu araştırdığımda, bu pimlerin kullanıldığı örnek bulamadım.

HC-05 için 2 adet video bulunmakta. Biri, PC nin bluetooth’u üzerinden çalışmasının test edilmesi. Diğeri ise Arduino ile çalışmasının test edilmesi.
Birinci videoda teraterm kullanıldı. Burada gönderilecek komutların sonuna CRLF eklemek gerektiği için bu şekilde kullanıldı. Arduino ile çalışırken Realterm kullanıldı daha rahat komutlar yazılabilsin diye.
Arduino programında, bir ledin yanıp sönmesi ve bir de butonun hareketinin iletilmesi mevcuttur. ASSSerial = softserial kütüphanesini kullanır ve HC-05 modülüne bağlıdır. Donanımsal seri port ise seri monitörde bilgileri görmek için kullanılmıştır. ( Örnek bu sitedeki çalışmalardan birinden alınıp, yeniden düzenlendi. Bu siteyi oluşturan kişi özellikle bluetooth konusunda güzel incelemeler yapmış. Bu siteyi de incelemenizi tavsiye ederim.  )

//  Example Project Part 2: Turn an LED on and off 2 way control 01
//  By Martyn Currey. www.martyncurrey.com
//
//  Pins
//  BT VCC to Arduino 5V out. 
//  BT GND to GND
//  Arduino D8 (ASS RX) - BT TX no need voltage divider 
//  Arduino D9 (ASS TX) - BT RX through a voltage divider
//  Arduino D2 - Resistor + LED
//  Arduino D3 - 10K pull up resistor + button switch





#include <SoftwareSerial.h>
SoftwareSerial ASSserial(8, 9); // RX, TX
//SoftwareSerial ASSserial; 
 

// Constants for hardware
const byte LEDPin = 2;
const byte SwitchPin = 3;

// general variables
boolean LED_State = false;
boolean switch_State = false;
boolean oldswitch_State = false;
String rec_data="";
char c=' ';


void setup()  
{
    Serial.begin(9600);
    Serial.print("Sketch:   ");   Serial.println(__FILE__);
    Serial.print("Uploaded: ");   Serial.println(__DATE__);
    Serial.println(" ");
     
    ASSserial.begin(9600); 
    Serial.println("ASS_Serial started at 9600"); 
    Serial.println(" ");

    pinMode(LEDPin, OUTPUT); 
    digitalWrite(LEDPin,LOW);

    pinMode(SwitchPin, INPUT); 
    
          
} // void setup()
 
 
void loop()  
{
       checkSwitch();
    
       checkRecievedData();
       
}


void checkSwitch()
{
    
     boolean state1 = digitalRead(SwitchPin); delay(1);
    
     
     
          switch_State = state1;  
          if ( (switch_State == LOW) && (oldswitch_State == HIGH) )
          {
            Serial.println("BUTON BASILDI");   
            ASSserial.println("BUTON BASILDI");     
          }          
          oldswitch_State = switch_State;
    
      delay(10);
}


void checkRecievedData()
{
     // Read from the Bluetooth module and turn the LED on and off
    if (ASSserial.available())
    { //Serial.println(rec_data);
       rec_data = ASSserial.readString();//Serial.println(rec_data);
       if(rec_data=="LED ON"){ 
        Serial.println(rec_data);LED_State = HIGH;digitalWrite(LEDPin, HIGH);
        };
        if(rec_data=="LED OFF"){
          Serial.println(rec_data);LED_State = LOW;digitalWrite(LEDPin, LOW);
          };
       
    }
}

Not: HC-05 te 2 farklı AT komut seti varmış. Fakat bu konuda bazı problemler olduğu için benim modülüm hata veriyor. Mesela AT+INQ gibi bir komut (error 1F) hatası veriyor. Normalde bu komut kullanıldığında çevredeki var olan bluetooth cihazları listeleniyor. Fakat hata 2 yönden garip. Biri, hata kodu 1F ve AT komut seti kaynaklarına baktığınızda hata kodları 1C ye kadar sıralanıyor yani bilinmeyen ya da sonradan versiyona göre eklenmiş fakat belgelenmemiş bir hata. Diğeri ise, Hatanın çözümü için gösterilen yolda, normalde AT komut setine girerken KEY ucu HIGH yapılmalı der. bunun için de bir buton konulmuş. Butona basarak AT komut setine girilir. Fakat Bazı komutlar uygulanırken KEY ucu HIGH seviyesinde tutulmalı diyor yani butona basmak yetmiyor devamlı bir şekilde HIGH seviyesinde tutulmalı gibi bir anlam çıkıyor. Bu da bazı komutları çalıştırmıyormuş buna 2. bir AT komut sistemi deniyormuş. Versiyon 3.0 kullanıyorum bir türlü bazı komutları çalıştıramıyorum. Sizler versiyon 2.0 modüle sahipseniz AT+INQ komutunu kullanıp sonucu bildirebilirseniz memnun olurum.

Aklımızda dursun:  AT komut setine geçmek için KEY ucunu HIGH yap ya da butona basarak enerji ver.
Modülü master olarak ayarladıysanız, tablet ya da telefonunuzdan görmeye çalıştığınızda görünür olmayacaktır. Slave olarak ayarladığınızda görünür olacaktır.

Ayrıca bağlanılacak olan cihazın adresini alabilmenin, 2 yolu vardır. Yollardan biri denetim masasından com port ve bluetooth ayarlarından bakmaktır. Daha kolay metodu ise google playde bulunan bluetooth programlarından birini kullanarak bluetooth eşleştir butonuna basılarak, çevredeki bluetooth cihazları gördüğünüz listeye ulaşmaktır. Bu listede hem isim hem de modül adresi belirtilmektedir.

CRLF problemi. Modül, AT komutları kullanırken CRLF istiyor. Fakat eşleşme tamamlandığında CRLF istemiyor. ( Örnek Arduino programı).  Bununla birlikte gelen bilgide CRLF olmamasına rağmen Modülün diğer alıcıya gönderdiği bilgi sonunda CRLF eklemesi söz konusu. Yani LED ON bilgisini HC-05 modülünün bluetooth üzerinden gönderiyorsanız alıcı LED ON+CR+LF olarak alacaktır. Bu da fazla karakter olacağı için string karşılaştırması sorun olabilecektir.
Bu konulara dikkat etmeniz gerekiyor.

HC-06 ve HC-05 için doküman. 

 

AT-09 (HM-10)  Bluetooth Low Energy Modül :

Bu modül HM-10 uyumlu Bluetooth LE (Low energy) modülüdür. Aldığım yer burasıdır.
Bluetooth LE modül, normalde çalışırken HC-05 gibi çalışıyor gibi düşünsek de arka planda farklılıklar vardır. Arduino videosunu seyrettiğinizde benzer çalışma diyeceksiniz. gerçekten de pratikte çalışırken çalışma sistemi benzerdir. Fakat bluetooth programını hazırlarken farklılıklar olduğunu görebileceksiniz.
Not: AT-09 modülü bluetooth programlarıyla direkt bağlantı yapıyor fakat pc de ya da tablette hc-05 gibi eşleşme yapılamıyor. Normalde şifresi var. Doğru şifre yazılsa bile eşleşme sağlanamıyor, fakat eşleşme olmadan da direkt programlar bağlantı yapabiliyor. Bundan dolayı eşleşme gerekli değil. bağlantı yapıldığında eşleşmiş oluyor ve bunu şifre istemeden yapıyor. Sanırım gerçek bir eşleşme yapılamadığından Bluetooth listesinde adı görülmüyor. Belki bu HM-10 da düzgün çalışıyordur ama bu modülde şifre yazarak eşleşme yapılamıyor.
Bu da belki BLE nin güzelliğidir otomatik erişim için yapılmış olabilir. 

Tüm BLE modüller system UUID ve characteristic UUID denilen bölümler halinde çalışır. Yaptığınız program ile bir bilgi almak istediğinizde, bilginin hangi system UUID altında ve hangi characteristic UUID içerisinde olduğunu bilmelisiniz. Her BLE sistemin farklı system UUID ve characteristic UUID leri kullandığını bilmeniz gerek.

Bu UUID dediğimiz kodlar, bir organizasyon ile standarda bağlanmıştır. bunların listesine buradan ulaşabilirsiniz. GATT service denilen bu listede service numaraları kullanım yerlerine göre ya da spesifik özelliklere göre verilmiştir. Mesela AT-09 modülünü ele alalım Bu servis numaralarından 4 tanesi kullanılmaktadır.

Bu service numaralarını GATT listesinden kontrol edebilirsiniz. Ayrıca hangi service numarasının altında hangi characteristic kullanılıyor bunları da programlarla öğrenebilirsiniz. Bununla birlikte service numaralarına bağlı descriptor olarak bir dizilim vardır. Bu dizilimi tek service için bu resimdeki gibi düşünebiliriz. Service lerden bilgi almak için characteristic bölümü kullanılır. değişiklikler ise descriptor ile gösterilir. BLE  Analyzer kullandığınızda service lere, characteristic lere ve descriptor lara ulaşma şansınız var.

BLE modüller, bu şekilde çalışıyor. Bazen elinizdeki modülde UUID leri değiştirmek isteyebilirsiniz. (Bu AT komut setinden değiştirilebiliyor. ) Herhangi bir UUID yazarsanız programlar algılayamaya bilir. Bundan dolayı online UUID Generator kullanabilirsiniz.

APP INVENTOR ile program yapmak istediğinizde BLE extension (uzantı) app inventora eklemeniz gerekecektir. Bu resimdeki yerden program uzantı yüklemenize izin veriyor.

Bu uzantıyı ise buradan elde edebilirsiniz. Başka uzantılarda bulabilirsiniz fakat son güncel halini buradan indirebilirsiniz. Aynı sayfada blokların açıklamalarını da bulacaksınız. Buradaki sürüm sonradan değişebilir şimdilik en son sürüm bu.

Ayrıca Google Bluetooth LE yi android 4.3 ten itibaren destekliyor. Fakat bu uzantı problemlerin de giderildiği sürümü kullandığından Android 5.0 ve üstü sistemlerde kullanılabilir. Ben Android 4.4 kullandığım için maalesef App inventor kullanamadım. Bundan dolayı referans olarak size aşağıdaki siteyi öneriyorum.

Bu konuda bir çok kişinin referans olarak sunduğu bir sayfa var. HM-10 ve diğer bluetooth modüllerini inceleyen birinin yaptığı sayfadır. Arduino ve APP Inventor ile ilgili örnekleri bulabileceğiniz bir sayfadır. Bu sayfaya bakarak Nasıl program yapabileceğinizi, görebilirsiniz.

Benim Problemim, Belki de sizin de probleminizdir : Elimde bulunan Galaxy j6+ Bluetooth 4.2 yi kullanıyor. App inventor programını bu siteden aldım fakat sadece bilgi gönderip led’i yakabildim geri bilgi alamadığım için butona basıldı ibaresini alamadım. Bu konuda forumdan yardım almaya çalıştım fakat denemeler sonuç vermedi. Sonunda başa dönüp BLE scanner ve BLE analyzer programlarını J6+ da kullandım. Şaşırtıcı bir şekilde onlarda bilgi gönderiyor fakat alamıyordu. Halbuki android 4.4 kullanan galaxy tab3 ile bu programlar düzgün çalışıyordu.
Sizlerde havanda su dövmek istemiyorsanız öncelikle telefonunuzun doğru çalıştığından emin olmak için BLE scanner veya BLE terminal gibi programları kullanın. Telefonunuzda sorun yoksa App Inventor programınızı yapmaya başlayın.

Modülümüze gelelim. AT-09 Modülü HM10 modülünün klonu gibi görünen MLT-BT05 modülünün, klonu gibi görünüyor. AT komut setlerine baktığınızda bunu siz de fark edeceksiniz.

Şayet deneme aşamasındaysanız, tüm denemelerinizi gerçek HM-10 modülünde yapmanızı tavsiye ederim.  Gerçeğini nasıl ayırt edebilirim derseniz, resim size fikir verecektir. Ayrıca detaylı bilgi için buraya bakabilirsiniz.

Bu resimden görüldüğü üzere, gerçek hm-10 da 2 adet kristal vardır. ortadakinde yeri var fakat kullanılmamış, en sağdakinde yeri bile yok. HM-10 uyumlu derken yüzde kaç uyumlu, Bu tartışılır. Her modülde Hm-10 compatible yazısını görebilirsiniz. Seri porttan bilgi alıp verebilir misiniz. Evet. Fakat diğer özelliklerini kullanayım dediğinizde yarı yolda kalacaksınızdır. Mesela AT+NOTI komutu bilgilendirme kısmını enable yapmaya yarar, Bu AT-09 da olmadığı için hep mobil uygulamalarınızdan bunu açıp kapatmak zorunda olacaksınızdır. Bu da bazı programlarda sorun yaratabilecektir. Ya da characteristic adres farkı olabilir. Mesela windows üzerinde çalışan Bluetooth LE explorer programı notify kısmını ON durumuna getirmek istediğimizde hata veriyor. belli ki bir yerlerde standartlara uymayan kodlama sorunu var. Bunu bazı programlar ön görmüş olacak ki çalışabiliyor bazıları bunu yapamıyor.

AT komut setleri : 
AT-09 modülü At komutları :  Bu modül eşleşmediği zamanlarda AT komut setine hazır durumdadır. HC-06 da ki gibidir.

NOT: BLE modülümüz AT komut seti kullanılırken mutlaka CR+LF ile yollanmalı. bu şekilde yollanmazsa Modül OK yerine ERROR verecektir.
Yukarıdaki listede bile bazı komutlar kullanılmıyor. Modülün kendi üzerinden alınan komutlardır.

MLT-BT05   AT komut seti: Bu setteki komutlara ait değerler, At-09 modülünde kullanılıyor fakat tüm komutlar kullanılmıyor. Sadece kullanılabilen komutların değerlerine bakabilirsiniz. Mesela AT+BAUD dediniz burada 4 sayısını elde ettiniz bu tablodan hangi değere karşılık geldiğine bakıp 9600 baud diyebiliriz.

HM-10 At komut seti :  Bu siteden alabilirsiniz. 

BLE modüllerde AT+POWE komutu var. Bu komut ile TX dediğimiz gönderi gücünü arttırabiliyorsunuz. Ben telefonla bunu denediğimde dedikleri gibi 50-60m değildi 15m civarında ancak çalışabiliyordu. Buna sebep modül olabildiği gibi telefonumuzunda bunda katkısı olabilir. Ölçümleri belirtirken bazı kaynaklarda, IPHONE telefon ve BLE modul olarak 60m civarında deniliyor. hatta bazıları 100m diyor.

Ayrıca At-09 yapamasa da HM-10 ve MLT-BT05 te Ibeacon modu denilen bir sistem var.

Nedir bu ibeacon?

Alıntı : Kaynak  Bluetooth Düşük Enerji teknolojisi kullanarak iPhone’unuza sinyal gönderen vericiler sayesinde bilgi edinme maksadıyla kullanılan yeni nesil lokasyon uygulaması. iBeacon, yerinizi bildirmekten çok daha fazlasını yapıyor. İşte 21. Yüzyıl’ın işaret fişeği.
Temelde bir bölgeye yerleştirilmiş vericilere yüklenen verilerin dağıtımı için kullanılan iBeacon, telefonunuz geçerli alana giriş yaptığında size bu vericilerin ilettiği bilgilerin ulaştırılması için kullanılıyor.
Bluetooth düşük enerji teknolojisi kullanan vericiler, GPS yardımıyla etki alanlarındaki iBeacon uygulaması açık olan iPhone’ları tespit ediyor ve mesajı iBeacon uygulaması ile size iletiyor. Böylece fiyatını ya da bedenini sormak istediğiniz bir ürün için mağaza yetkilisini bulmak zorunda kalmıyorsunuz.
Şu an için kullanım alanının çok da yaygın olmadığını söyleyebileceğimiz iBeacon uygulaması geleceğin teknolojilerine ışık tutan bir işaret fişeği olabilir.

Ayrıca BLE modüller, sizin yaklaştığınızı nasıl algılıyor. Devamlı yayın yapan bu modüller sizin nereye yaklaştığınızı RSSI denilen yayın sinyalinin, ne kadar düşük ya da ne kadar yüksek oluşunu algılayarak, alıcı ve verici arasındaki mesafeyi hesaplayıp bir cihazın yaklaştığına hükmederek kendisini aktif edip cihaza bilgi yollayabiliyor ya da ürüne yaklaştığınızda sizi fark edip ürün hakkında sesli bilgi verebilir.  Bu kaynaktan konu hakkında bilgi alabilirsiniz.

Resim BLE scanner programında, RSSI değerlerine göre, bulunan BLE cihazlarının tablete ne kadar yakın olduğunu gösteriyor. 

 

 

 

 

 

 

 

Burada şunu da belirtmeliyim, App inventor da eski tip bluetooth modüllerle bilgiyi alırken, bilgiyi clock bloğu içinde alıyorduk devamlı bluetooth üzerinden bilgi geldi mi diye bakmamız gerekiyordu. BLE modüllerde böyle bir şey yapmamıza gerek yok. Aşağıdaki iki blok beraber kullanılarak BLE modülde bilgi değişimi olduğunda otomatik olarak bilgiyi aldığını teyit edip çalışması gereken blok ları çalıştırıyor.
Aşağıdaki bloklarda sadece string için verilmiş olanı göreceksiniz fakat BLE uzantısını incelediğinizde byte, integer, float gibi değerler için de yapıldığını görebilirsiniz.

Yukarıdaki 3 grup blok, önce bildirimleri açmak için REGISTER bloğunu sonrasında ise Bytes received ya da string received bloklarını kullanıyor. Programdan çıkacağınız zaman ise BLE modülünün yayın yapmayı kesip, daha az enerji harcaması için bildirim özelliğini UNREGISTER bloğu ile kapatıyoruz.  Dikkat ederseniz Unregister kısmı, tüm çeşitler için ayrı ayrı değil tümünü tek blokta kapatıyor. Yani string ya da byte kullanılmış önemli değil tümünü kapatır.
Tüm bunlar eski versiyonda clock bloklarıyla yapılıyordu. 

Burada bir ekleme yapmak istiyorum. Bazı gelen sorulardan dolayı, bu kısmı app inventor programına ayırdım. Soran kişiler bilgiyi tablete gönderirken nasıl birden fazla veri gönderebiliriz sorusuna yanıt arıyorlar. Bu ayırım için bir dizi yolluyorsanız, veriler arasında ( , ) işaretini kullanın. Mesela sıcaklık ve nem bilgilerini ya da daha fazlasını göndermek istediniz. Burada yapılacak şey sıcaklık,nem,zaman gibi araları virgülle ayrılmış değerler göndermek.
Aşağıda göreceğiniz blokları kullanarak bu bilgileri kolayca ayrıştırıp, gerekli yerlere yazabilirsiniz.

BURADA FAYDALI OLDUĞUNU DÜŞÜNDÜĞÜM LİNKLERİN BULUNDUĞU ADRES BULUNMAKTADIR. 

Şimdilik BLE ile anlatacaklarım bu kadar. Fakat yakında gerçek HM-10 geldiğinde bu bilgiler de güncellenip 2 Modül arası haberleşmeye ve İbeacon kullanımına örnekler de verilecektir.

 

HC-06 bluetooth modül video:

HC-05 ve HC06 master slave, arduino ve EASYLCD ile birlikte çalışması. 

HC-05 bluetooth modülü ayarlanması ve pc ile haberleşme.

Bluetooth LE AT-09 modülü ve arduino kullanımı.

AT-09 Bluetooth BLE ( Low Energy ) modülünün kullanılması. 

Bu konularda, buradan ya da facebook üzerinden bilgi alışverişi yapabiliriz. Buradan yazarsanız ilerideki okuyucular için de verimli olacaktır. 

 

5 Comments

  1. Çok teşekkür ederim. Bu zamana kadar okuduğum en detaylı bilgiler. Emeğinize sağlık.

  2. Merhaba bluetooth hc06 ile sicaklik degeri aliyorum ama labelde degeri okuyorum bir sure sonra tek haneye dusuyor ve sira ile tek tek rakamlar geliyor sonra tekrar istenen dereceyi veriyor. Neden olabilir.

    1. problemi çözdünüz mü bilemiyorum ama mit app inventor kullanıyorsanız karakterleri yollarken hep aynı basamakta olmasını sağlayın ya da app inventor kontrol etsin eksik geldiyse geri bildirim versin. sonra göstersin. app inventorda bu tip bir problem var.
      mesela 10 göndermek yerine 010 göndersin ya da 1 yerine 001 göndersin. daha da iyisi 8 bitlik bir sayı ise HEX gönderin geleni decimale çevirin. daha iyi olabilir.

Cemil için bir cevap yazın Cevabı iptal et

E-posta hesabınız yayımlanmayacak.