Android Ses Komutu İle Arduino Kontrolü (Akıllı Ev Sistemi)

0
7039
Android Ses Komutu İle Arduino Kontrolü (Akıllı Ev Sistemi)
Android Ses Komutu İle Arduino Kontrolü (Akıllı Ev Sistemi)

Android Ses Komutu İle Arduino Kontrolü

Arduino ve Android haberleşmesinin en eğlenceli taraflarından birisi ses kontrolüdür. Türkçe dil destekli Android uygulamalar şu anda piyasada olmasa da diğer diller ile Arduino kontrolü yapılabilmektedir. Android uygulama içinde daha önce tanımlanmış cümle komutlarına göre bluetooth üzerinden Arduino iletişimini bu projede gerçekleştirmeye çalışacağız. Aynı teknolojinin artarak hızla ev otomasyon sistemlerine uygulanmaya çalışıldığını söylemekte fayda var.

Kullanılan Malzemeler

  • Bir adet Arduino Uno kartı
  • Beş adet farklı renkte led,
  • Bir adet HC-05 Seri haberleşme bluetooth modülü,
  • Bir adet akıllı cihaz.

Tasarım

HC-05 Bluetooth modülünün yine aynı 4 bacağını kullanacağız. Daha önce anlattığımız için ayrıntıya girmeden kart ve modül bağlantılarını gösterelim.

Android Ses Komutu İle Arduino Kontrolü (Akıllı Ev Sistemi)
Android Ses Komutu İle Arduino Kontrolü (Akıllı Ev Sistemi)

Kodlar

Arduino kodlamaya bakmadan önce Android uygulamasının nasıl çalıştığından bahsedelim. Burada kullanılan mantık şudur; Siz akıllı cihazınızın ahizesine “tv on” cümlesini okuduğunuz zaman cihaz bunu bluetooth ile Arduino’ya aktarır. Arduino bu cümle komutlarının hepsini daha önce tanımlamıştır ve bunu 1-0 sistemine dönüştürerek örneğin dijital pin 2’yi lojik 1 yapar. Sizin cümleniz onun için bu manaya gelir. İsterseniz Arduino kodlamada bu çıkışları değiştirebilir veya başka İngilizce cümleler ekleyerek komut sayısını artırabilirsiniz.

Komutların başında yer alan # işareti, bir önceki komutun bittiğini kesildiğini, yeni komuta başlandığını gösterir.

String voice; // voice değişkeni tanımlanıyor

int 

led1 = 2, //led'lerin bağlı olduğu pinler  

led2 = 3, 

led3 = 4, 

led4 = 5, 

led5 = 6; 

//--------------------------Fonksiyonların tanımlanması-------------------------------//  

void allon(){ // allon,hepsini aç fonksiyonu,tüm çıkışlar aktif

     digitalWrite(led1, HIGH); 

     digitalWrite(led2, HIGH); 

     digitalWrite(led3, HIGH); 

     digitalWrite(led4, HIGH); 

     digitalWrite(led5, HIGH); 

}

void alloff(){ //allof,hepsini kapa fonksiyonu,tğm çıkışlar pasif

     digitalWrite(led1, LOW); 

     digitalWrite(led2, LOW); 

     digitalWrite(led3, LOW); 

     digitalWrite(led4, LOW); 

     digitalWrite(led5, LOW);

}

//-----------------------------------------------------------------------//  

void setup() {

  Serial.begin(9600); // seri iletişim başlar

  pinMode(led1, OUTPUT); // led'ler çıkış elemanı

  pinMode(led2, OUTPUT); 

  pinMode(led3, OUTPUT); 

  pinMode(led4, OUTPUT); 

  pinMode(led5, OUTPUT); 

}

//-----------------------------------------------------------------------//  

void loop() {

  while (Serial.available()){  //bilgi geldiği sürece

  delay(10); //güvenlik gecikmesi uygula

  char c = Serial.read(); //verileri oku c karekterine at

  if (c == '#') {break;} //# işareti gelirse,yani okuma bitmişse döngüyü durdur.

  voice += c; //gelen her karekteri ekle ve komut cümlesini tamamla

  }  

  if (voice.length() > 0) {

    Serial.println(voice); 

//-----------------------------------------------------------------------//    

  //----------Tüm ledlerin kontrolü----------//  

       if(voice == "*all on") {allon();}  //all on denirse ledlerin hepsini aç

  else if(voice == "*all off"){alloff();} //all off denirse ledlerin hepsini kapa

  

  //----------Adım Adım Açma komutlar----------// 

  else if(voice == "*TV on") {digitalWrite(led1, HIGH);} //tv açma komutu

  else if(voice == "*fan on") {digitalWrite(led2, HIGH);} // fan çalıştırma komutu

  else if(voice == "*computer on") {digitalWrite(led3, HIGH);} // bilgisayar açma komutu

  else if(voice == "*bedroom lights on") {digitalWrite(led4, HIGH);} // yatak odası lambasını açma

  else if(voice == "*bathroom lights on") {digitalWrite(led5, HIGH);} // banyo lambasını açma

  //----------Adım Adım Kapatma komutları----------// 

  else if(voice == "*TV off") {digitalWrite(led1, LOW);} 

  else if(voice == "*fan off") {digitalWrite(led2, LOW);}

  else if(voice == "*computer off") {digitalWrite(led3, LOW);}

  else if(voice == "*bedroom lights off") {digitalWrite(led4, LOW);}

  else if(voice == "*bathroom lights off") {digitalWrite(led5, LOW);}

//-----------------------------------------------------------------------//  

voice="";}} //komutlar bitincce voice değişkenini sıfırla

Kullanılacak Android uygulaması Google Market te BT Voice Control for Arduino adı ile bulunabilir. Uygulamayı indirip cihazınıza kurduktan sonra “Connect Robot” butonu ile HC-05 modülüne bağlantı sağlayın, bekledikten sonra bağlantı sağlanır. Ekranda bağlantının olduğunu gösteren “connecting” yazısı ve mikrofon buton’u yer alır. Mikrofon butonuna basarak Arduino’da kayıtlı istediğiniz İngilizce komut cümlesini söyleyerek led çıkışını gözlemleyebilirsiniz.

CEVAP VER

Please enter your comment!
Please enter your name here