Arduino ile Akıllı Ev Yapalım… — 1

İbrahim İrdem
6 min readJun 23, 2016

--

Akıllı Ev Sistemleri

Akıllı ev, ev teknolojileri endüstrinin birçok alanında kullanılan kontrol sistemlerinin gündelik hayata uyarlanması; ev otomasyonu da, bu teknolojilerin kişiye özel ihtiyaç ve isteklerine uygulanmasıdır. Akıllı ev tanımı, bütün bu teknolojiler sayesinde ev sakinlerinin ihtiyaçlarına cevap verebilen, onların hayatlarını kolaylaştıran ve daha güvenli daha konforlu ve daha tasarruflu bir yaşam sunan evler için kullanılmaktadır. Akıllı evler, otomatik fonksiyonları ve sistemleri kullanıcı tarafından uzaktan kontrol edilebilen cihazları içerirler.

Projenin Özellikleri

Projemizi yapmaya başlamadan önce gelin önce nasıl bir proje yapacağımızdan bahsedelim.

Yapacağımız Akıllı Ev sisteminin özelliklerine bakalım isterseniz.

  • Android işletim sistemine sahip akıllı telefonumuz için hazırladığımız program arayüzü ile Bluetooth kullanarak oda ışıklarının kontrolü.
  • Android işletim sistemine sahip akıllı telefonumuz ile perde panjurlarının kontrolü.
  • Android uygulama arayüzünden ev ısısının bilgisinin otomatik alınması
  • Otomatik ısı sabitleme kombi sistemi
  • Android uygulama arayüzünden garaj kapısı kontrolü
  • Hırsız alarm sistemi
  • Toprak nem sensörü ile otomatik toprak sulama sistemi

Arduino ile Akıllı Ev Yönetimi

1. Akıllı Ev Bluetooth Bağlantısı

Akıllı evimizin yönetimi ve kontrolü için Android telefon üzerinden bir arayüz tasarlanmıştır. Bu arayüz ile evimizin kontrollerinin yapıldığı Arduino’nun iletişimini Bluetooth ile gerçekleştirdik.

Arduino’muzun Bluetooth veri transferini sağlayabilmesi için HC-05 Bluetooth modülünü kullandık. Bu modül ile Arduino’muz seri haberleşme ile iletişim sağlar.

Arduino ile HC-05 Modülü Bağlantısı

Arduino ile bağlantısı Şekil 1'deki gibi yapılmaktadır. Burada dikkat edilmesi gerekenler HC-05 modülünün Rx ucu Arduino’nun Tx ucuna, Tx ucu ise Arduino’nun Rx ucuna bağlanması gerekmektedir. Bunun nedeni Tx uçları verici olarak çalışmaktadır.

Bluetooth modülümüzün Tx ucu Arduino’ya veri gönderirken bu Tx uçtan gelen veriyi Arduino alıcı uç olan Rx girişi ile almaktadır. Bu nedenle Rx ve Tx uçları ters bağlanmalıdır. Diğer bir önemli nokta ise HC-05 Bluetooth modülünün 3.3V ile çalıştığı için Arduino’dan 3.3V vermek gerekmektedir.

Bluetooth (HC-05) modülümüz ile Arduino’muz arasında seri iletişim olduğu için bu iletişimin ayarlarını yapabilmemizi sağlayan SoftwareSerial modülünü 1. satırdaki gibi içe aktarıyoruz. ve BBaglanti adında 10 ve 11 bacaklı Rx ve Tx olarak belirleyen bir nesne oluşturuyoruz.

#include <SoftwareSerial.h>
SoftwareSerial Bbaglanti(10,11);

Arduino’muz ile HC-05 aracılığıyla Android uygulamamıza veri alışverişi için setup fonksiyonu içerisinde ortak bir seri haberleşme hızı ayarlıyoruz.

void setup(){
Bbaglanti.begin(9600);
}
Şekil 1 — Arduino Uno HC-05 Bluetooth Modülü Bağlantısı

Daha sonra Arduino’muz ile Bbaglanti.read() ile Android uygulama üzerinden gelen verileri alabildiğimiz gibi Bbaglanti.write() fonksiyonu ile de Android uygulamamıza veri iletebiliriz.

Android ile yazıcağımız akıllı evimizin kontrol arayüzü yazının devamında verilecektit.

Şekil 2 — HC-05 bluetooth modülü akıllı ev bağlantısı

Evet Arduino ile Android arasındaki veri alışverişini nasıl yapacağımızı anladığımıza göre gelin diğer işlemlere başlamadan önce sistemin veri alışverişinin nasıl işleyeceğine bakalım.

Şekil 3 — Arduino Akıllı Ev Android Arayüzü

Öncelikle kontrolümüzü Android arayüzü üzerinden sağlanacağı için Arduino-Android iletişiminin temel mantığını oturtalım.

Arduino-Android bağlantımızı sağlandıktan sonra Android kısmında her bir buton Arduino’muza belirlediğimiz ayrı bir karakteri gönderecek ve böylece hangi butona basıldığını anlayabileceğiz.

Örnek ile açıklayacak olursak Şekil 3 de İç Aydınlatma bölümündeki AÇIK butonuna bastığımız an o butonun karakteri olarak belirlediğimiz “1” değerini Arduino’muza gönderecek ve bu “1” değerini alan Arduino’muz bunun İç Aydınlatma kısmındaki AÇIK butonunun değeri olduğunu göz önüne alarak buna göre işlem yapacak.

Gelin kodlar üzerinde bunu gerçekleştirmeye çalışalım.

Yukarıda BBaglanti adında bir Bluetooth nesnesi oluşturmuştuk. Oluşturduğumuz bu Bluetooth nesnesine Android kısmında eğer bir veri gelirse bunu BBaglanti.available() fonksiyonu ile anlayabiliyoruz. Bu fonksiyon bize kaç karakter veri geldiğini söylüyor.

void loop(){
if(BBaglanti.available()>0){
Bdeger=(int)BBaglanti.read();
if(Bdeger==1){
//Burada 1 değeri geldiyse uygulanacak kod kısmı
}
.
.
.
}
}

Yukarıda ki kodlara bakacak olursak void loop() içerisinde sürekli bir dinlemeye alıyoruz. if(BBaglanti.available()>0) ile eğer karşıdan herhangi bir veri geldiyse bu kısmı çalıştır diyoruz. Karşıdan bir veri geldiyse bu if kısmı çalışacaktır ve gelen bu değeri okumak için de Bdeger=(int)BBaglanti.read(); satırındaki kodu kullanarak gelen verideki değeri alıyoruz. Daha sonrası ise gayet basit bildiğiniz gibi her bir butonun bir karakter değeri vardı. Bu karakter değerlerine göre bir if oluşturarak işlem yapıyoruz.

2. Android Arayüz Uygulaması

Android arayüzünü oluşturmak için ise kod karmaşasına girmeden blok yöntemiyle bize uygulama geliştirme imkanı sunan MIT App Invertor’u kullanacağız.

MIT App Inventor Nedir?

App Inventor, MIT tarafından geliştirilen ve Android programlama konusunda hiç bilgisi olmayan kullanıcıların bile, sürükle ve bırak yöntemiyle kolayca Android uygulamaları geliştirmesini mümkün kılan bir programdır. Bu program online olarak hizmet vermektedir.

Uygulamaları geliştirmek için birkaç ön adım var. İşte App Inventor kullanmak için bilmeniz gerekenler:

Daha sonra kendi taslağımızı oluşturmaya başlayabiliriz.

Yapım Aşaması

Öncelikli olarak sisteme giriş yaptığımızda karşımıza “Start New Project” yazısı geliyor.

Şekil 4 — App Invertor giriş sayfası

Bu butona tıkladığımızda karşımıza yeni tasarlayacağımız boş bir ekran ve yanlarında kontrol panelleri bulunuyor. Ayrıca sağ üst kısımda bulunan “Designer” ve “Blocks” butonları sayesinde hızlı bir şekilde blok ile tasarım arasında geçiş sağlayabiliyoruz.

Şekil 5 — App Invertor yeni proje

Tasarımını yapacağımız ekran üzerine sol tarafta bulunan komut resimlerini sürükleyip ekran üzerine bırakıyoruz. Seçmiş olduğumuz komutlarla ilgili teknik değiştirmeleri ekranın sağ tarafından detaylı bir şekilde yapıyoruz. Daha sonradan seçmiş olduğumuz komutları çalıştırmak için bloklar kısmına geçiş yaparak her türlü işlemi tutup sürükleyerek blokların bulunduğu pano üzerine bırakıyoruz. Bu blokların aktif hale gelebilmesini, ne olarak ve ne ile bağlantılı olması gerektiğini bloklar üzerinde bulunan boşlukları doldurarak sağlıyoruz.

Şekil 6 — App Invertor blok gösterimleri

Kendi tasarlamış olduğumuz uygulama ise aşağıdaki gibi hazırlanmış olup komut ve blok dizilimleri de çalışır vaziyette hazırlanmıştır.

Şekil 7 — App Invertor dizayn kısmı

Akıllı evimizi kontrol edebilmek için hazırlamış olduğumuz Android uygulamamız bu şekildedir. Bize evimiz ile iletişimde gerekli olan Bluetooh ve zamanlayıcıyı eklemeyi unutmuyoruz.

Şekil 8 — App Invertor’a eklemiş olduğumuz birleşenler

Çünkü sistemimiz Bluetooth ile haberleşmeyi sağlayacak ve zamanlayıcı ile bu döngünün devamını sağlayacaktır. Aynı şekilde blok satırlarına da bu durumu yansıtmamız gerekiyor.

Şekil 9 — App Invertor Bluetooth için kullanılan blok diyagramı

App Inventor’ın bize sağlamış olduğu kolaylıklardan bir tanesi de kod yazma derdinin olmamasıdır. Bu sayede blok yardımıyla programımızın çalışmasını sağlıyoruz.

Kullanmış olduğumuz bloklar sırasıyla açıklamak gerekirse;

  • Tasarım kısmında ekran üzerine koymuş olduğumuz bluetooth simgesine tıklamadan önce kullanacağımız Android cihazın aktif olan bluetooth cihazlarını algılayarak arka planında bulundurmasını sağlıyor.
Şekil 10 — App Invertor Bluetooth adres tanımlama
  • Tasarım kısmında ekran üzerine koymuş olduğumuz bluetooth simgesine tıkladıktan sonra karşımıza bluetoth cihazlarının bulunduğu bir ekran karşımıza çıkıyor. Projemiz de bulunan bluetooth kartının adresine tıklayarak android cihaz ile bluetooth kartının eşleşmesini sağlıyoruz.
Şekil 11 — App Invertor Bluetooth adresleri arasından seçim yapma
  • Programımıza bir adet zamanlayıcı koyarak bir döngünün olmasını sağlıyoruz. Bunun sebebi de sürekli olarak aktif olan bluetooth cihazlarını bulmasını istediğimiz için böyle bir işlem yapma gereği duyduk. Aynı blok satırı içerisinde bluetooth cihazı ile eşleşme olumlu veya olumsuz ise ekrana yazdırmasını istiyoruz. Bu sayede kullanıcı için de kolaylık sağlanmış oluyor
Şekil 12 — App Invertor Bluetooth eşleşme blokları
  • Bundan sonraki kısımda koymuş olduğumuz her buton için tıklandığı zaman programlama kartımıza bir sayı gönderilmesini istiyoruz. Buradaki amaç iletişimi daha kolay hale getirip haberleşmeyi sağlamak.
Şekil 13 — App Invertor ile android arasındaki haberleşme blokları
  • Sistemimizde bulunan sıcaklık sensörü sayesinde hem program kendi içinde otomatik olarak klima düzeneğinin çalışmasını sağlıyor hem de sensörün ölçmüş olduğu değeri Android uygulamamızda görmemize yardımcı oluyor. Android cihazın programlama kartından bu veriyi alıp derecenin gösterileceği ekrana gelen veriyi yazdırıyoruz.
Şekil 14 — Android ekranımızda klima göstergesi
Şekil 15 — App Invertor da dereceyi öğrenme ve ekrana yazdırma

Akıllı evimizin bluetooth bağlantısını ve Android arayüz uygulamasını oluşturmayı 1. yazımızda görmüş olduk. Arduino ile Akıllı Ev Sistemi… seri yazısının diğer kısımlarında görüşmek üzere.

Akıllı Evin Android APK uygulamasını aşağıdan indirebilirsiniz.

Yazının 2. kısmı

--

--