Arduino Ders 36: HC-05 Bluetooth Modülü ile LED Kontrolü

Arduino Ders 36

HC-05 Bluetooth Modülü ile LED Kontrolü

Arduino ile HC-05 Bluetooth modülünü kullanarak telefondan veri göndermeyi ve gelen komutlara göre LED kontrol etmeyi öğreneceğiz.

Arduino HC-05 Bluetooth LED kontrolü

Bu derste Arduino ile Bluetooth üzerinden haberleşme yapacağız. Telefonumuzdan HC-05 Bluetooth modülüne karakter göndereceğiz. Arduino gelen karakteri okuyacak ve LED’i yakıp söndürecek.

  • Arduino Uno
  • HC-05 Bluetooth modülü
  • LED
  • 220 ohm direnç
  • 1K ve 2K direnç
  • Jumper kablolar
  • Bluetooth terminal uygulaması yüklü telefon

HC-05 modülünün RX pini 3.3V seviye ile çalışır. Arduino TX pini 5V çıkış verdiği için Arduino TX hattından HC-05 RX hattına giderken gerilim bölücü kullanmak daha güvenlidir.

Bu uygulamada Arduino’nun donanımsal seri haberleşme pinleri yerine SoftwareSerial kütüphanesi kullanılacaktır. Böylece Seri Port Ekranı da hata ayıklama için kullanılabilir.

HC-05 VCC Arduino 5V
HC-05 GND Arduino GND
HC-05 TXD Arduino D10
HC-05 RXD Arduino D11 üzerinden gerilim bölücü
LED Anot Arduino D8
LED Katot 220 ohm direnç üzerinden GND

Bluetooth modülünde TX ve RX bağlantıları çapraz yapılır. HC-05 TXD pini Arduino’nun RX olarak kullanılacak D10 pinine, HC-05 RXD pini ise Arduino’nun TX olarak kullanılacak D11 pinine bağlanır.

Telefon üzerinden Bluetooth terminal uygulaması ile Arduino’ya karakter gönderilir. Arduino bu karakteri HC-05 modülü üzerinden alır.

Gelen karakter 1 ise LED yanar. Gelen karakter 0 ise LED söner. Böylece kablosuz LED kontrolü yapılmış olur.

HC-05 modülünün varsayılan eşleşme şifresi çoğu modülde 1234 veya 0000 olabilir. Modüle bağlanmadan önce telefonun Bluetooth ayarlarından eşleştirme yapılmalıdır.

Bu kodda telefondan 1 gönderildiğinde LED yanar, 0 gönderildiğinde LED söner. Gelen komutlar aynı zamanda Seri Port Ekranı’nda görüntülenir.

#include <SoftwareSerial.h>

SoftwareSerial bluetooth(10, 11); 
// 10 = Arduino RX, HC-05 TXD pinine bağlanır
// 11 = Arduino TX, HC-05 RXD pinine bağlanır

const int ledPin = 8;
char gelenVeri;

void setup() {
  pinMode(ledPin, OUTPUT);
  digitalWrite(ledPin, LOW);

  Serial.begin(9600);
  bluetooth.begin(9600);

  Serial.println("Bluetooth LED kontrol sistemi hazir.");
  Serial.println("Telefondan 1 veya 0 gonderin.");
}

void loop() {
  if (bluetooth.available()) {
    gelenVeri = bluetooth.read();

    Serial.print("Gelen veri: ");
    Serial.println(gelenVeri);

    if (gelenVeri == '1') {
      digitalWrite(ledPin, HIGH);
      bluetooth.println("LED yandi");
      Serial.println("LED yandi");
    }

    if (gelenVeri == '0') {
      digitalWrite(ledPin, LOW);
      bluetooth.println("LED sondu");
      Serial.println("LED sondu");
    }
  }
}

Bu sürümde LED açma ve kapatma dışında LED’in durumunu sorgulama, yanıp söndürme ve yardım menüsü gibi komutlar da eklendi.

#include <SoftwareSerial.h>

SoftwareSerial bluetooth(10, 11);

const int ledPin = 8;

char komut;
bool ledDurumu = false;

void setup() {
  pinMode(ledPin, OUTPUT);
  digitalWrite(ledPin, LOW);

  Serial.begin(9600);
  bluetooth.begin(9600);

  mesajYazdir();
}

void loop() {
  if (bluetooth.available()) {
    komut = bluetooth.read();

    Serial.print("Gelen komut: ");
    Serial.println(komut);

    komutIsle(komut);
  }
}

void komutIsle(char gelenKomut) {
  if (gelenKomut == '1') {
    ledAc();
  } 
  else if (gelenKomut == '0') {
    ledKapat();
  } 
  else if (gelenKomut == 'd' || gelenKomut == 'D') {
    durumGonder();
  } 
  else if (gelenKomut == 'y' || gelenKomut == 'Y') {
    ledYakSondur();
  } 
  else if (gelenKomut == 'h' || gelenKomut == 'H') {
    mesajYazdir();
  } 
  else {
    bluetooth.println("Gecersiz komut. Yardim icin H gonderin.");
  }
}

void ledAc() {
  digitalWrite(ledPin, HIGH);
  ledDurumu = true;

  bluetooth.println("LED acildi.");
  Serial.println("LED acildi.");
}

void ledKapat() {
  digitalWrite(ledPin, LOW);
  ledDurumu = false;

  bluetooth.println("LED kapatildi.");
  Serial.println("LED kapatildi.");
}

void durumGonder() {
  if (ledDurumu) {
    bluetooth.println("LED durumu: ACIK");
  } else {
    bluetooth.println("LED durumu: KAPALI");
  }
}

void ledYakSondur() {
  bluetooth.println("LED 5 kez yanip sonecek.");

  for (int i = 0; i < 5; i++) {
    digitalWrite(ledPin, HIGH);
    delay(250);
    digitalWrite(ledPin, LOW);
    delay(250);
  }

  ledDurumu = false;
  bluetooth.println("Islem tamamlandi.");
}

void mesajYazdir() {
  bluetooth.println("Arduino Bluetooth LED Kontrol");
  bluetooth.println("1: LED ac");
  bluetooth.println("0: LED kapat");
  bluetooth.println("D: LED durumunu goster");
  bluetooth.println("Y: LED yanip sondur");
  bluetooth.println("H: Yardim menusu");
}

Telefon uygulamasından karakter gönderirken satır sonu ekleniyorsa kod yine çalışır; ancak bazı uygulamalarda gönderilen komutun yanında görünmeyen karakterler de gelebilir. Böyle durumlarda sadece tek karakter gönderme ayarı seçilmelidir.

  • HC-05 modülünü telefonla eşleştirin.
  • Bluetooth terminal uygulamasını açın.
  • HC-05 cihazına bağlanın.
  • Uygulamadan 1 göndererek LED’i yakın.
  • Uygulamadan 0 göndererek LED’i söndürün.
  • Geliştirilmiş kodda H göndererek komut listesini görüntüleyin.
  • Birden fazla LED ayrı ayrı kontrol edilebilir.
  • RGB LED eklenerek telefondan renk seçimi yapılabilir.
  • Röle modülü eklenerek lamba veya fan gibi cihazlar kontrol edilebilir.
  • Servo motor eklenerek Bluetooth kontrollü kapı kilidi yapılabilir.
  • LCD ekran eklenerek gelen komutlar ekranda gösterilebilir.

Röle ile yüksek voltajlı cihaz kontrol edilecekse elektriksel güvenlik kurallarına dikkat edilmelidir. Şebeke elektriği ile çalışırken mutlaka deneyimli birinden destek alınmalıdır.

Yorum Gönder

Daha yeni Daha eski