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.
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.
