Bảo mật là một mối quan tâm lớn trong cuộc sống hàng ngày của chúng ta và khóa kỹ thuật số đã trở thành một phần quan trọng của các hệ thống an ninh này. Có nhiều loại công nghệ có sẵn để đảm bảo an ninh cho vị trí của chúng tôi, như hệ thống an ninh dựa trên PIR, hệ thống bảo mật dựa trên RFID, cảnh báo an ninh bằng laser, hệ thống ma trận sinh học, v.v. Ngay cả bây giờ, có khóa kỹ thuật số có thể được vận hành bằng điện thoại thông minh của chúng tôi, có nghĩa là không nhiều hơn nữa cần phải giữ các chìa khóa khác nhau, chỉ cần một điện thoại thông minh có thể vận hành tất cả các khóa, khái niệm này dựa trên Internet of Things.
Trong đồ án này, chúng tôi đã giải thích về một Khóa mã điện tử đơn giản sử dụng Vi điều khiển 8051, chỉ có thể mở khóa bằng một mã xác định trước, nếu chúng ta nhập sai mã, hệ thống sẽ cảnh báo bằng còi hú. Chúng tôi đã tạo một khóa kỹ thuật số bằng Arduino.
Giải thích làm việc:
Hệ thống này chủ yếu chứa vi điều khiển AT89S52, mô-đun bàn phím, bộ rung và màn hình LCD. Bộ vi điều khiển At89s52 kiểm soát các quy trình hoàn chỉnh như lấy mô-đun bàn phím dạng mật khẩu, so sánh mật khẩu mật khẩu được xác định trước, bộ rung điều khiển và gửi trạng thái đến màn hình LCD. Bàn phím được sử dụng để chèn mật khẩu vào bộ vi điều khiển. Buzzer được sử dụng để chỉ ra mật khẩu sai và LCD được sử dụng để hiển thị trạng thái hoặc thông báo trên đó. Buzzer có trình điều khiển sẵn có bằng cách sử dụng bóng bán dẫn NPN.
Các thành phần:
- Bộ vi điều khiển 8051 (AT89S52)
- Mô-đun bàn phím 4X4
- Buzzer
- LCD 16x2
- Điện trở (1k, 10k)
- Điện trở kéo lên (10K)
- Tụ điện (10uf)
- Dẫn màu đỏ
- Bảng bánh mì
- IC 7805
- Tinh thể 11,0592 MHz
- Nguồn cấp
- Kết nối dây
Lấy đầu vào từ Ma trận bàn phím 4X4 bằng Kỹ thuật ghép kênh:
Trong mạch này, chúng tôi đã sử dụng kỹ thuật ghép kênh để giao diện bàn phím với vi điều khiển 8051, để nhập mật khẩu vào hệ thống. Ở đây chúng tôi đang sử dụng bàn phím 4x4 có 16 phím. Nếu chúng ta muốn sử dụng 16 phím thì chúng ta cần 16 chân để kết nối với 89s52, nhưng trong kỹ thuật ghép kênh, chúng ta chỉ cần sử dụng 8 chân để giao tiếp 16 phím. Vì vậy, đó là một cách thông minh để giao diện mô-đun bàn phím.
Kỹ thuật ghép kênh là một cách rất hiệu quả để giảm số lượng chân được sử dụng với bộ vi điều khiển để cung cấp đầu vào hoặc mật khẩu. Về cơ bản, kỹ thuật này được sử dụng theo hai cách - một là quét theo hàng và một là quét theo cột.
Ở đây chúng tôi sẽ giải thích về quét hàng:
Đầu tiên, chúng ta phải xác định 8 pin cho mô-đun bàn phím. Trong đó 4 chân đầu là cột và 4 chân cuối là hàng.
Để quét hàng, chúng ta cần cung cấp dữ liệu hoặc tín hiệu cho các chân cột và đọc dữ liệu hoặc tín hiệu đó từ chân hàng. Bây giờ, giả sử chúng tôi cung cấp dữ liệu dưới đây cho các chân cột:
C1 = 0;
C2 = 1;
C3 = 1;
C4 = 1;
Và chúng tôi đọc dữ liệu này tại các chân hàng (theo mặc định các chân hàng là CAO do điện trở kéo lên).
Nếu người dùng nhấn phím số '1' thì R1 thay đổi CAO thành THẤP nghĩa là R1 = 0; và bộ điều khiển hiểu rằng người dùng đã nhấn phím '1'. Và nó sẽ in '1' trên màn hình LCD và lưu trữ '1' trong mảng. Vì vậy, sự thay đổi CAO thành THẤP này tại R1, là điều chính mà bộ điều khiển hiểu rằng một số phím, tương ứng với Cột 1, đã được nhấn.
Bây giờ nếu người dùng nhấn phím số '2' thì R1 vẫn ở mức CAO vì cả C1 và R1 đều đã ở mức CAO. Do đó sẽ không có thay đổi, điều đó có nghĩa là vi điều khiển hiểu rằng không có gì được nhấn trong cột một. Và tương tự như vậy hiệu trưởng này đi cho tất cả các chân khác. Vì vậy, trong bộ điều khiển bước này chỉ đợi các phím trong cột một: '1', '4', '7' và '*'.
Bây giờ nếu chúng ta muốn theo dõi các khóa trong các cột khác (như trong cột 2), thì chúng ta cần thay đổi dữ liệu tại các chân cột:
C1 = 1;
C2 = 0;
C3 = 1;
C4 = 1;
Bộ điều khiển thời gian này chỉ đợi các phím trong cột hai: '2', '5', '8' và '0', vì sự thay đổi (CAO thành THẤP) chỉ xảy ra khi phím cột hai sẽ được nhấn. Nếu chúng ta nhấn bất kỳ phím nào trong cột 1, 3 hoặc 4 thì sẽ không có thay đổi nào xảy ra, bởi vì các cột này đang ở mức CAO và Hàng đã ở mức CAO.
Vì vậy, các khóa tương tự trong cột C3 và C4 cũng có thể được theo dõi bằng cách đặt chúng bằng 0 tại một thời điểm. Xem phần giải thích chi tiết ở đây: Giao diện bàn phím với 8051. Cũng xem qua phần Mã bên dưới để hiểu đúng logic.
Giải thích mạch:
Sơ đồ mạch cho khóa kỹ thuật số sử dụng 8051 này đã được hiển thị bên dưới và có thể dễ dàng hiểu được. Các chân Cột của mô-đun bàn phím được kết nối trực tiếp với chân P0.0, P0.1, P0.2, P0.3 và các chân Hàng được kết nối với P0.4, P0.5, P0.6, P0.7 của cổng 0 của vi điều khiển 89s52 Một màn hình LCD 16x2 được kết nối với vi điều khiển 89s52 ở chế độ 4 bit. Chân điều khiển RS, RW và En được kết nối trực tiếp với chân P1.0, GND và P1.2. Và chân dữ liệu D4-D7 được kết nối với các chân P1.4, P1.5, P1.6 và P1.7 của 89s52. Và một bộ rung được kết nối tại chân P2.6 thông qua một điện trở.
Giải thích chương trình:
Chúng tôi đã sử dụng mật khẩu được xác định trước trong chương trình, mật khẩu này có thể được xác định bởi người dùng trong đoạn mã bên dưới. Khi người dùng nhập mật khẩu vào hệ thống, sau đó hệ thống so sánh mật khẩu người dùng đã nhập với mật khẩu được lưu trữ hoặc xác định trước trong Mã chương trình. Nếu khớp xảy ra thì LCD sẽ hiển thị “Access Grated” và nếu mật khẩu không khớp thì LCD sẽ hiển thị “Access Denied” và còi sẽ liên tục phát ra tiếng bíp trong một thời gian. Ở đây chúng tôi đã sử dụng thư viện string.h. Bằng cách sử dụng thư viện này, chúng ta có thể so sánh hoặc đối sánh hai chuỗi, bằng cách sử dụng hàm "strncmp".
Trong chương trình, trước hết chúng ta bao gồm tệp tiêu đề và xác định các chân biến và đầu vào và đầu ra cho bàn phím và màn hình LCD.
#include
Chức năng tạo độ trễ 1 giây đã được tạo, cùng với một số chức năng trên màn hình LCD như khởi tạo màn hình LCD, in chuỗi, lệnh, v.v. Bạn có thể dễ dàng tìm thấy chúng trong Code. Kiểm tra bài viết này để biết giao tiếp LCD với 8051 và các chức năng của nó.
Sau đó, trong chương trình chính, chúng ta khởi tạo LCD và sau đó chúng ta đọc đầu vào từ Keypad bằng hàm keypad () và lưu trữ các phím nhập vào một mảng rồi so sánh nó từ dữ liệu mảng được xác định trước bằng cách sử dụng strncmp.
void main () {buzzer = 1; lcd_init (); lcdstring ("Mã điện tử"); lcdcmd (0xc0); lcdstring ("Hệ thống khóa"); chậm trễ (400); lcdcmd (1); lcdstring ("Thông báo mạch"); chậm trễ (400); trong khi (1) {i = 0; bàn phím (); if (strncmp (pass, "4201", 4) == 0)
Nếu mật khẩu đã nhập khớp, thì hàm accept () được gọi là:
void accept () {lcdcmd (1); lcdstring ("Chào mừng"); lcdcmd (192); lcdstring ("Chấp nhận mật khẩu"); chậm trễ (200); }
Và nếu mật khẩu sai thì hàm sai () được gọi là:
void sai () {buzzer = 0; lcdcmd (1); lcdstring ("Mật mã sai"); lcdcmd (192); lcdstring ("PLZ Thử lại"); chậm trễ (200); buzzer = 1; }
Kiểm tra chức năng bàn phím bên dưới trong mã đọc mô-đun bàn phím biểu mẫu nhập.