Yazılardaki ürünleri komponentci.net'te inceleyebilir, hemen sipariş verebilirsiniz.komponentci.net →
KomponentciBlog Mağaza
Blog  ›  Projeler

Şifreli Kasa Projesi: Keypad, Servo Kilit ve LCD

Şifreli Kasa Projesi: Keypad, Servo Kilit ve LCD
Kısa cevap

Şifreli kasa projesi, 4x4 keypad ile girilen şifreyi Arduino'da kayıtlı şifreyle karşılaştırır; şifre doğruysa servo motor kilit dilini çekerek kapağı açar, yanlışsa buzzer uyarır. 16x2 LCD ekran girilen haneleri yıldız olarak gösterir ve 3 yanlış denemeden sonra kasa 30 saniye kilitlenir.

Kumbaranızı ya da küçük eşyalarınızı şifreyle açılan bir kutuda saklamak ister misiniz? Bu projede Arduino Uno, 4x4 tuş takımı (keypad), servo motor ve LCD ekranla şifreli bir kasa maketi yapıyoruz. Doğru şifrede kilit açılıyor, yanlış şifrede buzzer uyarıyor, üç yanlış denemede kasa bir süre kendini kilitliyor. Proje ortaokul ve lise kodlama dersleri, TÜBİTAK 4006 bilim fuarları ve meslek lisesi atölyeleri için uygundur.

Şifreli kasa nedir?

Şifreli kasa, kapağı yalnızca doğru sayı dizisi girildiğinde açılan, kilidi elektronik bir devre tarafından kontrol edilen bir saklama kutusudur. Gerçek kasalarda kilit dilini güçlü bir motor ya da solenoid hareket ettirir ve gövde çelikten yapılır.

Maketimizde keypad şifreyi alır, Arduino Uno karşılaştırır, SG90 servo motor kilit dili görevi görür, 16x2 I2C LCD bilgi verir ve pasif buzzer ses çıkarır. Sistem bir eğitim maketidir; değerli eşyaları korumak için yeterli güvenliği sağlamaz.

Hangi malzemeler gerekir?

Şifreli kasa için Arduino Uno, 4x4 keypad, SG90 servo, I2C arayüzlü 16x2 LCD, pasif buzzer ve jumper kablolar yeterlidir. Kasa gövdesi için kapaklı bir karton ya da ince kontrplak kutu kullanılır.

Malzeme listesi

MalzemeAdetNe işe yarar?
Arduino Uno R3 (CH340, USB kablolu)1Şifreyi karşılaştırır, kilidi yönetir
4x4 buton keypad1Şifre girişi (16 tuş, 8 pin)
Tower Pro SG90 servo motor1Kilit dilini 0° ile 90° arasında çevirir
16x2 I2C LCD ekran1Mesajları ve yıldızları gösterir
Pasif buzzer 17 mm1Tuş sesi, onay ve hata uyarısı
140 parça kutulu jumper kablo seti1Bağlantılar

Arduino IDE'de Kütüphane Yöneticisi'nden "Keypad" (Mark Stanley, Alexander Brevig) ve "LiquidCrystal I2C" kütüphanelerini kurun. Servo kütüphanesi IDE ile birlikte gelir.

Devre nasıl bağlanır?

Keypad'in 8 ucu D9'dan D2'ye sırayla bağlanır; servo sinyali D10'a, pasif buzzer D11'e, LCD ise A4 (SDA) ve A5 (SCL) pinlerine bağlanır. Bağlantı sırasında USB kablosu takılı olmasın.

  1. Keypad'i tuşlar size bakacak şekilde tutun. Soldaki ilk dört uç satırlardır (R1-R4), sağdaki dört uç sütunlardır (C1-C4).
  2. Satırlar: R1 → D9, R2 → D8, R3 → D7, R4 → D6.
  3. Sütunlar: C1 → D5, C2 → D4, C3 → D3, C4 → D2.
  4. Servo: kahverengi → GND, kırmızı → 5V, turuncu (sinyal) → D10.
  5. Pasif buzzer: artı → D11, eksi → GND.
  6. LCD: GND → GND, VCC → 5V, SDA → A4, SCL → A5.
  7. USB kablosunu takıp kodu yükleyin ve her tuşta LCD'ye yıldız geldiğini kontrol edin.
Şifreli kasa bağlantı şeması: 4x4 keypadin satır uçları R1, R2, R3, R4 sırasıyla Arduino Uno D9, D8, D7, D6 pinlerine, sütun uçları C1, C2, C3, C4 sırasıyla D5, D4, D3, D2 pinlerine bağlı; SG90 servo kilidin sinyal kablosu D10'a, pasif buzzer D11'e bağlı; 16x2 I2C LCD'nin SDA ucu A4'e, SCL ucu A5'e bağlı ve ekranda Kasa kilitli ile Sifre: **** yazıyor
Keypad satırları D9-D6'ya, sütunları D5-D2'ye, servo kilit D10'a, buzzer D11'e, LCD A4 ve A5'e bağlanır.

Bir tuşa basıldığında yanlış rakam görünüyorsa satır ve sütun kabloları yer değiştirmiştir. Keypad'in iç yapısını ve tarama yöntemini 4x4 keypad Arduino bağlantısı yazısında anlattık.

Şifreli kasa kodu nasıl çalışır?

Kod basılan rakamları bir metinde toplar, # tuşuna basılınca bu metni kayıtlı şifreyle karşılaştırır; eşleşirse servoyu 90°'ye çevirip kilidi açar, eşleşmezse hata sayısını bir artırır.

#include <Keypad.h>
#include <Servo.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>

const byte SATIR = 4, SUTUN = 4;
char tuslar[SATIR][SUTUN] = {
  {'1', '2', '3', 'A'},
  {'4', '5', '6', 'B'},
  {'7', '8', '9', 'C'},
  {'*', '0', '#', 'D'}
};
byte satirPin[SATIR] = {9, 8, 7, 6};
byte sutunPin[SUTUN] = {5, 4, 3, 2};
Keypad tus = Keypad(makeKeymap(tuslar), satirPin, sutunPin, SATIR, SUTUN);
LiquidCrystal_I2C lcd(0x27, 16, 2);     // ekran yoksa 0x3F deneyin
Servo kilit;

const String SIFRE = "1234";
const byte SERVO_PIN = 10, BUZZER = 11;
const int KILITLI = 0, ACIK = 90;
String giris = "";
byte hata = 0;

void ekran(const char* mesaj) {
  lcd.clear();
  lcd.print(mesaj);
  lcd.setCursor(0, 1);
  lcd.print("Sifre: ");
}

void setup() {
  kilit.attach(SERVO_PIN);
  kilit.write(KILITLI);
  lcd.init();
  lcd.backlight();
  ekran("Kasa kilitli");
}

void loop() {
  char t = tus.getKey();
  if (!t) return;
  tone(BUZZER, 2000, 40);                // tuş sesi
  if (t == 'A') { kilit.write(KILITLI); giris = ""; ekran("Kasa kilitli"); return; }
  if (t == '*') { giris = ""; ekran("Silindi"); return; }
  if (t == '#') {
    if (giris == SIFRE) {
      kilit.write(ACIK);
      hata = 0;
      ekran("Acildi! A=kilit");
      tone(BUZZER, 1500, 300);
    } else {
      hata++;
      ekran("Yanlis sifre");
      tone(BUZZER, 400, 600);
      if (hata >= 3) {                   // 3 hata: 30 s bekle
        lcd.clear();
        lcd.print("30 sn bekleyin");
        delay(30000);
        hata = 0;
        ekran("Kasa kilitli");
      }
    }
    giris = "";
    return;
  }
  if (t >= '0' && t <= '9' && giris.length() < 8) {
    giris += t;
    lcd.print('*');                      // rakam yerine yıldız
  }
}

Şifreyi değiştirmek için SIFRE satırındaki "1234" yerine kendi şifrenizi yazıp kodu yeniden yükleyin. Servo ve tone farklı zamanlayıcılar kullandığı için birlikte sorunsuz çalışır.

Tuşların görevleri nelerdir?

Rakam tuşları şifreyi yazar, # onaylar, * siler ve A kasayı yeniden kilitler; B, C ve D tuşları bu sürümde boştur ve geliştirme için ayrılmıştır.

TuşGörevLCD'de görünenSes
0-9Şifre hanesi ekler (en çok 8)*Kısa bip (2.000 Hz)
#Şifreyi onaylarAcildi! ya da Yanlis sifre1.500 Hz onay / 400 Hz hata
*Girilen haneleri silerSilindiKısa bip
AKasayı kilitler (servo 0°)Kasa kilitliKısa bip
3 yanlış denemeGirişi 30 saniye kapatır30 sn bekleyin400 Hz uzun ton

Kasa kutusu nasıl yapılır?

Kasa, kapaklı bir kutunun ön duvarına keypad ve LCD, iç duvarına ise kilit dili olarak çalışan servo yerleştirilerek yapılır.

  • Keypad'in yapışkan sırtını kutunun ön yüzüne yapıştırın; kablo şeridini bir yarıktan içeri geçirin.
  • LCD için ön yüzde 7x2,5 cm civarında bir pencere açın ve ekranı içeriden sabitleyin.
  • Servoyu kutunun iç yan duvarına, kolu kapağın iç kenarına denk gelecek şekilde yapıştırın.
  • Kapağın iç yüzüne küçük bir tahta parçası ya da karton tırnak yapıştırın. Servo 0°'deyken kol tırnağın altına girip kapağı tutmalı, 90°'de serbest bırakmalıdır.
  • Arduino ve kabloları kutunun arka bölmesine yerleştirin; USB kablosu için arkadan bir delik açın.

Servonun yerine daha güçlü bir kilit isterseniz solenoid kilit Arduino bağlantısı yazısındaki 12V solenoid kilidi inceleyebilirsiniz; bu durumda röle ya da MOSFET ve ayrı bir adaptör gerekir.

Hangi güvenlik kurallarına dikkat edilmeli?

Kasa USB'den ya da kalem pilden 5-6 V ile çalıştığı için güvenlidir; yine de şu kurallara uyun:

  • Devreyi bilgisayarın USB çıkışından, USB powerbank'tan ya da en çok 12V'luk bir adaptörden besleyin. 220V şebeke elektriğine hiçbir şey bağlamayın.
  • Projeyi öğretmen ya da yetişkin gözetiminde kurun; kutuyu keserken maket bıçağını yetişkin yardımıyla kullanın.
  • Elektrik kesilirse servo son konumunda kalır. Kasanın arkasında, tornavidayla açılabilen bir acil durum kapağı bırakın.
  • Servo kolunun arasına parmağınızı sokmayın; kapak kapanırken kola zorla bastırmayın, servonun dişlileri kırılabilir.
  • Kasaya ilaç, para ya da değerli eşya koymayın; bu bir eğitim maketidir.

Ödevinizi nasıl sunarsınız?

Ödevinizi, kasayı canlı olarak açıp kapatarak, yanlış şifre ve kilitlenme durumlarını göstererek sunabilirsiniz.

  • Problem: "Mekanik anahtar kaybolabilir; şifreyle açılan bir kilit nasıl yapılır?"
  • Gösteri: Doğru şifreyle açın, yanlış şifreyi üç kez deneyip 30 saniyelik kilitlenmeyi gösterin.
  • Hesap: 4 haneli şifrede 10 × 10 × 10 × 10 = 10.000 olasılık vardır. 3 denemede bir 30 saniye beklemeyle hepsini denemek en az 100.000 saniye, yani 27 saatten uzun sürer.
  • Rapor: Bağlantı şemasını, kodun akış şemasını ve tuş tablosunu ekleyin.
  • Geliştirme: Şifreyi EEPROM'a kaydedip keypad'den değiştirme, RFID kart ya da parmak izi ile açma önerin.

Sık sorulan sorular

Elektrik kesilince şifre silinir mi?

Hayır, bu koddaki şifre programın içine yazıldığı için elektrik kesilince silinmez. Arduino yeniden başladığında kasa "Kasa kilitli" ekranıyla açılır ve servo 0°'ye döner. Şifreyi keypad'den değiştirmek isterseniz yeni şifreyi Arduino'nun EEPROM belleğine kaydetmeniz gerekir; EEPROM'daki veri de elektrik kesilince kaybolmaz.

Keypad tuşları yanlış rakam veriyorsa ne yapmalıyım?

Yanlış rakam genellikle satır ve sütun kablolarının sırasının karışmasından kaynaklanır. Önce yalnızca keypad'i bağlayıp tuşları Seri Monitör'e yazdıran kısa bir test kodu çalıştırın. Rakamlar ters ya da kaymış geliyorsa koddaki satirPin ve sutunPin dizilerinin sırasını değiştirin. Kabloları yeniden takmaktan genellikle daha kolaydır.

Servo kapağı tutmaya yetmiyorsa ne yapmalıyım?

SG90 küçük bir servodur; kapağı yalnızca hafif kutularda tutabilir. Kolu kısaltın, çünkü kısa kol daha fazla kuvvet uygular. Tırnağı kolun ucuna değil, servo miline daha yakın bir noktaya denk getirin; aynı servo, mile yakın noktada daha büyük kuvvet uygular. Daha sağlam bir kilit için metal dişli MG90S servo ya da solenoid kilit kullanılabilir.

Arduino servo dönerken neden yeniden başlıyor?

Servo hareket ederken kısa süreli yüksek akım çeker ve USB'nin gerilimi anlık düşer; bu da Arduino'nun yeniden başlamasına yol açabilir. Servoyu 4 kalem pilden (6 V) besleyin ve pilin eksisini Arduino GND'sine bağlayın. Servonun sinyal kablosu yine D10'da kalır.

Özet

  • Şifreli kasa, keypad ile girilen şifreyi karşılaştırıp servo kilidi açan bir Arduino projesidir.
  • Bağlantı: keypad satırları D9-D6, sütunları D5-D2; servo D10, buzzer D11, LCD A4 ve A5.
  • # onaylar, * siler, A kasayı kilitler; LCD rakamları yıldız olarak gösterir.
  • 3 yanlış denemeden sonra giriş 30 saniye kapanır; 10.000 şifreyi denemek 27 saatten uzun sürer.
  • Elektrik kesilince servo son konumunda kalır; acil durum kapağı bırakın.
  • Devreyi USB ya da pille, 220V kullanmadan ve yetişkin gözetiminde çalıştırın.

Bu yazıdaki ürünler

Diğer yazılar

11 Kasım 20266 dk okuma

Pense Çeşitleri: Yan Keski, Kargaburun ve Kombine Pense

Pense çeşitleri arasında seçim işe göre yapılır: tel ve komponent bacağı kesmek için yan keski, dar alanda tutmak ve bükmek için kargaburun,...

Devamını oku →
11 Kasım 20267 dk okuma

Işık Takip Eden Robot Yapımı: Arduino, LDR ve L298N

Işık takip eden robot, önüne takılan iki LDR ile hangi tarafın daha aydınlık olduğunu ölçüp tekerleklerini o yöne süren bir Arduino projesid...

Devamını oku →
11 Kasım 20266 dk okuma

İzoleli Tornavida ve 1000V VDE El Aletleri Nedir?

İzoleli tornavida, IEC 60900 (EN 60900) standardına göre 1000V AC ve 1500V DC gerilime kadar yalıtım için test edilmiş ve üzerinde çift üçge...

Devamını oku →
11 Kasım 20267 dk okuma

ESP8266 Hava Durumu Ekranı: NodeMCU, OLED ve Open-Meteo

ESP8266 hava durumu ekranı, NodeMCU kartının Wi-Fi ile internete bağlanıp Open-Meteo servisinden anlık sıcaklık, nem, rüzgâr ve hava durumu...

Devamını oku →
11 Kasım 20266 dk okuma

Havya Ucu Çeşitleri ve Bakımı: Konik, Keski, Bıçak

Havya ucu, lehimlenecek noktanın boyutuna göre seçilir: ince SMD ve sık bacaklar için konik (I), genel THT lehim için keski (D) ya da eğik k...

Devamını oku →
11 Kasım 20266 dk okuma

Ultrasonik Theremin Projesi: HC-SR04 ile Elle Müzik

Ultrasonik theremin, HC-SR04 sensörüyle elinizin uzaklığını ölçüp bu mesafeyi ses frekansına çeviren bir Arduino projesidir. El sensöre yakl...

Devamını oku →