Güvenlik, günlük hayatımızda önemli bir sorundur ve dijital kilitler bu güvenlik sistemlerinin önemli bir parçası haline gelmiştir. Yerimizi güvenceye almak için PIR Tabanlı güvenlik sistemleri, RFID tabanlı Güvenlik sistemi, Lazer güvenlik alarmları, biyo-matris sistemleri vb. Gibi birçok tür teknoloji mevcuttur. Şimdi bile, akıllı telefonlarımızla çalıştırılabilen Dijital kilitler var, yani hayır farklı anahtarları tutmaya daha fazla ihtiyaç var, sadece bir akıllı telefon tüm kilitleri çalıştırabilir, bu konsept Nesnelerin İnternetine dayanıyor.
Bu projede, 8051 Microcontorller'ı kullanarak sadece önceden tanımlanmış bir kodla açılabilen basit bir Elektronik kod kilidi açıkladık, yanlış kodu girersek, sistem buzzer ile uyarı verir. Arduino kullanarak zaten bir Dijital kilit oluşturduk.
Çalışma Açıklaması:
Bu sistem ağırlıklı olarak AT89S52 mikro denetleyici, tuş takımı modülü, zil ve LCD içerir. At89s52 mikrodenetleyici, şifreli tuş takımı modülü alma, önceden tanımlanmış şifreleri karşılaştırma, sesli uyarı çalıştırma ve LCD ekrana durum gönderme gibi tüm işlemleri kontrol eder. Tuş takımı, mikro denetleyiciye şifre girmek için kullanılır. Buzzer yanlış şifrenin gösterilmesi için, üzerindeki durum veya mesajların gösterilmesi için LCD kullanılmaktadır. Buzzer, bir NPN transistör kullanarak dahili sürücüye sahiptir.
Bileşenler:
- 8051 Mikrodenetleyici (AT89S52)
- 4X4 Keypad Modülü
- Buzzer
- 16x2 LCD
- Direnç (1k, 10k)
- Pullup direnci (10K)
- Kondansatör (10 uf)
- Kırmızı led
- Ekmek tahtası
- IC 7805
- 11.0592 MHz Kristal
- Güç kaynağı
- Bağlantı telleri
Çoklama Tekniğini kullanarak 4X4 Keypad Matrix'ten girdi alma:
Bu devrede, şifreyi sisteme girmek için 8051 mikro denetleyiciye tuş takımını arayüzlemek için çoklama tekniğini kullandık. Burada 16 tuşlu 4x4 tuş takımı kullanıyoruz. 16 anahtar kullanmak istiyorsak, 89s52'ye bağlantı için 16 pin'e ihtiyacımız var, ancak çoklama tekniğinde 16 tuşa arayüz oluşturmak için sadece 8 pin kullanmamız gerekiyor. Böylece, tuş takımı modülüne arayüz oluşturmanın akıllı bir yolu.
Çoğullama tekniği, giriş veya şifre sağlamak için mikrodenetleyicide kullanılan pin sayısını azaltmanın çok etkili bir yoludur. Temel olarak bu teknik iki şekilde kullanılır - biri satır taraması ve diğeri sütun taramasıdır.
Burada satır taramayı açıklayacağız:
Öncelikle keypad modülü için 8 pin tanımlamamız gerekiyor. İlk 4 pinin sütun ve son 4 pinin sıra olduğu.
Satır taraması için sütun pinlerine veri veya sinyal vermemiz ve bu verileri veya sinyali satır pininden okumamız gerekir. Şimdi aşağıdaki verileri sütun pimlerine verdiğimizi varsayalım:
C1 = 0;
C2 = 1;
C3 = 1;
C4 = 1;
Ve bu verileri sıra pinlerinde okuruz (varsayılan olarak sıra pinleri, çekme direnci nedeniyle YÜKSEK olur).
Kullanıcı '1' tuşuna basarsa, o zaman R1 HIGH olarak LOW olarak değişir, R1 = 0 anlamına gelir; ve kontrolör, kullanıcının '1' tuşuna bastığını anlar. Ve LCD'de '1' yazacak ve dizide '1' kaydedecektir. Dolayısıyla, R1'deki bu YÜKSEK - DÜŞÜK değişim, kontrolörün Sütun 1'e karşılık gelen bazı tuşlara basıldığını anladığı ana şeydir.
Şimdi, kullanıcı '2' tuşuna basarsa, C1 ve R1 zaten YÜKSEK olduğundan, R1 YÜKSEK olarak kalır. Dolayısıyla değişiklik olmayacak, bu, mikro denetleyicinin birinci sütunda hiçbir şeye basılmadığını anladığı anlamına geliyor. Ve aynı şekilde bu prensip diğer tüm pinler için geçerli. Dolayısıyla bu adımda kontrolör yalnızca birinci sütundaki: '1', '4', '7' ve '*' anahtarlarını bekler.
Şimdi, diğer sütunlardaki anahtarları izlemek istiyorsak (sütun 2'deki gibi), o zaman verileri sütun iğnelerindeki değiştirmemiz gerekir:
C1 = 1;
C2 = 0;
C3 = 1;
C4 = 1;
Bu zaman denetleyicisi yalnızca ikinci sütundaki: '2', '5', '8' ve '0' tuşlarını bekler, çünkü değişiklik (YÜKSEK - DÜŞÜK) yalnızca sütun iki tuşa basıldığında gerçekleşir. Sütun 1, 3 veya 4'te herhangi bir tuşa basarsak, bu sütunlar YÜKSEK ve Satırlar zaten YÜKSEK olduğundan herhangi bir değişiklik olmaz.
Aynı şekilde C3 ve C4 sütunlarındaki anahtarlar da aynı anda 0 yapılarak izlenebilir. Burada ayrıntılı açıklamayı kontrol edin: 8051 ile Tuş Takımı Arayüzü. Ayrıca mantığı doğru anlamak için aşağıdaki Kod bölümünü inceleyin.
Devre Açıklaması:
8051 kullanan bu Dijital kilidin devre şeması aşağıda gösterilmiştir ve kolayca anlaşılabilir. Tuş takımı modülünün Sütun pimleri doğrudan P0.0, P0.1, P0.2, P0.3 pimlerine bağlanır ve Satır pimleri 89s52 mikrodenetleyicinin port 0'ın P0.4, P0.5, P0.6, P0.7'sine bağlanır. 16x2 LCD, 4 bit modunda 89s52 mikrodenetleyiciye bağlanır. Kontrol pini RS, RW ve En doğrudan P1.0, GND ve P1.2 pinlerine bağlanır. Ve D4-D7 veri pini, 89s52'nin P1.4, P1.5, P1.6 ve P1.7 pinlerine bağlanır. Ve bir direnç üzerinden P2.6 pinine bir zil bağlanır.
Program Açıklaması:
Programda önceden tanımlanmış bir şifre kullandık, bu şifre kullanıcı tarafından aşağıdaki kodda tanımlanabilir. Kullanıcı sisteme bir şifre girdiğindeardından sistem, kullanıcı tarafından girilen parolayı Program Kodunda saklanan veya önceden tanımlanmış parolayla karşılaştırır. Bir eşleşme meydana gelirse, LCD'de "Erişim Izgaralı" gösterilir ve şifre eşleşmezse, LCD'de "Erişim Engellendi" gösterilir ve sesli uyarı bir süre sürekli olarak bip sesi çıkarır. Burada string.h kitaplığını kullandık. Bu kitaplığı kullanarak iki dizgeyi “strncmp” işlevini kullanarak karşılaştırabilir veya eşleştirebiliriz.
Programda öncelikle başlık dosyasını ekliyoruz ve tuş takımı ve LCD için değişken ve giriş & çıkış pinlerini tanımlıyoruz.
#Dahil etmek
LCD başlatma, diziyi yazdırma, komutlar vb. Gibi bazı LCD işlevleriyle birlikte 1 saniyelik gecikme oluşturma işlevi oluşturulmuştur. Bunları Kod'da kolayca bulabilirsiniz. 8051 ile LCD arabirimi ve işlevleri için bu makaleye bakın.
Bundan sonra, ana programda LCD'yi başlattık ve ardından keypad () işlevini kullanarak Keypad'den girişi okuyoruz ve giriş tuşlarını bir diziye kaydedip strncmp kullanarak önceden tanımlanmış dizi verilerinden karşılaştırıyoruz.
void main () {buzzer = 1; lcd_init (); lcdstring ("Elektronik Kod"); lcdcmd (0xc0); lcdstring ("Kilit Sistemi"); gecikme (400); lcdcmd (1); lcdstring ("Devre Özeti"); gecikme (400); while (1) {i = 0; klavye(); eğer (strncmp (pass, "4201", 4) == 0)
Girilen şifre eşleşirse, kabul et () işlevi çağrılır:
void accept () {lcdcmd (1); lcdstring ("Hoş Geldiniz"); lcdcmd (192); lcdstring ("Şifre Kabul Et"); gecikme (200); }
Parola yanlışsa, yanlış () işlevi çağrılır:
geçersiz yanlış () {buzzer = 0; lcdcmd (1); lcdstring ("Yanlış Geçiş Anahtarı"); lcdcmd (192); lcdstring ("PLZ Tekrar Dene"); gecikme (200); zil = 1; }
Giriş form tuş takımı modülünü okuyan kodda aşağıdaki tuş takımı işlevini kontrol edin.