Akıllı Ev Projesi

mithat999

Katılımcı Üye
20 Ağu 2011
346
0
Istanbul
5M31Wd.jpg


Arduino UNO İle Akıllı Ev Otomasyonu





Gereken mazlemeler:
•Arduino UNO
•16×2 LCD Ekran
•1 adet 10 kOhm potansiyometre
•2 adet 220 Ohm direnç
•1 adet buzzer
•1 adet push buton
•1 adet LM35 sıcaklık sensörü
•1 adet 5mm kırmızı LED
•1 adet 5mm şeffaf beyaz LED
•1 adet SG-5010 servo motor
•1 adet HC-06 bluetooth seri modül kartı


Yukarıdaki malzemelerin tamamını robotistan.com‘dan temin edebilirsiniz.

Bu projemizde Android işletim sistemli akıllı cihazımıza göre yazılmış uygulama ile Arduino üzerinde çalışan akıllı ev sistemini bluetooth haberleşmesi ile kontrol edeceğiz. Uygulamada servo motor ile kapı açıp kapama, uzaktan zil çalma, sıcaklık ölçme ve ışıkları yönetme gibi işlevler bulunmaktadır. Bu proje için öncelikle devreyi kurmamız gereklidir. Öncelikle LCD ekran bağlantılarından başlıyoruz.





LCD Ekranı Arduino’ya Bağlama

LCD ekran ile Arduino UNO’nun bağlantısı ağaşıdaki gibidir

LCD Arduino LCD Arduino

1-GND GND 6-E 11
2-VCC +5V 7-10, DB boş
3-V0 Potansiyometre orta ucu 11-14, DB 5-2
4-RS 12 15- A(LED+) 5V
5-RW GND 16- K(LED-) GND


A5vlE7.png



LCD ekranımızın;
1. Ucunu toprağa,
•2. Ucunu Arduino’dan gelen 5 volta bağlıyoruz.
•3. Ucunu 10Klık potansyiometremizin orta ucuna bağlıyoruz. Bu sayede potansiyometre ile ekranın kontrastını ayarlayabiliriz.
•4. Ucu Arduino’nun 12 numaralı pinine bağlıyoruz.
•5. Ucu toprağa bağlıyoruz.
•6. Ardunio’nun 11 numaralı pinine bağlıyoruz.
•7’den 10’a kadar olan uçları boş bırakıyoruz (7,8,9,10).
•10’dan 14’e kadar olan uçları Arduino’nun sırasıyla 7,6,5,4 numaralı pinlerine bağlıyoruz.
•15. uç, ekranın arka aydınlatmasının + ucudur. Arduino’dan gelen 5 volta bağlıyoruz. Bir dirençle bağlarsak daha iyi olur.
•16. ucu toprağa bağlıyoruz.



Ekranın bağlantılarını kontrol etme amacıyla Arduino programından Dosya>Örnekler>LiquidCrystal>HelloWorld programını açıp karta yükleyebilirsiniz. Ekranda herhangi bir yazı görünmüyorsa, potansiyometreyi çevirerek kontrastı değiştirebilirsiniz.

HC-06 Bluetooth Modül Bağlantısı
•VCC > Arduino 5V
•GND > Toprak
•TXD > Arduino Digital 1 (RX)
•RXD > Arduino Digital 0 (TX)


NOT: Arduino’ya kod yüklerken bluetooth modülün bağlantılarını sökmeniz gerekir. Aksi takdirde program hata verecektir.


rZabQM.jpg


Servo Motoru Arduino’ya Bağlama

Servo motorların 3 bağlantılı kablosu vardır. Bunlardan sarı veya beyaz renk olanı sinyal, kırmızı olanı 5v ve siyah veya kahverengi olanı ise toprak yani GND ucudur. Kırmızı ucu 5V’a, siyah veya kahverengi ucu toprağa ve sarı veya beyaz ucu da Arduino Digital 9 numaralı pine bağlamalısınız.

Servonun bağlantılarını kontrol etme amacıyla Arduino programından Dosya>Örnekler>Servo>Sweep programını açıp karta yükleyebilirsiniz. Servonun 180 derece tarama yapıp daha sonra tekrar başladığı noktaya dönmesi gerekir.

Buzzer’ın Arduino’ya Bağlanması

Buzzer’ın + ucunu Arduino’nun 3 numaralı pinine bağlanalısınız.

LM35 Sıcaklık Sensörü Bağlantısı

LM35, analog çıkış veren bir sıcaklık sensörüdür. Sensörün LM35 yazan tarafı bize bakacak şekilde tuttuğumuzda en soldaki ucunu 1. uç olarak kabul edersek

1 > 5V

2 > Arduino Analog A0

3 > GND

şeklinde bağlantı yapılması gerekir.

Buton bağlantısı

Butonun bir ucunu 5V gerilime, diğer ucunu Arduino’nun Digital 2 numaralı pinine bağlamalısınız.

LED Bağlantısı

Bildiğimiz üzere LED’ler kutuplu elemanlardır. Uzun bacak anot (+) ve kısa bacak katot (-) tur. + ucunu Arduino’ya 220 Ohm değerinde bir dirençle seri olarak bağlıyoruz.

Devrenin Genel Şeması

L1Xqgj.jpg


Tamamlanmış devre:

5M31Wd.jpg



Arduino Kodu


Kod:
 include <LiquidCrystal.h>
#include<Servo.h>
LiquidCrystal lcd(12, 11, 7, 6, 5, 4);
Servo myServoMotor;
int ledPinOpen = 10;
int ledPinClose = 8;
int buzzerPin = 3;
int buttonPin = 2;
char deger;
int buttonState = 0;
float sicaklik;
float gerilim;
int sicaklikPin = 0;
**** setup()
{
  lcd.begin(16, 2);
  lcd.print("welcome home");
  delay(3000);
  lcd.clear();
  Serial.begin(9600);
  myServoMotor.attach(9);
  myServoMotor.write(0);
  pinMode(buzzerPin, OUTPUT);
  pinMode(buttonPin, INPUT);
  pinMode(ledPinOpen, OUTPUT);
  pinMode(ledPinClose, OUTPUT);
  digitalWrite(ledPinClose, HIGH);
}
**** loop()
{
  gerilim = analogRead(sicaklikPin);
  gerilim = (gerilim / 1023) * 5000;
  sicaklik = gerilim / 10.0;
  buttonState = digitalRead(buttonPin);
  if (buttonState == LOW)
  {
    digitalWrite(buzzerPin, HIGH);
    delay(1000);
  }
  else {
    digitalWrite(buzzerPin, LOW);
  }
  if (Serial.available())
  {
    deger = Serial.read();
    if (deger == '1')
    {
      lcd.home();
      lcd.print("kapi acildi");
      Serial.println("kapi acildi");
      digitalWrite(ledPinOpen, HIGH);
      digitalWrite(ledPinClose, LOW);
      for (int derece = 0; derece < 90; derece++)
      {
        myServoMotor.write(derece);
      }
    }
    if (deger == '0')
    {
      lcd.clear();
      lcd.home();
      lcd.print("kapi kapandi");
      Serial.println("kapi kapandi");
      digitalWrite(ledPinOpen, LOW);
      digitalWrite(ledPinClose, HIGH);
      for (int derece = 90; derece > 1; derece--)
      {
        myServoMotor.write(derece);
      }
    }
    if (deger == '2')
    {
      lcd.clear();
      lcd.home();
      lcd.print("ortam sicakligi");
      lcd.setCursor(0, 1);
      lcd.print(sicaklik);
      Serial.print("ortam sicakligi");
      Serial.print(sicaklik);
      Serial.println("derece");
    }
    if (deger == '3')
    {
      Serial.println("kapi zili caldi");
      digitalWrite(buzzerPin, HIGH);
      delay(1000);
    }
    else
    {
      digitalWrite(buzzerPin, LOW);
    }
    delay(100);
  }
}
 
Son düzenleme:

Nigella

Üye
24 Ocak 2016
152
0
#!/usr/bin/
Bende yapmıştım, fakat paylaşmadım üşendim.
Fakat sonradan aklıma raspberry geldi, elime bir geçsin çok daha iyi bir ev otomasyonu yapacağım..
 
Üst

Turkhackteam.org internet sitesi 5651 sayılı kanun’un 2. maddesinin 1. fıkrasının m) bendi ile aynı kanunun 5. maddesi kapsamında "Yer Sağlayıcı" konumundadır. İçerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır. Turkhackteam.org; Yer sağlayıcı olarak, kullanıcılar tarafından oluşturulan içeriği ya da hukuka aykırı paylaşımı kontrol etmekle ya da araştırmakla yükümlü değildir. Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz. Türkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Türkhackteam sorumlu değildir. Sitelerinize Türkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.