Elektronik Devreler Projeler Elektronik ve biraz daha fazlası İletişim - Araçlar - Dikkat - Topluluk
Elektronik / Mikrodenetleyici Projeleri/

Android Üzerinde MSP430 Bluetooth ile Kablosuz Kontrol Uygulaması

Sponsorlu Bağlantılar

Merhabalar.. Bu yazımda sizlere android işletim sistemli telefonum üzerinde gerçekleştirdiğim bluetooth kontrol uygulamasından bahsedeceğim.

Uygulamayı anlatmadan önce biraz android dünyası hakkında bilgi vereyim. Özellikle akıllı telefonlar üzerinde android işletim sistemi yaygınlaşmış durumda. Aynı şekilde android üzerinde program geliştirmek içinde bir sürü kaynak bulunmakta. Benimde bir süredir aklımdaydı. Fakat sanal cihaz üzerinde uğraşmak çekici gelmiyordu. Bir süre önce emektar telefonumun yerine anrdroid sistemli bir telefon alınca başladım uğraşmaya.

Biraz inceleyince gördüm ki android üzerinde yazılım geliştirmek için google tarafından sunulan bir sürü geliştirme aracı ve uygulama mevcut. Bunlardan incelediğim ikisinden birisi eclipse üzerinde java ile program geliştirme diğeri de app inventor isimli uygulama. App inventor, internet üzerinde program geliştirilen ve nerdeyse hiç programlama bilgisi gerektirmeyen, bir satır bile kod yazmadan program geliştirebileceğiniz bir araç. Bir nevi yap boz gibi blokları yan yana koyup program yapabiliyorsunuz. Diğeri ise eclipse üzerinde java ile program geliştirme aracı. Tahmin ediyorum en çok eclipse üzerinde program geliştiriliyor. Bu araçlar hakkında daha detaylı bilgiyi, eğitimi videolarını v.s. internette rahatlıkla bulabilirsiniz. Ben java bilgim olmamasına rağmen eclipse üzerinde geliştirmeye karar verdim. İlk önce temel düzeyde java bilgisi edinerek sonrasında android üzerinde program yazma ile ilgi bir kaç video inceleyip google’nın notlarını kurcalayarak biraz bişeyler kavradım.

Android ile uğraşma amacım android’li akıllı telefonlar gibi sistemler üzerinde kontrol uygulamaları yapmak. Örneğin telefon ile evde bir lamba yakıp söndürmek. Yoksa android üzerinde çok büyük oyunlar yazıp, çok gelişmiş uygulamalar geliştirme gibi bir niyetim yok. :) Bu doğrultuda kolları sıvadım. İşe dış Dünya ile kablosuz bağlantı kurmak ile başladım. (sonuçta mobil telefonlar) Kablosuz aklıma gelen iki seçenek wifi ve bluetooth idi. Wifi’nin daha karışık olduğunu ve modüllerinin daha pahalı olduğunu düşünerek dış Dünya ile haberşlemek için bluetooth kullanmaya karar verdim.

Sonrasında bluetooth modül arayışına girdim. Biraz araştırınca HC-06 isimli modülü almaya karar verdim. Modülü yaklaşık 20 liraya temin ettim. Modülü başlıca özellikleri; 3.3v ile çalışması, uart ile haberleşmesi ve 1200-115200 baud arasında çeşitli çalışması ve slave olarak çalışması.

android-hc-06-bluetooth-modul

Sonrasında bluetooth modül arayışına girdim. Biraz araştırınca HC-06 isimli modülü almaya karar verdim. Modülü yaklaşık 20 liraya temin ettim. Modülü başlıca özellikleri; 3.3v ile çalışması, uart ile haberleşmesi ve 1200-115200 baud arasında çeşitli çalışması ve slave olarak çalışması.

slave olarak çalışması modülün başka cihazlara bağlanamaması başka cihazlardan tarafından modüle bağlanması ve bağlantının yönetilmesi demek. Ben de uygulama da telefondan modüle bağlanacağım için modülün slave olması sorun değil. AT komutları ile modülün baud hızını, ismini ve şifresini değiştirebilirsiniz.

Slave modül olduğu için çok geniş komut seti yok. Modüle hiç bir komut göndermeden varsayılan olarak 9600 baud hızında, linvor ismi ile “1234″ şifresi ile kullanabilirsiniz.

Modülü bir nevi kablosuz uart olarak düşünebilirsiniz. Cihaza bağlandıktan sonra telefondan gönderilen veri direk olarak uarttan okunur. Aynı şekilde uart üzerinden master telefona veri gönderilir. Mikrodenetleyici kısmında uart üzerinden modüle bağlanıp veri gönderip, almak yeterli fakat android kısmında işler biraz daha karışık.

Android tarafında bluetooth kullanabilmek için google tarafından geliştirilen kütüphaneler ve örnek kodlardan faydalandım. Java için google tarafından geliştirilmiş akıllı telefoların donanımlarını (wifi, bluetooth, ivme ve hız sensörleri v.s.) kullanmayı sağlayan bir sürü kütüphane ve örnek kod mevcut. Bende bu uygulamada google’nin bluetooth için hazırlanmış olduğu BluetootChat örneğinden faydalandım.

Yeni baştan uygulama yazabilmek için android üzerinde ileri seviyede programlama bilgisi gerekli. Bende sınırlı seviyede bilgim ile örnek kodları kendi amacıma yönelik değiştirerek uygulamayı yaptım. Uygulamanın çalışma görüntülerini aşağına görebilirsiniz.

android-bluetootchat-google-1

android-bluetootchat-google-2

Uygulamanın çalışması basittir. Uygulama çalışınca bluetooth açma izni ister. Bluetooth açıldıktan sonra menü tuşuna basarak cihaza bağlan tuşuna basılır. Sonrasında taranıp bulunan veya önceden eşleşilmiş cihazlara bağlanılır. Düzgün bi şekilde cihaza bağlandığında resimde görüldüğü gibi hangi cihaza bağlanıldığı ekranın sağ üst kısmında görülür.Ben aldığım modüle ErhanBT ismini verdim resimde görülebilir. Uygulamada msp430 launch pad üstünde ki 2 ledin kontrol işlemi yapılır, kit üzerinde bulunan butonun durumu okunur ve denetleyicinin dahili sensörü ile sıcaklık bilgisi ölçülür. Bu bilgiler ekranda görüntülenir ve kontrol işlemi uygulama ekranında ki butonlar ile yapılır.

Uygulamada temel olarak 1 byte veri gönderir ve alınır. Gönderilen veri ile kit üzerinde ki ledler kontrol edilir. Alınan 1 byte veri ile de ledlerin ve butonun durumu ve sıcaklık bilgisi okunur. Alınan veriye göre ekran güncellenir. Uyguluma bu şekilde çalışmaktadır. Kod kısmında ise önemli olan veri alma ve gönderme yapılan kısımlardır.

Bluetooth modül ile 1024 byte paket veriler gönderilip alınabilir. Uygulamanın kodlarında değiştirdiğim kısımları inceleyerek uygulamayı kendinize göre değiştirebilirsiniz. Bluetooth modül ile 1024 byte veri alınıp gönderilebilir demiştim. Ben bu uygulamada sadece 1 byte veri alıp gönderdim. Sebebi ise denetleyici tarafında msp430g2231′in donanımsal uart modülünün olmaması. Uart donanımı zamanlayıcı kullanılarak yazılımsal olarak yapıldığından paket veri alma ve gönderme işlemlerinde veri kaçırma sorunu oluyordu. Bu yüzden sadece 1 byte veri alıp göndererek işlemlerimi yaptım. Bilgisayar ile yaptığım denemelerde bir sıkıntı olmadı paket halinde veri gönderip alabiliyordum.

Mikrodenetleyici tarafında ise basit bir örnek kod yazdım. Yaklaşık 100ms aralıklarla 1 byte veri gönderiliyor. Gönderilen verinin 8. biti ’1′ ise veri android kısmında Led ve buton bilgisi olarak ’0′ ise sıcaklık bilgisi olarak değerlendiriliyor. Dediğim gibi denetleyicinin uart donanımı olmadığından paket olarak veri alışverişinde sorun çıkardığı için bu şekilde bir gönderme işlemi yaptım. Ayrıca uygulamada gelen bir byte veriye göre kit üzerinde bulunan 2 Led’in durumu düzenleniyor. Modülü denetleyiciye bağlamak için rx ve tx pinlerini bağlamak ve 3.3 v gerilim ile toprak bağlantısını yapmak yeterli.

msp430-launch-pad-bluetoot

Uygulamaya ait proje kodları: android-uzerinde-msp430-hc-06-bluetooth-ile-kablosuz-kontrol-uygulamasi.zip

Yazıda direk uygulamadan bahsetmek yerine birazda android hakkında bilgi vermeyi uygun gördüm. Örnek olması açısından basit bir uygulama yaptım. Uygulamayı geliştirerek daha farklı amaca yönelik gelişmiş kontrol uygulamaları yapabilirsiniz.Uygulama ile ilgili söyleyeceklerim bu kadar. Anlaşılmayan veya sormak istediğiniz kısımları sorabilirsiniz, elimden geldiğince cevaplamaya çalışırım. Faydalı olması dileğiyle, bir sonraki yazıda görüşmek üzere..

  • andro

    eclipse projesini aldığınız yerin adresini paylaşabilir misin?

  • Erhan

    Android sdk içinde bulunan kendi örnek projedir. Örnekler içerisinde “Bluetooth Chat” isminde bulabilirsiniz.

  • İsmail Çevik

    Hocam çok güzel bir proje elinize sağlık.

    [youtube]http://www.youtube.com/watch?v=Wyb644-U6eg&feature=related[/youtube]
    http://www.youtube.com/watch?v=Wyb644-U6eg&feature=related

    Acaba bu projenin nasıl yapıldığını anlatabilir misiniz ?
    Proteus ile çizimi ve pic e yazılacak komutlar ile birlikte sizden ücretli destek alabilir miyim ? İstanbul’a gelirsem temel olarak yazdığınız yazıya benziyor zaten. Android uygulaması da markette mevcut sadece devresi lazım.
    Düşünürseniz mail@hyip.gen.tr adresine email atarsanız sevinirim iyi çalışmalar.

  • osman erol

    merhaba.
    dumlupınar üniversitesi kontrol ve otomasyon bölümü 2. sınıf öğrencisiyim.
    hocam projenizi daha önceden görmüş. bende de android telefonumun olduğunu görünce bana bu projeyi verdi.
    sanırım beni çok çok aşan bir proje bu.
    projenizi uygulamak için hiç bilmeyen bir öğrenciye nereden başlamayı önerirsiniz ?
    uygulamaya ait proje doklarını indirdim. içerisindeki eclipse projesi sanırım telefonun içerisine atmam gereken proje(diye düşündüm)
    eğer doğru düşünmüşsem bu programı telefonumun içine nasıl atacağım ?
    not: sorularım size saçma gelebilir. kusuruma bakmayın, pek bir bilgim yok. fakat önümde koskoca bir dönem var. üstesinden geleceğim inşallah.

    yardımınız için teşekkürler şimdiden.

  • Bayram Ali

    Güzel Çalışma :) bana hangi ide de yaptığını söyler misin? ben micro code studio da bi şeyler yaptım.

  • erkan

    Merhaba Projenin android kısmını bluetooth 4.0 a göre nasıl uyarlayabiliriz?

  • osman

    merhaba erhan,
    ben şu an Erhan Yılmaz adlı arkadaşımızın yazmış tasarlamış olduğu uygulamayı 4.0.3 te kullanıyorum. bir sorunla karşılaşmadım.
    2.2 ye göre tasarlanmış zaten uygulama bu yüzden 2.2 sürümü ve tüm üst sürümler bu uygulamayı çalıştırıyor diye biliyorum.
    kolay gelsin

  • erkan

    Malesef 4.0 da çalışmıyor. Bluetooth 4.0 veya bleutooth low energy olarak adlandırılan sistemde işler biraz daha farklı. Onunla ilgili araştırma yapıyorum şu anda da sonuca ulaşırsam buradan yazarım.

  • Mesut SEYHAN

    merhaba

    bluetooth modulunu nerden aldınız ?

  • Göktuğ ÖZEL

    Merhaba ben bu kaynaktaki parcaların hepsini temin ettim elimde arduino nano ve bu sitede verilmiş olan modülden var : http://english.cxem.net/arduino/arduino5.php

    Ancak ne yaptıysam program hep eror verdi. sizin programınızı denemek istedim yukledim cihazımı görüyor ancak unable to connect device diyor bu sorunu da çözemedim yardımcı olursanız cok sevinirim teşekkürler..

    • erkan

      Merhaba öncelikle android 2.0 sonrası sürümlerden birini kullanan bir telefona sahipseniz telefona eşleştirme yapmanız gerekmekte. Eşleştirme yaptıkdan sonra menüde görünen işleştirilmiş cihazlar kısmından bağlantı kurabilirsiniz. Farklı bir hata ile karşılaşırsanız yardımcı olurum.

      • ozelgoktug

        İlginiz ve hızlı cevabınız için cok teşekkür ederim. Eşliştirme yada cihazı görmede problem yok gibi görünüyor telefonum 4.0.4 eşleştirip şifremi giriyorum hersey buraya kadar normal. ancak verdiğim adresteki uygulamada mac adresini değiştirip modülümün mac adresini yazdıgım halde “SOCKET CLOSED” hatasını alıyorum ve UUID mi kontrol etmemi istiyor. sizin programınızda da baglan diyorum bir sorun görünmüyor ancak on of lara bastıgımda bir cihaza baglanın uyarısını alıyorum. Cok aradım taradım bu sorunla karsılasmıs baskaları da var ancak bir çözüm bulamadım. Teşekkür ederim. Saygılarımla.

        • erkan

          Kullandığınız telefonun marka ve modelini öğrenebilir miyim? Her telefonun bluetooh protokolü ve versiyonu farklı oluyor bu uygulamada (Kullanılan bluetooth modülünden dolayı) A2DP ve bluetooth 4.0 (Bluetooth Low Energy) desteklenmiyor.

  • erkan

    Öncelikle eşleştirme yapmanız gerekiyor. Eşleştirme yaptınız mı?

  • Ahmet

    Merhabalar gayet güzel bir çalışma olmuş. Öncelikle teşekkür ederiz böyle bir çalışmayı paylaştığınız için.
    Ben dediğiniz kodları yine msp430 da ama msp430g2452 ile yapmayı denedim. Programı atmayı denediğimde TIME_VECTOR problemi çıktı. Onu düzelttim tekrar attım sorunsuz atabildi. Sonra telefonumdan uygulamayı açıp bağlanıyorum yine sorun yok. Sıcaklık bilgisi geliyor yine sorun yok. Ancak ledlere bastığımda yanıp sönmüyor hızlı bir şekilde ikisini de basıyorum arada bir ikisi aynı anda yanıyor ve sönüyor veya biri yanıp biri sönüyor ama bu benim kontrolümde olmuyor kafasına göre. Şimdi ben aceba msp430g2452 kullandığım için başka bir yerleri de değiştirmem mi gerekiyordu acaba?

  • Mehmet Sarı

    Mrb. Erhan bey öncelikle bu tarz bir
    uygulama arıyordum tesadüfen denk geldi, ancak ben samsung gt-s 5233 ile
    yapmayı düşünüyorum bu telefonda android yok ve cep telefondaki control
    programını kendimiz mi yazıyoruz, ben bu iletişimi başka bir devre için kullanacağım
    eğer yardımcı olursanız sevinirim teşekkürler

  • Mehmet Sarı

    mrb, samsung 5233 ile android sistem olamayan cep ile de olur mu ve cep programını kendimiz mi yazıyoruz son olarak bluetooth aparatı harıcinde programlama kitine gerek var mı teşekkürler

    • Orhan ARI

      Android için yazılım mevcut. Maalesef android işletim sistemi olmayan cihazlarda kullanamazsınız. Kit olmadan bluetooth işinize yaramayacaktır.

  • simge

    Merhaba p2 portunuda işin içine katıp maximum 12 ledi kontrol
    edebilirmi acaba p1 portunu hepsini kullanarak toplamda 6 ledi bahımsız
    olarak çalıştırabiliyorum ama p2 portunu kullanamıyorum

    • Mehmet

      kodu bana gönderebilir misiniz acaba dhy3@mynet.com

  • Mehmet

    CCS ile derledim kite yükledim ama bağlantı sorunum var 2553 için yazılan var mı acaba

  • Engin

    merhaba, bende ufak bir program yazdım, hc-06 ve pic 16f628a kullandım. android kısmında sürekli olarak 509 ve 515 hatalarını alıyorum, bağlantı kuruluyor bunu hc06 daki led ten anlıyorum. bağlantı yokken flaşör gibi bağlantı kurulduğunda direk yanıyor.

    pic basic biliyorum ve sadece 1 verisi göndermek istiyorum

    HSEROUT [1,”/n/r”]

    komutu ile bu işlemi yaptığımı sanıyorum
    pic tx çıkışına t521 optocouplor bağladım çıkışınıda hc06 rx pinine verdim. sizin devrenizi incelemek isterim yardımcı olursanız sevinirim.

  • beril

    Merhaba , bu projeyi MSP430G2553 ile yapmak için proje kodunda ne yapmamız gerekiyor .

  • Okan ŞAHİN

    Selam Erhan bende bluetoot uygulaması yazmak istiyordum tam yaptıkların benim istediğim gibi birşey bana aynı şekil gelen mesajı ufak ekranda gösterecek bir uygulama hakkinda yardımcı olabilirmisin

  • Gözde

    uygulamanın kodlarını paylaşma imkanınız var mı?

  • kazim

    Renk sensorune bu modulu entegre edebilirmiyiz

  • Serhat Ởzkahya

    paylaşımınız için çok teşekkürler. benim problemim arduino karta bluetooth ile bağlandığım cihaza kartın içerisinde ki bir bilgiyi android de değişkene yazdıracağım. Bilginin ne olduğunun bir önemi yok. örnek olarak kartın içerisin de karta ait olarak tanımlanan ID.