HIZLI VE GÜVENİLİR KARGO
1.750 TL üzeri ücretsiz kargo
HIZLI VE GÜVENİLİR KARGO
1.750 TL üzeri ücretsiz kargo
Servo Kontrollü Kapı Kilidi (IR ile kumanda)

Servo Kontrollü Kapı Kilidi (IR ile kumanda)

Ev otomasyonu ve uzaktan kontrol sistemleri, günümüzde hayatımızı kolaylaştıran önemli teknolojilerdir. Bu projede, basit bir Arduino devresi ile uzaktan kumandalı bir kapı kilidi mekanizması yapacağız. Bir IR (kızılötesi) kumanda kullanarak bir servo motoru kontrol edecek ve böylece küçük bir kapıyı veya kutuyu uzaktan açıp kapatabileceksiniz. Hem elektronik hem de mekanik bir projenin birleşimini deneyimleyeceksiniz!

Gerekli Malzemeler

Bu projeyi hayata geçirmek için ihtiyacın olan tüm malzemeler aşağıda listelenmiştir. Çoğu bileşen elektronik hobi kitlerinde bulunur.

  • Arduino Uno R3: Projemizin beyni, IR sinyallerini işleyecek ve servo motoru kontrol edecek.
  • Servo motor (SG90): Kapı kilitleme/açma mekanizmasını hareket ettirecek olan küçük motorumuz.
  • IR alıcı modülü (VS1838B veya benzeri) + IR kumanda: Uzaktan kumandadan gelen kızılötesi sinyalleri algılayacak alıcı ve bu sinyalleri gönderecek herhangi bir eski kumanda.
  • Breadboard: Devre elemanlarını lehim yapmadan kolayca bağlamak için.
  • Jumper kablolar: Bileşenleri birbirine ve Arduino'ya bağlamak için.
  • Ek donanım (mekanik kilit): Servo motorun koluna (servo horn) takılacak, kilitleme işlevini görecek küçük bir levha, vida veya bant gibi mekanik parçalar. Bu, servonun hareketini gerçek bir kilit mekanizmasına dönüştürmek için gereklidir.
  • USB kablosu: Arduino'yu bilgisayara bağlamak, kod yüklemek ve enerji vermek için.
  • (Opsiyonel) Buton: Fiziksel olarak kilidi manuel açıp kapatmak için.

Devre Bağlantı Şeması

Devre bağlantılarını doğru yapmak, projenin başarılı bir şekilde çalışmasını sağlar. Özellikle IR alıcının pin sıralamasına dikkat edin.

1. IR Alıcı Modülü Bağlantıları:

  • IR alıcı modülünün pin sıralaması farklılık gösterebilir (Genellikle Sinyal-GND-VCC veya VCC-GND-Sinyal). Elinizdeki modülün pin şemasını kontrol edin.
  • VCC pinini Arduino'nun 5V pinine bağlayın.
  • GND pinini Arduino'nun GND pinine bağlayın.
  • Sinyal pinini Arduino'nun D11 pinine bağlayın.

2. Servo Motor (SG90) Bağlantıları:

  • Servo motorun Kırmızı kablosunu (VCC) Arduino'nun 5V pinine bağlayın.
  • Servo motorun Kahverengi kablosunu (GND) Arduino'nun GND pinine bağlayın.
  • Servo motorun Turuncu kablosunu (PWM) Arduino'nun D9 pinine bağlayın.

3. (Opsiyonel) Buton Bağlantısı:

  • Butonun bir ucunu Arduino'nun D2 pinine bağlayın.
  • Butonun aynı ucuna bir 10kΩ direnç bağlayın ve direncin diğer ucunu Arduino'nun GND pinine bağlayın (pull-down konfigürasyonu).
  • Butonun diğer ucunu Arduino'nun 5V pinine bağlayın.

4. Genel Güç Bağlantısı:

  • Arduino'yu bilgisayarınıza USB kablosu ile bağlayın.

Arduino Kodları

Devre bağlantılarını tamamladıktan sonra sıra projenin beynini oluşturan koda geldi. Arduino IDE'yi açın ve aşağıdaki kodları kopyalayıp yapıştırın. Bu kod, IR kumandadan gelen sinyalleri okuyacak ve belirlenen tuşlara basıldığında servo motoru hareket ettirerek kilidi açıp kapatacaktır.

Önemli Not: Bu kod "IRremote" ve "Servo" kütüphanelerini gerektirir. "IRremote" kütüphanesini kurmak için Arduino IDE'de Taslak > Kütüphaneleri Dahil Et > Kütüphaneleri Yönet yolunu izleyip "IRremote" aratarak kurabilirsiniz. "Servo" kütüphanesi genellikle Arduino IDE ile birlikte gelir.

Önce Kumanda Tuş Kodlarını Öğrenelim:

Her IR kumandanın her tuşu, benzersiz bir onaltılık (hex) kod gönderir. Kendi kumandanızın tuş kodlarını öğrenmek için önce aşağıdaki "IR Kumanda Kodu Öğrenme" kodunu yükleyin, Seri Monitör'ü açın ve kumandanızın tuşlarına basın. Gelen kodları not alın.

C++

#include <IRremote.h>

const int RECV_PIN = 11; // IR alıcı sinyal pini

IRrecv irrecv(RECV_PIN);
decode_results results;

void setup() {
  Serial.begin(9600);
  irrecv.enableIRIn(); // IR alıcıyı başlat
  Serial.println("IR Kumanda Kodu Öğrenme Modu Basın Tuşlara!");
}

void loop() {
  if (irrecv.decode(&results)) {
    Serial.print("IR Kodu: ");
    Serial.print(results.value, HEX); // Kodu HEX formatında yazdır
    Serial.print(" (");
    Serial.print(results.bits);
    Serial.println(" bit)");
    irrecv.resume(); // Bir sonraki değeri beklemeye devam et
  }
  delay(100);
}

Kumandanızdan "Kilit Açma" ve "Kilit Kapama" için kullanmak istediğiniz tuşlara basarak Seri Monitör'den çıkan HEX kodlarını bir yere not alın. Örneğin, "Kilit Açma" tuşu için FFC23D ve "Kilit Kapama" tuşu için FFA25D gibi kodlar görebilirsiniz.

Servo Kontrollü Kapı Kilidi Kodu:

Kumanda kodlarını öğrendikten sonra, aşağıdaki kilitleme koduyla devam edelim. Not aldığınız kodları IR_BUTTON_UNLOCK ve IR_BUTTON_LOCK değişkenlerine girin.

C++

#include <IRremote.h>
#include <Servo.h>

// Pin Tanımları
const int RECV_PIN = 11;     // IR alıcı sinyal pini
const int SERVO_PIN = 9;     // Servo motorun PWM pini
const int BUTTON_PIN = 2;    // Fiziksel buton pini (opsiyonel)

// Kendi kumandanızın tuş kodlarını buraya girin (ÖĞRENME KODU İLE BULDUĞUNUZ DEĞERLERİ)
#define IR_BUTTON_UNLOCK  0xFFC23D // Örnek: Kumandadaki "Açma" tuşu
#define IR_BUTTON_LOCK    0xFFE01F // Örnek: Kumandadaki "Kapama" tuşu

// Servo pozisyonları
const int LOCKED_POS = 0;   // Kilitli pozisyon (derece)
const int UNLOCKED_POS = 90; // Kilit açık pozisyon (derece) - servo motorunuzun mekanik yapısına göre ayarlayın

// Nesne tanımları
IRrecv irrecv(RECV_PIN);
decode_results results;
Servo myServo;

// Durum değişkenleri
bool isLocked = true; // Başlangıçta kilitli
int buttonState = 0;
int lastButtonState = 0;

void setup() {
  Serial.begin(9600);
  irrecv.enableIRIn(); // IR alıcıyı başlat
  myServo.attach(SERVO_PIN); // Servo motoru belirtilen pine bağla

  pinMode(BUTTON_PIN, INPUT); // Buton pinini giriş olarak ayarla (opsiyonel)

  // Başlangıçta kilitle
  myServo.write(LOCKED_POS);
  Serial.println("Kapı Kilidi Hazır! Başlangıçta Kilitli.");
}

void loop() {
  // IR Kumanda Sinyallerini Kontrol Et
  if (irrecv.decode(&results)) {
    Serial.print("Algılanan IR Kodu: ");
    Serial.println(results.value, HEX);

    if (results.value == IR_BUTTON_UNLOCK && isLocked) {
      // Kilit açma tuşuna basıldıysa ve kilitliyse
      myServo.write(UNLOCKED_POS);
      isLocked = false;
      Serial.println("Kilit Açıldı!");
      delay(500); // Servo hareketini tamamlaması için bekle
    } else if (results.value == IR_BUTTON_LOCK && !isLocked) {
      // Kilit kapama tuşuna basıldıysa ve kilit açık ise
      myServo.write(LOCKED_POS);
      isLocked = true;
      Serial.println("Kilit Kapandı!");
      delay(500); // Servo hareketini tamamlaması için bekle
    }
    irrecv.resume(); // Bir sonraki değeri beklemeye devam et
  }

  // (Opsiyonel) Fiziksel Butonu Kontrol Et
  buttonState = digitalRead(BUTTON_PIN);
  if (buttonState != lastButtonState) {
    if (buttonState == HIGH) { // Butona basıldıysa
      if (isLocked) {
        myServo.write(UNLOCKED_POS);
        isLocked = false;
        Serial.println("Buton ile Kilit Açıldı!");
      } else {
        myServo.write(LOCKED_POS);
        isLocked = true;
        Serial.println("Buton ile Kilit Kapandı!");
      }
      delay(200); // Buton sıçramasını engellemek için
    }
    lastButtonState = buttonState;
  }
}

Önemli: LOCKED_POS ve UNLOCKED_POS değerlerini, servo motorunuzun mekanik kilit mekanizmanızla uyumlu olacak şekilde ayarlamanız gerekebilir. Servonuzu 0 ile 180 derece arasında manuel olarak döndürerek en uygun kilitli ve açık pozisyonları bulun.

Projenin Çalışma Mantığı ve Geliştirme Fikirleri

Bu projede, IR alıcı modülü uzaktan kumandadan gelen sinyalleri yakalar. Arduino, "IRremote" kütüphanesi sayesinde bu sinyalleri çözerek hangi tuşa basıldığını temsil eden HEX kodunu alır. Kodumuz, algılanan bu HEX kodu önceden belirlediğimiz kilit açma veya kapama tuş kodlarıyla karşılaştırır. Eşleşme durumunda, "Servo" kütüphanesi aracılığıyla servo motor belirlenen açılara hareket ettirilir ve kilit mekanizması çalışır.

Bu projeyi daha da geliştirmek isterseniz:

  • Durum Geri Bildirimi: Kilit açık veya kapalıyken LED'ler yakarak görsel geri bildirim sağlayabilirsiniz.
  • Birden Fazla Kilit: Farklı kumanda tuşları ile birden fazla kilidi kontrol edebilirsiniz.
  • Zamanlayıcı: Kilidin belirli bir süre sonra otomatik olarak kapanmasını sağlayabilirsiniz.
  • Şifreli Kilit: IR kumanda yerine, bir tuş takımı veya RFID okuyucu ile şifreli/kartlı kilit mekanizması oluşturabilirsiniz.
  • Montaj ve Mekanik İyileştirmeler: Servonun hareketini daha güvenilir ve sağlam bir kilit mekanizmasına dönüştürmek için 3D baskı parçalar veya ahşap/metalden yapılmış basit düzenekler kullanabilirsiniz.

Bu proje, uzaktan kontrol ve mekanik hareketin birleşimini anlamak için harika bir adımdır. Kendi güvenlik veya otomasyon ihtiyaçlarınıza göre projeyi daha da kişiselleştirebilirsiniz!