back to top

NodeMCU ile Akıllı Ev Aletleri Proje Yapımı

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!


Masa Lambası

Akıllı Ev Aletleri Projesi için Malzemeler

Akıllı Ev Aletleri Proje Devre Şeması

Akıllı ev aletleri evre şeması
Akıllı ev aletleri devre şeması
Akıllı ev aletleri devre kurulumu

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!

Son Çıkan Yazılar

CEVAP VER

Lütfen yorumunuzu giriniz!
Lütfen isminizi buraya giriniz