Hệ thống khóa cửa điện tử Ngày nay với sự phát triển của xã hội hiện đại ai trong số chúng ta cũng cần bảo những thiết bị bảo vệ tài sản trong nhà như khoá cửa, thiết bị cảnh báo chống
Trang 1HỆ THỐNG KHÓA CỬA ĐIỆN TỬ
NGÀNH: CNKT ĐIỀU KHIỂN VÀ TỰ ĐỘNG HÓA
SINH VIÊN THỰC HIỆN:
Trang 2HỆ THỐNG KHÓA CỬA ĐIỆN TỬ
NGÀNH: CNKT ĐIỀU KHIỂN VÀ TỰ ĐỘNG HÓA
Sinh viên tham gia thực hiện:
Nguyễn Thị Mỹ Anh 020147011 Trần Thế Nhân 020147018 Nguyễn Phúc Thịnh 020147010 Mai Trí Tín 020147022 Giảng viên giảng dạy: ThS Nguyễn Văn Thanh
Tiền Giang, tháng12/năm2022
Trang 3i
LỜI CẢM ƠN
Trong suốt quá trình hoàn thiện môn học Lập Trình Hệ Thống Nhúng, nhóm chúng em đã nhận được sự chỉ dẫn nhiệt tình của Thầy ThS Nguyễn Văn Thanh – Giảng viên Trường Đại học Tiền Giang Với sự giúp đỡ nhiệt tình của Thầy mà nhóm chúng em có thể hoàn thành tốt được những mục tiêu
mà đề tài đã đặt ra nói riêng và học phần Lập Trình Hệ Thống Nhúng nói chung
Thông qua học phần này nhóm chúng em đã tích lũy được nhiều kinh nghiệm quý báu về kiến thức lý thuyết lẫn thực tế và cách hoàn thiện một bài báo cáo đồ án Một lần nữa nhóm xin gửi lời cảm ơn đến Thầy đã giúp nhóm hoàn thành học phần
Trong quá trình viết báo cáo nhóm cũng đã cố gắng hết sức nhưng cũng thể tránh khỏi những lỗi sai xót nhỏ Mong quý Thầy Cô thông cảm bỏ qua Trân trọng cảm ơn!
Trang 4ii
MỤC LỤC
Trang
LỜI CẢM ƠN i
MỤC LỤC ii
DANH MỤC ĐỒ THỊ VÀ HÌNH VẼ v
DANH MỤC BẢNG BIỂU vi
CHƯƠNG 1 TỔNG QUAN 1
1.1 Hệ thống khóa cửa điện tử 1
1.2 Linh kiện sử dụng 1
1.2.1 Màn hình LCD 16x2 1
1.2.2 Động cơ Servo SG90 2
1.2.3 Module bàn phím ma trận 4x3 3
1.2.4 Vi xử lý 3
1.2.5 Một số linh kiện khác: 5
CHƯƠNG 2 THIẾT KẾ VÀ THI CÔNG HỆ THỐNG 6
2.1 Thiết kế phần cứng 6
2.1.1 Lưu đồ giải thuật 6
2.1.1.1 Giải thuật chương trình chính 6
2.1.1.2 Giải thuật chương trình con 1 7
2.1.1.3 Giải thuật chương trình con 2 8
2.1.1.4 Giải thuật chương trình con 3 9
2.1.1.5 Giải thuật chương trình con 4 9
2.1.2 Sơ đồ khối 10
2.1.3 Nguyên lý hoạt động của hệ thống 10
2.2 Thi công phần mềm 10
2.2.1 Phần mềm Arduino IDE 10
2.2.1.1 Thêm thư viện của cần sử dụng trong Arduino IDE 10
2.2.1.2 Chương trình Arduino IDE 13
2.2.2 Phần mềm Proteus 13
CHƯƠNG 3 THỰC NGHIỆM VÀ KẾT LUẬN 15
Trang 5iii
3.1 Kết quả 15
3.2 Kết luận 18
DANH MỤC TÀI LIỆU THAM KHẢO 19
PHỤ LỤC 20
Trang 7v
DANH MỤC ĐỒ THỊ VÀ HÌNH VẼ
Hình 1.1: LCD 1602 kèm moule I2C màu xanh lá 1
Hình 1.2: Động cơ Servo SG90 2
Hình 1.3: Module bàn phím ma trận 4x3 3
Hình 1.4: Kit Arduino UNO 4
Hình 2.1: Giải thuật chương trình chính 6
Hình 2.2: Giải thuật thay đổi mật khẩu 7
Hình 2.3: Giải thuật nhập mật khẩu mặt định 8
Hình 2.4: Giải thuật mở cửa 9
Hình 2.5: Giải thuật đóng cửa 9
Hình 2.6: Sơ đồ khối hệ thống 10
Hình 2.7: Hướng dẫn thêm thư viện Keypad.h trên Arduino 11
Hình 2.8: Hướng dẫn thêm thư viện LiquidCrystal.h trên Arduino 11
Hình 2.9: Hướng dẫn thêm thư viện LiquidCrystal.h trên Arduino 12
Hình 2.10: Hướng dẫn xuất file hex 12
Hình 2.11: Sơ đồ mô phỏng hệ thống trên phần mềm Proteus 13
Hình 2.12: Hướng dẫn thêm file hex (1) 14
Hình 2.13: Hướng dẫn thêm file hex (2) 14
Hình 3.1: Kết quả mô phỏng (1) 15
Hình 3.2: Kết quả mô phỏng (2) 15
Hình 3.3: Kết quả mô phỏng (3) 16
Hình 3.4: Kết quả mô phỏng (4) 16
Hình 3.5: Kết quả mô phỏng (5) 17
Hình 3.6: Kết quả mô phỏng (6) 17
Trang 8vi
DANH MỤC BẢNG BIỂU
Bảng 1.1: Thông số kỹ thuật của kit Arduino UNO R3 4
Trang 91
CHƯƠNG 1 TỔNG QUAN 1.1 Hệ thống khóa cửa điện tử
Ngày nay với sự phát triển của xã hội hiện đại ai trong số chúng ta cũng cần bảo những thiết bị bảo vệ tài sản trong nhà như khoá cửa, thiết bị cảnh báo chống trộm hay camera nhưng có lẽ thiết bị được sử dụng nhiều nhất vẫn chính
là khoá cửa Hiện nay trên thị trường có rất nhiều loại khoá cửa nhưng hầu hết
là khoá cơ khí, các khoá cơ khí này gặp vấn đề lớn đó là tính bảo mật của các loại khoá này là không cao, nên dễ dàng bị phá bởi các chìa khoá đa năng
Đa số khoá kỹ thuật số đang có bán trên thị trường đều có giá bán khá cao
và chủ yếu là loại khoá tay nắm ta thường thấy trong khách sạn hoặc các căn
hộ chung cư
Vì vậy để nâng cao yêu cầu về tính bảo mật để bảo vệ tài sản và giao diện trực quan dễ sử dụng Nhóm chúng em đã quyết định thực hiện đề tài thiết kế thiết bị khoá cửa điện tử
Khoá sử dụng phương pháp cài đặt mã số để khoá hoặc mở và người sử dụng có thể cài đặt số bất kỳ Hệ thống số của khoá được thiết kế bằng các phím bấm số nên khá tiện lợi khi sử dụng
1.2 Linh kiện sử dụng
1.2.1 Màn hình LCD 16x2
Màn hình text LCD 1602 kèm module I2C sử dụng driver HD44780, có khả năng hiển thị 2 dòng với mỗi dòng 16 ký tự, màn hình có độ bền cao, rất phổ biến Module I2C có khả năng kết nối tất cả các đầu ra của màn hình LCD cho ra 4 đầu dây nên rất tiện sử dụng và tiết kiệm dây cắm
Hình 1.1: LCD 1602 kèm moule I2C màu xanh lá
Trang 10có thể dễ dàng điều khiển góc quay bằng phương pháp điều độ rộng xung PWM
Hình 1.2: Động cơ Servo SG90 Thông số kỹ thuật:
Trang 11Hệ thống này còn sử dụng mạch điều khiển trung là kit Arduino UNO R3 Đây là kit Arduino UNO thế hệ thứ 3, với khả năng lập trình cho các ứng dụng điều khiển phức tạp do được trang bị cấu hình mạnh cho các loại bộ nhớ ROM, RAM và Flash, các ngõ đọc tín hiệu analog, các ngõ vào ra digital I/O trong đó nhiều ngõ có khả năng xuất tín hiệu PWM và các chuẩn giao tiếp đa dạng như UART, SPI, TWI (I2C)
Trang 124
Hình 1.4: Kit Arduino UNO Arduino UNO có thể sử dụng 3 vi điều khiển họ 8bit AVR là ATmega8, ATmega168, ATmega328 Bộ điều khiển trung tâm này có thể xử lí những tác
vụ đơn giản như điều khiển đèn LED nhấp nháy, điều khiển dưới dạng xung PWM, xử lý tín hiệu cho xe điều khiển từ xa, làm một trạm đo nhiệt độ & độ
ẩm, hiển thị lên màn hình LCD, truyền dữ liệu từ xa qua mạng có dây hoặc không dây Thông số kỹ thuật của kit Arduino UNO R3 được mô tả chi tiết trong bảng dưới đây:
Bảng 1.1: Thông số kỹ thuật của kit Arduino UNO R3
2 Điện áp hoạt động 5V DC (được cấp qua cổng USB)
7 Số chân Digital I/O 14 (6 chân hardware PWM)
Trang 13- 5V: cấp điện áp 5V đầu ra với dòng tối đa cho phép là 500mA
- 3,3V: cấp điện áp 3,3V đầu ra với dòng tối đa cho phép là 50mA
- Vin (Voltage Input): để cấp nguồn ngoài cho Arduino UNO, nối cực dương của nguồn với chân này và cực âm của nguồn với chân GND
- IOREF: điện áp hoạt động của vi điều khiển trên Arduino UNO có thể được đo ở chân này (với điện áp là 5V) Tuy nhiên, không được lấy nguồn từ chân này để sử dụng bởi chức năng của nó không phải là cấp nguồn
- RESET: việc nhấn nút Reset trên board để reset vi điều khiển tương đương với việc chân RESET được nối với GND qua 1 điện trở 10KΩ
1.2.5 Một số linh kiện khác:
Nguồn adapter 12V
Led báo trạng thái
Dây kết nối các phần cứng
Trang 146
CHƯƠNG 2 THIẾT KẾ VÀ THI CÔNG HỆ THỐNG 2.1 Thiết kế phần cứng
2.1.1 Lưu đồ giải thuật
2.1.1.1 Giải thuật chương trình chính
Hình 2.1: Giải thuật chương trình chính
Đ
Bắt đầu
Khai báo biến
key_pressed=='#'
change()
Nhập mật khẩu mở cửa
Kiểm tra mật khẩu
ServoOpen() initialpassword()
Kết thúc
ServoClose()
S
Đ
Trang 157
2.1.1.2 Giải thuật chương trình con 1
Giải thuật thay đổi mật khẩu
Hình 2.2: Giải thuật thay đổi mật khẩu
Trang 162.1.1.3 Giải thuật chương trình con 2
Giải thuật nhập mật khẩu mặt định
Hình 2.3: Giải thuật nhập mật khẩu mặt định
Trang 179
2.1.1.4 Giải thuật chương trình con 3
Giải thuật mở cửa
Hình 2.4: Giải thuật mở cửa
2.1.1.5 Giải thuật chương trình con 4
Giải thuật đóng cửa
Hình 2.5: Giải thuật đóng cửa
Trang 1810
2.1.2 Sơ đồ khối
Hình 2.6: Sơ đồ khối hệ thống 2.1.3 Nguyên lý hoạt động của hệ thống
Khi bắt đầu hoạt động, hệ thống sẽ yêu cầu người dùng nhập mật khẩu mặc định cho hệ thống là 1234 Sau đó hệ thống sẽ lưu mật khẩu đó Người dùng có thể dùng chuỗi số đó làm mật khẩu hoặc có thể đổi mật khẩu đó Để đổi mật khẩu, nhấn phím phím “#” trên bàn phím Keypad Người dùng nhập mật khẩu mặc định ban đầu Hệ thống kiểm tra mật khẩu nếu giống với mật khẩu trong
hệ thống thì người dùng sẽ được cho đổi mật khẩu và nhập mật khẩu mới
Để mở cửa màn hình hiện “Enter Password” người dùng nhập mật khẩu nếu giống mật khẩu đã lưu thì động cơ Servo sẽ quay 1 góc +90 độ và màn hình LCD sẽ hiện Pass Accepted Ngược lại nếu nhập sai thì động cơ Servo sẽ quay 1 góc -90 độ và màn hình LCD sẽ hiện Wrong Password
2.2 Thi công phần mềm
2.2.1 Phần mềm Arduino IDE
2.2.1.1 Thêm thư viện của cần sử dụng trong Arduino IDE
Trong quá trình lập trình để tiết kiệm thời gian người ta sử dụng các linh kiện có sẵn trên phần mềm Arduino IDE Trong hệ thống này sử dụng 3 thư viện có sẵn
Sau đây là các bước thêm thư viện trên phần mềm IDE
<Keypad.h>
Trang 2012
<Servo.h>
Hình 2.9: Hướng dẫn thêm thư viện LiquidCrystal.h trên Arduino
Để mô phỏng chương trình chạy trên phần mềm Proteus cần phải xuất ra file hex trên phần mềm Arduino IDE Cũng tại IDE bạn Click vào File - Preferences, sẽ xuất hiện hộp thoại Preferences, tại đây tick vào ô vuông compilation, sau đó ấn OK
Hình 2.10: Hướng dẫn xuất file hex
Trang 2113
2.2.1.2 Chương trình Arduino IDE
Chương trình code Arduino trong Phụ Lục
2.2.2 Phần mềm Proteus
Proteus là phần mềm cho phép mô phỏng hoạt động của mạch điện tử bao gồm phần thiết kế mạch và viết chương trình điều khiển cho các họ vi điều khiển như MCS-51, PIC, AVR, Arduino IDE … Proteus là phần mềm mô phỏng mạch điện tử của Lancenter Electronics, mô phỏng cho hầu hết các linh kiện điện tử thông dụng, đặc biệt hỗ trợ cho cả các MCU như PIC, 8051, AVR, Motorola
Hình 2.11: Sơ đồ mô phỏng hệ thống trên phần mềm Proteus
Proteus là công cụ mô phỏng cho các loại vi điều khiển khá tốt, nó hỗ trợ các dòng vi điều khiển PIC, 8051, PIC, dsPIC, AVR, HC11, MSP430, ARM7/LPC2000 các giao tiếp I2C, SPI, CAN, USB, Ethenet ngoài ra còn
mô phỏng các mạch số, mạch tương tự một cách hiệu quả Nếu đang muốn học lập trình trên Arduino hoặc bất kì vi điều khiển nào khác mà không có điều kiện hoặc kinh nghiệm để làm các mạch phát triển hoặc muốn kiểm tra chương trình trước khi nạp vào mạch phát triển thì Proteus là lựa chọn không thể bỏ qua
Trang 22Hình 2.12: Hướng dẫn thêm file hex (1) Bước 2: Nhấp đúp vào vi điều khiển trên Proteus sau đó dán vào ô như hình rồi nhấn OK
Hình 2.13: Hướng dẫn thêm file hex (2)
Trang 23Hình 3.2: Kết quả mô phỏng (2) Servo quay 1 góc -90 độ và đèn xanh sáng:
Trang 2416
Hình 3.3: Kết quả mô phỏng (3)
Để đổi mật nhấn phím “#”, sau đó nhập mật khẩu đang sử dung:
Hình 3.4: Kết quả mô phỏng (4)
Trang 2517
Nhập mật khẩu mới:
Hình 3.5: Kết quả mô phỏng (5) Nhập mật khẩu mới thành công:
Hình 3.6: Kết quả mô phỏng (6)
Trang 2618
3.2 Kết luận
Qua mô phỏng trên phần mềm Proteus cho thấy hệ thống hoạt động ổn định nhưng vẫn còn một vài điểm của hệ thống chưa được hợp lý Hệ thống này có thể ứng dụng trong việc khóa cửa tự động mà không cần chìa khóa hay ở khóa thông thường
Trang 2719
DANH MỤC TÀI LIỆU THAM KHẢO
Website:
- 4x3
http://arduino.vn/bai-viet/5893-khoa-dien-tu-bam-so-su-dung-keypad https://circuitdigest.com/microcontrollerhttp://arduino.vn/bai-viet/5893-khoa-dien-tu-bam-so-su-dung-keypad projects/digitalhttp://arduino.vn/bai-viet/5893-khoa-dien-tu-bam-so-su-dung-keypad keypadhttp://arduino.vn/bai-viet/5893-khoa-dien-tu-bam-so-su-dung-keypad security-door-lock-using-arduino
https://circuitdigest.com/microcontroller-projects/digital-keypad https://www.youtube.com/watch?v=v56KrlD7f90
Trang 2820
PHỤ LỤC
Chương trình Arduino Uno:
#include <Keypad.h>// khai bao thu vien Keypad
#include<EEPROM.h>//khai bao thu vien
#include <Wire.h> /// khai báo màn hình LCD
#include <LiquidCrystal.h>/// khai báo màn hình LCD
int pos = 0; // bien luu giu vi tri servo
#include <Servo.h>// khai bao thu vien servo
const byte rows = 4;
const byte columns = 4;
Trang 29if(key_pressed=='#') // nhan phim # de doi mat khau
change(); // doi mat khau
if (key_pressed)
Trang 30lcd.print("Pass Accepted"); // nhap mat khau dung digitalWrite(ledred, LOW);
Trang 3426
void ServoClose()
{
for (pos = 0; pos <= 180; pos += 5) { // đi từ 180 độ xuống 0 độ
myservo.write(pos); // yêu cầu servo chuyển đến vị trí trong biến 'pos'
delay(20); // đợi 15ms để servo đến vị trí
}
}