in ,

BeğendimBeğendim

Arduino ve Android Kullanarak Ses kontrollü Lamba yapımı(Akıllı ev sistemi)

Merhaba arkadaşlar arduino ile projelerimizde oldukça hızlı ilerlemeye çalışıyoruz. Bu yazımızda diğer yazılarımıza oranla bir tık zor. Bir arduino ve bir android cep telefonu kullanarak vereceğimiz sesli ve butonlu komutlarla led açıp kapayacağız. Çılgınca değil mi bence de öyle.. Lamba açıp kapamak size ilkel gelebilir ama unutmayalım ki her şey bir ledi yakmakla başlar 😉 Demir adam filmini yada Avengers, yani yenilmezler filmini izleyenleriniz olmuştur. Oradaki JARVIS in temelini atacağız bugün Allah’ın izniyle, bu arada bir nevi yapay zeka uygulaması sayılabilir projemiz. Bu proje ile evinize akıllı ev sistemi kurabilirsiniz hatta küçük robotlar yapıp tek bir komutunuzla hizmet bile ettirebilirsiniz. 🙂  hazırsanız zaman kaybetmeden projemize geçelim 🙂

Öncelikle bu projemizde bluetooth modül kullanacağız. Kullanımını daha önce anlattığım için bu yazıda üzerine pek düşmeyeceğim. Hem yazı uzun olmasın hemde siz sıkılmayın istiyorum. 🙂 Ama isterseniz bluetooth ile led kontrolü yazımıza buradan ulaşabilirsiniz.(Daha önce okumamış olanlar kesinlikle okumalarını tavsiye ederim bir nevi ön hazırlık 😉 )

Malzeme Listesi

1- Herhangi Bir Arduino Modeli

2- Hc-05 veya Hc-06 Bluetooth Modülü

3- Kırmızı Led ve 220 Ohm Direnç

4- Yeşil Led ve 220Ohm Direnç

Not: Tüm bu malzemeleri elektronik parça satan yerlerde bulabilirsiniz yada şu ve bu adreslerden internet üzerinden güvenle sipariş edebilirsiniz 🙂

 Ayrıca eğer zamanım bol diyorsanız Çin’den de Aliexpress vasıtasıyla getirtebilirsiniz. Daha uygun fiyata gelecektir.

Devre Şeması

Alt tarafta çizdiğimiz devre şemasına bakarak uygun arduino modeline göre devremizi breadboard’umuza kuralım.

Yazılım

Bu modüllerle çalışabilmek için kütüphaneye ihtiyaç duymuyoruz.. Ama bir telefon için uygulamaya ihtiyacımız var şimdilik uygulamayı veriyorum ama ilerleyen derslerde uygulamanın yapımını da anlatacağım.

Hatta kullanımını bilenler için şuraya block bölümünü atayım 🙂

Uygulamamızın tasarımı ise aşağıdaki gibidir.

Uygulamayı buradan indirebilirsiniz. 

Ana yazılım;

Arkadaşlar burda dikkat etmeniz gereken çok önemli bir nokta var. Ben size hemen bu projenin çalışma mantığından bahsedeyim telefonumuzdaki uygulama sesimizi tanıyor ve onu metine dönüştürüyor bunu da bluetooth modül aracılığıyla arduinomuza iletiyor arduinoda çok basit bir if else fonksiyonlarıyla işlemi tamamlıyor. Örneğin lambayı yak dediğimizde bu arduinoya metin olarak geliyor koda da bakarsanız zaten anlayacaksınız. Eğer lambayı yak denilmişse işte bir lambayı yak klasik if fonksiyonu ama burada asıl sorun uygulama ses algılamak için google’ın sesli arama uygulamasını kullanıyor. Uygulama ise söylediğimiz kelimeleri bazen baş harfini büyük bazende küçük yazıyor aşağıda olduğu gibi

Buradaki lambayı yak küçük harfle yazılmış
Burada ise büyük

peki biz bunu nasıl öğreneceğiz derseniz de çözümü kolay merak etmeyin 🙂

yazılımda serial monitöre veri yollayan bir bölüm var sizde fark edersiniz ki ne işe yarıyor derseniz de sizin telefondan verdiğiniz komutları metin olarak baş harfi büyük mü yada küçük mü her neyse yazıyor, aşağıdaki gibi.. 🙂

Gördüğünüz gibi direkt kopyalayıp yapıştırın ama tırnaklar arasına dikkat edin. Düşünsenize bununla tüm ev aletlerini bilgisayarı televizyon ne varsa kontrol edebilirsiniz. Örneğin evden çıkıyorsunuz bir komutla tüm evin elektriğini falan kesebilirsiniz.. Doğalgaz vs de 🙂 çok ayrıntı vermiyorum siz bulun diye 🙂

KOD

// DONANIM PLUS ELEKTRONİK
// TASARIM TOLGA SOYTEPE
// SES İLE LAMBA KONTROLÜ
// 2019

#include <SoftwareSerial.h>
#include <Servo.h> 
SoftwareSerial BT(10, 11); // RX, TX
String data;
int
kirmizi = 2,// Gördüğünüz gibi hepsine ayrı ayrı int yazmanıza gerek yok virgül atıp geçebilirsiniz şartı sonuncuda ";" olacak.
yesil=3;
void komuta() { 
  // buraya istediğiniz komutu yazabilirsiniz 🙂
}

void setup() {
  BT.begin(9600);
  Serial.begin(9600);
  pinMode(kirmizi, OUTPUT);
  pinMode(yesil, OUTPUT);
}

void loop() {
  while (BT.available()) {
    delay(10);
    char c = BT.read();
    if (c == '#') {
      break;
    }
    data += c;
  }
  if (data.length() > 0) {
    Serial.println(data);
    BT.println(data);
//-----------------KOMUTLARR------------------------//
    if (data == "nasilsin"||data=="napiyon") {
      komuta();// burada daha önceden kullanmadığım bir yapı kullandım komuta yazdım eğer nasılsın gelirse üst tarafta yazılı olan komutlar yerine getirilecek 🙂 
    }

   if (data == "kırmızıyı yak"||data=="kırmızı yak") {
      digitalWrite(kirmizi, HIGH);
    }
    if(data=="yeşili yak"||data=="yeşil yak"||data=="btnysl1"){
          digitalWrite(yesil,HIGH);
      
      }
       if(data=="ikisini de yak"||data=="lambayı yak"){
          digitalWrite(yesil,HIGH);
          digitalWrite(kirmizi, HIGH);
      
      }
       if(data=="ikisini de söndür"||data=="Lambayı kapat"){
          digitalWrite(yesil,LOW);
          digitalWrite(kirmizi, LOW);
      
      }
    if(data=="kırmızıyı söndür"){
          digitalWrite(kirmizi,LOW);
      
      }
       if(data=="yeşili söndür"||data=="btnysl2"){
          digitalWrite(yesil,LOW);
      
      }
    if(data=="Aferin"){
      digitalWrite(yesil,HIGH); // animasyon gibi birşey yaptık ama uzun yoldan bu for döngüsüylede yapılabilirdi siz yapabilirsiniz mini bir ipucu 😉
      delay(100);
      digitalWrite(kirmizi, HIGH);
      delay(100);
       digitalWrite(yesil,LOW);
      delay(100);
      digitalWrite(kirmizi, LOW);
      delay(100);
       digitalWrite(yesil,HIGH);
      delay(100);
      digitalWrite(kirmizi, HIGH);
      delay(100);
       digitalWrite(yesil,LOW);
      delay(100);
      digitalWrite(kirmizi, LOW);
      delay(100);
       digitalWrite(yesil,HIGH);
      delay(100);
      digitalWrite(kirmizi, HIGH);
      delay(100);
       digitalWrite(yesil,LOW);
      delay(100);
      digitalWrite(kirmizi, LOW);
      delay(100);
       digitalWrite(yesil,HIGH);
      delay(100);
      digitalWrite(kirmizi, HIGH);
      delay(100);
       digitalWrite(yesil,LOW);
      delay(100);
      digitalWrite(kirmizi, LOW);
      delay(100);
      }
//---------------------------------------------//// komutlarınızı bu aralığa yazıyorsunuz aksi halde çalışmaz 
    data = "";
  }//SES KONTROL KAPANIŞ
}//LOOP KAPANIŞ

Ben kodu 2 ledi kontrol edecek şekilde uyarladım. Yazılımda btnysl2 gibi ifadeler var bunlar; uygulamada buton koydum ledleri açıp kapamak için onların veri kodu 🙂

Minik Not: Arkadaşlar aferin bölümünü ben uzun uzun yazdım anlaşılabilir olsun diye ama siz bunu for döngüsüyle daha kısa bir halde yazabilirsiniz 😉

Bu yazıya birde video hazırlamak istiyorum ama internetim sıkıntılı buradan patronuma da sesleneyim yazmıyor sanmasın internetim yok 😀 Sizden de çok geç yazı paylaşıyorsunuz gibi mesajlar alıyorum arkadaşlar şu sıralar züürtüm 😛 KYK da kalıyorum haliyle internet ölüyor 🙂

Galiba bir yazının daha sonuna geldik. Ama arkadaşlar şunu belirtmek istiyorum bu proje geleceğin projesi ama temelleri.. Siz geliştirebilir, evinize akıllı bir ev sistemi kurabilirsiniz ve bu ev içinde geçerli değil arabanıza da yerleştirebilirsiniz. Müzik aç dersiniz mesela, yada klima falan işte.. Hatta marşa bile bastırabilirsiniz.. 🙂 Yine fazla konuştum ama arkadaşlar bu yazı hakediyor 😀 Bir sorun yada takıldığınız yerler olursa çekinmeden sorunuz yardımcı olmaya çalışacağım kolay gelsin arkadaşlar 😀

Az kalsın unutuyordum proje kodlarını buradan indirebilirsiniz 🙂

Yazar Tolga Soytepe

Ara sıra yazılımcı :)

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

WinRaR’da 14 Yıllık Önemli Bir Bug Bulundu

Arduino İle Alkışla Yanan Gece Lambası