1. Trang chủ
  2. » Luận Văn - Báo Cáo

Quản lý và cảnh báo thông tin sinh viên bằng máy quét vân tay

89 79 1

Đ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

Cấu trúc

  • TÓM TẮT

  • CHƯƠNG 1: TỔNG QUAN

    • 1.1. Đặt vấn đề

    • 1.2. Mục tiêu

    • 1.3. Nội dung thực hiện

    • 1.4. Bố cục

  • CHƯƠNG 2: CƠ SỞ LÝ THUYẾT

    • 2.1. TỔNG QUAN VỀ ARDUINO

      • 2.1.1. Giới thiệu

      • 2.1.2. Phần cứng

    • 2.2. NHẬN DẠNG VÂN TAY

      • 2.2.1. Giới thiệu sơ lược về dấu vân tay và nhận dạng vân tay

      • 2.2.2. Việc ứng dụng công nghệ nhận dạng vân tay hiện nay

      • 2.2.3. Nguyên lý hoạt động cơ bản của nhận dạng vân tay

      • 2.2.4. Các bước xử lý trong quá trình nhận dạng vân tay

    • 2.3. GIỚI THIỆU VỀ PHẦN CỨNG

      • 2.3.1. Arduino Mega 2560

      • 2.3.2. Module cảm biến vân tay R307 (Finger print R307)

      • 2.3.3. Bàn phím ma trận 3x4 (Keypad 3x4)

      • 2.3.4. Màn hình LCD 1602

      • 2.3.5. Mạch chuyển giao tiếp LCD 1602

      • 2.3.6. Module ESP 8266 MCU V3

      • 2.3.7. Mạch hạ áp LM2596

  • CHƯƠNG 3: TÍNH TOÁN VÀ THIẾT KẾ

    • 3.1. GIỚI THIỆU

    • 3.2. TÍNH TOÁN VÀ THIẾT KẾ HỆ THỐNG

      • 3.2.1. Thiết kế sơ đồ khối hệ thống

      • 3.2.2. Tính toán và thiết kế mạch

      • 3.2.3. Sơ đồ nguyên lý toàn mạch

  • CHƯƠNG 4: THI CÔNG HỆ THỐNG

    • 4.1. ĐÓNG GÓI VÀ THI CÔNG MÔ HÌNH

      • 4.1.1. Đóng gói bộ điều khiển

      • 4.1.2. Thi công mô hình

    • 4.2. LẬP TRÌNH HỆ THỐNG

      • 4.2.1. Lưu đồ giải thuật

      • 4.2.2. Phần mềm lập trình cho vi điều khiển

      • 4.2.3. Phần mềm Exel

    • 4.3. VIẾT TÀI LIỆU HƯỚNG DẪN SỬ DỤNG, THAO TÁC

  • CHƯƠNG 5: KẾT QUẢ, NHẬN XÉT, ĐÁNH GIÁ

    • 5.1. KẾT QUẢ

    • 5.2. Nhận xét và đánh giá

  • CHƯƠNG 6: KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN

    • 6.1. Kết luận

    • 6.2. HƯỚNG PHÁT TRIỂN

  • TÀI LIỆU THAM KHẢO

  • PHỤ LỤC

Nội dung

MỤC LỤC TÓM TẮT 12 CHƯƠNG 1: TỔNG QUAN 13 1.1. Đặt vấn đề 13 1.2. Mục tiêu 14 1.3. Nội dung thực hiện 14 1.4. Bố cục 15 CHƯƠNG 2: CƠ SỞ LÝ THUYẾT 16 2.1. TỔNG QUAN VỀ ARDUINO 16 2.1.1. Giới thiệu 16 2.1.2. Phần cứng 17 2.2. NHẬN DẠNG VÂN TAY 17 2.2.1. Giới thiệu sơ lược về dấu vân tay và nhận dạng vân tay 17 2.2.2. Việc ứng dụng công nghệ nhận dạng vân tay hiện nay 18 2.2.3. Nguyên lý hoạt động cơ bản của nhận dạng vân tay 18 2.2.4. Các bước xử lý trong quá trình nhận dạng vân tay 19 2.3. GIỚI THIỆU VỀ PHẦN CỨNG 21 2.3.1. Arduino Mega 2560 21 2.3.2. Module cảm biến vân tay R307 (Finger print R307) 24 2.3.3. Bàn phím ma trận 3x4 (Keypad 3x4) 32 2.3.4. Màn hình LCD 1602 34 2.3.5. Mạch chuyển giao tiếp LCD 1602 35 2.3.6. Module ESP 8266 MCU V3 36 2.3.7. Mạch hạ áp LM2596 41 CHƯƠNG 3: TÍNH TOÁN VÀ THIẾT KẾ 43 3.1. GIỚI THIỆU 43 3.2. TÍNH TOÁN VÀ THIẾT KẾ HỆ THỐNG 43 3.2.1. Thiết kế sơ đồ khối hệ thống 43 3.2.2. Tính toán và thiết kế mạch 44 3.2.3. Sơ đồ nguyên lý toàn mạch 48 CHƯƠNG 4: THI CÔNG HỆ THỐNG 50 4.1. ĐÓNG GÓI VÀ THI CÔNG MÔ HÌNH 50 4.1.1. Đóng gói bộ điều khiển 50 4.1.2. Thi công mô hình 50 4.2. LẬP TRÌNH HỆ THỐNG 51 4.2.1. Lưu đồ giải thuật 51 4.2.2. Phần mềm lập trình cho vi điều khiển 57 4.2.3. Phần mềm Exel 61 4.3. VIẾT TÀI LIỆU HƯỚNG DẪN SỬ DỤNG, THAO TÁC 61 CHƯƠNG 5: KẾT QUẢ, NHẬN XÉT, ĐÁNH GIÁ 63 5.1. KẾT QUẢ 63 5.2. Nhận xét và đánh giá 67 CHƯƠNG 6: KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 69 6.1. Kết luận 69 6.2. HƯỚNG PHÁT TRIỂN 70 TÀI LIỆU THAM KHẢO 71 PHỤ LỤC 72   DANH SÁCH CÁC HÌNH Hình 2.1: Các loại Arduino 16 Hình 2.2: Sơ đồ quá trình xử lý ảnh 19 Hình 2.3: Sơ đồ quá trình so sánh vân tay 20 Hình 2.4: Sơ đồ các chân kết nối trên Arduino Mega 2560 22 Hình 2.5: Mạch Arduino Mega 23 Hình 2.6: Module cảm biến vân tay R305 25 Hình 2.7: Giao thức truyền thông của R307 28 Hình 2.8: Định dạng gói dữ liệu 30 Hình 2.91: Sơ đồ nối dây và hình ảnh thực tế của bàn phím ma trận 3x4 32 Hình 2.10: Màn hình LCD 1602 và các chân kết nốt 34 Hình 2.11: Mạch chuyển giao tiếp LCD 1602 35 Hình 2.12: Sơ đồ các chân kết nối của Module ESP 8266 37 Hình 2.13: Mạch hạ áp LM2596 41 Hình 2.14: Sơ đồ chân kết nối của mạch hạ áp LM2596 41 Hình 3.1: Sơ đồ khối hệ thống 43 Hình 3.2: Khối xử lý trung tâm sử dụng board Arduino Mega 2560 44 Hình 3.3: Sơ đồ nguyên lý Cảm biến vân tay kết nối Arduino Mega 46 Hình 3.4: LCD 12x6 46 Hình 3.5: Mạch chuyển giao tiếp LCD sang I2C 47 Hình 3.6: Hình ảnh thực tế của Adapter 12V 3A 47 Hình 3.7: Module hạ áp LM2596 48 Hình 3.8: Sơ đồ chuyên lý toàn mạch 49 Hình 4.1: Sơ đồ bố trí linh kiện mặt trước mô hình 50 Hình 4.2: Hình dạng bên ngoài mô hình 50 Hình 4.3: Hình dạng bên trong mô hình 51 Hình 4.4: Lưu đồ menu 52 Hình 4.5: Lưu đồ quét vân tay 54 Hình 4.6: Lưu đồ truyền dữ liệu lên wed 55 Hình 4.7: Lưu đồ quản trị 56 Hình 4.8: Giao diện lập trình arduino 57 Hình 4.9: Arduino Toolbar 57 Hình 4.10: Giao diện Web 60 Hình 4.11: Excel 61 Hình 5.1: Phần check vân tay 64 Hình 5.2: Phần thêm vân tay và xóa vân tay 64 Hình 5.3: Phần quản lí Admin 64 Hình 5.4: Đưa ngón tay vào cảm biến 65 Hình 5.5: Hệ thống xác nhận vân tay 65 Hình 5.6: Phần thêm vân tay và xóa vân tay 65 Hình 5.7: Phần nhập mật mã 65 Hình 5.8: Phần thêm vân tay 66 Hình 5.9: Thao tác thêm vân tay 66 Hình 5.10: Phần xóa vân tay 66 Hình 5.11: Phần hiển thị thông tin quét vân tay trên wed server 66 Hình 5.12: Hệ thống cảnh báo sinh viên 67 DANH SÁCH CÁC BẢNG Bảng 2.1: Các chân kết nối của Module R307 27 Bảng 2.2: Định dạng gói dữ liệu 31 Bảng 2.3: Bảng thông tin các chân kết nối của Module ESP 8266 38 Bảng 2.4: Bảng thông tin chân kết nối của mạch hạ áp LM2596 42   TÓM TẮT Ngày nay, với sự phát triển vượt bậc của khoa học công nghệ, kéo theo các công nghệ nhận dạng sinh trắc học phát triển. Do tính bảo mật cũng như giá thành không quá đắt nên công nghệ nhận dạng vân tay được được sử dụng rộng rãi trong đời sống. Công nghệ nhận dạng vân tay được tích hợp trong nhiều thiết bị điện tử mang lại những ứng dụng cần thiết cho nhu cầu của con người. Những ứng dụng hiện hữu của công nghệ nhận dạng vân tay như quét vân tay để đóng mở cửa, quản lí số lượng cá nhân ra vào hay điểm danh chấm công trong một công ty, bệnh viện hay trường học,… Được sự gợi ý từ giáo viên hướng dẫn cũng như mong muốn tìm hiểu các công nghệ đang phát triển trên thế giới. Nên nhóm thực hiện đồ án này với mong muốn chế tạo ra một hệ thống giám sát và cảnh báo thời gian ra vào lớp học của sinh viên thông qua việc quét vân tay. Hệ thống quét vân tay sử dụng kit Arduino được giám sát và cảnh báo bằng máy tính qua Internet bao gồm: Quá trình quét vân tay sẽ được gửi lên Internet nhằm thống kê thời gian ra vào lớp học, số lần đi trễ, số ngày vắng, thông tin sinh viên, giảng viên… Hệ thống cho phép thêm vân tay hay xóa vân tay người dung, đổi mật khẩu,… Hệ thống sẽ gửi cảnh báo về mail của người dùng về thời gian ra vào cũng như số ngày trễ, vắng thông qua ứng dụng Exel. Mô hình sử dụng kit Arduino Mega làm vi điều khiển trung tâm để điều khiển các module mở rộng như cảm biến vân tay R307, Module ESP8266, ma trận phím,… Người dùng dễ dàng tương tác sử dụng thông qua cảm biến vân tay, ma trận phím. Giám sát và cảnh báo người dùng thông qua mạng Internet.

BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC NÔNG LÂM TP.HỒ CHÍ MINH KHOA CƠ KHÍ VÀ CƠNG NGHỆ TIỂU LUẬN TỐT NGHIỆP ĐỀ TÀI: QUẢN LÝ VÀ CẢNH BÁO THÔNG TIN SINH VIÊN BẰNG MÁY QUÉT VÂN TAY GVHD: NGUYỄN ĐĂNG KHOA TP.HỒ CHÍ MINH-5/2021 BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC NƠNG LÂM TP.HỒ CHÍ MINH KHOA CƠ KHÍ VÀ CƠNG NGHỆ TIỂU LUẬN TỐT NGHIỆP NGÀNH CÔNG NGHỆ KĨ THUẬT CƠ ĐIỆN TỬ ĐỀ TÀI: QUẢN LÝ VÀ CẢNH BÁO THÔNG TIN SINH VIÊN BẰNG MÁY QUÉT VÂN TAY GVHD: NGUYỄN ĐĂNG KHOA TP.HỒ CHÍ MINH-5/2021 TRƯỜNG ĐẠI HỌC NƠNG LÂM TP.HỒ CHÍ MINH CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM KHOA CƠ KHÍ VÀ CƠNG NGHỆ ĐỘC LẬP-TỰ DO- HẠNH PHÚC Tp.Hồ Chí Minh, ngày 11 tháng năm 2021 NHIỆM VỤ TIỂU LUẬN TỐT NGHIỆP Họ tên sinh viên: Chuyên ngành: Công nghệ kĩ thuật điện tử Hệ đào tạo: Chính quy Khóa :2017 Lớp: DH17CD I TÊN ĐỀ TÀI: QUẢN LÝ VÀ CẢNH BÁO THÔNG TIN SINH VIÊN BẰNG MÁY QUÉT VÂN TAY II NHIỆM VỤ: - Tìm hiểu nghiên cứu cấu tạo, nguyên lý hoạt động, chức module Arduino, cảm biến vân tay R307, Module ESP8266 Mode MCU V3, mạch hạ áp LM2965 , ma trận phím - Tìm hiểu nghiên cứu cách lập trình Web Server, Exel , tìm hiểu ngơn ngữ HTML, CSS, PHP, sở liệu MySQL để tạo nên trang Web hoàn chỉnh - Cách thiết kế thi công mô hình hồn thiện - Thiết kế hệ thống điều khiển, lưu đồ giải thuật chương trình điều khiển mơ hình - Thiết kế hồn thiện mơ hình thực tế - Chạy thử nghiệm mơ hình hệ thống - Cân chỉnh mơ hình hệ thống - Viết sách luận văn - Bảo vệ tiểu luận tốt nghiệp tốt nghiệp III NGÀY GIAO NHIỆM VỤ: IV NGÀY HOÀN THÀNH NHIỆM VỤ: V HỌ VÀ TÊN CÁN BỘ HƯỚNG DẪN: NGUYỄN ĐĂNG KHOA CÁN BỘ HƯỚNG DẪN TRƯỜNG ĐẠI HỌC NÔNG LÂM TP.HỒ CHÍ MINH CỘNG HỊA XÃ HỘI CHỦ NGHĨA VIỆT NAM KHOA CƠ KHÍ VÀ CƠNG NGHỆ ĐỘC LẬP-TỰ DO- HẠNH PHÚC Tp.Hồ Chí Minh, ngày 11 tháng năm 2021 LỊCH TRÌNH THỰC HIỆN ĐỒ ÁN TỐT NGHIỆP Họ tên sinh viên:…………………………………………………………………… Lớp: …………………………………………… MSVV: ………………………… Tên đề tài: ………………………………………………………………………………………… ………………………………………………………………………………………… Tuần/ngày Nội dung Xác nhận GVHD GV HƯỚNG DẪN (Ký ghi rỏ họ tên ) LỜI CAM ĐOAN Đề tài sinh viên Nguyễn Hùng Duy tự thực hiện, dựa vào số tài liệu trước khơng chép từ tài liệu hay cơng trình có trước Người thực đề tài LỜI CẢM ƠN Sau trình tìm hiểu, nghiên cứu thực đề tài đồ án tốt nghiệp hoàn thành tiến độ, chúng em xin chân thành gửi lời cảm ơn sâu sắc đến q thầy cơ, gia đình người anh, người bạn giúp đỡ, đưa lời khuyên, lời động viên lúc khó khăn Chúng em xin gửi lời cảm ơn đến thầy Nguyễn Đăng Khoa, giảng viên trường Đại Học Nơng Lâm TP.Hồ Chí Minh hướng dẫn tạo điều kiện điều kiện để nhóm thực tốt đề tài Và chúng em xin gửi lời tri ân đến thầy cô khoa Điện tử-Công nghệ Đại Học Nông Lâm TP.Hồ Chí Minh tận tình dạy dỗ giảng dạy cho chúng em kiến thức đến nâng cao tạo cho chúng em sở kiến thức vững vàng để hồn thành đề tài Gia đình nguồn động lực nguồn cảm hứng để chúng em liên tục phấn đấu hoàn thành đề tài, xin cảm ơn đấng sinh thành động viên chúng em lúc bế tắc chán nản Và cuối chúng em xin cảm ơn anh, chị trước bạn bè có lời khuyên, lời góp ý chân thành để đề tài chúng em hồn thiện Một lần nữa, chúng em xin cảm ơn tất người bên cạnh giúp đỡ chúng em, tạo động lực để chúng em hoàn thành tốt đề tài Xin chân thành cảm ơn MỤC LỤC DANH SÁCH CÁC HÌNH DANH SÁCH CÁC BẢNG TÓM TẮT Ngày nay, với phát triển vượt bậc khoa học công nghệ, kéo theo công nghệ nhận dạng sinh trắc học phát triển Do tính bảo mật giá thành khơng q đắt nên công nghệ nhận dạng vân tay được sử dụng rộng rãi đời sống Công nghệ nhận dạng vân tay tích hợp nhiều thiết bị điện tử mang lại ứng dụng cần thiết cho nhu cầu người Những ứng dụng hữu công nghệ nhận dạng vân tay quét vân tay để đóng mở cửa, quản lí số lượng cá nhân vào hay điểm danh chấm công công ty, bệnh viện hay trường học,… Được gợi ý từ giáo viên hướng dẫn mong muốn tìm hiểu công nghệ phát triển giới Nên nhóm thực đồ án với mong muốn chế tạo hệ thống giám sát cảnh báo thời gian vào lớp học sinh viên thông qua việc quét vân tay Hệ thống quét vân tay sử dụng kit Arduino giám sát cảnh báo máy tính qua Internet bao gồm: Q trình quét vân tay gửi lên Internet nhằm thống kê thời gian vào lớp học, số lần trễ, số ngày vắng, thông tin sinh viên, giảng viên… Hệ thống cho phép thêm vân tay hay xóa vân tay người dung, đổi mật khẩu,… Hệ thống gửi cảnh báo mail người dùng thời gian vào số ngày trễ, vắng thông qua ứng dụng Exel Mơ hình sử dụng kit Arduino Mega làm vi điều khiển trung tâm để điều khiển module mở rộng cảm biến vân tay R307, Module ESP8266, ma trận phím,… Người dùng dễ dàng tương tác sử dụng thông qua cảm biến vân tay, ma trận phím Giám sát cảnh báo người dùng thơng qua mạng Internet CHƯƠNG 1: TỔNG QUAN CHƯƠNG 1: TỔNG QUAN 1.1 Đặt vấn đề Trong thời đại ngày nay, phát triển không ngừng khoa học kỹ thuật giúp cho người thuận tiện công việc ngày Với bùng nổ công nghệ thơng tin, q trình tồn cầu hóa diễn nhanh chóng, bảo mật riêng tư thơng tin cá nhân để nhận biết người hàng tỉ người trái đất đòi hỏi phải có tiêu chuẩn, hệ thống đảm nhận chức Cơng nghệ sinh trắc đời đáp ứng yêu cầu Nhiều công nghệ sinh trắc phát triển, số chúng sử dụng ứng dụng thực tế phát huy hiệu cao Các đặc trưng sinh trắc thường sử dụng vân tay, gương mặt, mống mắt, tiếng nói Mỗi đặc trưng sinh trắc có điểm mạnh điểm yếu riêng, nên việc sử dụng đặc trưng sinh trắc cụ thể tùy thuộc vào yêu cầu ứng dụng định Nhận dạng vân tay xem kỹ thuật nhận dạng hoàn thiện đáng tin cậy Với việc kế thừa phát triển từ đề tài trước “Thiết kế thi cơng hệ thống đóng mở cửa vân tay sử dụng kit Arduino giám sát máy tính thơng qua Internet”., nhóm sinh viên định thực mở rộng thêm với tên đề tài “QUẢN LÝ VÀ CẢNH BÁO SINH VIÊN THÔNG QUA HỆ THỐNG QT VÂN TAY” nhằm mục đích kiểm sốt tốt việc quản lý sinh viên trường học thông báo, cảnh báo cho sinh viên biết số lần vi phạm sinh viên trình tham gia hoạt động học tập lớp Dấu vân tay cá nhân độc không thay đổi suốt đời Vân tay tham số sinh học bất biến theo tuổi tác đặc trưng cho cá thể Mạng Internet ngày phát triển, nhờ có mà sống công việc người ngày đại Vì vậy, việc truyền liệu lên mạng quản lý liệu vân tay Internet trở nên tiện lợi, nhanh chóng xác Mặt khác, việc phát triển không ngừng vi xử lý cho đời nhiều loại sản phẩm thông minh nhỏ gọn, tích hợp nhiều cho người dùng dễ sử dụng Không thể không kể đến kit Arduino, sản phẩm sử dụng tồn cầu có cộng đồng người dùng lớn Kit Arduino kết hợp với nhiều module 10 PHỤ LỤC Status = EEPROM.read(STARTINDEXDATA); if (Status == 0xFF) ResetDataRecordArray(); // empty EEPROM else { for (Index = 0; Index < MAXDATANUMBER; Index++) { DataRecordArray[Index] = EEPROM.read(STARTINDEXDATA + Index); } } } byte ScanKeyboard(void) { digitalWrite(Keycol1, HIGH); digitalWrite(Keycol2, HIGH); digitalWrite(Keycol3, HIGH); digitalWrite(Keycol1, LOW); if (!digitalRead(KeyrowA)) { while (!digitalRead(KeyrowA)); delay(10); return KEY1; } if (!digitalRead(KeyrowB)) { while (!digitalRead(KeyrowB)); delay(10); return KEY4; } if (!digitalRead(KeyrowC)) { while (!digitalRead(KeyrowC)); delay(10); return KEY7; } if (!digitalRead(KeyrowD)) { while (!digitalRead(KeyrowD)); delay(10); return KEYSTAR; } digitalWrite(Keycol1, HIGH); digitalWrite(Keycol2, LOW); if (!digitalRead(KeyrowA)) { while (!digitalRead(KeyrowA)); delay(10); return KEY2; } if (!digitalRead(KeyrowB)) { while (!digitalRead(KeyrowB)); delay(10); return KEY5; 75 PHỤ LỤC } if (!digitalRead(KeyrowC)) { while (!digitalRead(KeyrowC)); delay(10); return KEY8; } if (!digitalRead(KeyrowD)) { while (!digitalRead(KeyrowD)); delay(10); return KEY0; } digitalWrite(Keycol2, HIGH); digitalWrite(Keycol3, LOW); if (!digitalRead(KeyrowA)) { while (!digitalRead(KeyrowA)); delay(10); return KEY3; } if (!digitalRead(KeyrowB)) { while (!digitalRead(KeyrowB)); delay(10); return KEY6; } if (!digitalRead(KeyrowC)) { while (!digitalRead(KeyrowC)); delay(10); return KEY9; } if (!digitalRead(KeyrowD)) { while (!digitalRead(KeyrowD)); delay(10); return KEYHASH; } digitalWrite(Keycol3, HIGH); return NOKEY; } void ResetDataRecordArray() { byte Index; for (Index = 0; Index < MAXDATANUMBER; Index++) { DataRecordArray[Index] = 0; WriteIndextoEEPROM(Index, 0); SaveInforToEEPROM(Index + 1, ""); } } 76 PHỤ LỤC byte CheckNextIDAvailable() { byte Index; for (Index = 0; Index < MAXDATANUMBER; Index++) { if (DataRecordArray[Index] == 0) return Index + 1; } return MAXDATANUMBER + 1; // no record found; } byte CheckNextIDInUse(byte StartID) { byte Index; for (Index = StartID; Index < MAXDATANUMBER; Index++) { if (DataRecordArray[Index] == 1) return Index + 1; } return MAXDATANUMBER + 1; // no record found; } byte DeleteIDArray(byte ID) { DataRecordArray[ID - 1] = 0; WriteIndextoEEPROM(ID, 0); } byte AddIDArray(byte ID) { DataRecordArray[ID - 1] = 1; WriteIndextoEEPROM(ID, 1); } byte SetupNewFingerPrint(byte IDSave) { byte Result; Result = getFingerprintEnroll(IDSave); switch (Result) { case true: { MyLCD.setCursor(0, 1); MyLCD.print("DA LUU VAN TAY! "); break; } case FINGERPRINT_ENROLLMISMATCH: { MyLCD.setCursor(0, 1); MyLCD.print("2 VAN TAY KHAC "); break; } case 255: { return 255; break; } default: { MyLCD.setCursor(0, 1); 77 PHỤ LỤC MyLCD.print("CO LOI XAY RA! "); } } delay(1000); return Result; } int CheckFingerPrint() { int CheckID; CheckID = getFingerprintID(); if (CheckID != -1) { if (CheckID == 0) { MyLCD.setCursor(0, 1); MyLCD.print("VT KHONG KHOP! "); delay(1000); DisplayMain(); } else { return CheckID; } } else { if (IncheckFingerPrint == true) { IncheckFingerPrint = false; } } return 1500; } void DeleteFingerPrint(byte ID) { byte Result; Result = deleteFingerprint(ID); if (Result == FINGERPRINT_OK) { MyLCD.setCursor(0, 1); MyLCD.print("DA XOA VAN TAY "); } else { MyLCD.setCursor(0, 1); MyLCD.print("CO LOI XAY RA! "); } } void DeleteAllFinger() { MyLCD.setCursor(0, 1); MyLCD.print("DANG XOA "); finger.emptyDatabase(); ResetDataRecordArray(); MyLCD.setCursor(0, 1); MyLCD.print("DA XOA HET DATA "); } 78 PHỤ LỤC void DisplayMenu1() { MyLCD.clear(); MyLCD.setCursor(0, 0); MyLCD.print("1: THEM VAN TAY"); MyLCD.setCursor(0, 1); MyLCD.print("2: XOA VAN TAY"); } void DisplayMenu2() { MyLCD.clear(); MyLCD.setCursor(0, 0); MyLCD.print("1:DOI PASS ADMIN"); MyLCD.setCursor(0, 1); MyLCD.print("2:XOA HET DULIEU"); } void DisplayMain() { MyLCD.clear(); MyLCD.noBlink(); MyLCD.noCursor(); MyLCD.setCursor(0, 0); MyLCD.print("HT DIEM DANH VT"); MyLCD.setCursor(0, 1); MyLCD.print("BAM # CAI DAT"); } void ActionFunction(byte State) { MyLCD.clear(); byte Result; switch (State) { case STACHANGEPASS: { MyLCD.setCursor(3, 0); MyLCD.print("NHAP MA MOI"); MyLCD.setCursor(3, 1); CurrentPassIndex = 0; break; } case STAADDFINGER: { MyLCD.setCursor(0, 0); MyLCD.print("THEM VAN TAY"); delay(100); IDToSave = CheckNextIDAvailable(); Result = SetupNewFingerPrint(IDToSave); while (Result != true && Result != 255) { Result = SetupNewFingerPrint(IDToSave); } 79 PHỤ LỤC if (Result == true) { CurrentState = STAINPUTNAME; DisplayInputName(); } else { CurrentState = STAMAIN; DisplayMain(); } break; } case STADELETEFINGER: { MyLCD.setCursor(0, 0); MyLCD.print("XOA VAN TAY"); CurrentID = 0; CurrentID = CheckNextIDInUse(CurrentID); if (CurrentID == MAXDATANUMBER + 1) { MyLCD.setCursor(0, 1); MyLCD.print("KHONG CO DU LIEU"); } else { DisplayInformation(CurrentID); } break; } case STADELETEALLFINGER: { MyLCD.setCursor(0, 0); MyLCD.print("XOA HET DU LIEU"); MyLCD.setCursor(0, 1); MyLCD.print("*:HUY #:XAC NHAN"); break; } } } void DisPlayCheckPass() { MyLCD.clear(); MyLCD.setCursor(3, 0); MyLCD.print("NHAP MAT MA:"); MyLCD.setCursor(3, 1); CurrentPassIndex = 0; CurrentPass[0] = 0; CurrentPass[1] = 0; CurrentPass[2] = 0; CurrentPass[3] = 0; CurrentPass[4] = 0; CurrentPass[5] = 0; } bool VerifyPass() { 80 PHỤ LỤC char i; for (i = 0; i < 6; i++) { if (CurrentPass[i] != PassWord[i]) return false; } return true; } void DisplayInputName() { NameData = ""; PressCount = 0; NameLengh = 0; CurrentCharacter = ' '; MyLCD.clear(); MyLCD.setCursor(5, 0); MyLCD.print("NHAP TEN"); MyLCD.setCursor(NameLengh, 1); MyLCD.blink(); MyLCD.cursor(); } void InputCharacter(byte Key) { if (Key != LastKey) { PressCount = 0; CurrentCharacter = Key + 48; // convert to ascii number LastKey = Key; } else { PressCount++; if (Key == KEY0) { if (PressCount == 1) { CurrentCharacter = 32; //space } else { CurrentCharacter = Key + 48; // convert to ascii PressCount = 0; } } else { if (Key == KEY9) { if (PressCount == 3) PressCount = 0; } else { if (PressCount == 4) PressCount = 0; } if (PressCount == 0) { CurrentCharacter = Key + 48; } else { CurrentCharacter = 65 + (Key - 1) * + PressCount - 1; // to Ascii character } 81 PHỤ LỤC } } MyLCD.write(CurrentCharacter); MyLCD.setCursor(NameLengh, 1); } void NextCharacter() { if (NameLengh < 16) // only 16 character for name { NameData += CurrentCharacter; NameLengh++; MyLCD.setCursor(NameLengh, 1); } } void SaveNewFinger() { SaveInforToEEPROM(IDToSave, NameData); AddIDArray(IDToSave); MyLCD.setCursor(0, 1); MyLCD.print("DA LUU DU LIEU "); delay(500); CurrentState = STAMAIN; DisplayMain(); } void DisplayInformation(byte ID) { String Name; Name = GetInforFromEEPROM(ID); MyLCD.setCursor(0, 1); MyLCD.print(" "); MyLCD.setCursor(0, 1); MyLCD.print(Name); } void DisplayNextIDInfo() { CurrentID = CheckNextIDInUse(CurrentID); if (CurrentID == MAXDATANUMBER + 1) { MyLCD.setCursor(0, 1); MyLCD.print("DA HET DU LIEU "); } else { DisplayInformation(CurrentID); } } void DeleteIDInfor() { DeleteIDArray(CurrentID); DeleteFingerPrint(CurrentID); SaveInforToEEPROM(CurrentID, ""); 82 PHỤ LỤC MyLCD.setCursor(0, 1); MyLCD.print("DA XOA THONG TIN"); delay(1000); ActionFunction(CurrentState); } void setup() { pinMode(Keycol1, OUTPUT); pinMode(Keycol2, OUTPUT); pinMode(Keycol3, OUTPUT); pinMode(KeyrowA, INPUT_PULLUP); pinMode(KeyrowB, INPUT_PULLUP); pinMode(KeyrowC, INPUT_PULLUP); pinMode(KeyrowD, INPUT_PULLUP); Serial.begin(9600); ESPSerial.begin(9600); delay(100); Serial.println("\n\nAdafruit Fingerprint sensor enrollment"); // set the data rate for the sensor serial port finger.begin(57600); MyLCD.init(); MyLCD.backlight(); MyLCD.setCursor(0, 0); MyLCD.print(" HT DIEM DANH "); MyLCD.setCursor(0, 1); MyLCD.print(" VAN TAY "); //InitFingerPrint(); ReadIndexDatafromEEPROM(); delay(1000); GetPasswordFromEEPROM(); DisplayMain(); CurrentState = STAMAIN; } void loop() // run over and over again { byte KeyCode; int FoundID; if (CurrentState == STAMAIN) { FoundID = CheckFingerPrint(); if (FoundID != 1500) { MyLCD.setCursor(0, 0); MyLCD.print(" DA XAC NHAN "); DisplayInformation((byte) FoundID); ESPSerial.write(0xFE); delay(1); ESPSerial.print(GetInforFromEEPROM(FoundID)); delay(1); 83 PHỤ LỤC ESPSerial.write(0xFD); delay(1000); DisplayMain(); } if (ESPSerial.available()) { ReceiveESPData = ESPSerial.readString(); MyLCD.setCursor(0, 1); MyLCD.print(" "); MyLCD.setCursor(0, 1); MyLCD.print(ReceiveESPData); delay(3000); DisplayMain(); } } KeyCode = ScanKeyboard(); if (KeyCode != NOKEY) { switch (CurrentState) { case STAMAIN: { if (KeyCode == KEYHASH) { CurrentState = STAMENU1; DisplayMenu1(); } else if (KeyCode == KEYSTAR) { MyLCD.setCursor(0, 1); MyLCD.print(" "); MyLCD.setCursor(0, 1); MyLCD.print(ReceiveESPData); // display IP again delay(3000); DisplayMain(); } break; } case STAMENU1: { if (KeyCode == KEYSTAR) { CurrentState = STAMAIN; DisplayMain(); } else if (KeyCode == KEYHASH) { CurrentState = STAMENU2; DisplayMenu2(); } else if (KeyCode == KEY1) { CurrentState = STACHECKPASS; NextState = STAADDFINGER; DisPlayCheckPass(); } else if (KeyCode == KEY2) { CurrentState = STACHECKPASS; NextState = STADELETEFINGER; DisPlayCheckPass(); } 84 PHỤ LỤC break; } case STAMENU2: { if (KeyCode == KEYSTAR) { CurrentState = STAMAIN; DisplayMain(); } else if (KeyCode == KEY1) { CurrentState = STACHECKPASS; NextState = STACHANGEPASS; DisPlayCheckPass(); } else if (KeyCode == KEY2) { CurrentState = STACHECKPASS; NextState = STADELETEALLFINGER; DisPlayCheckPass(); } break; } case STACHECKPASS: { switch (KeyCode) { case KEY0: case KEY1: case KEY2: case KEY3: case KEY4: case KEY5: case KEY6: case KEY7: case KEY8: case KEY9: { if (CurrentPassIndex < 6) // max is digit { CurrentPass[CurrentPassIndex] = KeyCode; //MyLCD.write(CurrentPass[CurrentPassIndex]+48); MyLCD.print("*"); CurrentPassIndex++; } break; } case KEYHASH: { if (VerifyPass() == true) { CurrentState = NextState; ActionFunction(CurrentState); } else { MyLCD.setCursor(3, 1); 85 PHỤ LỤC MyLCD.print("SAI MAT MA! "); delay(1000); CurrentPassIndex = 0; CurrentPass[0] = 0; CurrentPass[1] = 0; CurrentPass[2] = 0; CurrentPass[3] = 0; CurrentPass[4] = 0; CurrentPass[5] = 0; MyLCD.setCursor(3, 1); MyLCD.print(" "); MyLCD.setCursor(3, 1); } break; } case KEYSTAR: { CurrentPassIndex = 0; CurrentPass[0] = 0; CurrentPass[1] = 0; CurrentPass[2] = 0; CurrentPass[3] = 0; CurrentPass[4] = 0; CurrentPass[5] = 0; CurrentState = STAMAIN; DisplayMain(); } } break; } case STACHANGEPASS: { switch (KeyCode) { case KEY0: case KEY1: case KEY2: case KEY3: case KEY4: case KEY5: case KEY6: case KEY7: case KEY8: case KEY9: { if (CurrentPassIndex < 6) // max is digit { CurrentPass[CurrentPassIndex] = KeyCode; //MyLCD.write(CurrentPass[CurrentPassIndex]+48); MyLCD.print("*"); CurrentPassIndex++; 86 PHỤ LỤC } break; } case KEYHASH: { if (CurrentPassIndex < 6) { MyLCD.setCursor(3, 1); MyLCD.print("CHUA DU KT"); delay(1000); CurrentPassIndex = 0; CurrentPass[0] = 0; CurrentPass[1] = 0; CurrentPass[2] = 0; CurrentPass[3] = 0; CurrentPass[4] = 0; CurrentPass[5] = 0; MyLCD.setCursor(3, 1); MyLCD.print(" "); MyLCD.setCursor(3, 1); } else { PassWord[0] = CurrentPass[0]; PassWord[1] = CurrentPass[1]; PassWord[2] = CurrentPass[2]; PassWord[3] = CurrentPass[3]; PassWord[4] = CurrentPass[4]; PassWord[5] = CurrentPass[5]; SavePasswordToEEPROM(); MyLCD.setCursor(3, 1); MyLCD.print("DA LUU MA MOI"); delay(1000); CurrentPassIndex = 0; CurrentPass[0] = 0; CurrentPass[1] = 0; CurrentPass[2] = 0; CurrentPass[3] = 0; CurrentPass[4] = 0; CurrentPass[5] = 0; CurrentState = STAMAIN; DisplayMain(); } break; } case KEYSTAR: { CurrentPassIndex = 0; CurrentPass[0] = 0; CurrentPass[1] = 0; CurrentPass[2] = 0; CurrentPass[3] = 0; 87 PHỤ LỤC CurrentPass[4] = 0; CurrentPass[5] = 0; CurrentState = STAMAIN; DisplayMain(); break; } } break; } case STADELETEALLFINGER: { if (KeyCode == KEYSTAR) { CurrentState = STAMAIN; DisplayMain(); } else if (KeyCode == KEYHASH) { DeleteAllFinger(); delay(1000); CurrentState = STAMAIN; DisplayMain(); } break; } case STAINPUTNAME: { switch (KeyCode) { case KEY0: case KEY1: case KEY2: case KEY3: case KEY4: case KEY5: case KEY6: case KEY7: case KEY8: case KEY9: { InputCharacter(KeyCode); break; } case KEYSTAR: { NextCharacter(); break; } case KEYHASH: { SaveNewFinger(); break; } } break; 88 PHỤ LỤC } case STADELETEFINGER: { switch (KeyCode) { case KEYSTAR: { CurrentState = STAMAIN; DisplayMain(); break; } case KEY0: { DisplayNextIDInfo(); break; } case KEYHASH: { DeleteIDInfor(); break; } } break; } } } } 89 ... chức qt vân tay điểm danh ,quản lí admin thêm vân tay để quản lý sinh viên lớp học Điểm danh để quản lý thời gian vào lớp sinh viên thực cách quét vân tay Sau quét vân tay, liệu ID người quét gửi... tài ? ?Quản lý cảnh báo sinh viên qua hệ thống quét vân tay? ?? bao gồm: - Hệ thống có chức sau: hệ thống hệ thống qt vân tay Sau đó, thơng tin quét vân tay gửi lên wed để hiển thị vào sinh viên Sau... module cảm biến vân tay ma trận phím để làm hệ thống quét vân tay quản lí sinh viên gửi liệu lên Internet, cảnh báo số lần vi phạm sinh viên thông qua việc mail thông báo cho sinh viên 1.2 Mục tiêu

Ngày đăng: 16/08/2021, 16:18

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w