Bài tập lớn thiết kế mạch khóa số điện tử phát triển ứng dụng iot

46 0 0
Bài tập lớn thiết kế mạch khóa số điện tử   phát triển ứng dụng iot

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Vậy đề tài “Thiết kế mạch khóa số điện tử” mà nhóm tiến hành nghiên cứu đóng vai trò quan trọng trong việc giải quyết những vấn đề bảo mật khóa cửa gây ra, tránh việc kẻ gian xâm nhập là

Trang 1

TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT HƯNG YÊN

LÊ NGỌC LÀNH THÂN THỊ MỸ LINH

TRỊNH THỊ LINH

THIẾT KẾ MẠCH KHÓA SỐ ĐIỆN TỬ

NGÀNH: CÔNG NGHỆ THÔNG TIN CHUYÊN NGÀNH: PHÁT TRIỂN ỨNG DỤNG IOT

BÀI TẬP LỚNNGƯỜI HƯỚNG DẪN

TS VŨ HUY THẾ

Trang 3

LỜI CAM ĐOAN

Chúng em xin cam đoan bài tập lớn “Thiết kế mạch khóa số điện tử” là công trình nghiên cứu của nhóm Những nội dung sử dụng trong báo cáo không sao chép của bất cứ tài liệu nào Những nội dung trích dẫn được thực hiện đúng theo quy định về vi phạm bản quyền Các kết quả trình bày trong báo cáo hoàn toàn là kết quả do bản thân em và các thành viên trong nhóm thực hiện, nếu sai em xin chịu hoàn toàn trách nhiệm trước khoa và nhà trường.

Hưng yên, ngày … tháng … năm… Sinh viên

3

Trang 4

LỜI CÁM ƠN

Để có thể hoàn thành báo cáo này, lời đầu tiên chúng em xin phép gửi lời cảm ơn tới Khoa Công nghệ thông tin – Trường Đại học Sư phạm Kỹ thuật Hưng Yên đã tạo điều kiện thuận lợi cho chúng em thực hiện bài tập lớn môn học này.

Đặc biệt chúng em xin chân thành cảm ơn thầy Vũ Huy Thế đã rất tận tình hướng dẫn, chỉ bảo trong suốt thời gian thực hiện đề tài.

Mặc dù chúng em đã có cố gắng, nhưng với trình độ còn hạn chế, trong quá trình thực hiện đề tài không tránh khỏi những thiếu sót Chúng em hi vọng sẽ nhận được những ý kiến nhận xét, góp ý của các Thầy giáo, Cô giáo về những kết quả triển khai trong đề tài.

Chúng em xin trân trọng cảm ơn!

Trang 5

1.1.1 Tầm quan trọng, vai trò của đề tài 10

1.1.2 Tính cấp thiết của đề tài 10

1.1.3 Những bất cập, hạn chế của hệ thống cũ 11

1.2 Mục tiêu của đề tài 11

1.2.1 Mục tiêu tổng quát 11

1.2.2 Mục tiêu cụ thể 11

1.3 Giới hạn và phạm vi của đề tài 12

1.3.1 Đối tượng nghiên cứu 12

1.3.2 Phạm vi nghiên cứu 12

1.4 Nội dung thực hiện 12

1.5 Phương pháp tiếp cận 12

CHƯƠNG 2: CƠ SỞ LÝ THUYẾT VỀ HỆ THỐNG NHÚNG 14

2.1 Ngoại vi và giao diện 14

2.1.1 Board Arduino UNO - Khối điều khiển 14

2.1.2 LCD 16x2 - Hiển thị 15

2.1.3 Keypad 4x4 – Bàn phím chức năng 17

2.1.4 Nút nhấn đơn - Nhấn mở cửa trực tiếp 17 5

Trang 6

2.1.5 Động cơ Servo - Điều khiển chốt cửa 18

2.1.6 Còi chip 5V - Phát tiếng báo động 19

3.1.1 Các yêu cầu chức năng 23

3.1.2 Các yêu phi cầu chức năng 23

4.2.1 Test chức năng nhập mật khẩu 40

4.2.2 Test chức năng xóa 1 ký tự trong mật khẩu nhập vào 40

4.2.3 Test chức năng xóa toàn bộ ký tự trong mật khẩu nhập vào 41

4.2.4 Test chức năng mở cửa trực tiếp bằng nút nhấn 41

4.3 Hướng dẫn vận hành hệ thống 42

KẾT LUẬN 45

TÀI LIỆU THAM KHẢO 46

Trang 7

Hình 2.7: Biểu tượng phần mềm Arduino IDE 20

Hình 2.8: Biểu tượng phần mềm Proteus 21

Hình 3.1: Sơ đồ khối hệ thống khóa số điện tử 24

Hình 3.2: Mô phỏng hệ thống trên Proteus 27

Hình 3.3: Lưu đồ thuật toán chính của chương trình 28

Hình 4.1: Test chức năng nhập mật khẩu 40

Hình 4.2: Test chức năng xóa 1 ký tự trong mật khẩu nhập vào 40

Hình 4.3: Test chức năng xóa toàn bộ ký tự trong mật khẩu nhập vào 41

Hình 4.4: Test chức năng mở cửa trực tiếp bằng nút nhấn 41

Hình 4.5: Biểu tượng của phần mềm 42

Hình 4.6: Nhấn vào Windows Zip 42

Hình 4.7: Nhấn vào Just Download để tải phần mềm 43

Hình 4.8: Giải nén file vừa tải 43

Hình 4.9: Giao diện lập trình của Arduino IDE 44

7

Trang 8

DANH SÁCH BẢNG BIỂU

Bảng 2.1: Thông số kĩ thuật Board Arduino UNO 14

Bảng 2.2: Các chân trong LCD 16x2 15

Bảng 3.1: Kết nối module với màn hình Arduino 25

Bảng 3.2: Kết nối ma trận phím với Arduino 25

Trang 10

CHƯƠNG 1: MỞ ĐẦU

1.1 Lý do chọn đề tài

1.1.1 Tầm quan trọng, vai trò của đề tài

Như chúng ta đã biết, khóa cửa là công cụ được làm ra để ngăn chặn việc mở cửa khi không được phép Nhờ lợi ích tuyệt vời của nó mà khóa cửa được dùng như một vật không thể thiếu của mỗi gia đình Tuy nhiên, mặc dù có khóa nhưng kẻ gian vẫn có thể dùng những mánh khóe để mở được khóa và xâm nhập bất hợp pháp, vì thế nên khóa cửa ngày càng được cải tiến để có thể ngăn chặn những hành động vi phạm pháp luật được thực hiện Vậy đề tài “Thiết kế mạch khóa số điện tử” mà nhóm tiến hành nghiên cứu đóng vai trò quan trọng trong việc giải quyết những vấn đề bảo mật khóa cửa gây ra, tránh việc kẻ gian xâm nhập làm tổn tại đến tài sản, tinh thần và tính mạng của người dân.

1.1.2 Tính cấp thiết của đề tài

Hiện nay, tình trạng kẻ gian xâm nhập vào nhà dân mặc dù họ đã khóa cửa xảy ra ở nhiều nơi gây hoang mang, lo sợ cho người dân, điều này thể hiện sự tinh vi của kẻ gian khi có thể phá khóa và vào trong mà không ai biết Chính vì vậy những chiếc khóa cửa với hệ thống cũ không còn an toàn để tiếp tục sử dụng, cần có nhưng khóa cửa thông minh hơn để hạn chế một cách tối đa việc phá khóa của những kẻ có ý đồ xấu Và khóa điện từ là một lựa chọn tuyệt vời để giải quyết được những vấn đề đó, nhất là khi có sự xuất hiện của Arduino vào năm 2005 tại Italia đã mở ra một hướng đi mới Arduino đã hỗ trợ cho con người rất nhiều trong việc lập trình và thiết kế, từ đó mà việc sử dụng Arduino để thiết kế một khóa điện tử sẽ giúp khóa điện từ trở nên tối ưu hơn, xử lý nhanh hơn, và đặc biết nhỏ gọi và dễ dàng sử dụng hơn Như vây, việc đưa đề tài “Thiết kế mạch khóa số điện tử” cần được nghiên cứu và triển khai ngay để kịp thời thay thế những hệ thống khóa cửa cũ nhằm tăng tính bảo mật cho khóa, khắc phục việc người xấu lợi dụng và xâm nhập khi không có sự cho phép của chủ nhà.

Trang 11

1.1.3 Những bất cập, hạn chế của hệ thống cũ

Những bất cập, hạn chế của hệ thống cũ gây ra như sau:

- Do những hệ thống khóa cửa cũ cần dùng đến chìa khóa nên có thể xảy ra hiện tượng mất hoặc quên chìa khóa.

- Việc bảo mật không cao: kẻ gian có thể dùng mánh khóe để có thể mở khóa hoặc

Thiết kế ra một khóa cửa có tính bảo mật cao, giải quyết được những mặt hạn chế của những khóa cửa cũ và thay vào đó là một khóa cửa thông minh giúp cho việc khóa và mở cửa của người dùng trở nên an toàn hơn, ngoài ra về mặt hình thức sẽ được thiết kế đơn giản, dễ hiểu để thuận lợi cho việc sử dụng của người dùng 1.2.2 Mục tiêu cụ thể

Khóa cửa sẽ được thiết lập trên Arduino thực hiện: - Việc điều khiển được chức năng khóa cửa, mở cửa - Có thể tùy chỉnh mã số theo ý muốn

- Cảnh báo khi nhập sai mã và cố gắng mở khóa khi không được phép.

- Ngoài ra giao diện sẽ gồm có màn hình hiển thị mật khẩu, các phím nhập mật khẩu và thiết lập bên trong là một chiếc còi báo, tất cả sẽ được thiết kế một cách gọn gàng và tiện ích nhất để người dùng có thể yên tâm sử dụng.

11

Trang 12

1.3 Giới hạn và phạm vi của đề tài

1.3.1 Đối tượng nghiên cứu

- Những loại khóa cửa sử dụng chìa để mở và những loại khóa điện tử.

1.4 Nội dung thực hiện

- Sử dụng phần mềm Proteus để mô phỏng các linh kiện sử dụng.

- Sử dụng phần mềm Arduino IDE để viết chương trình Complie ra file HEX và nạp vào board Arduino UNO trong phần mềm mô phỏng Proteus.

- Kiểm tra và sửa lỗi chương trình.

1.5 Phương pháp tiếp cận

Phương pháp tiếp cận thực tiễn:

- Tìm hiểu các hộ dân, nhà hàng, cửa hàng xung quanh sử dụng những loại khóa cửa nào từ đó tìm hiểu ra những hạn chế, tiếp cận mong muốn của họ về những chiếc khóa cửa.

- Liện hệ và thu thập ý kiến của các chủ cửa hàng bán khóa, nhìn nhận về các loại khóa, cách thiết kế ra sao cho hợp lý nhờ đó mà có thêm thông tin để hoàn thiện đề tài.

Phương pháp tham khảo tài liệu:

- Tìm kiếm tài liệu: sách báo, video, các trang web học tập,… có những dữ liệu về các loại khóa cửa.

Trang 13

- Tham khảo những câu lệnh, giải thuật,… ngắn gọn, hiệu quả để áp dụng cho việc lập trình trên Arduino thiết lập cho khóa số.

13

Trang 14

CHƯƠNG 2: CƠ SỞ LÝ THUYẾT VỀ HỆ THỐNG NHÚNG

2.1 Ngoại vi và giao diện

Đề tài sử dụng những linh kiện chính như sau:

- Board Arduino UNO - Khối điều khiển

- LCD 16x2 - Hiển thị

- Button - Nhấn mở cửa trực tiếp

- Keypad 4x4 – Bàn phím, chức năng

- Động cơ Servo - Điều khiển chốt cửa

- Còi chip 5V - Phát tiếng báo động 2.1.1 Board Arduino UNO - Khối điều khiển

Hình 2.1: Board Arduino UNO

Thông số kĩ thuật

Bảng 2.1: Thông số kĩ thuật Board Arduino UNO

Chip điều khiển ATmega328P Điện áp hoạt động 5V Điện áp đầu vào (khuyên dùng) 7 – 12V

Điện áp đầu vào (giới hạn) 6 – 20V

Trang 15

Số chân Digital 14 Số chân PWM Digital 6

Dòng điện DC trên mỗi chân I/O 20 mA Dòng điện DC trên chân 3.3V 50 mA

ChânKý hiệuMô tả

1 VSS Chân nối đất cho LCD, khi thiết kế mạch ta nối chân này với GND của mạch điện tử

2 VDD Chân cấp nguồn cho LCD, khi thiết kế mạch ta nói chân này với VCC=5V của mạch điều khiển

3 VEE Điều khiển độ tương phản của LCD

4 RS Chân chọn thanh ghi (Register select) Nối chân RS với logic “0” (GND) hoặc logic “1” (VCC) để chọn thanh ghi

+ Logic “0”: Bus DB0 – DB7 sẽ nối với thanh ghi lệnh IR của

15

Trang 16

LCD (ở chế độ “ghi” – write) hoặc nối với bộ đếm địa chỉ của LCD (ở chế độ “đọc” – read)

+ Logic “1”: Bus DB0 – DB7 sẽ được nối với thanh ghi dữ liệu bên trong LCD

5 R/W

Chân chọn chế độ đọc/ghi (Read/Write) Nối chân R/W với logic “0” để LCD hoạt động ở chế độ ghi, hoặc nối với logic “1” để LCD ở chế độ đọc

Chân cho phép (Enable) Sau khi các tín hiệu được đặt lên bus DB0 – DB7, các lệnh chỉ được chấp nhận khi có 1 xung cho phép của chân E

+ Ở chế độ ghi: Dữ liệu ở bus sẽ được LCD chuyển vào (chấp nhận) thanh ghi bên trong nó khi phát hiện một xung (high – to – low transition) của tín hiệu chân E

+ Ở chế độ đọc: Dữ liệu sẽ được LCD xuất ra DB0 – DB7 khi phát hiện cạnh lên (low – to – high transition) ở chân E và được LCD giữ ở bus đến khi nào chân E xuống thấp

7- 14 DB0 – DB7

Tám đường của bus dữ liệu dùng để trao đổi thông tin MPU Có 2 chế độ sử dụng 8 đường bus này:

+ Chế độ 8 bit: Dữ liệu được truyền trên cả 8 đường, với bit

Trang 18

- Các rãnh

Bộ truyền động đi qua toàn bộ công tắc và vào một xy lanh mỏng ở phía dưới Bên trong là một tiếp điểm và lo xo Khi nhấn nút, nó chạm vào các tiếp điểm tĩnh làm thay đổi trạng thái của tiếp điểm Trong một số trường hợp, người dùng cần giữ nút hoặc nhấn liên tục để thiết bị hoạt động Với các nút nhấn khác, chốt sẽ giữ nút bật cho đến khi người dùng nhấn nút lần nữa.

2.1.5 Động cơ Servo - Điều khiển chốt cửa

Hình 2.5: Động cơ Servo

Servo Motor (động cơ servo) được sử dụng phổ biến nhất cho các thiết bị công nghệ cao trong các ứng dụng công nghiệp như công nghệ như công nghệ tự động hóa Là một bộ truyền động quay hoặc tuyến tính cung cấp khả năng điều khiển vị trí chính xác nhanh chóng cho các ứng dụng điều khiển vị trí vòng kín

Được thiết kế với đường kính nhỏ và chiều dài rôt dài, tốc độ đáp ứng cao do quan tính thấp Hoạt động trên cơ chế sử dụng phản hồi vị trí roto để điều khiển tốc độ và vị trí của động cơ Động cơ servo sẽ bao gồm động cơ, mạch phản hồi, bộ điều khiển và mạch điện tử khác

Về cơ bản, servo motor được phân loại thành động cơ servo AC và DC tùy thuộc vào nguồn cung cấp.

Trang 25

- Khối ngõ ra: Sử dụng động cơ Servo để điều khiển đóng mở cửa và chuông để

cảnh báo

b) Xây dựng mạch mô phỏng*) Khối điều khiển trung tâm

- Sử dụng Boad Arduino UNO R3

*) Khối hiển thị

- Sử dụng: Chuẩn giao tiếp I2C và LCD 16x2 - Kết nối:

Kết nối với I2C: Thông thường, để sử dụng màn hình LCD, phải mất rất nhiều chân trên Arduino để điều khiển Do vậy, để đơn giản hóa công việc, người ta đã tạo ra một loại mạch điều khiển màn hình LCD sử dụng giao tiếp I2C Nói một cách đơn giản, chỉ tốn 2 dây để điều khiển màn hình, thay vì 8 dây như cách thông thường.

Kết nối với Arduino UNO:

Bảng 3.3: Kết nối module với màn hình Arduino - Kết nối với Arduino:

Bảng 3.4: Kết nối ma trận phím với Arduino

25

Trang 27

Hình 3.10: Mô phỏng hệ thống trên Proteus 3.2.2 Thiết kế phần mềm cho hệ thống

a) Giải thuật

Yêu cầu giải thuật: Ban đầu khi cấp nguồn, hiển thị LCD Nhấn phím A để bắt đầu nhập mật khẩu Nhấn các số từ 0 – 9 của Keypad để tiến hành nhập mật khẩu, các số nhập vào hiển thị trên LCD rồi chuyển thành “ * ” ngay sau đó Mạch sẽ so sánh mật khẩu nhập vào và hoạt động theo hai hướng:

- Mật khẩu nhập vào đúng: Servo hoạt động để điều khiển mở chốt cửa và thông báo lên LCD

- Mật khẩu nhập vào sai: thông báo lên LCD và tiến hành nhập lại mật khẩu Nếu nhập sai mật khẩu 4 lần liên tiếp, mạch sẽ khóa chức năng nhập mật khẩu và bật còi để phát cảnh báo.

27

Trang 28

Hình 3.11: Lưu đồ thuật toán chính của chương trình

b) Chương trình

#include <Servo.h> // Khai báo thư viện sử dụng cho động cơ #include <LiquidCrystal_I2C.h> // Khai báo thư viện LCD sử dụng I2C LiquidCrystal_I2C lcd(0x3f, 16, 2); // 0x3f địa chỉ LCD, 16 cột và 2 hàng #include <Keypad.h> // Khai báo thư viện Keypad

Trang 29

Khai báo các thư viện sử dụng, sau dòng khai báo thư viện I2C phải khai báo loại LCD sử dụng với địa chỉ của LCD và số cột số hàng, ở đây là LCD 16 cột 2 hàng.

const byte ROWS = 4; // Bốn hàng const byte COLS = 4; // bốn cột

Khai báo loại Keypad sử dụng số hàng với số cột là 4, chuỗi ma trận mã ký tự cho Keypad lúc đó ứng với vị mã phím sẽ lấy ra ký tự trong chuỗi Khai báo các chân kết nối cho Keypad theo hàng và cột Dòng cuối là khai báo tên cho động cơ Servo sử dụng.

char STR[4] = {'2', '0', '2', '2'}; // Cài đặt mật khẩu tùy ý char str[4] = {' ', ' ', ' ', ' '};

int i, count = 0, cb = 0;

Tạo mảng để lưu mật khẩu chính và mật khẩu nhập vào từ Keypad, có thể tùy ý đặt mật khẩu chính Khai báo các biến sử dụng trong chương trình Kiểu int là kiểu số nguyên chính được dùng trong chương trình Arduino, kiểu int chiếm 2byte bộ nhớ và với Arduino Uno nó có giá trị 16bit.

void setup() {

myServo.attach(10); // Khai báo chân điều khiển động cơ pinMode(11,OUTPUT); // Chân kết nối với còi chíp là Output

29

Trang 30

pinMode(BUTTON,INPUT); // Chân kết nối với button là Input lcd.init(); // Khai báo sử dụng LCD

lcd.begin(16, 2); // Cấu hình 16 cột 2 hàng lcd.backlight(); /// Sáng màn hình lcd.clear(); // Xóa màn hình

lcd.print(" Enter Password"); //Hiển thị: Hãy nhập mật khẩu

i=1; //Biến đánh dấu đc phép nhập mật khẩu hay không: 0 không được, >0 -được

myServo.write(0); // Đưa động cơ quay về góc 0 }

Chương trình điều khiểu Ở đây ta khai báo chân điều khiển cho Servo là chân số 10, ngõ ra chân 11 để điều khiển còi Buzzer Khai báo sử dụng LCD, màu nền, xóa màn hình và hiển thị dòng chữ “Enter Password” lên LCD.

int ktBUTTON(){

return digitalRead(BUTTON); //Trả ra trạng thái nút nhấn: 0 - nhấn, 1 - nhả }

Hàm trả về trạng thái nút nhấn Trạng thái = 0: Nút đang được nhấn Trạng thái = 1: Nút đang được nhả.

void Open(char key){

// Điều kiện và các giá trị không tính khi nhập mật khẩu

if (key && i>0 && key != '*' && key != 'C' && key != 'D' && key != 'B') {

//Lần lượt nhập từng chữ số

Trang 31

if (i == 1) {

str[0] = key; // Giá trị lấy từ nút mà mình nhấn lcd.setCursor(6, 1); //Đưa con trỏ vào vị trị cột 6 dòng 2 lcd.print(str[0]); //In giá trị vừa nhấ

delay(200); // Ký tự hiển thị trên màn hình LCD trong 0.2s lcd.setCursor(6, 1);// Sau đó thay thế lại bằng kí tự * lcd.print("*"); // Ký tự được che bởi dấu *

Trang 33

Hàm nhập mật khẩu để mở cửa Ta dùng lệnh If để kiểm tra điều kiện, khi có phím nhấn với biến i>0 hay thì cho phép nhập mật khẩu Mật khẩu có 4 số tương ứng với i=1,2,3,4 Với mỗi i có một cấu trúc If thực hiện nhập mật khẩu, ví dụ i=1, mã phím Keypad sẽ được lưu vào vị trí “0” của mảng str[ ], và in giá trị mã phím ra lên LCD ở vị trí cột thứ 7 hàng thứ 2,sau khoảng thời gian một giây chuyển thành “*” để bảo vệ tính bảo mật cho mật khẩu Sau mỗi lần nhấn phím biến i sẽ tăng lên một đơn vị (i++) để chuyển qua lệnh If tiếp theo, tại cấu trúc If với i=4 sau khi nhập xong mật khẩu biến count sẽ bằng 1 để cho phép thực hiện chương trình kiểm tra

//So sánh chuỗi nhập vào với chuỗi mặc định //Nếu đúng thì mở cửa, sai thì cảnh báo

33

Ngày đăng: 15/04/2024, 18:59

Tài liệu cùng người dùng

Tài liệu liên quan