Arduino Bluetooth Modülü Kullanımı ve Android Uygulaması

Bu yazımızda Arduino Bluetooth modülü kullanımı anlatacağız, iki farklı Arduino Bluetooth modülü kullanımını ayrı ayrı anlatan bu içerikte, ilk proje ile Android telefon üzerinden kontrol etmek için, ikinci projede ise bilgisayar üzerinden kontrolü işledik.

Bir Arduino’yu akıllı telefon kullanarak kontrol eden ilk örnekle başlamadan önce, HC-05 Bluetooth modülüne daha yakından bakalım. Sadece Slave olarak ayarlanabilen HC-06 modülüne kıyasla, HC-05 Master olarak da ayarlanabilir ve bu da iki ayrı Arduino Board arasında iletişim kurulmasını sağlar. Bu modülün birkaç farklı versiyonu var ama biz bir devre kartıyla gelenini tavsiye ediyorum çünkü bu şekilde bağlanması çok daha kolay. HC-05 modülü bir Bluetooth SPP (Seri Port Protokolü) modülüdür, yani Arduino ile Seri İletişim yoluyla haberleşir.

Arduino Bluetooth Modülü Android Uygulama ile Kontrolü

Devre Şeması

Modülün Arduino geliştirme kartına nasıl bağlamamız gerektiği aşağıda gösterilmiştir.

Arduino Bluetooth Modülü Kullanımı ve Android Uygulaması arduino bluetooth,arduino bluetooth modülü kullanımı,arduino ile bluetooth modülü kullanımı,arduino bluetooth android uygulaması,arduino bluetooth modülü
Arduino Bluetooth Modülü Bağlantısı

Kullandığımız bluetooth modül 3,6 ila 6 volt arasında çalıştırılabilir, çünkü bir voltaj regülatörü içeren bir devre kartı üzerinde gelir. Ancak data pinlerinin lojik voltaj seviyesi 3,3V’dir. Bu nedenle Arduino TX (5V çıkışa sahip İletim Pimi) ile Bluetooth modülü RX (sadece 3,3V’u destekleyen Alma Pimi) arasındaki hattın modülü yakmaması için voltaj bölücü üzerinden bağlanması gerekir. Öte yandan Bluetooth modülü TX pini ile Arduino RX pini arasındaki hat doğrudan bağlanabiliyor çünkü Bluetooth modülünden gelen 3.3V sinyali Arduino Board’da yüksek bir mantık olarak kabul edilmeye yetiyor.

Arduino Kodu

LED’i açma ve kapama işlemi için bu kodu kullanabilirsiniz, detaylı bir Bluetooth veri aktarım projesini yakında sizlerle paylaşacağız.

#define ledPin 7
int durum = 0;

void setup() {
  pinMode(ledPin, OUTPUT);
  digitalWrite(ledPin, LOW);
  Serial.begin(38400); // Bluetooth modülünün varsayılan iletişim hızı
}

void loop() {
  if(Serial.available() > 0){ // Verilerin seri porttan gelip gelmediğini kontrol eder
    durum = Serial.read(); // Seri bağlantı noktasından verileri okur
 }

 if (durum == '0') {
  digitalWrite(ledPin, LOW); // LED'i kapat
  Serial.println("LED: Kapali"); // Telefona "LED: ON" Dizesini geri gönderin
  durum = 0;
 }
 else if (durum == '1') {
  digitalWrite(ledPin, HIGH);
  Serial.println("LED: Acik");;
  durum = 0;
 } 
}

Öncelikle LED’imizin bağlanacağı pini ve akıllı telefondan gelen verileri depolayacağımız bir değişken tanımlamamız gerekiyor. Kurulum kısmında ise çıkış olarak LED pinini tanımlayıp hemen LOW yapmamız gerekiyor. Daha önce de belirtildiği gibi, seri iletişimi kullanacağız, bu nedenle seri iletişimi Bluetooth modülünün varsayılan baud hızı olan 38400 baud hızında başlatmamız gerekiyor.

Serial.available() fonksiyonu ile döngü bölümünde seri portta okunacak veri olup olmadığını kontrol edeceğiz. Bu, Bluetooth modülüne veri göndereceğimiz zaman bu ifadenin doğru olacağı anlamına gelir, bu nedenle Serial.read() işlevini kullanarak bu verileri okuyacağız ve “durum” değişkenine koyacağız. Bu nedenle, Arduino ‘0’ karakterini alırsa, LED’i kapatacak ve Serial.println() işlevini kullanarak, seri port aracılığıyla “LED: OFF” Dizesini akıllı telefona geri gönderecektir.

Ek olarak, yukarıdaki iki satırın yalnızca bir kez yürütülmesi için “durum” değişkenini 0’a sıfırlayacağız. Burada “durum” değişkeninin tamsayı olduğuna dikkat edin, bu nedenle akıllı telefondan gelen ‘0’ karakterini aldığımızda, tamsayı “durum” değişkeninin gerçek değeri ASCII’ye göre ‘0’ karakterine karşılık gelen 48’dir.. Bu yüzden “if” ifadesinde “durum” değişkenini ‘0’ karakteriyle karşılaştırıyoruz. Öte yandan, alınan karakter ‘1’ ise, LED yanacak ve “LED: AÇIK” Dizisi geri gönderilecektir.

Şimdi kod yüklenmeye hazır ama bunu yapmak için TX ve RX hatlarını çıkarmamız gerekiyor çünkü Arduino yüklerken seri iletişimi kullanır, böylece RX (dijital pin 0) ve TX (dijital pin1) pinleri meşgul olur. Arduino Board’un diğer TX ve RX pinlerini kullanırsak bu adımdan kaçınabiliriz ancak bu durumda seri haberleşme için SoftwareSerial.h kütüphanesini kullanmamız gerekecek.

Akıllı Telefonu HC-05 Bluetooth Modülüne ve Arduino’ya Bağlama

Artık akıllı telefonu Bluetooth modülüne ve Arduino’ya bağlamaya hazırız. Burada yapmamız gereken Bluetooth’u aktif hale getirmek ve akıllı telefondan HC-05 Bluetooth modülüne bağlanmaktır.

Ardından cihazları eşleştirmemiz gerekiyor ve HC-05 modülünün varsayılan şifresi 0000 veya 1234’tür. Cihazları eşleştirdikten sonra Arduino’yu kontrol etmek için bir uygulamaya ihtiyacımız var. Play Store’da bu amaçla kullanılabilecek ve Arduino kodu ile çalışacak bir çok uygulama bulunmaktadır. Fakat uğraşmamanız için sizler için hazırladığımız Android uygulamayı buradan indirebilirsiniz.

“Connect” butonu ile akıllı telefonu Bluetooth modülüne bağlayacağız ve butonun altındaki durum yazısı başarılı bir şekilde bağlanıp bağlanmadığımızı bize söyleyecektir. “Aç” ve “Kapat” butonlarını kullanarak LED’i açıp kapatabiliriz. Düğmelerin üzerindeki metin, belirli bir düğmeye basıldığında Arduino’nun akıllı telefona geri gönderdiği metindir.

Arduino Bluetooth Modülü Bilgisayar ile Kontrolü

Bir Laptop veya PC kullanarak Bluetooth üzerinden Arduino’yu nasıl kontrol edebileceğimizi görelim. Bu yüzden öncelikle laptopumuzu HC-05 Bluetooth modülü ile eşleştirmemiz gerekiyor ve bunu Bluetooth Ayarlarından yapabiliriz. Dizüstü bilgisayar HC-05 modülünü keşfedecek ve ‘1234’ şifresini kullanarak cihazları eşleştireceğiz.

Arduino Bluetooth Modülü Kullanımı ve Android Uygulaması arduino bluetooth,arduino bluetooth modülü kullanımı,arduino ile bluetooth modülü kullanımı,arduino bluetooth android uygulaması,arduino bluetooth modülü

Aygıtları, Aygıt Yöneticisinde, Bağlantı Noktaları (COM & LPT) altında eşleştirdiğimizde, “Bluetooth bağlantısı üzerinden Standart Seri” adlı iki yeni cihaz görünecektir. Buradan cihazların haberleşeceği seri portun COM Port numarasını görebiliriz.

Arduino Bluetooth Modülü Kullanımı ve Android Uygulaması arduino bluetooth,arduino bluetooth modülü kullanımı,arduino ile bluetooth modülü kullanımı,arduino bluetooth android uygulaması,arduino bluetooth modülü

Bir LED’i açıp kapatarak ve bir diziyi dizüstü bilgisayara geri göndererek daha önce olduğu gibi aynı örneğe bağlı kalacağız, böylece daha önce açıklandığı gibi aynı Arduino kodunu kullanacağız.

Bilgisayarda program arayüzü için Processing IDE kullanacağız fakat daha önce içerik oluşturduğumuz C# ile form oluşturup bu uygulamanın aynısını yapabilirsiniz.

Şimdi Processing IDE’yi kullanarak Arduino’yu kontrol etmek için bir program yapacağız. İşte kaynak kodu:

import processing.serial.*;
Serial myPort;
String ledStatus="LED: OFF";

void setup(){
  size(450, 500);
  myPort = new Serial(this, "COM5", 38400); //buradan sizdeki COM Port değeri ile değiştirmeniz gerekir
  myPort.bufferUntil('\n'); 
}
void serialEvent (Serial myPort){ 
  ledStatus = myPort.readStringUntil('\n');
}

void draw(){
  background(237, 240, 241);
  fill(20, 160, 133);
  stroke(33);
  strokeWeight(1);
  rect(50, 100, 150, 50, 10);  
  rect(250, 100, 150, 50, 10); 
  fill(255);
  
  textSize(32);
  text("Turn ON",60, 135);
  text("Turn OFF", 255, 135);
  textSize(24);
  fill(33);
  text("Status:", 180, 200);
  textSize(30);
  textSize(16);
  text("Bluetooth LED Kontrolu,\n     devreyakan.com", 80, 320);

  text(ledStatus, 155, 240);
  
  if(mousePressed && mouseX>50 && mouseX<200 && mouseY>100 && mouseY<150){
    myPort.write('1'); 
    stroke(255,0,0);
    strokeWeight(2);
    noFill();
    rect(50, 100, 150, 50, 10);
  }
  if(mousePressed && mouseX>250 && mouseX<400 && mouseY>100 && mouseY<150){
    myPort.write('0'); 
    stroke(255,0,0);
    strokeWeight(2);
    noFill();
    rect(250, 100, 150, 50, 10);
  }
}

Seri haberleşmeyi etkinleştirmek için Serial kütüphanesini dahil edip bir seri nesne oluşturmamız ve ayrıca led durumu için bir String değişkeni tanımlamamız gerekiyor. Kurulum kısmında programın pencere boyutunu ayarlayıp seri haberleşmeyi başlatmamız gerekiyor.

Burada COM Port Numarasına gelince, daha önce cihaz yöneticisinde fark ettiğimiz iki COM Port numarasından birini denememiz gerekiyor. Bir sonraki satır, seri portun arabelleğe alınmasını tanımlar ve bizim durumumuzda, yeni bir satır olana kadar ve aslında Arduino, println( nedeniyle “LED: OFF” veya “LED ON” Dizesini her gönderdiğinde yeni bir satır vardır.) Ardından serialEvent() fonksiyonunu kullanarak seri portta okunacak veri olup olmadığını kontrol ederiz. Eğer öyleyse, readStringUntil() işlevini kullanarak bu verileri Arduino’dan gönderilen seri bağlantı noktasından ve bizim durumumuzda “LED: OFF” veya “LED: ON” Dizesi okuyacağız.

Sürekli tekrar eden ana draw() fonksiyonunda programın tüm grafiklerini ve fonksiyonlarını yapıyoruz. Bu yüzden önce arka plan rengini, dolgu rengini, kontur boyutunu ve rengini ayarlamamız gerekiyor ve rect() işlevini kullanarak iki düğme çiziyoruz. text() işlevini kullanarak Arduino’dan gelen ledStatus dizesi de dahil olmak üzere tüm metni yazdırıyoruz.

Şimdi geriye düğmeleri işlevsel hale getirmek kaldı. İlk “if” ifadesini kullanarak “Turn ON” düğmesinin alanını sınırlandırıyoruz, bu nedenle düğmeye basıldığında ‘1’ karakteri seri port üzerinden Arduino’ya gönderilecek ve bu LED’i açacaktır. Sonraki for satırları, basıldığında düğmeyi vurgulamak için kullanılır. Aynı prosedür “Kapat” düğmesi için de geçerlidir.

Artık program hazır, yani çalıştır butonuna bastığımızda program laptop ile Arduino arasındaki Bluetooth iletişimini otomatik olarak aktif edecek. HC-05 Bluetooth modülü iki saniyede bir yanıp sönmeye başlayacak, bu da modülün bağlandığını ve LED’i Dizüstü bilgisayarımızı kullanarak kontrol edebileceğimizi gösterir.