back to top

Ses Tanıma ile Gece Lambası Kontrolü

Arkadaşlar merhaba, bu yazıda Android işletim sistemi kullanan telefonumuzun, ses tanıma özelliğinden faydalanarak, Arduino’ya bağlı bir röleyi çalıştıracağız ve bu röle ile gece lambasını kontrol edeceğiz.

Devre ve kodumuzun çalışma mantığını basitçe anlatmak gerekirse, Android telefonumuza indireceğimiz bir uygulamayla telefonumuzun Bluetooth’unu, Arduino’ya bağlayacağımız Bluetooth müdülünü eşleştireceğiz. Daha sonra kullandığımız programa daha önce belirlediğimiz komutları söylediğimizde, söylediğimiz komut Arduino’ya BT ile aktarılacaktır. Arduino da gelen komut karşılaştırılıp doğru komut söylenmişse, röle çalıştırılacaktır. Örneğin bu projede lambayı yak dediğimizde lambayı yakmaya çalışacağız.

Projede kullanacağımız malzemeler:

Eğer daha önce röle kullanmadıysanız sizi buraya, Bluetooth modülünü kullanmadıysanız ise buraya alabilirim.

Ve Başlayalım…

Önce telefonumuza şu adresten kullanacağımız uygulamayı yükleyelim. Yükledikten sonra aşağıdaki gibi bir ekran sizi karşılayacak.

Screenshot_2016-06-26-23-40-58Screenshot_2016-06-26-23-41-03

Ortadaki mikrofon işaretine tıkladığınızda ise bir sonraki ekran gelecek.

Kurmamız gereken devre ise aşağıdaki şekildedir:

devre-cizimi

Arduino Programı: 

Kodu yazmadan öne kodun çalışma mantığından bahsetmek istiyorum, void setup() kısmında önce seri iletişimi açıyoruz çünkü BT modülümüz Arduino ile seri iletişimi kullanıyor. Daha sonra 8. pinimizi çıkış olarak ayarlıyoruz.  void loop() kısmında ise önce Serial.available() fonksiyonu ile BT modülünden bir veri gelip gelmediğini kontrol ediyoruz. Eğer veri gelmişse, gelen veriyi daha önce tanımladığımız gelenVeri isimli string’e kaydediyoruz.  Son veriyi alıp döngüden çıkmak için bir if-else komutu kullanıyoruz ve break komutu ile döngüden çıkıyoruz.

Döngüden çıktıktan sonra gelenVeri değişkenini seri monitöre yazdırıyoruz. Bu kısma kadar gelen veriyi alıp bir değişkene atadık, sıra şimdi onu işlemeye geldi.

Buradan sonra basit if-else kontrolleri ile gelenVeri’yi öncesinde belirli komutlar ile eşleştirerek röle açıp kapatma işlemlerini yapacağız.

Son olarak ise, daha sonra veri değildiğinde gelenVeri değişkeninin içerisine yazılmaması için değişkenin içini boşaltıyoruz.

Ben elimde kullanabileceğim bir lamba olmamasından dolayı 8. pine bağladığım röle ile led’i yakıp sondürdüm ve devreyi bu şekilde hazırladım. Siz led yerine gece lambasını kullanabilirsiniz.P_20160627_191016

String gelenVeri;
int role = 8;

 
void setup() {
  Serial.begin(9600);
  pinMode(role, OUTPUT); 

}


void loop() {
  while (Serial.available()){  
  delay(10);
  char b = Serial.read();
  if (b == '#') {break;} 
  gelenVeri += b; 
  }  
  
  if (gelenVeri.length() > 0) {
    Serial.println(gelenVeri); 
    if(gelenVeri == "*lamba") {
    digitalWrite(role,HIGH);
     } 
  else if(gelenVeri == "*lamba kapat"){
  digitalWrite(role,LOW);
} 
gelenVeri="";
}
}



Son Çıkan Yazılar

25 YORUMLAR

  1. telefondan söylüyorum komutu fakat olmuyor ben breadboardsız yaptım fakat olmuyor telefondan lamba kapat diyorum olmuyor yardımcı olurmusunuz lütfen

  2. Kullandığınız rölenin tetikleme voltajı düşük değil merak etmeyin. Röleyi doğru yere bağladığınıza emin misiniz? Tüm bağlantıları tekrar kontrol edebilir misiniz ya da değiştirdiğiniz bir şey varsa devre ve kodu [email protected] adresine atabilirseniz daha detaylı incelemeye çalışırım.

    • çok teşekürler ilk öncelikle benim kullandığım kodlar bu sitedeki kodlardır.Fakat ben breadboardsız yaptım bir sıkıntı olurmu? roleyi ise bir tane arduinonun 5v aldım onu rolenin ortasındaki yere taktım ledi ise rolenin 5v taktığım yerin yanına taktım ledin – bacağını ise arduinonun toprak hattına bağladım.

  3. çok teşekürler ilk öncelikle benim kullandığım kodlar bu sitedeki kodlardır.Fakat ben breadboardsız yaptım bir sıkıntı olurmu? roleyi ise bir tane arduinonun 5v aldım onu rolenin ortasındaki yere taktım ledi ise rolenin 5v taktığım yerin yanına taktım ledin – bacağını ise arduinonun toprak hattına bağladım.

  4. Çok teşekkürler gayet güzel çalışıyor. Tek püf nokta yükleme yapmadan önce bluetooth modülünden gelen RX ve TX’i arduinodan söküp programı atmak ve seri port ekranını açmak daha sonra RX TX’i takınca hem hata alınmıyor hem de söylenen ses’lerin yazı hali seri port ekranından görünebiliyor.

  5. Tüm bağlantıları kurdum. Uygulama komutu doğru algılıyor ama seri ekranda örnegin lamba dediğimde çok farklı karakterler çıkıyor. Dil sorunu mu var ? Nasıl halletmeliyim?

  6. Devre bağlantılarını yaptım, yazılımı yükledim ancak röle sürekli aktif, sürekli çekili. komutlar (lamba ve lamba kapat) röleyi bıraktırmıyor. Seri port ekranında komutu görebiliyorum ama dediğim gibi rölede değişiklik yok. yüklerken TX-RX uçlarını çıkarıyorum bu arada. 2 farklı aplikasyonla denedim ama çare bulamadım. Yardımcı olur, yorum yaparsanız minnettar kalırım.

CEVAP VER

Lütfen yorumunuzu giriniz!
Lütfen isminizi buraya giriniz