35,6193$% -0.03
37,1582€% -0.03
44,0119£% 0.06
3.141,44%1,38
2.742,75%0,01
9.999,55%-0,30
Gereken mazlemeler:
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 |
LCD ekranımızın;
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ı
NOT: Arduino’ya kod yüklerken bluetooth modülün bağlantılarını sökmeniz gerekir. Aksi takdirde program hata verecektir.
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ı
Tamamlanmış devre:
Arduino Kodu
#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; void 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); } void 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); } }
Android Uygulamasının APK Dosyası
https://drive.google.com/file/d/0B914QTfo2gjhY0gzdVUtaTg1THM/view?usp=sharing
Kaynak: Bu yazı Kerem İZGÖL’ün https://maker.robotistan.com/arduino-uno-ile-akilli-ev-otomasyonu/ adresindeki yazısından alınmıştır. Kendisine teşekkür ederiz.
Arduino ile 16×2 LCD Ekran (Kurulum ve Programlama Rehberi)