Selam makerlar! Bugün akıllı ev aletleri yapımı üzerine heyecan verici bir projeyle karşınızdayız. Odadaki ışık durumuna uygun olarak açılıp kapanabilen masa lambası ve odaya giriş yapıldığında otomatik olarak açılan bilgisayar gibi akıllı sistemler geliştireceğiz. Bu yazımızda adım adım bu sistemleri nasıl yapabileceğinizi göreceksiniz. Haydi, malzemeleri inceleyerek projeye başlayalım!
Akıllı Ev Aletleri Projesi için Malzemeler
- Kanal 5 V Röle Kartı – Low Level Trigger
- Kanal 12 V Röle Kartı
- NodeMCU V3 ESP8266 ESP-12E Geliştirme Kartı – CH340
- 10 mm LDR
- 30 cm 40 Pin Ayrılabilen Dişi-Erkek M-F Jumper Kablo-300 mm
Akıllı Ev Aletleri Proje Devre Şeması
Projemizin devre şemasını incelediğimizde; odaya girdiğimizde bilgisayarı açmak için ana karttaki power pinlerine kısa devre yapacak ve rölemiz tetiklenecek. Bu tetikleme işlemi için bir kapı sensörümüz bulunuyor; kapı açıldığında bu sensör devreye girerek rölenin açılmasını sağlayacak. Ayrıca, masa lambamız için bir röle daha kullanacağız. LDR sensörü ortamdaki ışık değerini ölçecek ve eğer ortam karanlık ise rölenin açılmasını sağlayacak bir kod yazacağız.
Akıllı Ev Aletleri Proje Kodları
Sensörler ile Kontrol Kodları
int r1 = 16;
int r2 = 5;
int ldr = 0;
int kapi = 2;
bool durum = false;
bool durum2 = false;
void setup()
{
pinMode(r1,OUTPUT);
pinMode(r2,OUTPUT);
pinMode(kapi,INPUT);
Serial.begin(9600);
}
void loop()
{
int oku = analogRead(ldr);
int kapioku = digitalRead(kapi);
Serial.println(oku);
Serial.println(kapioku);
delay(200);
if(oku < 100 && durum == false){digitalWrite(r1,HIGH);durum = true;}
else if (oku > 100 && durum == true){digitalWrite(r1,LOW);durum = false;}
if(kapioku <= 0 && durum2 == false){digitalWrite(r2,HIGH);delay(300);digitalWrite(r2,LOW);durum2=true;}
else if (kapioku > 0 && durum2 == true){digitalWrite(r2,LOW);durum2 = false;}
}
Wifi – Telegram ile Kontrol Kodları
#ifdef ESP32
#include <WiFi.h>
#else
#include <ESP8266WiFi.h>
#endif
#include <WiFiClientSecure.h>
#include <UniversalTelegramBot.h> // Universal Telegram Bot Library written by Brian Lough: https://github.com/witnessmenow/Universal-Arduino-Telegram-Bot
#include <ArduinoJson.h>
const char* ssid = "wifi adınız"; // WiFi ağınızın SSID'si
const char* password = "wifi şifreniz"; // WiFi ağınızın şifresi
const char* BOTtoken = "token";
#define CHAT_ID "id'niz"
#ifdef ESP8266
X509List cert(TELEGRAM_CERTIFICATE_ROOT);
#endif
WiFiClientSecure client;
UniversalTelegramBot bot(BOTtoken, client);
int botRequestDelay = 1000;
unsigned long lastTimeBotRan;
const int r1 = 16;
const int r2 = 5;
bool lamba_durum = LOW;
bool pc_durum = LOW;
void handleNewMessages(int numNewMessages) {
Serial.println("handleNewMessages");
Serial.println(String(numNewMessages));
for (int i=0; i<numNewMessages; i++) {
String chat_id = String(bot.messages[i].chat_id);
if (chat_id != CHAT_ID){
bot.sendMessage(chat_id, "Unauthorized user", "");
continue;
}
String text = bot.messages[i].text;
Serial.println(text);
String from_name = bot.messages[i].from_name;
if (text == "/start") {
String welcome = "Hosgeldiniz, " + from_name + ".\n";
welcome += "/lamba_ac MASA LAMBASINI AÇAR \n";
welcome += "/lamba_kapa MASA LAMBASINI KAPA \n";
welcome += "/pc_ac BİLGİSAYARI AÇAR \n";
welcome += "/pc_kapa BİLGİSAYARI KAPATIR \n";
bot.sendMessage(chat_id, welcome, "");
}
if (text == "/lamba_ac") {
bot.sendMessage(chat_id, "Masa lambası açılıyor...", "");
lamba_durum = HIGH;
digitalWrite(r1, lamba_durum);
}
if (text == "/lamba_kapa") {
bot.sendMessage(chat_id, "Masa lambası kapatılıyor...", "");
lamba_durum = LOW;
digitalWrite(r1, lamba_durum);
}
if (text == "/pc_ac") {
bot.sendMessage(chat_id, "Bilgisayar açılıyor...", "");
pc_durum = HIGH;
digitalWrite(r2, pc_durum);
}
if (text == "/pc_kapa") {
bot.sendMessage(chat_id, "Bilgisayar kapatılıyor...", "");
pc_durum = LOW;
digitalWrite(r2, pc_durum);
}
}
}
void setup() {
Serial.begin(115200);
#ifdef ESP8266
configTime(0, 0, "pool.ntp.org"); // get UTC time via NTP
client.setTrustAnchors(&cert); // Add root certificate for api.telegram.org
#endif
pinMode(r1, OUTPUT);
digitalWrite(r1, lamba_durum);
// Connect to Wi-Fi
WiFi.mode(WIFI_STA);
WiFi.begin(ssid, password);
#ifdef ESP32
client.setCACert(TELEGRAM_CERTIFICATE_ROOT); // Add root certificate for api.telegram.org
#endif
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.println("Connecting to WiFi..");
}
// Print ESP32 Local IP Address
Serial.println(WiFi.localIP());
}
void loop() {
if (millis() > lastTimeBotRan + botRequestDelay) {
int numNewMessages = bot.getUpdates(bot.last_message_received + 1);
while(numNewMessages) {
Serial.println("got response");
handleNewMessages(numNewMessages);
numNewMessages = bot.getUpdates(bot.last_message_received + 1);
}
lastTimeBotRan = millis();
}
}
NodeMCU ile Akıllı Ev Aletleri Proje Videosu
Artık kendi akıllı ev projelerinizi hayata geçirebilir ve yaşamınızı daha konforlu hale getirebilirsiniz. Tek yapmanız gereken yaratıcılığınızı kullanmak ve teknolojinin sunduğu olanakları keşfetmeye devam etmek. Bir sonraki projede görüşmek üzere!