Trong bài viết này, chúng ta sẽ hướng dẫn cách tạo một mạch khóa số điện tử sử dụng Arduino. Mạch này bao gồm bàn phím, màn hình LCD và bo mạch điều khiển Arduino.
Linh kiện cần thiết
- Arduino Uno – 1 cái
- LCD 16×2 – 1 cái
- Bàn phím 4×4 – 1 cái
- Relay – 1 cái
- Điện trở 1kΩ – 1 cái
- Transistor BC548 – 1 cái
- Đèn LED – 2 cái
Mạch khóa số điện tử được thiết kế sử dụng Arduino Uno, màn hình LCD và bàn phím. Màn hình LCD và bàn phím tạo thành giao diện người dùng để nhập mật khẩu và hiển thị các thông báo liên quan như “Mật khẩu sai”, “Cửa mở”, v.v. Hai đèn LED được sử dụng để cho biết trạng thái của cửa là đóng hay mở. Để vận hành khóa/cửa, chúng ta sử dụng một Relay có thể được kết nối với bộ truyền động điện tử hay solenoid.
Bạn đang xem: Mạch khóa số điện tử dùng Arduino – Bảo vệ ngôi nhà của bạn một cách an toàn và hiệu quả
READ MORE:
Sơ đồ mạch khóa số điện tử dùng Arduino
Trong mạch này, chúng ta sử dụng thư viện “LiquidCrystal” và “Keypad”. Chương trình có các mô-đun khác nhau, Setup, Loop, Lock. Trong phần setup, chúng ta khởi tạo các kết nối IO, màn hình LCD và bàn phím. Trong vòng lặp chính, chúng ta sẽ lấy các phím được nhấn trong mảng “code []”, khi bốn chữ số đã được nhập vào, chương trình sẽ không nhận các phím nữa. Chúng ta sử dụng các phím số và phím ‘C’, “=” để thực hiện các chức năng khác nhau. Phím ‘C’ được sử dụng để khóa hoặc xóa màn hình hiển thị khi nhập sai mật khẩu. Mật khẩu đã nhập có thể được ẩn bằng cách đặt ký tự dấu sao ‘*’.
Xem thêm : HƯỚNG DẪN LÀM MẠCH NGUỒN ỔN ÁP SỬ DỤNG IC LM2596
Sau khi nhập mật khẩu, bạn chỉ cần nhấn phím ‘=’. Nếu mật khẩu đúng, cửa sẽ mở khóa trong vài giây. Nếu mật khẩu nhập không chính xác, thông báo sẽ được hiển thị trên màn hình LCD.
#include
#include
// Khởi tạo thư viện với các chân giao tiếp
LiquidCrystal lcd(9, 8, 7, 6, 5, 4);
const byte ROWS = 4; // 4 hàng
const byte COLS = 4; // 4 cột
// Định nghĩa các ký tự và số trên bàn phím
char hexaKeys[ROWS][COLS] = {{'7', '8', '9', '/'},
{'4', '5', '6', '*'},
{'1', '2', '3', '-'},
{'C', '0', '=', '+'}};
byte rowPins[ROWS] = {3, 2, 19, 18}; // Kết nối các chân hàng của bàn phím
byte colPins[COLS] = {17, 16, 15, 14}; // Kết nối các chân cột của bàn phím
Keypad customKeypad = Keypad( makeKeymap(hexaKeys), rowPins, colPins, ROWS, COLS);
const int LED_RED = 10; // LED đỏ
const int LED_GREEN = 11; // LED xanh
const int RELAY = 12; // Relay hay động cơ
char keycount = 0;
char code[4]; // Lưu các phím đã nhấn
//==========================================================
// SETUP
//==========================================================
void setup() {
pinMode(LED_RED, OUTPUT);
pinMode(LED_GREEN, OUTPUT);
pinMode(RELAY, OUTPUT);
// Thiết lập số cột và số hàng của màn hình LCD
lcd.begin(16, 2);
// Hiển thị tin nhắn ra LCD
lcd.print("Nhap mat khau:");
lcd.setCursor(0, 1); // Di chuyển con trỏ sang dòng 2
// Mở con trỏ
lcd.cursor();
digitalWrite(LED_GREEN, HIGH); // LED xanh tắt
digitalWrite(LED_RED, LOW); // LED đỏ sáng
digitalWrite(RELAY, LOW); // Tắt relay
}
//==========================================================
// LOOP
//==========================================================
void loop() {
char customKey = customKeypad.getKey();
if (customKey && (keycount < 4) && (customKey != '=') && (customKey != 'C')) {
//lcd.print(customKey); // Hiển thị các phím đã nhấn
lcd.print('*'); // Không hiển thị các phím đã nhập
code[keycount] = customKey;
keycount++;
}
if (customKey == 'C') // Phím cancel/khóa để xóa màn hình và khóa
{
Lock(); // Khóa và xóa màn hình
}
if (customKey == '=') // Kiểm tra mật khẩu và mở cửa
{
if ((code[0] == '1') && (code[1] == '2') && (code[2] == '3') && (code[3] == '4')) // Khớp với mật khẩu
{
digitalWrite(LED_GREEN, LOW); // LED xanh tắt
digitalWrite(LED_RED, HIGH); // led đỏ sáng
digitalWrite(RELAY, HIGH); // Mở relay
lcd.setCursor(0, 1);
lcd.print("Cua mo ");
delay(4000); // Cửa mở trong 4 giây
Lock();
}
else
{
lcd.setCursor(0, 1);
lcd.print("Mat khau sai"); // Hiển thị tin nhắn nhập sai mật khẩu
delay(1500);
Lock();
}
}
}
//==========================================================
// Khóa cửa và cập nhật hiển thị
//==========================================================
void Lock()
{
lcd.setCursor(0, 1);
lcd.print("Cua da dong ");
delay(1500);
lcd.setCursor(0, 1);
lcd.print(" "); // Xóa mật khẩu
lcd.setCursor(0, 1);
keycount = 0;
digitalWrite(LED_GREEN, HIGH); // LED xanh tắt
digitalWrite(LED_RED, LOW); // LED đỏ mở
digitalWrite(RELAY, LOW); // Tắt relay
}
READ MORE:
Kết luận
Với mạch khóa số điện tử dùng Arduino này, bạn có thể bảo vệ ngôi nhà của mình một cách an toàn và hiệu quả. Mạch này cũng có thể được mở rộng để thêm chức năng cảnh báo khi có trộm xâm nhập. Việc sử dụng bàn phím 3×4 kết hợp với bo mạch Arduino và màn hình LCD 16×2 làm cho mạch trở nên thú vị và ứng dụng thực tế cao.
Hình ảnh minh hoạ: Mạch khóa số điện tử dùng Arduino
Nguồn: https://cite.edu.vn
Danh mục: Học tập