Arduino ile Bluetooth Kullanımı

Bu yazımda da ilk önce alışveriş yapacağız. Arduinomuzu almıştık. Şimdi de çok güzel bir bluetooth modülü alacağız. Türkiyedeki “bazı” esnafların biz öğrencileri kazıklamaya hakkı yok o yüzden gene e-bay’den alacağız 😉

Buyrun Satın Alma Linki;

Şanslısınız ki benim aldığım bluetooth modülünün lehimlenmesi gereken devre kartı da ürünle birlikte geliyor. Ben kartı kendim yapmıştım çünkü ben aldığımda devre kartı piyasada yoktu. Lehimlemek için 3 saat uğraşmıştım. Çok küçük ve çok işlevsel bir bluetooth. Modülün tüm dosyaları ise bu linkte; (Datasheetler,Pin Diyagramı,AT Komutları vb…)

Bu resimdeki benim saatlerce uğraşıp sonunda sorunsuzda lehimleyebildiğim bluetooth modülü.

Yukarıda verdiğim linkten satın aldığınızda switchli,ledli,pinleri çıkarılmış şekilde gelecektir. Yani yukarıdaki resimdeki gibi…

Ekleme : Ebay’de ürün içeriklerinin değişmesi durumunda dikkat etmenizi tavsiye ederim. Modül board’suz da gelebilir.

Bu modül 3,3v ile çalışıyor. Arduino’nun 3,3v çıkışından direk bağlantı yapabilirsiniz. Modülün pin diyagramı ise aşağıdaki gibi.

Bu yazıda her ne kadar çoğu protokolü desteklesede en rahat olanı yani Uart’ı kullanacağız.

Bizim kullanacağımız pinler;

  1. “1” numaralı TX pini
  2. “2” numaralı RX pini
  3. “11” numaralı Reset pini
  4. “12” numaralı 3,3v pini
  5. “13” numaralı GND pini (Diğer toprak girişlerinden istediğiniz 1 tanesi  ile de bağlantı yapabilirsiniz.)
  6. “31” numaralı PIO8 pini (Bluetooth modülünün çalışma durumunu gösterir. Bluetooth Modülü “Normal” olarak çalışıyorsa yanıp söner. Eğer “AT Komut Alma” açıksa gecikmeli olarak bir yanar bir söner.)
  7. “32” numaralı PIO9 pini (Eğer bağlanmak istediğimiz bluetooth cihazıyla bağlantı başarıyla gerçekleştiyse yanar. Diğer türlü söner.)
  8. “34 numaralı PIO11 pini (Bu pine 3,3v bağlanırsa modül “AT Komut Alma” modunda çalışır. Diğer türlü yani 0v ise “Normal” modda çalışır. Her PIO11 değişimde modüle reset atmak gerekmektedir.)

Benim bağlantılar resimdeki gibi hazır ve Arduino’yu Usb’ye takıyoruz. Ayrıca bluetooth modülündeki TX pinini Arduino’nun RX3 pinine, RX pinini Arduino’nun TX3 pinine bağlıyoruz.

İlk önce modumuzu switch ile ayarlamamız gerekiyor. Yukarıda belirttiğim üzere PIO11 pini 0v olacak şekilde switch’i ayarladıktan (Normal Mod) sonra reset butonuna basıyoruz. PIO8 pini yanıp sönmeye başlıyor. Daha sonra bilgisayardaki bluetoothtan aygıtları eşleştirip bağlantı kuralım.

Bluetooth modülümüzü “HC-05” olarak görüyor. Sizlerde farklı olabilir.

Daha sonra “Pair” yani eşleştir butonuyla cihazları eşleştiriyoruz.

Eşleştirmeden sonra normal modda sürekli yanıp sönen PIO8 pinine bağlı led yavaş bir şekilde yanıp sönmeye başlıyor. Daha sonra bilgisayarın bluetooth kısmından “HC-05” adlı aygıtı sağ tıklayıp “Search Services”e tıklıyoruz. ” Bluetooth Serial Service”i buluyor. Daha sonra Arduino IDE’yi açıyoruz ve bilgisayardan arduinoya veri göndermek için aşağıdaki kodu derleyip upload ediyoruz.

char veri;

void setup()
{
Serial.begin(9600);
Serial3.begin(9600);
}

void loop()
{

if (Serial3.available() > 0) {
veri = Serial3.read();
Serial.println(veri);
delay (10);
}

}

Daha sonra Arduino’nun “Serial Monitor”ünü açıyoruz. Daha sonra bluetoothtan servise sağ tıklayıp “Connect” dediğimizde herhangi bir sorun yoksa (benimkinde COM8 portu üzerinden) bağlantıyı kurmuş oluyoruz. PIO9 pinindeki led yanıyor ve PIO8 pinideki led aynı şekilde yanıp sönmeye devam ediyor.

Şimdi sıra açılan Bluetooth serial port’tan (Bende COM8) veri gönderip almada.

Bu linkten “PuTTY” adlı terminal programını indiriyoruz. Programı açıyoruz.

Yukarıdaki gibi seçiyoruz. Daha sonra sol menüden “Terminal”>>”Local Echo” = “Force on” yapıyoruz. Alttaki “Open” butonuyla COM8 yani açtığımız bluetooth portuna bağlanmış oluyoruz. Aşağıdaki resimdeki gibi “PuTTY”den gönderdiğimiz veriyi gördüğünüz gibi arduinodan okuyoruz.

“PuTTY” yerine “Serial COM Port Terminal v1.7“yi kullanabilirsiniz.

Ancak siz arduinodan bilgisayara veri göndermek isteyebilirsiniz. Bunun için aşağıdaki kodu derleyip upload ediyoruz.

char veri;

void setup()
{
Serial.begin(9600);
Serial3.begin(9600);
}

void loop()
{

if (Serial.available() > 0) {
veri = Serial.read();
Serial3.print(veri);
delay (10);
}

}

Aşağıdaki gibi “PuTTY”den bluetooth ile gelen veriyi okuyabiliyoruz.

Bu yazının da sonunda geldik. Eğer anlayamadığınız takıldığınız bir yer varsa lütfen yorum yaparak belirtin yardımcı olmaya çalışırım.

AT komutlarını rahat bir şekilde göndermek için yardımcı bir program var. Onu da buradan indirebilirsiniz. AT komutlarını “PuTTY” veya “Serial COM Port Terminal v1.7” ile de gönderebilirsiniz.

Cihazı master modda kullanmak için;

1. PIO11 pinine 3.3v verin.
2. Modülü çalıştırın. Yani modüle şimdi güç verin.
3. 38400 baud rate ile seri porttan bağlanın.
4. “AT+ROLE=1\r\n” komutunu gönderin. Eğer başarılı bir şekilde komut çalıştırıldıysa cevap olarak bu gelecektir “OK\r\n”. Eğer olmadıysa bu gelecektir “\r\n”.
5. Daha sonra PIO11 pinini 0v yapın. Modüle güç verince artık modül master mode’da çalışacaktır. Otomatik olarak slave modülleri arayıp bağlanacaktır.

17938 Total Views 2 Views Today

Yorumu formunu geç

    • A. Tahir İnce on 03 Mart 2012 at 15:54
    • Cevapla

    Merhaba;
    Güzel bir uygulama yapmışsınız elinize sağlık.. Fakat ardinuino kullanmayan birey olarak bir şey soracağım..

    FDTI benzeri çipler kullanmışsanız driveri ile bereaber kod geliştirenlere API ve .lib , .dll kullanımı için pdf vs.. dosyalar hazırlamışlar. Bu vesile ile biz C kullanıcıları da port kullanacağız diye zulum görmeden bu cipler ile devre-pc iletişimini rahatlıkla sağlıyoruz. Acaba bu Blluetooth moduldeki chip nereden öğrenebiliriz adını ve nasıl kullanıldığını?

  1. Eger istediğin chip bir usb-serial converter ise Ftdi’dan daha ucuz olan bunu kullanabilirsin;
    http://www.ebay.com/itm/190584335291?ssPageName=STRK:MEWAX:IT&_trksid=p3984.m1438.l2649
    Bu yazıdaki bluetooth modülünde dahili usb,dahili uart ve dahili spi var.
    Datasheetinde Chipset CSR BC417143 (BlueCore4External) diye geçiyor. Yazıdaki link gitmiş. Şimdi yeniledim dosyalarını indirebilirsin.

  2. Hocam Merhaba; Ben Bunu PIC ile yapacagim (arduino projemde pahali kaliyor) fakat modul teymin edemedim. verdiginiz satin alma linkine girdigimda farkli bir urun geliyor. bana bu konuda yardimci olabilirmisiniz.

    1. E-Bay’den “Bluetooth Transceiver” diye aratırsanız istediğiniz türde boardlu boardsuz bluetooth modülü bulabilirsiniz..

    • aykut on 26 Mayıs 2013 at 19:38
    • Cevapla

    iyi günler. ben android telefondan araç yönetimi yapıp artı olarak camera görüntüsü almak istiyorum arduino ile blutetooth üzerinden görüntü almaya çalışıyorum herşey tamam ancak görüntü aktarımı yaparken veriler bozuk geliyor görüntü alamıyor nasıl yapabilirim acaba ? teşekkürler

    1. Goruntu aktarirken telefondan direk bilgisayara veri gonderirsen sanirim daha iyi olur. Bluetooth 4.0’da mi var sadece bilmiyorum ama goruntu aktarimini destekliyor. Android tarafinda da ayni sekilde bir destek var diye biliyorum. Goruntu aktarimi icin android’de hazir kutuphaneler var. Bluetoothta en cok kullanilan internet paylasimi, dosya transferi, seri port paylasimi gibi ozelliklere ek olarak goruntu aktarimi yeni nesil bluetoothta var diye biliyorum. Ancak derinlemesine arastirmadigim icin net bilgi veremiyorum. Benimde android telefon kontrollu oyuncak araba projem vardi. Ancak sadece ivme sensoruyle ve butonlarla kontrol etmeyi dusunuyorum. Bunun icin arayuz ve arduino yeterli oluyor.

    • aykut on 27 Mayıs 2013 at 02:13
    • Cevapla

    Kodlar herşey hazır sıkıntı yok onlarda bluteooth telefon arasındaki iletişimde var sadece camera telefona veriyi yollarken hatalı yolluyor onu çözemedim…

    • Osman on 31 Ekim 2013 at 15:54
    • Cevapla

    Merhaba ben bitirme tezi için bluetooth haberleşmesiyle ortam sıcaklığını pc ye veri olarak göndermem gerekiyor da hangi model arduino bluetooth cihazı ve sensör olarak bilgi verebilirseniz sevinirim

    1. Tüm arduinolar ile yapabilirsiniz. PC tarafında herhangi bir bluetooth cihazıyla olur. Arduino tarafında ise e-bayde tek tip bluetooth modülü satılıyor. Sıcaklık sensörü olarak piyasada bir sürü model var. Nasıl kullanıcağınıza bağlı bir durum açıkcası.

        • Osman on 29 Aralık 2013 at 00:45
        • Cevapla

        anladım sıcaklık ortam sıcaklığını ölçmek için o an bitirme ödevimi teslim ettiğimde sıcaklığı doğru ölçüp gönderirse sanırım yeterli olacaktır.
        programlama yaparken sıcaklığı ölçüp veriyi aktarıp göndermek için hazır programlar var mıdır ben bunları nasıl geliştirebilirim ?

    • hasan on 04 Mayıs 2014 at 01:54
    • Cevapla

    merhaba hc05 veya hc06 hangisi uygun olur bilmiyorum el terminalinden yolladığımız yazdırma işlemini com portlu yazcıdan çıktı olarak almak istiyorum hc 05 mi hc 06 mı ve bunu yapmak için arada bir devre gereklimi hc bağlasam rx tx yeterli olurmu veya hazır devre varmı tşk

    1. HC-05 slave master mod ayarlanabiliyor ancak HC-06’da fabrika çıkışı neyse onu kullanabiliyorsunuz. Ayrıca HC-05 daha ucuz. Yani HC-05 kullanmanızı öneririm. Bu bluetooth modülü 3.3v’da çalışıyor. Eğer yazıcının com port çıkışı 5v ise besleme için ekstradan bir devre yapmanız gerekiyor veya 3.3 regulatörü olan hc-05 modülü-shieldi almanız gerekiyor.

    • Omur Omeroglu on 08 Mayıs 2014 at 20:15
    • Cevapla

    Tugay merhabalar.Yazı için öncelikle teşekkür etmek isterim.Size şöyle bir soru sormak istiyorum; iki arduino sensör verilerini toplayacak 3. bir arduino daki ekrana yazdıracak.Bu üç arduino arasında bluetooth ile veri akışını nasıl sağlarım bir fikriniz var mı?

    1. Bunun için bluetooth’un verimli kullanılabileceğini düşünmüyorum. Bağlantıyı isteğe göre yapıp veri gönderdikten sonra bağlantıyı kopararak yapabilirsiniz. Ancak çok kötü olur. Yani bu iş için bluetooth uygun değil. Mühendisler olarak en uygun maliyetle bir şeyler üretmeliyiz. Ve sizin istediğiniz işe en uygun modül nrf24l01’lerdir. Aynı anda farklı cihazlara veri gönderebilirsiniz. Hemde çok ucuzlar.

    • Omur Omeroglu on 09 Mayıs 2014 at 00:26
    • Cevapla

    İşte aradığım cevap 🙂 Xbee ile yapmak isterdim ama çok maliyetli oluyor. RF için de her nedense bazı zorlukların olacağı söylendi ve tasvip edilmedi. Şimdi bunu incelediğim kadarıyla herhangi bir sıkıntı gözükmüyor ve kod desteğide fena değil ki en azından rahat bir şekilde çalışabileceğim kadar ucuz. Yani çoooook çok teşekkür ederim verdiğiniz bilgilerden ötürü.

    • Ufuk GECE on 11 Mayıs 2014 at 22:52
    • Cevapla

    İyi günler. Arduino ile voltaj ölçüp, bluetooth ile android telefona direk aktarım yapılmasını istiyorum. Gerekli olan malzemeler konusunda yardımcı olur musunuz? Bluetooth modül konusunda falan kafam karıştı biraz. Teşekkürler.

    1. 1 tane bluetooth modülü 1 arduino ve 1 tane android telefon dışında birşeye ihtiyacınız yok.

    • Merve on 12 Mayıs 2014 at 10:56
    • Cevapla

    Merhaba,öncelikle verdiğiniz bilgiler için teşekkürler ,çok yararlı oldu gerçekten.Benim size şöyle bir sorum olacak ,projemizde hc05 ve hc06 kullanıyoruz .Bu iki bluetooth modülü arasında veri aktarımı yapmamız gerekli bunu nasıl sağlayabiliriz,bu konuda bilgi verebilir misiniz ? Şimdiden teşekkürler.

    1. Biri master biri slave olduğu için herhangi bir sorun olmadan iletişim kurabilirsin. Yazıdaki koddan veya tasarımdan farklı bir şey gerekmiyor.

        • Merve on 30 Mayıs 2014 at 12:07
        • Cevapla

        Tam olarak sorunumuz şu aslında hc05 i master moda geçiremiyoruz , kodları denedik ,farklı bağlantılar yaptık,hc05i değiştirdik ama hiç birinde olmadı .AT moduna gecince HC05 ışığının 2 sn.de bir yanması gerek ama biz bunu başaramadık .Bu konuda bir fikriniz öneriniz varmı ? Gercekten çok sevinirim.Teşekkür ederim

        1. Yazının sonuna ekledim.
          Cihazı master modda kullanmak için;

          1. PIO11 pinine 3.3v verin.
          2. Modülü çalıştırın. Yani modüle şimdi güç verin.
          3. 38400 baud rate ile seri porttan bağlanın.
          4. “AT+ROLE=1\r\n” komutunu gönderin. Eğer başarılı bir şekilde komut çalıştırıldıysa cevap olarak bu gelecektir “OK\r\n”. Eğer olmadıysa bu gelecektir “\r\n”.
          5. Daha sonra PIO11 pinini 0v yapın. Modüle güç verince artık modül master mode’da çalışacaktır. Otomatik olarak slave modülleri arayıp bağlanacaktır.

          Eğer gene yapamazsanız aşağıdaki linkte videolu anlatım da mevcut bir bakın;
          http://www.instructables.com/id/Modify-The-HC-05-Bluetooth-Module-Defaults-Using-A/

    • Nihat on 31 Mayıs 2014 at 20:46
    • Cevapla

    Bu programı derledikten sonra bir takım hatalar aldım.( avrdude: stk500_loadaddr(): (a) protocol error, expect=0x14, resp=0x1 ) mesela bunun gibi. serial3.begin kısmında da hata veriyor benim programlayıcım. Acaba bu serial3.begin komudunu yazabilmem için herhangi bir kütüphaneye ihtiyacım var mı ?

    • emre on 05 Ağustos 2014 at 16:23
    • Cevapla

    Merhaba hocam senin verdiğin linkte ürün gözükmüyor şu anda başka bir link verebilirmisin

    1. Malesef tek tek arayip urun linki veremem. Zaten surekli ilanlar degisiyor ebayde. HC05, arduino bluetooth diye aratirsaniz bulursunuz. 😉

    • Onur on 22 Eylül 2014 at 23:13
    • Cevapla

    Merhaba. Benim elimde iki adet arduino uno ve iki adet bluetooth (HC-06) modülü bulunmakta. Her ikisini telefon ile haberleşebiliyorum. Ama benim yapmak istediğim bu iki bluetooth cihazını birbirleri ile haberleşmesi. Bir türlü birbirlerini tanımıyorlar. Bir arduino cihazdan diğerine bluetooth aracılığı ile haber(mesaj) yollayamıyorum. Bunun için ne yapabilir ?

    1. HC-06 yanlis hatirlamiyorsam sadece slave modda calisabiliyor. Yani sadece baglanabilirsiniz. 1 adet HC-05’e ihtiyaciniz var. HC-05 hem master hem slave olabiliyor.

    • rafet on 06 Şubat 2015 at 23:02
    • Cevapla

    HC-05 modülü ne yaptıysam çalıştıramadım.. reset ve tx pinlerinde voltaj var . modüle 3,3v ve 4,2volt arasında voltaj verdim genede; pc olsun telefon olsun görmedi.Bozuk olup olmadığını nasıl test ederim Teşekkürler.

  3. Yazıda anlatıldığı gibi key pininde yani switchteki değişimler ledlere yani 2 led’in bağlandığı pinlerde yazıda belirtilen değişikliklere sebep oluyorsa modül çalışıyor demektir.

    • ibrahim on 23 Nisan 2015 at 13:30
    • Cevapla

    Merhaba
    İki tane bluetoothu arduino ya bağlayabilirmiyim. İkisinide aynı anda kod olarak nasıl haberleştirebilirim? elimde ıkı tane hc-06 var.
    hangi bluetootha bağlı isem onla işlem yapacağım diğeri bekliyecek. diğerine geçmek istediğimdede tam tersi olacak.

    • Gizem on 04 Mayıs 2015 at 18:54
    • Cevapla

    merhabalar biz bu kodu derlediğimizde serial3 kısmında hata alıyoruz.sebebi ne olabilir acaba?

    1. Kullandığınız board’un serial3 gibi bir donanımı yoktur büyük ihtimal.

  4. Hocam peki bluetooth veri alış verisi yapabilirmiyiz arduinoyla

    1. Yazıdaki gibi yapabilirsiniz. Bekletmeden de yapabilirsiniz veya Flag vs. kullanarak receive bitişini bekleyip transmit moduna girersiniz.

    • kazim on 29 Ağustos 2015 at 02:14
    • Cevapla

    Renk sensorlerindeki sinyali bu modulle androide aktarabilirmiyiz

    1. Tabi ki aktarabilirsiniz ancak dijital olması gerekiyor. İlk önce mcu’da işlemeniz gerekiyor.

    • melis on 17 Aralık 2015 at 00:45
    • Cevapla

    merhaba ben arduinodan bilgisayara ses göndermek istiyorum peki bu ses verisini Putty programında nasıl görmüş olacağım

    1. Nasıl gönderdiyseniz onu görürsünüz 🙂 İlk önce nasıl kaydediyorsunuz onu öğrenmem lazım.

    • ali on 16 Ekim 2017 at 10:07
    • Cevapla

    hocam arduino nano ve hc-06, android telefon ile role yi ac kapa kullaniyorum hersey normal guzel calisiyor. sadece bazen telefondaki pro donuyor bluetooth baglantisi kopuyor role acik kaliyor, cok sakincali benim icin. sizden istedigim komut satiri, bluetooth baglantisi kopunca arduinonun kendine reset atmasi bu sayede butun roleler eski haline hemen donmesi. teşekkür ediyorum

    • ali debik on 05 Aralık 2018 at 21:22
    • Cevapla

    slm size bir soru soracağım hc05 ile kapsamlı bir yazılım göremedim hep ışık yak söndür şimdi sorum şu ardunio 2560 la aldığımız verileri misal ısı verisini hc05 ile andiroide aktarabilirmiyiz ardunio la diyelim ki 30 derece bir veriyi hc05 le androidde gösterebilirmiyiz

Bir cevap yazın

Your email address will not be published.

This site uses Akismet to reduce spam. Learn how your comment data is processed.