Đồ án Thiết kế và thi công tủ đựng vật dụng của giảng viên bảo mật bằng vân tay

BỘ GIÁO DỤC & ĐÀO TẠO TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT TP. HỒ CHÍ MINH KHOA ĐIỆN - ĐIỆN TỬ BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP - Y SINH ĐỒ ÁN TỐT NGHIỆP NGÀNH CÔNG NGHỆ KỸ THUẬT ĐIỆN TỬ TRUYỀN THÔNG ĐỀ TÀI: THIẾT KẾ VÀ THI CÔNG TỦ ĐỰNG VẬT DỤNG CỦA GIẢNG VIÊN BẢO MẬT BẰNG VÂN TAY GVHD: ThS Nguyễn Văn Hiệp SVTH: MSSV: Dương Quốc Trung 15141316 Nguyễn Văn Phong 15141237 TP Hồ Chí Minh - 12/2019 BỘ GIÁO DỤC & ĐÀO TẠO TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT TP. HỒ CHÍ MINH

pdf116 trang | Chia sẻ: huong20 | Ngày: 13/01/2022 | Lượt xem: 401 | Lượt tải: 0download
Tóm tắt tài liệu Đồ án Thiết kế và thi công tủ đựng vật dụng của giảng viên bảo mật bằng vân tay, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
H KHOA ĐIỆN - ĐIỆN TỬ BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP - Y SINH --------------------------------- ĐỒ ÁN TỐT NGHIỆP NGÀNH CÔNG NGHỆ KỸ THUẬT ĐIỆN TỬ TRUYỀN THÔNG ĐỀ TÀI: THIẾT KẾ VÀ THI CÔNG TỦ ĐỰNG VẬT DỤNG CỦA GIẢNG VIÊN BẢO MẬT BẰNG VÂN TAY GVHD: ThS Nguyễn Văn Hiệp SVTH: MSSV: Dương Quốc Trung 15141316 Nguyễn Văn Phong 15141237 TP Hồ Chí Minh - 12/2019 i TRƯỜNG ĐH SPKT TP. HỒ CHÍ MINH CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM KHOA ĐIỆN-ĐIỆN TỬ ĐỘC LẬP - TỰ DO - HẠNH PHÚC BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH ----o0o---- Tp. HCM, ngày 20 tháng 11 năm 2019 NHIỆM VỤ ĐỒ ÁN TỐT NGHIỆP Họ tên sinh viên: Dương Quốc Trung MSSV: 15141316 Nguyễn Văn Phong MSSV: 15141237 Chuyên ngành: Điện tử công nghiệp Mã ngành: 41 Hệ đào tạo: Đại học chính quy Mã hệ: 1 Khóa: 2015 Lớp: 15141DT1B I. TÊN ĐỀ TÀI: THIẾT KẾ VÀ THI CÔNG TỦ ĐỰNG VẬT DỤNG CỦA GIẢNG VIÊN BẢO MẬT BẰNG VÂN TAY II. NHIỆM VỤ 1. Các số liệu ban đầu: - Vi điều khiển: Arduino mega 2560, ESP8266. - Các loại module: DS1307, Relay. - Cảm biến: Vân tay R305. - Màn hình hiển thị: LCD TFT 3.2 inches touch screen - Nguồn: Tổ ong 12V, ổn áp LM2596, UPS12V, Pin. 2. Nội dung thực hiện: - Tìm hiểu nguyên lý hoạt động của cảm biến vân tay R305. - Tìm hiểu các chuẩn truyền thông như USART, SPI. - Thiết kế và thi công tủ đựng vật dụng thô. - Thiết kế và thực hiện đi dây các thiết bị trong tủ. - Thiết kế phần mềm thông báo trên điện thoại Android. - Viết chương trình điều khiển cho Arduino và ESP8266, nạp code và chạy thử nghiệm sản phẩm. - Chỉnh sửa và hoàn thiện hệ thống. - Thực hiện viết luận văn báo cáo. - Tiến hành báo cáo đề tài tốt nghiệp. III. NGÀY GIAO NHIỆM VỤ: 26/8/2019 IV. NGÀY HOÀN THÀNH NHIỆM VỤ: 20/12/2019 V. HỌ VÀ TÊN CÁN BỘ HƯỚNG DẪN: ThS Nguyễn Văn Hiệp CÁN BỘ HƯỚNG DẪN BM. ĐIỆN TỬ CÔNG NGHIỆP – Y SINH ii TRƯỜNG ĐH SPKT TP. HỒ CHÍ MINH CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM KHOA ĐIỆN-ĐIỆN TỬ ĐỘC LẬP - TỰ DO - HẠNH PHÚC BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP ----o0o---- – Y SINH Tp. HCM, ngày 20 tháng 10 năm 2019 LỊCH TRÌNH THỰC HIỆN ĐỒ ÁN TỐT NGHIỆP Họ tên sinh viên 1: Dương Quốc Trung Lớp: 15141DT1B MSSV: 15141316 Họ tên sinh viên 2: Nguyễn Văn Phong Lớp: 15141DT1B MSSV: 15141237 Tên đề tài: THIẾT KẾ VÀ THI CÔNG TỦ ĐỰNG VẬT DỤNG CỦA GIẢNG VIÊN BẢO MẬT BẰNG VÂN TAY Xác nhận Tuần/ngày Nội dung GVHD Tuần 3 Tìm hiểu về cảm biến vân tay R305. 09/09/2019 Tuần 4 Tìm hiểu Arduino Mega 2560 R3 và LCD TFT cảm 16/09/2019 ứng 3.2 inch. Tuần 5 Giao tiếp giữa module cảm biến vân tay R305 và 23/08/2019 Arduino. Tuần 6 Giao tiếp giữa LCD TFT cảm ứng, cảm biến thời gian 30/09/2019 thực DS1307 và Arduino. Tuần 7 07/10/2019 Kết hợp giao tiếp và trao đổi dữ liệu giữa R305, LCD Tuần 8 TFT cảm ứng, DS1307 và Arduino. 14/10/2019 Tuần 9 Tìm hiểu về Firebase cập nhật dữ liệu điều khiển giữa 21/10/2019 Firebase và ESP8266. Tuần 10 Thiết kế ứng dụng trên điện thoại android. 28/10/2019 Thiết kế sơ đồ nguyên lý phần cứng của hệ thống. Tuần 11 Thiết kế mạch PCB cho hệ thống. 04/11/2019 Viết chương trình arduino và ESP8266. Tuần 12 Thiết kế và thi công tủ đựng vật dụng. 11/112019 Tuần 13 18/11/2019 Tiến hành chạy thử nghiệm phần cứng. Tuần 14 Lắp ráp phần cứng vào tủ, đi dây và hoàn thiện. 25/11/2019 Tuần 15 Kiểm tra lại phần cứng, giao tiếp giữa phần cứng và 02/12/2019 ứng dụng trên điện thoại. Tuần 16 Kiểm tra lại toàn bộ hệ thống. 09/12/2019 Tiến hành viết báo cáo cho đề tài. Tuần 17 Hoàn thiện đề tài. 16/12/2019 GV HƯỚNG DẪN (Ký và ghi rõ họ và tên) iii LỜI CAM ĐOAN Đề tài này là do nhóm tự thực hiện dưới sự hướng dẫn của giảng viên ThS Nguyễn Văn Hiệp. Đề tài dựa vào một số tài liệu trước đó và không sao chép từ tài liệu hay công trình đã có trước đó. Nhóm thực hiện đề tài Dương Quốc Trung Nguyễn Văn Phong iv LỜI CẢM ƠN Nhóm em xin gửi lời cảm ơn sâu sắc đến Thầy Nguyễn Văn Hiệp, người đã trực tiếp hướng dẫn và giúp đỡ tạo điều kiện để nhóm hoàn thành tốt đề tài này. Mặc dù kiến thức của nhóm còn hạn chế nhưng thầy đã nhiệt tình giúp đỡ, vạch ra hướng đi sao cho phù hợp. Xin chân thành cảm ơn quý thầy cô Giảng viên khoa Điện - Điện Tử, trường Đại Học Sư Phạm Kỹ Thuật Tp.HCM đã giúp đỡ nhóm trong quá trình thực hiện đồ án. Ngoài ra nhóm còn nhận sự quan tâm, giúp đỡ của gia đình, bạn bè, các anh chị trong trường để hoàn thành đồ án này. Do kiến thức còn hạn chế nên trong quá trình thực hiện không tránh khỏi sai sót mong thầy cô và các bạn góp ý để nhóm có thể hoàn thành đồ án tốt nhất. Xin chân thành cảm ơn! Nhóm thực hiện đề tài Dương Quốc Trung Nguyễn Văn Phong v MỤC LỤC Trang bìa...........................................................................................................................i NHIỆM VỤ ĐỒ ÁN TỐT NGHIỆP .............................................................................. ii LỊCH TRÌNH THỰC HIỆN ĐỒ ÁN TỐT NGHIỆP .................................................... iii LỜI CAM ĐOAN ...........................................................................................................iv LỜI CẢM ƠN .................................................................................................................. v MỤC LỤC ......................................................................................................................vi LIỆT KÊ HÌNH ..............................................................................................................ix LIỆT KÊ BẢNG ........................................................................................................... xii TÓM TẮT .................................................................................................................... xiii CHƯƠNG 1: TỔNG QUAN ......................................................................................... 1 1.1 ĐẶT VẤN ĐỀ ...................................................................................................... 1 1.2 MỤC TIÊU ........................................................................................................... 2 1.3 NỘI DUNG NGHIÊN CỨU ................................................................................ 2 1.4 GIỚI HẠN ............................................................................................................ 2 1.5 BỐ CỤC ............................................................................................................... 2 CHƯƠNG 2: CƠ SỞ LÝ THUYẾT ............................................................................. 4 2.1 TỔNG QUAN VỀ TỦ ĐỒ BẢO MẬT ................................................................. 4 2.1.1 Giới thiệu tủ đồ bảo mật và đặc điểm của tủ bảo mật .................................... 4 2.1.2 Ứng dụng của tủ đồ bảo mật........................................................................... 5 2.2 TỔNG QUAN VỀ CÔNG NGHỆ NHẬN DẠNG VÂN TAY ............................ 6 2.2.1 Lịch sử ra đời nhận dạng vân tay ................................................................... 6 2.2.2 Hệ thống nhận dạng vân tay ........................................................................... 7 2.2.3 Ứng dụng công nghệ nhận dạng vân tay hiện nay ......................................... 9 2.3 TỔNG QUAN VỀ HỆ ĐIỀU HÀNH ANDROID .............................................. 10 2.3.1 Khái niệm hệ điều hành android ................................................................... 10 2.3.2 Giao diện ...................................................................................................... 11 2.3.3 Ứng dụng ...................................................................................................... 12 2.3.4 Ưu và nhược điểm của hệ điều hành Android .............................................. 13 2.4 TỔNG QUAN VỀ FIREBASE ........................................................................... 14 2.4.1 Lịch sử và khái niệm .................................................................................... 14 2.4.2 Các tính năng chính ...................................................................................... 15 2.4.3 Ưu và nhược điểm của Firebase ................................................................... 17 2.5 CÁC CHUẨN TRUYỀN DỮ LIỆU ................................................................... 18 2.5.1 Chẩn giao tiếp I2C ........................................................................................ 18 vi 2.5.2 Chuẩn truyền thông UART .......................................................................... 20 2.5.3 Chuẩn truyền thông SPI................................................................................ 21 CHƯƠNG 3: TÍNH TOÁN VÀ THIẾT KẾ ............................................................. 22 3.1 GIỚI THIỆU ........................................................................................................ 22 3.2 TÍNH TOÁN VÀ THIẾT KẾ HỆ THỐNG ........................................................ 22 3.2.1 Thiết kế sơ đồ khối hệ thống ........................................................................ 22 3.3 TÍNH TOÁN VÀ THIẾT KẾ MẠCH ................................................................. 23 3.3.1 Khối cảm biến vân tay .................................................................................. 23 3.3.2 Vi điều khiển ................................................................................................ 26 3.3.3 Khối module thời gian thực .......................................................................... 28 3.3.4 Khối module wifi .......................................................................................... 29 3.3.5 Khối điều khiển và hiển thị .......................................................................... 31 3.3.6 Khối module relay ........................................................................................ 34 3.3.7 Khóa chốt điện .............................................................................................. 35 3.3.8 Khối nguồn ................................................................................................... 36 3.4 SƠ ĐỒ NGUYÊN LÝ TOÀN MẠCH ................................................................ 40 CHƯƠNG 4: THI CÔNG HỆ THỐNG .................................................................... 41 4.1 GIỚI THIỆU ........................................................................................................ 41 4.2 THI CÔNG HỆ THỐNG ..................................................................................... 41 4.2.1 Thi công Board mạch ................................................................................... 41 4.2.2 Lắp ráp và kiểm tra ....................................................................................... 42 4.3 ĐÓNG GÓI VÀ THI CÔNG MÔ HÌNH ............................................................ 43 4.3.1 Đóng gói bộ điều khiển ................................................................................ 43 4.3.2 Thi công tủ .................................................................................................... 44 4.4 LẬP TRÌNH HỆ THỐNG ................................................................................... 49 4.4.1 Lưu đồ giải thuật .......................................................................................... 49 4.4.2 Phần mềm lập trình cho vi điều khiển .......................................................... 57 4.4.3 Phần mềm lập trình cho điện thoại, máy tính ............................................... 58 4.5 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Á ................................................ 69 5.1 GIỚI THIỆU ........................................................................................................ 69 5.2 KẾT QUẢ ĐẠT ĐƯỢC ...................................................................................... 69 5.3 KẾT QUẢ THỰC NGHIỆM ............................................................................... 70 5.3.1 Thiết kế thi công tủ ....................................................................................... 70 5.3.2 Phần cứng, giao diện điều khiển ................................................................... 72 vii 5.3.3 App android .................................................................................................. 78 5.4 NHẬN XÉT, ĐÁNH GIÁ ................................................................................... 80 5.4.1 Nhận xét ........................................................................................................ 80 5.4.2 Đánh giá ........................................................................................................ 80 CHƯƠNG 6: KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN .......................................... 82 6.1 KẾT LUẬN ......................................................................................................... 82 6.2 HƯỚNG PHÁT TRIỂN ...................................................................................... 82 TÀI LIỆU THAM KHẢO ........................................................................................... 83 PHỤ LỤC ..................................................................................................................... 84 viii LIỆT KÊ HÌNH Hình Trang Hình 2.1. Tủ đồ bảo mật bằng vân tay ............................................................................ 4 Hình 2.2. Tủ đồ bảo mật bằng mật mật khẩu và khóa ..................................................... 5 Hình 2.3. Một số hình ảnh vân tay được sử dụng thời xưa ............................................. 7 Hình 2.4. Cấu trúc cơ bản của hệ thống nhận dạng vân tay ............................................ 8 Hình 2.5. Thanh toán mua hàng bằng dấu vân tay .......................................................... 9 Hình 2.6. Máy chấm công ............................................................................................. 10 Hình 2.7. Khóa cửa bảo mật vân tay ............................................................................. 10 Hình 2.8. Logo hệ điều hành Android ........................................................................... 11 Hình 2.9. Giao diện của thiết bị chạy hệ điều hành Android ........................................ 11 Hình 2.10. Thanh trạng thái của thiết bị chạy hệ điều hành Android ........................... 12 Hình 2.11. Kho ứng dụng Google Play Store ................................................................ 13 Hình 2.12. Biểu tượng của nền tảng Firebase ............................................................... 14 Hình 2.13. Cây Json của Realtime Database ................................................................. 15 Hình 2.14. Các thiết bị tương tác với Realtime Database ............................................. 16 Hình 2.15. Xác thực người dùng qua Authentication.................................................... 17 Hình 2.16. Các thiết bị gửi và nhận tin nhắn qua Firebase Cloud Messaging .............. 17 Hình 2.17. Giao diện hiển thị các project của Firebase ................................................. 18 Hình 2.18. Bus I2C và các thiết bị ngoại vi................................................................... 18 Hình 2.19. Trình tự truyền bit trên đường truyền .......................................................... 19 Hình 2.20. Truyền thông UART .................................................................................... 20 Hình 2.21. Giao tiếp SPI ................................................................................................ 21 Hình 3.1. Sơ đồ khối hệ thống ....................................................................................... 22 Hình 3.2. Module cảm biến vân tay R305 ..................................................................... 23 Hình 3.3. Hình dạng bên ngoài và kích thước module R305 ........................................ 24 Hình 3.4. Các chân kết nối của module cảm biến vân tây R305 ................................... 25 Hình 3.5. Sơ đồ kết nối cảm biến vân tay với vi điều khiển ......................................... 25 Hình 3.6. Board arduino mega 2560 ............................................................................. 26 Hình 3.7. Sơ đồ và kí hiệu chân trên arduino mega 2560 ............................................. 28 Hình 3.8. Mạch thời gian thực RTC I2C DS1307 ......................................................... 28 Hình 3.9. Sơ đồ kết nối module DS1307 với vi điều khiển .......................................... 29 Hình 3.10. Module Wifi NodeMCU ESP8266 .............................................................. 29 Hình 3.11. Sơ đồ kết nối module ESP8266 với vi điều khiển ....................................... 30 Hình 3.12. Màn hình LCD TFT 3.2 Inches ................................................................... 31 Hình 3.13. Shield LCD TFT 3.2 Inches cho Arduino Mega ......................................... 33 Hình 3.14. Sơ đồ kết nối Shield LCD TFT với vi điều khiển ....................................... 33 Hình 3.15. Module relay 6 kênh .................................................................................... 34 Hình 3.16. Sơ đồ kết nối relay với vi điều khiển ........................................................... 35 Hình 3.17. Khóa chốt điện LY-03 12V ......................................................................... 35 Hình 3.18. Nguồn tổ ong 12V-5A ................................................................................. 36 Hình 3.19. Mạch ổn áp LM2596 ................................................................................... 37 Hình 3.20. Mạch chuyển nguồn tự động UPS 12V ....................................................... 37 Hình 3.21. Pin Cell 18650 4200mAh 3.7V ................................................................... 38 Hình 3.22. Mạch chuyển nguồn UPS và ổn áp LM2596 .............................................. 39 ix Hình 3.23. Sơ đồ nguyên lý hệ thống ............................................................................ 40 Hình 4.1. PCB mặt trên ................................................................................................. 41 Hình 4.2. PCB mặt dưới ................................................................................................ 41 Hình 4.3. Mặt trên board ............................................................................................... 42 Hình 4.4. Mặt dưới board .............................................................................................. 42 Hình 4.5. Mặt trên board khi lắp linh kiện .................................................................... 43 Hình 4.6. Mặt dưới board khi lắp linh kiện ................................................................... 43 Hình 4.7. Hình ảnh sau khi lắp mạch lên mica .............................................................. 43 Hình 4.8. Thông số kích thước của tủ trên thiết kế ....................................................... 44 Hình 4.9. Hình ảnh mặt trước của tủ sau khi hoàn thiện ............................................... 45 Hình 4.10. Hình ảnh mặt trước mạch điều khiển khi lắp lên tủ .................................... 46 Hình 4.11. Đi dây mạch điều khiển ............................................................................... 47 Hình 4.12. Đi dây cho khóa điện và đèn báo ................................................................ 48 Hình 4.13. Lưu đồ chương trình chính .......................................................................... 49 Hình 4.14. Lưu đồ chương trình con chọn chế độ ......................................................... 50 Hình 4.15. Lưu đồ chương trình gửi đồ ......................................................................... 51 Hình 4.16. Lưu đồ chương trình lấy đồ ......................................................................... 52 Hình 4.17. Lưu đồ chương trình thêm vân tay .............................................................. 53 Hình 4.18. Lưu đồ của chương trình con quét vân tay của chế độ gửi đồ và lấy đồ ..... 54 Hình 4.19. Lưu đồ chương trình con quét vân tay của chế độ thêm vân tay ................. 55 Hình 4.20. Lưu đồ của ESP8266 ................................................................................... 56 Hình 4.21. Giao diện phần mềm lập trình Arduino IDE ............................................... 57 Hình 4.22. Giao diện phần mềm Android Studio .......................................................... 59 Hình 4.23. Giao diện phần thiết kế giao diện cho ứng dụng ......................................... 60 Hình 4.24. Ánh xạ các đối tượng trong giao diện với các câu lệnh .............................. 60 Hình 4.25. Giao diện phần lập trình Java ...................................................................... 61 Hình 4.26. Giao diện chính của hệ thống ...................................................................... 61 Hình 4.27. Quét vân tay gửi đồ ..................................................................................... 62 Hình 4.28. Gửi đồ thành công ....................................................................................... 62 Hình 4.29. Quét vân tay lấy đồ ...................................................................................... 63 Hình 4.30. Thông báo lấy đồ thành công ...................................................................... 63 Hình 4.31. Thông báo nhập mật khẩu ........................................................................... 64 Hình 4.32. Giảng viên nhập mật khẩu ........................................................................... 64 Hình 4.33. Quét vân tay lần 1 ........................................................................................ 64 Hình 4.34. Quét vân tay lần 2 ........................................................................................ 65 Hình 4.35. Thêm vân tay thành công ............................................................................ 65 Hình 4.36. Giao diện bắt đầu của ứng dụng .................................................................. 66 Hình 4.37. Người quản lí đăng nhập. ............................................................................ 66 Hình 4.38. Giao diện bên trong chế độ người dùng ...................................................... 67 Hình 4.39. Giao diện bên trong chế độ quản lý ............................................................. 68 Hình 5.1. Hình ảnh thực tế mặt trước tủ sau khi hoàn thiện ......................................... 70 Hình 5.2. Mặt bên phải tủ sau khi hoàn thiện ................................................................ 71 Hình 5.3. Board mạch lắp bên trong tủ ......................................................................... 72 Hình 5.4. Mặt trước board điều khiển ........................................................................... 73 Hình 5.5. Giao diện chính .............................................................................................. 74 Hình 5.6. Quét vân tay gửi đồ ....................................................................................... 74 x Hình 5.7. Gửi đồ thành công ......................................................................................... 74 Hình 5.8. Quét vân tay lấy đồ ........................................................................................ 75 Hình 5.9. Thông báo lấy đồ thành công ........................................................................ 75 Hình 5.10. Thông báo nhập mật khẩu ........................................................................... 76 Hình 5.11. Giao diện nhập mật khẩu ............................................................................. 76 Hình 5.12. Quét vân tay lần 1 ........................................................................................ 76 Hình 5.13. Quét vân tay lần 2 ........................................................................................ 77 Hình 5.14. Thêm vân tay thành công ............................................................................ 77 Hình 5.15. Giao diện bắt đầu của ứng dụng .................................................................. 78 Hình 5.16. Người quản lí đăng nhập ............................................................................. 78 Hình 5.17. Giao diện bên trong chế độ người dùng ...................................................... 79 Hình 5.18. Giao diện bên trong chế độ quản lý ............................................................. 79 xi LIỆT KÊ BẢNG Bảng Trang Bảng 3.1: Kí hiệu và chức năng của các chân trên cảm biến vân tay R305 .................. 25 Bảng 3.2: Thông số Ardiuno Mega 2560 ...................................................................... 27 Bảng 3.4: Mô tả chức năng các chân của GLCD .......................................................... 31 Bảng 3.5: Thông số, giá trị các linh kiện sử dụng ......................................................... 36 Bảng 5.1: Số liệu thực nghiệm ...................................................................................... 80 xii TÓM TẮT Trong những năm gần đây, công nghệ bảo mật vân tay đã và đang được ứng dụng rộng rãi trong nhiều lĩnh vực của đời sống. Nhận thấy việc gửi đồ của giảng viên trong trường Đại học ngày chưa được đề cao về sự thuận tiện cũng như tính bảo mật. Đề tài này nhằm mục đích thiết kế và thi công được tủ đựng vật dụng của giảng viên với phương pháp bảo mật bằng vân tay. xiii CHƯƠNG 1: TỔNG QUAN CHƯƠNG 1: TỔNG QUAN 1.1 ĐẶT VẤN ĐỀ Thế giới đang trong làn sóng của cuộc cách mạng công nghiệp 4.0. Công nghệ bảo mật ngày càng được nâng cấp và sử dụng rộng rãi trong các ứng dụng của đời sống. Đặc biệt, bảo mật bằng vân tay dù không còn là điều gì đó quá mới mẻ nhưng vẫn là một trong những công nghệ được áp dụng phổ biến để giải quyết các vấn đề như giám sát tự động, bảo mật dữ liệu, xác thực cá nhân trong các cơ quan, doanh nghiệp. Ngoài ra công nghệ này còn được sử dụng trong lĩnh vực nghiên cứu khoa học pháp y và tội phạm. Quét vân tay là một công nghệ bảo mật sử dụng dấu vân tay của một người để xác định danh tính của người đó. Như chúng ta đều biết mỗi người sẽ sở hữu cấu trúc vân tay riêng biệt, thể hiện sự đặc trưng cho từng cá nhân. Điều này thường được gọi là dấu vân tay sinh trắc học. Sinh trắc học là cách nghiên cứu về con người khác nhau dựa trên các yếu tố sinh học. Ngay cả các cặp song sinh giống hệt nhau cũng không chia sẻ cùng một tập hợp các dấu vân tay. Dấu vân tay của một người giống như một thẻ nhận dạng, và đây cũng là nền tảng cốt lõi để sáng tạo ra công nghệ bảo mật vân tay. Trước đây cũng có khá nhiều đồ án tốt nghiệp nghiên cứu về các ứng dụng sử dụng công nghệ vân tay như đề tài “Điểm danh sinh viên bằng vân tay” của Nguyễn Khắc Thành, trong đó sử dụng Arduino Mega 2560, module vân tay R305, phần mềm C# để tạo giao diện và SQL Server để tạo cơ sở dữ liệu lưu trữ thông tin sinh viên [4]. Tác giả Trần Anh Đề và Trần Sơn Lành nghiên cứu đề tài “Hệ thống điểm danh bằng vân tay sử dụng vi điều khiển ARM” sử dụng vi điều khiển STM32F103VET6 giao tiếp với SD card, cảm biến vân tay R305 và hiển thị thông tin lên LCD TFT 320x240. Mô hình xử lý dựa trên files Excel mà người dùng đã định dạng theo 1 mẫu sẵn được lưu trữ trong thẻ nhớ SD [5]. Qua những thông tin trên, nhóm em quyết định làm đề tài “Thiết kế và thi công tủ đựng vật dụng của giảng viên bảo mật bằng vân tay”. Hệ thống sử dụng vi điều khiển trung tâm là module Arduino và module Wifi Node MCU ESP8266, cảm biến vân tay R305, khóa điện tử, LCD TFT hiển thị thông tin và các đèn led báo trạng thái. Người dùng có thể nhận thông báo về trạng thái hộc tủ của mình thông qua ứng dụng cài đặt trên điện thoại sử dụng hệ điều hành Android [1]. BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 1 CHƯƠNG 1: TỔNG QUAN 1.2 MỤC TIÊU Thiết kế và thi công được tủ đựng vật dụng cho giảng viên bảo mật bằng vân tay. Giúp việc gửi đồ của giảng viên trở nên nhanh chóng, thuận tiện và nâng cao khả năng bảo mật. 1.3 NỘI DUNG NGHIÊN CỨU - NỘI DUNG 1: Tìm hiểu nguyên lý hoạt động của cảm biến vân tay R305. - NỘI DUNG 2: Tìm hiểu các chuẩn truyền thông USART, SPI, I2C. - NỘI DUNG 3: Tìm hiểu và giao tiếp được cảm biến vân tay R305, module thời gian thực DS1307, module Wifi ESP8266 với Arduino Mega 2560. - NỘI DUNG 4: Thiết kế app bằng Android Studio. - NỘI DUNG 5: Thiết kế và thi công tủ đựng vật dụng. - NỘI DUNG 6: Đánh giá kết quả thực hiện. 1.4 GIỚI HẠN - Tủ có kích thước 145x85x40 cm, gồm 6 hộc chứa. - Tích hợp LCD TFT cảm ứng để hiển thị thông tin và điều khiển. - Sử dụng module vân tay R305. - Thời gian chứa vật dụng trong tủ tối đa là 1 tuần. - Hiển thị thông tin tủ và thông báo cho người dùng qua app cài đặt trên các thiết bị sử dụng hệ điều hành Android. - Cho phép quản trị viên điều khiển từ xa thông qua app android. - Có tích hợp UPS (mạch chuyển nguồn tự động) cấp nguồn dự phòng lúc mất điện. 1.5 BỐ CỤC - Chương 1: Tổng quan Chương này trình bày đặt vấn đề, lý do chọn đề tài, mục tiêu, nội dung nghiên cứu, các giới hạn thông số và bố cục đồ án. - Chương 2: Cơ sở lý thuyết Chương này trình bà...n làm việc 100mA. - Mô tả chi tiết các chân của cảm biến vân tay kết nối với vi diều khiển: Chân 1: chân 5V kết nối nguồn để module họat động. Chân 2: chân GND nối mass. Chân 3: chân TD kết nối với chân RX1 của vi điều khiển để nhận dữ liệu của vi điều khiển. Chân 4: chân RD kết nối với chân TX1 của vi điều khiển để truyền dữ liệu cho vi điều khiển. 3.3.2 Vi điều khiển - Với những đặt tính của hệ thống, nhóm lựa chọn vi đều khiển trung tâm là Arduino Mega 2560 - Hình ảnh thực tế của board arduino mega 2560: Hình 3.6. Board arduino mega 2560 - Arduino Mega 2560: là một bo mạch thiết kế với bộ xử lý trung tâm là vi điểu khiển AVR ATMega2560. ATMega2560 có 256 KB bộ nhớ flash để lưu trữ mã (trong đó có 8 KB được sử dụng cho bộ nạp khởi động), 8 KB SRAM và 4 KB của EEPROM. - Có 54 chân vào/ra: Đánh số thứ tự từ 0 đến 53 (với 15 chân có thể diều khiển PWM), ngoài ra có một chân nối đất (GND) và một chân điện áp tham chiếu (AREF). - Có 16 đầu vào tương tự: Mỗi ngõ vào tương tự đều có độ phân giải 10 bit (tức là 1024 giá trị khác nhau). - 4 UART: Truyền và nhận giao tiếp với vi điều khiển ở ngoại vi. - Cổng USB: Đây là loại cổng giao tiếp để ta upload code từ PC lên vi điều khiển. Đồng thời nó cũng là giao tiếp serial để truyền dữ liệu giữa vi điều khiển và máy tính. BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 26 CHƯƠNG 3: TÍNH TOÁN VÀ THIẾT KẾ - 1 nút nhấn RESET: Được sử dụng để RESET mạch. - Jack nguồn: Để chạy Arduino có thể lấy nguồn từ cổng USB ở trên, nhưng không phải lúc nào cũng có thể cắm với máy tính được. Lúc đó ta cần một nguồn từ 9V đến 12V. Bảng 3.2: Thông số Ardiuno Mega 2560 Điện áp hoạt động 7-12V Điện áp đầu vào 6-20V Chân vào/ra (I/O) số 54 ( 15 chân là đầu ra PWM) Chân vào tương tự 16 Dòng điện trong mỗi chân I/O 40mA Dòng điện Chân nguồn 3.3V 50mA Bộ nhớ trong 256 KB SRAM 8 KB EEPROM 4 KB Xung nhịp 16MHz Dài 101.52 mm Rộng 53.3 mm Nặng 37g - Sơ đồ chân và kí hiệu chân trên board arduino mega 2560: BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 27 CHƯƠNG 3: TÍNH TOÁN VÀ THIẾT KẾ Hình 3.7. Sơ đồ và kí hiệu chân trên arduino mega 2560 3.3.3 Khối module thời gian thực Mạch thời gian thực RTC I2C DS1307 là đồng hồ thời gian thực, lưu trữ dữ liệu thời gian ngày tháng năm và các thông tin khác, tự động điều chỉnh khi thời gian thay đổi. Module hoạt động như một chiếc đồng hồ, ngoài ra có thể đưa dữ liệu về thời gian ra bên ngoài thông qua giao tiếp I2C. Trên module có thiết kế đế pin đồng hồ, với pin này module có thể hoạt động lưu trữ thời gian lên đến 10 năm mà không cần nguồn nuôi từ bên ngoài. Mạch đi kèm bộ nhớ để EEPROM lưu trữ thông tin lên đến 32Kbits. Hình 3.8. Mạch thời gian thực RTC I2C DS1307 BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 28 CHƯƠNG 3: TÍNH TOÁN VÀ THIẾT KẾ Đặc điểm: - IC chính RTC DS1307, EEPROM AT24C32 - Nguồn cấp: 5VDC - Giao tiếp chuẩn I2C - Có pin đồng hồ lưu trữ thông tin - Có ngõ ra tần số 1Hz - 56 byte RAM non-volatile - Kích thước: 27 x 28x 8.4 mm Module thời gian thực DS1307 với sơ đồ kết nối như sau: Hình 3.9. Sơ đồ kết nối module DS1307 với vi điều khiển - Mô tả chi tiết các chân của cảm biến vân tay kết nối với vi diều khiển: Chân 2: Kết nối với chân GND. Chân 3: Kết nối với chân 5V. Chân 4: Đường dữ liệu trong chuẩn giao tiếp I2C kết nối với chân SDA. Chân 5: Đường xung nhịp trong chuẩn giao tiếp I2C kết nối với chân SCL. 3.3.4 Khối module wifi Hình 3.10. Module Wifi NodeMCU ESP8266 BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 29 CHƯƠNG 3: TÍNH TOÁN VÀ THIẾT KẾ Thông số kỹ thuật: - Chip: ESP8266EX - WiFi: 2.4 GHz hỗ trợ chuẩn 802.11 b/g/n - Điện áp hoạt động: 3.3V - Điện áp vào: 5V thông qua cổng USB - Số chân I/O: 11 (tất cả các chân I/O đều có Interrupt/PWM/I2C/One-wire, trừ chân D0) - Số chân Analog Input: 1 (điện áp vào tối đa 3.3V) - Bộ nhớ Flash: 4MB - Giao tiếp: Cable Micro USB - Hỗ trợ bảo mật: WPA/WPA2 - Tích hợp giao thức TCP/IP - Lập trình trên các ngôn ngữ: C/C++, Micropython, NodeMCU – Lua - Tương thích hoàn toàn với trình biên dịch Arduino. - Hổ trợ nhiều loại anten. - 16 chân GPIO. - Hổ trợ SDIO 2.0, UART, SPI, I2C, PWM, I2S với DMA. - 1 ADC 10-bit. - Dải nhiệt độ hoạt động rộng: - 40 ~ 125ºC. Module wifi Node MCU ESP8266 kết nối với vi điều khiển có sơ đồ như sau: Hình 3.11. Sơ đồ kết nối module ESP8266 với vi điều khiển - Giao tiếp giữa module wifi và vi điều khiển theo chuẩn UART. - Điện áp sử dụng 5V. - Dòng điện 120mA. - Mô tả chi tiết các chân của module wifi kết nối với vi diều khiển: BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 30 CHƯƠNG 3: TÍNH TOÁN VÀ THIẾT KẾ Chân VIN: Kết nối với chân 5V. Chân GND: Nối mass. Chân D5: Truyền dữ liệu cho vi điều khiển kết nối với chân RX. Chân D6: Nhận dữ liệu từ vi điều khiển kết nối với chân TX. 3.3.5 Khối điều khiển và hiển thị Hình 3.12. Màn hình LCD TFT 3.2 Inches Thông số kỹ thuật: - Kích thước màn hình: 3.2 Inch - Độ phân giải màn hình: 320 x 240 - Điện áp hoạt động: 3.3V - Dòng điện làm việc 100 - 200mA - Có tích hợp thẻ nhớ SD giao tiếp SPI - IC Driver hiển thị: ILI9341 - IC cảm ứng: XPT2046/ADS7843 giao tiếp SPI - IC nhớ: SST25VF016B - Chuẩn truyền dữ liệu song song GLCD - Khả năng hiện thị hơn 65 nghìn màu. Bảng 3.4: Mô tả chức năng các chân của GLCD STT Ký hiệu chân Chức năng Mô tả 1 GND Nối mass 2 VCC Cấp nguồn 3.3V 3 NC Lựa chọn ghi hoặc truyền dữ RS = 0 4 RS liệu RS = 1 BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 31 CHƯƠNG 3: TÍNH TOÁN VÀ THIẾT KẾ WR = 0 5 WR Ghi dữ liệu WR = 1 RD = 1 6 RD Đọc dữ liệu RD = 0 7-14 DB8-DB15 Truyền nhận dữ liệu 8 bit Bus dữ liệu 8 bit 15 CS Lựa chọn chip của LCD Mức thấp Lựa chọn chip Flash (chip 16 F_CS Flash W25X16 mặc định Mức thấp không được sử dụng) Ở mức thấp trong 8ms, Khởi đầu lại hoạt động của 17 REST sau đó kéo lên mức cao lại LCD ngay 18 NC Được mắc nối tiếp với điện trở hạn dòng 3.9 19 LED_A Cấp nguồn cho đèn nền Ohm và kết nối với nguồn 3.3V 20 NC 21-28 DB0-DB7 Truyền nhận dữ liệu 8 bit Bus dữ liệu 8 bit Mỗi nhịp trên chân báo Giữ nhịp cho giao tiếp SPI 29 T_CLK hiệu 1 bit dữ liệu đến hoặc của cảm ứng đi Lựa chọn Slave cần giao tiếp Ở mức cao khi không làm 30 T_CS trong SPI của cảm ứng việc Dữ liệu đầu vào của bộ điều 31 T_DIN khiển cảm ứng XPT2046 (MISO) 32 NC Dữ liệu đầu ra của bộ điều 33 T_DO khiển cảm ứng XPT2046 (MOSI) Ngắt dữ liệu của bộ điều Thường ở mức cao, khi 34 T_IRQ khiển cảm ứng XPT2046 cảm ứng thì xuống mức thấp Dữ liệu đầu ra trong giao tiếp 35 SD_DO SPI của thẻ nhớ (MOSI) Giữ chịp cho giao tiếp SPI Mỗi nhịp trên chân báo 36 SD_CLK của thẻ SD hiệu 1 bit dữ liệu đến hoặc đi Dữ liệu đầu vào trong giao 37 SD_DIN tiếp SPI của thẻ nhớ (MISO) Lựa chọn Slave cần giao tiếp 38 SD_CS trong SPI của thẻ nhớ 39 NC 40 NC - Vì điện áp hoạt động của LCD đang sử dụng là 3.3V nên cần một Mega Shield chuẩn cho LCD 16 bit để chuyển đổi điện áp hoạt động trên các chân của Arduino Mega 2560 BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 32 CHƯƠNG 3: TÍNH TOÁN VÀ THIẾT KẾ từ 5V thành 3.3V, nếu cắm trực tiếp LCD vào Arduino Mega sẽ không sử dụng được hoặc bị cháy LCD vì chênh lệch điện áp giao tiếp. Hình 3.13. Shield LCD TFT 3.2 Inches cho Arduino Mega Sơ đồ kết nối từ vi điều khiển đến Shield như sau: Hình 3.14. Sơ đồ kết nối Shield LCD TFT với vi điều khiển BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 33 CHƯƠNG 3: TÍNH TOÁN VÀ THIẾT KẾ 3.3.6 Khối module relay Đề tài thiết kế tủ gồm có 6 hộc tủ nên nhóm sử dụng module relay 6 kênh để điều khiển 6 khóa chốt điện tương ứng. Hình 3.15. Module relay 6 kênh Thông số kỹ thuật: - Điện áp hoạt động: 5VDC - Dòng tiêu thụ: 200mA/1Relay - Tín hiệu kích: High (5V) hoặc Low (0V) chọn bằng Jumper - Relay trên mạch: + Nguồn nuôi: 5VDC + Tiếp điểm đóng ngắt max: 250VAC-10A hoặc 30VDC-10A - Kích thước: 72mm x 55mm x 19mm - Đầu vào: + Có 6 chân (4 chân IN, VCC, GND) - Đầu ra: + COM: chân chung của Relay + NC: tiếp điểm thường đóng + NO: tiếp điểm thường mở BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 34 CHƯƠNG 3: TÍNH TOÁN VÀ THIẾT KẾ Sơ đồ kết nối với vi điều khiển như sau: Hình 3.16. Sơ đồ kết nối relay với vi điều khiển 3.3.7 Khóa chốt điện Trong đề tài nhóm lựa chọn khóa chốt điện từ LY-03 có chức năng hoạt động như một ổ khóa cửa sử dụng Solenoid để kích đóng mở bằng điện. Khóa được kết nối với relay để đóng khóa, mở cửa tương ứng với lệnh điều khiển. Hình 3.17. Khóa chốt điện LY-03 12V Thông số kỹ thuật: - Điện áp hoạt động 12VDC, là loại thường đóng - Dòng điện: 500mA - Công suất 6W - Lỗ an ninh: Bị khóa khi tắt nguồn - Chiều dài chốt mở rộng: 9.8mm - Kích thước khóa: 53 x 39 x 25 mm - Kích thước chốt: 9.8 x 9(mm) - Trọng lượng: 150g BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 35 CHƯƠNG 3: TÍNH TOÁN VÀ THIẾT KẾ 3.3.8 Khối nguồn Khối nguồn đóng vai trò quan trọng trong việc đảm bảo cho hệ thống sau khi hoàn thành có hoạt động ổn định hay không, đồng thời là khối quan trọng nhất cần phải được tính toán chính xác. Sau khi tiến hành tổng hợp các thành phần có trong hệ thống được bản thông số giá trị điện áp dòng điện như sau: Bảng 3.5: Thông số, giá trị các linh kiện sử dụng Điện áp Dòng điện Tổng dòng tiêu STT Tên linh kiện Số lượng (VDC) (mA) thụ (mA) 1 Arduino Mega 2560 1 5 200 200 2 Cảm biến vân tay 1 5 100 100 3 Module thời gian thực 1 5 150 150 4 Module wifi 1 5 120 120 5 LCD TFT 1 5 150 150 6 Relay 6 5 200 1200 7 Khóa chốt điện 6 12 500 3000 8 UPS 12V 1 12 100 100 9 Ổn áp LM2596 1 12 100 100 Tổng dòng tiêu thụ của hệ thống (mA) 5120 - Với giá trị tính được từ bản trên nhóm tiến hành lựa chọn mạch nguồn tổ ong 12V- 5A để cung cấp nguồn cho toàn bộ hệ thống. Hình 3.18. Nguồn tổ ong 12V-5A - Nguồn 12V cấp trực tiếp cho khóa chốt điện 12V. - Các linh kiện còn lại sử dụng điện áp 5V nên chọn mạch ổn áp LM2596 hạ áp xuống 5V cung cấp cho hệ thống. BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 36 CHƯƠNG 3: TÍNH TOÁN VÀ THIẾT KẾ Hình 3.19. Mạch ổn áp LM2596 Thông số kỹ thuật: - Nguồn đầu vào từ 4.5V - 40V - Nguồn đầu ra: 1.5V - 37V - Dòng ra max: 3A - Đầu vào: INPUT +, INPUT- - Đầu ra: OUTPUT+, OUTPUT- - Kích thước mạch: 53mm x 26mm - Có biến trở điều chỉnh giá trị điện áp ngõ ra Vì đặc tính hoạt động của tủ cần duy trì nguồn liên tục để sử dụng nên để phòng trường hợp mất điện xảy ra, nhóm tiến hành lắp thêm mạch UPS 12V. Mạch này có chức năng chuyển nguồn tự động khi nguồn chính bị mất mà không gây gián đoạn cho thiết bị sử dụng. Hình 3.20. Mạch chuyển nguồn tự động UPS 12V Thông số kỹ thuật: - Điện áp vào: 5-12V - Điện áp ra: 9V/12V - Sử dụng pin: 3.7V-4.2V BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 37 CHƯƠNG 3: TÍNH TOÁN VÀ THIẾT KẾ Tiếp theo là chọn pin dự phòng cho hệ thống. Trên thực tế, hệ thống có 2 thành phần là Khóa chốt điện 12V và Relay có đặt thù không phải lúc nào cũng trong trạng thái hoạt động cùng lúc. Nên khi tính toán để lựa chọn Pin ta chỉ tính dòng trung bình trên 1 relay và 1 khóa điện. Lúc này dòng điện tiêu thụ của hệ thống thực tế là: I = 5120 – 2500 – 1000 = 1620 (mA) Với các thông số tính toán ở trên cùng ))v ới đặc tính hệ thống, nhóm lựa chọn 2 viên Pin Cell 18650 4200mAh 3.7V để cấp nguồn dự phòng cho hệ thống. Hình 3.21. Pin Cell 18650 4200mAh 3.7V Hoạt động của khối nguồn tích hợp UPS: Ở trạng thái làm việc bình thường, nguồn tổ ong 12V-5A cấp nguồn đi qua mạch UPS và cấp cho hệ thống. Lúc này pin sẽ ở chế độ sạc. Khi mất điện, mạch UPS chuyển nguồn sang sử dụng Pin. Lúc này pin ở chế độ xả và cấp nguồn cho hệ thống hoạt động. Vì mạch UPS có tích hợp mạch tăng áp lên 12VDC nên ở trường hợp mất điện khóa điện 12VDC và các thành phần của hệ thống vẫn hoạt động bình thường. Thời gian duy trì của hệ thống ở chế độ dùng Pin dự phòng phụ thuộc vào dung lượng của pin và công suất của tải. Công thức tính như sau: t = (A.V. η)/P Trong đó: - t : là thời gian sử dụng điện từ pin (giờ). - A: Dung lượng pin (mAh). - V: Điện áp pin (Volt). - P: Công suất tải (W). - η: Hệ số sử dụng pin. Thông thường η=0,7. (4200x2)x3,7x0,7 21756 t = = = 1,87 giờ (12x500)+(5x1120) 11600 BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 38 CHƯƠNG 3: TÍNH TOÁN VÀ THIẾT KẾ - Thông số thời gian tính ở trên là trong trường hợp khóa điện hoạt động liên tục. Trên thực tế không phải lúc nào khóa điện cũng trong trạng thái hoạt động nên thời gian sử dụng luôn lớn hơn. - Sơ đồ khối UPS kết hợp với ổn áp LM2596: Hình 3.22. Mạch chuyển nguồn UPS và ổn áp LM2596 BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 39 CHƯƠNG 3: TÍNH TOÁN VÀ THIẾT KẾ 3.4 SƠ ĐỒ NGUYÊN LÝ TOÀN MẠCH Hình 3.23. Sơ đồ nguyên lý toàn mạch BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 40 CHƯƠNG 4: THI CÔNG HỆ THỐNG CHƯƠNG 4: THI CÔNG HỆ THỐNG 4.1 GIỚI THIỆU Trong chương này là quá trình thi công PCB, lập trình, lắp ráp phần cứng và kiểm tra mạch. Bên cạnh đó là hình vẽ được chụp từ mô hình thực tế của hệ thống, hình chụp các kết quả chạy của hệ thống. 4.2 THI CÔNG HỆ THỐNG 4.2.1 Thi công Board mạch Board mạch thiết kế bằng phần mềm eagle Hình 4.1. PCB mặt trên Hình 4.2. PCB mặt dưới BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 41 CHƯƠNG 4: THI CÔNG HỆ THỐNG Hình 4.3. Mặt trên board Hình 4.4. Mặt dưới board 4.2.2 Lắp ráp và kiểm tra Sau khi thiết kế xong PCB nhóm tiến hành đặt gia công mạch in. Mục tiêu thiết kế ban đầu là thiết kế lại board arduino mega 2560. Các khối chức năng khác thì sử dụng module có sẵn. Tuy nhiên trong quá trình gia công hàn lắp, nhóm gặp khó khăn trong quá trình tìm mua linh kiện dán SMD của arduino. Sau khi giáo viên hướng dẫn đồng ý cho sử dụng board arduino, nhóm đã bỏ qua bước hàn lắp linh kiện lên mạch arduino đã gia công và thay vào đó là sử dụng một board arduino mega 2560 có sẵn. BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 42 CHƯƠNG 4: THI CÔNG HỆ THỐNG Hình 4.5. Mặt trên board khi lắp linh kiện Hình 4.6. Mặt dưới board khi lắp linh kiện 4.3 ĐÓNG GÓI VÀ THI CÔNG MÔ HÌNH 4.3.1 Đóng gói bộ điều khiển Nhóm sử dụng vật liệu Mica đen để tạo khung mặt trước sau đó cố định mạch lên đó Hình 4.7. Hình ảnh sau khi lắp mạch lên mica BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 43 CHƯƠNG 4: THI CÔNG HỆ THỐNG 4.3.2 Thi công tủ Với yêu cầu đề ra của đề tài, nhóm đã thiết kế một tủ đựng vật dụng cho giảng viên với kích thước 145x85x40cm. Gồm có 6 hộc tủ, vật lệu là gỗ. Hình 4.8. Thông số kích thước của tủ trên thiết kế BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 44 CHƯƠNG 4: THI CÔNG HỆ THỐNG Hình 4.9. Hình ảnh mặt trước của tủ sau khi hoàn thiện Lắp mạch và đi dây trong tủ: Mạch điều khiển được bố trí nằm bên mặt phải của tủ gồm một LCD 3.2 inches cảm ứng để người sử dụng tương tác và hiển thị thông tin, bên cạnh là cảm biến vân tay để quét dấu vân tay đóng mở các hộc tủ. Bên dưới có 2 nút nhấn giữ. Nút màu đỏ dùng đóng, ngắt nguồn 220VAC cấp cho tủ. Nút màu xanh đóng, ngắt nguồn đến relay. BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 45 CHƯƠNG 4: THI CÔNG HỆ THỐNG Hình 4.10. Hình ảnh mặt trước mạch điều khiển khi lắp lên tủ Mạch điều khiển được lắp lên một cách cửa có thể mở ra được giúp cho việc đi dây thuận tiện hơn. Thuận tiện cho việc sửa chữa khi gặp sự cố xảy ra. BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 46 CHƯƠNG 4: THI CÔNG HỆ THỐNG Hình 4.11. Đi dây mạch điều khiển BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 47 CHƯƠNG 4: THI CÔNG HỆ THỐNG Hình 4.12. Đi dây cho khóa điện và đèn báo BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 48 CHƯƠNG 4: THI CÔNG HỆ THỐNG 4.4 LẬP TRÌNH HỆ THỐNG 4.4.1 Lưu đồ giải thuật Chương trình chính Bắt đầu Khởi tạo hệ thống Đọc thời gian DS1307 Hiển thị giao diện chính Truyền, nhận dữ liệu với ESP8266 Mở tủ theo Đ dữ liệu điều Có dữ liệu điều khiển khiển S Có tủ hết Đ Giải phóng thời gian ngăn tủ S Chọn chế độ Hình 4.13. Lưu đồ chương trình chính Giải thích lưu đồ: Khi bắt đầu cấp nguồn, chương trình sẽ tiến hành khởi tạo các port, giao tiếp I2C, UART và SPI. Sau đó khởi tạo LCD TFT cảm ứng và giá trị ban đầu của các biến. Mặc định ban đầu chương trình ở chế độ tùy chọn, LCD hiển thị giao diện chính. Vòng lặp chương trình được thực hiện. Hệ thống truyền, nhận dữ liệu với ESP8266. Kiểm tra các BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 49 CHƯƠNG 4: THI CÔNG HỆ THỐNG giá trị của dữ liệu nhận về từ ESP8266 và tiến hành mở tủ theo các giá trị đó. Nếu không có dữ liệu điều khiển từ ESP, hệ thống kiểm tra các dữ liệu thời gian của các ngăn tủ ,tìm ra tủ đồ hêt hạn và tiến hành giải phóng tủ nếu có. Sau khi giải phóng ngăn tủ hết hạn, chương trình tự động chuyển về giao diện chính. Quá trình này chạy xuyên suốt trong hệ thống và luôn được ưu tiên. Nếu không có tủ đồ quá thời gian, người dùng có thể tiến hành chọn các chế độ. Sau khi kết thúc chế độ bất kỳ chương trình sẽ tự động chuyển về giao diện chính để người khác sử dụng. Lưu đồ chương trình con chọn chế độ: Bắt đầu S Chọn chế độ Chọn chế độ S Chọn chế độ S Gửi Đồ Lấy Đồ Thêm Vân Tay Đ Đ Đ Chương trình Chương trình Chương trình gửi đồ lấy đồ thêm vân tay Hiển thị giao diện chính Hình 4.14. Lưu đồ chương trình con chọn chế độ Giải thích lưu đồ: Chương trình chọn chế độ bao gồm 3 chương trình con tương ứng với 3 chế độ: - Chế độ gửi đồ: Khi chọn “GỬI ĐỒ” trên màn hình thì sẽ chuyển qua hiển thị giao diện và thực hiện chương trình của chế độ gửi đồ . - Chế độ lấy đồ: Khi chọn “LẤY ĐỒ” trên màn hình thì sẽ chuyển qua hiển thị giao diện và thực hiện chương trình của chế độ lấy đồ. - Chế độ thêm vân tay: Khi chọn “ THÊM VÂN TAY” trên màn hình thì sẽ chuyển qua hiển thị giao diện và thực hiện chương trình của chế độ thêm vân tay. Lưu đồ của chương trình gửi đồ BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 50 CHƯƠNG 4: THI CÔNG HỆ THỐNG Bắt đầu Còn tủ đồ Thông báo tủ trống đã đầy Yêu cầu quét vân tay S S Người dùng Nhận dạng bấm thoát được vân tay Đ Đ Lưu ID vân tay Mở tủ đồ còn trống Hiển thị giao diện chính Hình 4.15. Lưu đồ chương trình gửi đồ Giải thích lưu đồ: Sau khi chọn chế độ gửi đồ thì hệ thống kiểm tra xem tủ đồ có còn ngăn trống, nếu vẫn còn thì yêu cầu người dùng đưa vân tay lên cảm biến để quét. Hệ thống sẽ kiểm tra vân tay đó có trong các mẫu vân đã được lưu hay không, nếu có thì ID vân tay sẽ được lưu vào để lấy đồ sau này, mở tủ còn trống cho người dùng và quay lại hiển thị giao diện chính. Nếu vân tay không có trong mẫu đã có, người dùng có thể bấm thoát ra màn hình chính để thêm vân tay hoặc quét lần nữa để kiểm tra lại. Trong trường hợp tủ đã đầy thì màn hình LCD hiện thông báo và quay về màn hình chính. Lưu đồ của chương trình lấy đồ BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 51 CHƯƠNG 4: THI CÔNG HỆ THỐNG Bắt đầu Yêu cầu quét vân tay S S Người dùng Tìm thấy ID bấm thoát phù hợp Đ Đ Mở tủ đồ đã gửi Xóa ID của tủ Hiển thị giao diện chính Hình 4.16. Lưu đồ chương trình lấy đồ Giải thích lưu đồ: Sau khi chọn chế độ gửi đồ thì hệ thống yêu cầu người dùng đưa vân tay lên cảm biến để quét. Hệ thống sẽ so sánh ID vân tay vừa quét được với các ID được lưu khi gửi đồ, nếu tìm thấy ID phù hợp thì mở tủ đồ gắn với ID đó cho người dùng lấy đồ, đồng thời xóa ID của tủ và biến tủ đó trở thành tủ trống. Kết thúc màn hình LCD hiển thị trở lại giao diện chính. Trong trường hợp không tìm thấy ID nào phù hợp, người dùng có thể bấm thoát ra, trở về giao diện chính hoặc đưa vân tay lên quét lần nữa để kiểm tra lại. Lưu đồ của chương trình thêm vân tay BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 52 CHƯƠNG 4: THI CÔNG HỆ THỐNG Bắt đầu Yêu cầu nhập mật khẩu S Người dùng Mật khẩu đúng bấm thoát S Đ Yêu cầu quét vân tay lần 1 Đ Yêu cầu quét vân tay lần 2 Xác nhận đúng mẫu vân tay S Đ Lưu vân tay vào hệ thốngĐ Thông báo thêm thành công Hiển thị giao diện chính Hình 4.17. Lưu đồ chương trình thêm vân tay Giải thích lưu đồ: Vì đối tượng hướng đến của sản phẩm là giảng viên trong trường nên sau khi chọn chế độ thêm vân tay, hệ thống yêu cầu nhập mật mà chỉ giảng viên biết được. Nếu mật khẩu sai, yêu cầu nhập lại hoặc người dùng có thể bấm thoát để quay trở lại giao diện chính. Nếu mật khẩu đúng, hệ thống yêu cầu đưa vân tay cần thêm lên cảm biến để quét BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 53 CHƯƠNG 4: THI CÔNG HỆ THỐNG lần 1. Sau khi quét lần 1 xong, màn hình sẽ hiện lên yêu cầu quét lần 2. Khi quét lần 2, hệ thống sẽ so sánh kết quả quét với lần 1, nếu 2 mẫu vân tay có kết quả so sánh gần như tương đương thì hệ thống xác nhận đúng mẫu vân tay cần thêm, tiến hành lấy mẫu và lưu vào hệ thống, đồng thời hiện lên thông báo thêm thành công, kết thúc và trở về giao diện chính . Nếu kết quả so sánh không giống nhau thì hệ thống sẽ bắt quét lại lần 2 cho đến khi nào kết quả phù hợp thì mới thoát ra khỏi vòng lặp đó. Lưu đồ của chương trình con quét vân tay của chế độ gửi đồ và lấy đồ Bắt đầu Quét vân tay và tạo ra một ảnh Chuyển đổi ảnh Kết thúc Hình 4.18. Lưu đồ của chương trình con quét vân tay của chế độ gửi đồ và lấy đồ Lưu đồ chương trình con quét vân tay của chế độ thêm vân tay BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 54 CHƯƠNG 4: THI CÔNG HỆ THỐNG Bắt đầu Chuyển đổi Nhập ID hình ảnh vừa tạo Quét vân tay Tạo ra 1 tệp mẫu và tạo ra một và lưu nó vào bộ ảnh nhớ tạm thời Chuyển đổi Lưu mẫu vào bộ hình ảnh vừa nhớ dài hạn và tạo thêm ID Quét vân tay và tạo ra một Kết thúc ảnh Hình 4.19. Lưu đồ chương trình con quét vân tay của chế độ thêm vân tay Giải thích lưu đồ: Khi lựa chọn chế độ thêm vân tay, chương trình con này sẽ hoạt động trong hai bước quét vân tay để thêm vân tay vào hệ thống.Đầu tiên người dùng cần nhập ID của mình tương ứng với vân tay cần thêm, trong đồ án này nhóm cho vân tay chạy tự động bắt đầu từ 1. Đưa vân tay lên, cảm biến sẽ quét, lấy dữ liệu và tạo ra một hình ảnh. Sau đó sẽ chuyển đổi hình ảnh vừa tạo ra. Trải qua hai lần tạo ảnh và chuyển đổi, module sẽ kết hợp so sánh hai hình ảnh vân tay này để tạo ra một mẫu và lưu vào bộ nhớ tạm thời. Cuối cùng module lưu mẫu và thêm ID của mẫu đó vào bộ nhớ dài hạn. Lưu đồ của ESP8266 BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 55 CHƯƠNG 4: THI CÔNG HỆ THỐNG Bắt đầu Kết nối ESP với Wifi Khởi tạo kết nối giữa ESP và Firebase Đọc dữ liệu điều khiển về từ Firebase Truyền, nhận dữ liệu với Arduino Đọc thời gian từ NTP Gửi dữ liệu lên Firebase Mất kết nối Wifi S Đ Hình 4.20. Lưu đồ của ESP8266 Giải thích lưu đồ: Kết nối ESP với wifi, khởi tạo kết nối giữa ESP với cơ sở dữ liệu Firebase. Nếu có lệnh điều khiển từ ứng dụng Android thì giá trị của các biến thay đổi trên cơ sở dữ liệu Firebase, ESP đọc dữ liệu về từ Firebase và truyền dữ liệu điều khiển về Arduino. Sau đó ESP cũng nhận dữ liệu từ Arduino, thời gian từ hệ thống đồng bộ thời gian NTP và tiến hành gửi dữ liệu đó lên Firebase để cập nhật thời gian và tình trạng của các ngăn tủ. BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 56 CHƯƠNG 4: THI CÔNG HỆ THỐNG Quá trình lặp lại tiếp tục bằng việc đọc dữ liệu điều khiển từ Firebase về. Trong quá trình truyền nhận, nếu wifi bị mất kết nối thì sẽ khởi tạo lại kết nối giữa ESP và wifi. 4.4.2 Phần mềm lập trình cho vi điều khiển a. Giới thiệu phần mềm lập trình aduino IDE Môi trường phát triển tích hợp (IDE) của Arduino là một ứng dụng nền tảng được viết bằng Java, và từ IDE này sẽ được sử dụng cho Ngôn ngữ lập trình xử lý (Processing programming language) và project Wiring. Công cụ này được đội ngũ kĩ sư của Arduino phát triển và có thể chạy trên Windows, MAC OS X và Linux. Nó được thiết kế để dành cho những người mới tập tành làm quen với lĩnh vực phát triển phần mềm. Nó bao gồm một chương trình code editor với các chức năng như đánh dấu cú pháp, tự động brace matching, và tự động canh lề, cũng như compile (biên dịch) và upload chương trình lên board chỉ với 1 cú click chuột. Một chương trình hoặc code viết cho Arduino được gọi là một sketch. Các chương trình Arduino được viết bằng C hoặc C++. Arduino IDE đi kèm với một thư viện phần mềm được gọi là "Wiring", từ project Wiring gốc, có thể giúp các thao tác input/output được dễ dàng hơn. Hình 1Hình 4.22. Giao diện phần mềm lập trình Arduino IDE Hình 4.21. Giao diện phần mềm lập trình Arduino IDE BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 57 CHƯƠNG 4: THI CÔNG HỆ THỐNG 1) Vùng lệnh: bao gồm các nút lệnh menu (File, Edit, Sketch, Tools, Help). Phía dưới là các icon cho phép sử dụng nhanh các chức năng thường dùng của IDE được miêu tả như hình sau: 2) Vùng viết chương trình: Các đoạn code sẽ được viết trong vùng này. Người dùng chỉ cần định nghĩa 2 hàm để tạo ra một chương trình vòng thực thi (cyclic executive) có thể chạy được: + Setup(): hàm này chạy mỗi khi khởi động một chương trình, dùng để thiết lập các cài đặt + Loop(): hàm này được gọi lặp lại cho đến khi tắt nguồn board mạch 3) Vùng thông báo (Debug): Những thông báo từ IDE sẽ được hiển thị tại đây. Để ý rằng góc dưới cùng bên phải hiển thị loại board Arduino và cổng COM được sử dụng. Luôn chú ý tới mục này bởi nếu chọn sai loại board hoặc cổng COM thì sẽ không thể upload được code của mình. b. Viết chương trình hệ thống Phần này sẽ được trình bày ở phần phụ lục. 4.4.3 Phần mềm lập trình cho điện thoại, máy tính Giới thiệu phần mềm Android Studio BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 58 CHƯƠNG 4: THI CÔNG HỆ THỐNG Hình 4.22. Giao diện phần mềm Android Studio Hiện nay, ứng dụng Android có thể được viết bằng nhiều phần mềm như Visual Studio, Android Studio, MIT AppInventor, Eclipse, ...Trong số đó thì Android Studio là phần mềm được Google hỗ trợ mạnh mẽ và nhóm chọn phần mềm này để viết ứng dụng điều khiển ,hiển thị các thông số của tủ đồ. Android Studio là một phần mềm bao gồm các công cụ khác nhau dùng để phát triển ứng dụng chạy trên thiết bị sử dụng hệ điều hành Android như smartphone, tablet, ...Android Studio được đóng gói với một bộ code editor, debugger, các công cụ performance tool và một hệ thống build/ deploy (trong đó có trình giả lập simulator để giả lập môi trường của thiết bị điện thoại hoặc tablet trên máy tính) cho phép các lập trình viên có thể nhanh chóng phát triển ứng dụng từ đơn giản đến phức tạp. Trong lập trình Android Studio có 3 bước quan trọng là thiết kế giao diện, ánh xạ và lập trình Java để kết nối tới các đối tượng trong layout. - Thiết kế giao diện: sắp xếp các đối tượng như Image, View, TextView, Button trong các layout hỗ trợ sẵn như Linear Layout, Relative Layout, BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 59 CHƯƠNG 4: THI CÔNG HỆ THỐNG Hình 4.23. Giao diện phần thiết kế giao diện cho ứng dụng - Ánh xạ: đây là giai đoạn kết nối các đối tượng trong giao diện với các câu lệnh để điều khiển các đối tượng đó. Hình 4.24. Ánh xạ các đối tượng trong giao diện với các câu lệnh - Lập trình Java: thực hiện các lệnh viết trên nền tảng Java để tác động tới các đối tượng trong layout, gửi dữ liệu lên Firebase, kích hoạt Countdown Timer BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 60 CHƯƠNG 4: THI CÔNG HỆ THỐNG Hình 4.25. Giao diện phần lập trình Java 4.5 VIẾT TÀI LIỆU HƯỚNG DẪN SỬ DỤNG, THAO TÁC Hướng dẫn sử dụng sản phẩm Bước 1: Cấp nguồn cho hệ thống. Hệ thống sử dụng nguồn từ mạch giảm áp LM2596 khi cấp nguồn trực tiếp 220VAC. Đợi hệ thống khởi động, màn hình LCD hiển thi giao diện chính của chương trình. Có ba chế độ là gửi đồ, lấy đồ và thêm vân tay. Hình 4.26. Giao diện chính của hệ thống Bước 2: Khi chọn chế độ gửi đồ, cảm biến vân tay sẽ sáng lên, LCD hiện yêu cầu người dùng đưa vân tay đã có mẫu trong bộ nhớ vào cảm biến để quét. Nếu chưa có mẫu vân tay, người dùng có thể nhấn nút thoát ra giao diện chính để thêm vân tay. Nếu quét và gửi đồ thành công, LCD sẽ hiện thông báo và cho biết thứ tự ngăn tủ của người dùng. BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 61 CHƯƠNG 4: THI CÔNG HỆ THỐNG Hình 4.27. Quét vân tay gửi đồ Hình 4.28. Gửi đồ thành công Bước 3: Khi chọn chế độ lấy đồ, cảm biến vân tay sẽ sáng lên, LCD hiện yêu cầu người dùng đưa vân tay đã sử dụng khi gửi đồ vào cảm biến để quét. Hệ thống kiểm tra vân tay với mẫu trong bộ nhớ và lấy ID tương ứng so sánh với các ID được lưu. Nếu không tìm thấy, cảm biến sẽ tắt trong khoảng một giây và sáng ngay để người dùng quét lại. Ngược lại LCD thông báo lấy đồ thành công và cho biết thứ tự ngăn tủ của người dùng phòng trường hợp quên tủ của mình. BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 62 CHƯƠNG 4: THI CÔNG HỆ THỐNG Hình 4.29. Quét vân tay lấy đồ Hình 4.30. Thông báo lấy đồ thành công Bước 4: Khi chọn chế độ thêm vân tay, người dùng sẽ được yêu cầu nhập mật khẩu. Vì đối tượng hướng tới của sản phẩm là giảng viên nên mật khẩu này chỉ giảng viên biết được. Sau khi nhập mật khẩu thành công, cảm biến vân tay sẽ sáng lên, LCD hiện thông báo yêu cầu người dùng đưa vân tay cần thêm vào cảm biến để quét lần 1. Sau khi quét lần 1 xong, màn hình sẽ hiện lên yêu cầu quét lần 2. Khi quét lần 2, hệ thống sẽ so sánh kết quả quét với lần 1, nếu 2 mẫu vân tay có kết quả so sánh gần như tương đương thì hệ thống xác nhận đúng mẫu vân tay cần thêm và tiến hành lấy mẫu, lưu mẫu vào hệ thống, đồng thời hiện lên thông báo thêm thành công, kết thúc và trở về giao diện chính. Nếu kết quả so sánh không giống nhau thì hệ thống sẽ bắt quét lại lần 2 cho đến khi nào kết quả phù hợp thì mới thoát ra. BỘ M...131, 50); myGLCD.print(":", 176, 50); //--------------------------------------------------- if (day / 10 % 10 == 0) { myGLCD.printNumI(0, 120, 30); myGLCD.printNumI(day % 10, 135, 30); } else { myGLCD.printNumI(day, 120, 30, 2); } //--------------------------------------------------- if (month / 10 % 10 == 0) { myGLCD.printNumI(0, 166, 30); myGLCD.printNumI(month % 10, 181, 30); } else { myGLCD.printNumI(month, 166, 30, 2); } //--------------------------------------------------- if (second / 10 % 10 == 0) { myGLCD.printNumI(0, 190, 50); myGLCD.printNumI(second % 10, 205, 50); } else { myGLCD.printNumI(second, 190, 50, 2); } //-------------------------------------------------- if (minute / 10 % 10 == 0) { myGLCD.printNumI(0, 145, 50); myGLCD.printNumI(minute % 10, 160, 50); } else { myGLCD.printNumI(minute, 145, 50, 2); } //-------------------------------------------------- if (hour / 10 % 10 == 0) { BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 85 PHỤ LỤC myGLCD.printNumI(0, 100, 50); myGLCD.printNumI(hour % 10, 115, 50); } else { myGLCD.printNumI(hour, 100, 50, 2); } //-------------------------------------------------- switch (wday) { case 1: myGLCD.print("SUN", 55, 30); break; case 2: myGLCD.print("MON", 55, 30); break; case 3: myGLCD.print("TUE", 55, 30); break; case 4: myGLCD.print("WED", 55, 30); break; case 5: myGLCD.print("THU", 55, 30); break; case 6: myGLCD.print("FRI", 55, 30); break; case 7: myGLCD.print("SAT", 55, 30); break; } } } //------------------------------------------------------------------------- ----------- void updateStr(int val) { if (RANGE_stCurrent < 4) { stCurrent[RANGE_stCurrent] = val; RANGE_stCurrent++; myGLCD.setColor(0, 0, 0); myGLCD.setBackColor(255, 255, 255); myGLCD.print(stCurrent, CENTER, 202); } } //------------------------------------------------------------------------- -------- //VE MAN HINH CHU void drawHomeScreen() { myGLCD.setColor(255, 255, 255); myGLCD.fillRoundRect (1, 1, 319, 239); myGLCD.setBackColor(255, 255, 255); myGLCD.setColor(0, 0, 0); myGLCD.setFont(BigFont); myGLCD.print("TU DO GIANG VIEN", CENTER, 10); myGLCD.setColor(255, 0, 0); myGLCD.drawLine(0, 67, 319, 67); myGLCD.setColor(0, 255, 255); myGLCD.fillRoundRect (35, 80, 285, 120); myGLCD.setColor(0, 0, 0); myGLCD.drawRoundRect (35, 80, 285, 120); BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 86 PHỤ LỤC myGLCD.setFont(BigFont); myGLCD.setBackColor(0, 255, 255); myGLCD.print("GUI DO", CENTER, 92); myGLCD.setColor(255, 114, 86); myGLCD.fillRoundRect (35, 130, 285, 170); myGLCD.setColor(0, 0, 0); myGLCD.drawRoundRect (35, 130, 285, 170); myGLCD.setFont(BigFont); myGLCD.setBackColor(255, 114, 86); myGLCD.print("LAY DO", CENTER, 142); myGLCD.setColor(255, 255, 0); myGLCD.fillRoundRect (35, 180, 285, 220); myGLCD.setColor(0, 0, 0); myGLCD.drawRoundRect (35, 180, 285, 220); myGLCD.setFont(BigFont); myGLCD.setBackColor(255, 255, 0); myGLCD.print("THEM VAN TAY", CENTER, 192); } //------------------------------------------------------------------------- ------- // VE HIEU UNG void drawFrame(int x1, int y1, int x2, int y2) { myGLCD.setColor(255, 0, 0); myGLCD.drawRoundRect (x1, y1, x2, y2); while (myTouch.dataAvailable()) myTouch.read(); myGLCD.setColor(255, 255, 255); myGLCD.drawRoundRect (x1, y1, x2, y2); } //------------------------------------------------------------------------- ------- // TRANG1_GUIDO void drawTRANG1_GUIDO() { myGLCD.setColor(255, 255, 255); myGLCD.fillRoundRect (1, 1, 319, 239); myGLCD.setColor(255, 0, 0); myGLCD.fillRoundRect (10, 10, 60, 36); myGLCD.setColor(0, 0, 0); myGLCD.drawRoundRect (10, 10, 60, 36); myGLCD.setColor(255, 255, 255); myGLCD.setFont(BigFont); myGLCD.setBackColor(255, 0, 0); myGLCD.print("<-", 18, 15); myGLCD.setColor(0, 0, 0); myGLCD.setBackColor(255, 255, 255); myGLCD.setFont(SmallFont); myGLCD.print("TRO VE MAN HINH CHINH", 70, 18); myGLCD.setColor(0, 0, 0); myGLCD.setFont(BigFont); myGLCD.setBackColor(255, 255, 255); myGLCD.print("QUET VAN TAY ", CENTER, 113); myGLCD.print("DE GUI DO", CENTER, 133); } //------------------------------------------------------------------------- ------- void drawTRANG2_GUIDO() { myGLCD.setColor(255, 255, 255); myGLCD.fillRoundRect (1, 1, 319, 239); myGLCD.setColor(0, 0, 0); myGLCD.setFont(BigFont); myGLCD.setBackColor(255, 255, 255); BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 87 PHỤ LỤC myGLCD.print("GUI DO THANH CONG!", CENTER, 107); myGLCD.print("MO TU", CENTER, 127); myGLCD.setFont(SevenSegNumFont); myGLCD.printNumI(i + 1, CENTER, 147); } //------------------------------------------------------------------------- ------- void drawTRANG3_GUIDO() { myGLCD.setColor(255, 255, 255); myGLCD.fillRoundRect (1, 1, 319, 239); myGLCD.setColor(0, 0, 0); myGLCD.setFont(BigFont); myGLCD.setBackColor(255, 255, 255); myGLCD.print("KHONG CON TU TRONG", CENTER, 107); myGLCD.print("HAY QUAY LAI SAU.", CENTER, 127); } //------------------------------------------------------------------------- ------- void drawTRANG1_THEMVANTAY() { myGLCD.setColor(255, 255, 255); myGLCD.fillRoundRect (1, 1, 319, 239); myGLCD.setColor(255, 0, 0); myGLCD.fillRoundRect (10, 10, 60, 36); myGLCD.setColor(0, 0, 0); myGLCD.drawRoundRect (10, 10, 60, 36); myGLCD.setFont(BigFont); myGLCD.setBackColor(255, 0, 0); myGLCD.setColor(255, 255, 255); myGLCD.print("<-", 18, 15); myGLCD.setColor(0, 0, 0); myGLCD.setBackColor(255, 255, 255); myGLCD.setFont(SmallFont); myGLCD.print("TRO VE MAN HINH CHINH", 70, 18); myGLCD.setColor(0, 0, 0); myGLCD.setFont(BigFont); myGLCD.setBackColor(255, 255, 255); myGLCD.print("NEU CHUA CO MAT KHAU", CENTER, 113); myGLCD.print("GIANG VIEN LIEN HE", CENTER, 133); myGLCD.print("SDT: 0354436396", CENTER, 153); myGLCD.setColor(127, 255, 0); myGLCD.fillRoundRect (35, 63, 285, 103); myGLCD.setColor(0, 0, 0); myGLCD.drawRoundRect (35, 63, 285, 103); myGLCD.setFont(BigFont); myGLCD.setBackColor(127, 255, 0); myGLCD.print("NHAP MAT KHAU", CENTER, 76); } //------------------------------------------------------------------------- ------- void drawPass() { myGLCD.setColor(255, 255, 255); myGLCD.fillRoundRect (1, 1, 319, 239); for (x = 0; x < 5; x++) { myGLCD.setColor(0, 0, 255); myGLCD.fillRoundRect (10 + (x * 60), 10, 60 + (x * 60), 60); myGLCD.setColor(255, 255, 255); myGLCD.drawRoundRect (10 + (x * 60), 10, 60 + (x * 60), 60); myGLCD.setFont(BigFont); myGLCD.setBackColor(0, 0, 255); myGLCD.printNumI(x + 1, 27 + (x * 60), 27); } BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 88 PHỤ LỤC for (x = 0; x < 5; x++) { myGLCD.setColor(0, 0, 255); myGLCD.fillRoundRect (10 + (x * 60), 70, 60 + (x * 60), 120); myGLCD.setColor(255, 255, 255); myGLCD.drawRoundRect (10 + (x * 60), 70, 60 + (x * 60), 120); if (x < 4) myGLCD.printNumI(x + 6, 27 + (x * 60), 87); } myGLCD.print("0", 267, 87); myGLCD.setColor(128, 128, 128); myGLCD.fillRoundRect (10, 130, 100, 180); myGLCD.setColor(255, 255, 255); myGLCD.drawRoundRect (10, 130, 100, 180); myGLCD.setBackColor(128, 128, 128); myGLCD.print("Back", 23, 147); myGLCD.setColor(255, 0, 0); myGLCD.fillRoundRect (110, 130, 200, 180); myGLCD.setColor(255, 255, 255); myGLCD.drawRoundRect (110, 130, 200, 180); myGLCD.setBackColor(255, 0, 0); myGLCD.print("Clear", 116, 147); myGLCD.setColor(0, 255, 0); myGLCD.fillRoundRect (210, 130, 300, 180); myGLCD.setColor(255, 255, 255); myGLCD.drawRoundRect (210, 130, 300, 180); myGLCD.setBackColor(0, 255, 0); myGLCD.print("Enter", 216, 147); myGLCD.setBackColor (0, 0, 0); myGLCD.setColor(255, 255, 255); myGLCD.fillRoundRect (10, 190, 300, 230); } //------------------------------------------------------------------------- ------- void drawTRANG2_THEMVANTAY() { myGLCD.setColor(255, 255, 255); myGLCD.fillRoundRect (1, 1, 319, 239); myGLCD.setColor(0, 0, 0); myGLCD.setFont(BigFont); myGLCD.setBackColor(255, 255, 255); myGLCD.print("DE NGON TAY VAO", CENTER, 50); myGLCD.print("CAM BIEN", CENTER, 70); myGLCD.print("QUET LAN 1", CENTER, 112); } //------------------------------------------------------------------------- ------- void drawTRANG3_THEMVANTAY() { myGLCD.setColor(255, 255, 255); myGLCD.fillRoundRect (1, 1, 319, 239); myGLCD.setColor(0, 0, 0); myGLCD.setFont(BigFont); myGLCD.setBackColor(255, 255, 255); myGLCD.print("DE NGON TAY VAO", CENTER, 50); myGLCD.print("CAM BIEN", CENTER, 70); myGLCD.print("QUET LAN 2", CENTER, 112); } //------------------------------------------------------------------------- -------- void drawTRANG4_THEMVANTAY() { myGLCD.setColor(255, 255, 255); BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 89 PHỤ LỤC myGLCD.fillRoundRect (1, 1, 319, 239); myGLCD.setColor(0, 0, 0); myGLCD.setFont(BigFont); myGLCD.setBackColor(255, 255, 255); myGLCD.print("THEM VAN TAY", CENTER, 50); myGLCD.print("THANH CONG!", CENTER, 70); } //------------------------------------------------------------------------- -------- void drawTRANG1_LAYDO() { myGLCD.setColor(255, 255, 255); myGLCD.fillRoundRect (1, 1, 319, 239); myGLCD.setColor(255, 0, 0); myGLCD.fillRoundRect (10, 10, 60, 36); myGLCD.setColor(0, 0, 0); myGLCD.drawRoundRect (10, 10, 60, 36); myGLCD.setFont(BigFont); myGLCD.setBackColor(255, 0, 0); myGLCD.setColor(255, 255, 255); myGLCD.print("<-", 18, 15); myGLCD.setColor(0, 0, 0); myGLCD.setBackColor(255, 255, 255); myGLCD.setFont(SmallFont); myGLCD.print("TRO VE MAN HINH CHINH", 70, 18); myGLCD.setFont(BigFont); myGLCD.print("QUET VAN TAY DA LUU", CENTER, 113); myGLCD.print("KHI GUI DO", CENTER, 133); } //---------------------------------------------------------------------- void drawTRANG2_LAYDO() { myGLCD.setColor(255, 255, 255); myGLCD.fillRoundRect (1, 1, 319, 239); myGLCD.setColor(0, 0, 0); myGLCD.setFont(BigFont); myGLCD.setBackColor(255, 255, 255); myGLCD.print("LAY DO THANH CONG!", CENTER, 107); myGLCD.print("MO TU", CENTER, 127); myGLCD.setFont(SevenSegNumFont); myGLCD.printNumI(i + 1, CENTER, 147); } //------------------------------------------------------------------------- -------- uint8_t getFingerprintID() { uint8_t p = finger.getImage(); switch (p) { case FINGERPRINT_OK: break; case FINGERPRINT_NOFINGER: return p; case FINGERPRINT_PACKETRECIEVEERR: return p; case FINGERPRINT_IMAGEFAIL: return p; default: return p; } // OK success! p = finger.image2Tz(); BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 90 PHỤ LỤC switch (p) { case FINGERPRINT_OK: break; case FINGERPRINT_IMAGEMESS: return p; case FINGERPRINT_PACKETRECIEVEERR: return p; case FINGERPRINT_FEATUREFAIL: return p; case FINGERPRINT_INVALIDIMAGE: return p; default: return p; } // OK converted! p = finger.fingerFastSearch(); if (p == FINGERPRINT_OK) { Serial.println("Found a print match!"); } else if (p == FINGERPRINT_PACKETRECIEVEERR) { return p; } else if (p == FINGERPRINT_NOTFOUND) { return p; } else { return p; } // found a match! return finger.fingerID; } //------------------------------------------------------------------------- -------- //QUET VAN TAY GUI DO int getFingerprintIDez1() { uint8_t p = finger.getImage(); if (p != FINGERPRINT_OK) return -1; p = finger.image2Tz(); if (p != FINGERPRINT_OK) return -1; p = finger.fingerFastSearch(); if (p != FINGERPRINT_OK) return -1; // found a match! for (i = 0; i < 6; i = i + 1) { if (tt_tu[i] == 0) { tt_tu[i] = 1; thoigian_tu_sec[i] = second; thoigian_tu_min[i] = minute; demthoigian[i] = 0; m = save[i]; myGLCD.clrScr(); drawTRANG2_GUIDO(); delay(2000); myGLCD.clrScr(); drawHomeScreen(); currentPage = '0'; break; } } j = i; vantay_tu[j] = finger.fingerID; BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 91 PHỤ LỤC digitalWrite(j + 8, HIGH); delay(4000); digitalWrite(j + 8, LOW); return finger.fingerID; } //------------------------------------------------------------------------- -------- //QUET VAN TAY LAY DO int getFingerprintIDez2() { uint8_t p = finger.getImage(); if (p != FINGERPRINT_OK) return -1; p = finger.image2Tz(); if (p != FINGERPRINT_OK) return -1; p = finger.fingerFastSearch(); if (p != FINGERPRINT_OK) return -1; // found a match! for (i = 0; i < 6; i = i + 1) { if (vantay_tu[i] == finger.fingerID) { tt_tu[i] = 0; vantay_tu[i] = 0; demthoigian[i] = 72; myGLCD.clrScr(); drawTRANG2_LAYDO(); delay(2000); myGLCD.clrScr(); drawHomeScreen(); currentPage = '0'; break; } } k = i; digitalWrite(k + 8, HIGH); delay(4000); digitalWrite(k + 8, LOW); return finger.fingerID; } //------------------------------------------------------------------------- ------- //THEM VAN TAY uint8_t getFingerprintEnroll() { int p = -1; while (p != FINGERPRINT_OK) { p = finger.getImage(); switch (p) { case FINGERPRINT_OK: break; case FINGERPRINT_NOFINGER: break; case FINGERPRINT_PACKETRECIEVEERR: break; case FINGERPRINT_IMAGEFAIL: break; default: break; } } BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 92 PHỤ LỤC // OK success! p = finger.image2Tz(1); switch (p) { case FINGERPRINT_OK: myGLCD.clrScr(); drawTRANG3_THEMVANTAY(); break; case FINGERPRINT_IMAGEMESS: return p; case FINGERPRINT_PACKETRECIEVEERR: return p; case FINGERPRINT_FEATUREFAIL: return p; case FINGERPRINT_INVALIDIMAGE: return p; default: return p; } //--------------------------------------------------- //------------------------------------- Serial.println("Remove finger"); delay(1500); p = 0; while (p != FINGERPRINT_NOFINGER) { p = finger.getImage(); } p = -1; while (p != FINGERPRINT_OK) { p = finger.getImage(); switch (p) { case FINGERPRINT_OK: break; case FINGERPRINT_NOFINGER: break; case FINGERPRINT_PACKETRECIEVEERR: break; case FINGERPRINT_IMAGEFAIL: break; default: break; } } // OK success! p = finger.image2Tz(2); switch (p) { case FINGERPRINT_OK: Serial.println("Image converted"); break; case FINGERPRINT_IMAGEMESS: return p; case FINGERPRINT_PACKETRECIEVEERR: return p; case FINGERPRINT_FEATUREFAIL: return p; case FINGERPRINT_INVALIDIMAGE: return p; default: return p; } BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 93 PHỤ LỤC // OK converted! p = finger.createModel(); if (p == FINGERPRINT_OK) { Serial.println("Prints matched!"); } else if (p == FINGERPRINT_PACKETRECIEVEERR) { return p; } else if (p == FINGERPRINT_ENROLLMISMATCH) { return p; } else { return p; } p = finger.storeModel(id); if (p == FINGERPRINT_OK) { myGLCD.clrScr(); drawTRANG4_THEMVANTAY(); delay(2000); myGLCD.clrScr(); drawHomeScreen(); currentPage = '0'; } else if (p == FINGERPRINT_PACKETRECIEVEERR) { return p; } else if (p == FINGERPRINT_BADLOCATION) { return p; } else if (p == FINGERPRINT_FLASHERR) { return p; } else { return p; } } //------------------------------------------------------------------------- ------- void setup() { Wire.begin(); // setTime(22, 32, 00, 2, 16, 12, 19); Serial.begin(9600); pinMode(8, OUTPUT); pinMode(9, OUTPUT); pinMode(10, OUTPUT); pinMode(11, OUTPUT); pinMode(12, OUTPUT); pinMode(13, OUTPUT); digitalWrite(8, LOW); digitalWrite(9, LOW); digitalWrite(10, LOW); digitalWrite(11, LOW); digitalWrite(12, LOW); digitalWrite(13, LOW); Serial2.begin(9600); finger.begin(57600); finger.getTemplateCount(); //--------------------------------------------------------- myGLCD.InitLCD(); myGLCD.clrScr(); myGLCD.setBrightness(16); myTouch.InitTouch(); myTouch.setPrecision(PREC_HI); drawHomeScreen(); currentPage = '0'; m = 0; } BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 94 PHỤ LỤC void loop() { readDS1307(); data_send = tt_tu[0] | tt_tu[1] << 1 | tt_tu[2] << 2 | tt_tu[3] << 3 | tt_tu[4] << 4 | tt_tu[5] << 5; if (s.available() > 0) { data7 = s.read(); } s.write(data_send); s.write(m); data_send = 0; m = 0; //-------------------------------------- if (second == thoigian_tu_sec[0]) { demthoigian[0]++; } if ((demthoigian[0] == 70) || ((data7 & 0x01) == 0x01)) { digitalWrite(8, HIGH); delay(4000); digitalWrite(8, LOW); data7 = 0; thoigian_tu_sec[0] = 62; demthoigian[0] = 72; tt_tu[0] = 0; vantay_tu[0] = 0; } //-------------------------------------- if (second == thoigian_tu_sec[1]) { demthoigian[1]++; } if ((demthoigian[1] == 70) || ((data7 & 0x02) == 0x02)) { digitalWrite(9, HIGH); delay(4000); digitalWrite(9, LOW); data7 = 0; thoigian_tu_sec[1] = 62; demthoigian[1] = 72; tt_tu[1] = 0; vantay_tu[1] = 0; } //---------------------------------------- if (second == thoigian_tu_sec[2]) { demthoigian[2]++; } if ((demthoigian[2] == 70) || ((data7 & 0x04) == 0x04)) { digitalWrite(10, HIGH); delay(4000); digitalWrite(10, LOW); data7 = 0; thoigian_tu_sec[2] = 62; demthoigian[2] = 72; tt_tu[2] = 0; vantay_tu[2] = 0; } //---------------------------------------- if (second == thoigian_tu_sec[3]) { demthoigian[3]++; } if ((demthoigian[3] == 70) || ((data7 & 0x08) == 0x08)) { digitalWrite(11, HIGH); delay(4000); digitalWrite(11, LOW); data7 = 0; thoigian_tu_sec[3] = 62; demthoigian[3] = 72; BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 95 PHỤ LỤC tt_tu[3] = 0; vantay_tu[3] = 0; } //------------------------------------------ if ((second == thoigian_tu_sec[4]) && (minute == thoigian_tu_min[4])) { demthoigian[4]++; } if ((demthoigian[4] == 70) || ((data7 & 0x10) == 0x10)) { digitalWrite(12, HIGH); delay(4000); digitalWrite(12, LOW); data7 = 0; thoigian_tu_sec[4] = 62; demthoigian[4] = 72; tt_tu[4] = 0; vantay_tu[4] = 0; } //------------------------------------------ if ((second == thoigian_tu_sec[5]) && (minute == thoigian_tu_min[5])) { demthoigian[5]++; } if ((demthoigian[5] == 70) || ((data7 & 0x20) == 0x20)) { digitalWrite(13, HIGH); delay(4000); digitalWrite(13, LOW); data7 = 0; thoigian_tu_sec[5] = 62; demthoigian[5] = 72; tt_tu[5] = 0; vantay_tu[5] = 0; } if ((data7 & 0x40) == 0x40) { digitalWrite(8, HIGH); digitalWrite(9, HIGH); digitalWrite(10, HIGH); digitalWrite(11, HIGH); digitalWrite(12, HIGH); digitalWrite(13, HIGH); delay(6000); digitalWrite(8, LOW); digitalWrite(9, LOW); digitalWrite(10, LOW); digitalWrite(11, LOW); digitalWrite(12, LOW); digitalWrite(13, LOW); thoigian_tu_sec[0] = 62; thoigian_tu_sec[1] = 62; thoigian_tu_sec[2] = 62; thoigian_tu_sec[3] = 62; thoigian_tu_sec[4] = 62; thoigian_tu_sec[5] = 62; demthoigian[0] = 72; demthoigian[1] = 72; demthoigian[2] = 72; demthoigian[3] = 72; demthoigian[4] = 72; demthoigian[5] = 72; tt_tu[0] = 0; tt_tu[1] = 0; tt_tu[2] = 0; tt_tu[3] = 0; tt_tu[4] = 0; tt_tu[5] = 0; vantay_tu[0] = 0; BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 96 PHỤ LỤC vantay_tu[1] = 0; vantay_tu[2] = 0; vantay_tu[3] = 0; vantay_tu[4] = 0; vantay_tu[5] = 0; } //----------------------------------------------------------------------- ------ if (currentPage == '0') { if (myTouch.dataAvailable()) { myTouch.read(); x = myTouch.getX(); y = myTouch.getY(); if ((x >= 35) && (x = 80) && (y <= 120)) { if ((tt_tu[0] == 1) && (tt_tu[1] == 1) && (tt_tu[2] == 1) && (tt_tu[3] == 1) && (tt_tu[4] == 1) && (tt_tu[5] == 1) ) { myGLCD.clrScr(); drawTRANG3_GUIDO(); delay(3000); myGLCD.clrScr(); drawHomeScreen(); currentPage = '0'; } else { drawFrame(35, 80, 285, 120); currentPage = '1'; myGLCD.clrScr(); drawTRANG1_GUIDO(); } } if ((x >= 35) && (x = 130) && (y <= 170)) { drawFrame(35, 130, 285, 170); currentPage = 'A'; myGLCD.clrScr(); drawTRANG1_LAYDO(); } if ((x >= 35) && (x = 180) && (y <= 220)) { drawFrame(35, 180, 285, 220); currentPage = '$'; myGLCD.clrScr(); drawTRANG1_THEMVANTAY(); } } } //----------------------------------------------------------------------- -- if (currentPage == '1') { if (myTouch.dataAvailable()) { myTouch.read(); x = myTouch.getX(); y = myTouch.getY(); if ((x >= 10) && (x = 10) && (y <= 36)) { drawFrame(10, 10, 60, 36); currentPage = '0'; // Indicates we are at home screen myGLCD.clrScr(); drawHomeScreen(); } } getFingerprintIDez1(); } //----------------------------------------------------------------------- -- if (currentPage == '$') { BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 97 PHỤ LỤC if (myTouch.dataAvailable()) { myTouch.read(); x = myTouch.getX(); y = myTouch.getY(); if ((x >= 10) && (x = 10) && (y <= 36)) { drawFrame(10, 10, 60, 36); currentPage = '0'; // Indicates we are at home screen myGLCD.clrScr(); drawHomeScreen(); } if ((x >= 35) && (x = 63) && (y <= 103)) { drawFrame(35, 133, 285, 183); currentPage = '*'; myGLCD.clrScr(); drawPass(); } } } //----------------------------------------------------------------------- -- if (currentPage == '*') { if (myTouch.dataAvailable()) { myTouch.read(); x = myTouch.getX(); y = myTouch.getY(); if ((y >= 10) && (y <= 60)) // Upper row { if ((x >= 10) && (x <= 60)) // Button: 1 { drawFrame(10, 10, 60, 60); updateStr('1'); } if ((x >= 70) && (x <= 120)) // Button: 2 { drawFrame(70, 10, 120, 60); updateStr('2'); } if ((x >= 130) && (x <= 180)) // Button: 3 { drawFrame(130, 10, 180, 60); updateStr('3'); } if ((x >= 190) && (x <= 240)) // Button: 4 { drawFrame(190, 10, 240, 60); updateStr('4'); } if ((x >= 250) && (x <= 300)) // Button: 5 { drawFrame(250, 10, 300, 60); updateStr('5'); } } if ((y >= 70) && (y <= 120)) // Center row { if ((x >= 10) && (x <= 60)) // Button: 6 { drawFrame(10, 70, 60, 120); updateStr('6'); } BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 98 PHỤ LỤC if ((x >= 70) && (x <= 120)) // Button: 7 { drawFrame(70, 70, 120, 120); updateStr('7'); } if ((x >= 130) && (x <= 180)) // Button: 8 { drawFrame(130, 70, 180, 120); updateStr('8'); } if ((x >= 190) && (x <= 240)) // Button: 9 { drawFrame(190, 70, 240, 120); updateStr('9'); } if ((x >= 250) && (x <= 300)) // Button: 0 { drawFrame(250, 70, 300, 120); updateStr('0'); } } if ((y >= 130) && (y <= 180)) // Upper row { if ((x >= 10) && (x <= 100)) // Button: Back { drawFrame(10, 130, 100, 180); myGLCD.clrScr(); drawTRANG1_THEMVANTAY(); currentPage = '$'; stCurrent[0] = '\0'; stCurrent[1] = '\0'; stCurrent[2] = '\0'; stCurrent[3] = '\0'; RANGE_stCurrent = 0; } if ((x >= 110) && (x <= 200)) // Button: Clear { drawFrame(110, 130, 200, 180); stCurrent[0] = '\0'; stCurrent[1] = '\0'; stCurrent[2] = '\0'; stCurrent[3] = '\0'; RANGE_stCurrent = 0; myGLCD.setColor(255, 255, 255); myGLCD.fillRect(10, 190, 300, 230); } if ((x >= 210) && (x <= 300)) // Button: Enter { drawFrame(210, 130, 300, 180); if ((stCurrent[0] == '1') && (stCurrent[1] == '1') && (stCurrent[2] == '1') && (stCurrent[3] == '1')) { myGLCD.clrScr(); id = id + 1; currentPage = '!'; drawTRANG2_THEMVANTAY(); stCurrent[0] = '\0'; stCurrent[1] = '\0'; stCurrent[2] = '\0'; stCurrent[3] = '\0'; RANGE_stCurrent = 0; } BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 99 PHỤ LỤC else { myGLCD.clrScr(); drawPass(); currentPage = '*'; stCurrent[0] = '\0'; stCurrent[1] = '\0'; stCurrent[2] = '\0'; stCurrent[3] = '\0'; RANGE_stCurrent = 0; } } } } } //----------------------------------------------------------------------- ---- if (currentPage == '!') { getFingerprintEnroll(); } //----------------------------------------------------------------------- ---- if (currentPage == 'A') { if (myTouch.dataAvailable()) { myTouch.read(); x = myTouch.getX(); y = myTouch.getY(); if ((x >= 10) && (x = 10) && (y <= 36)) { drawFrame(10, 10, 60, 36); currentPage = '0'; // Indicates we are at home screen myGLCD.clrScr(); drawHomeScreen(); } } getFingerprintIDez2(); } } Code Wifi ESP8266 #include #include #include #include #include #define FIREBASE_HOST "login-b86bc.firebaseio.com" #define WIFI_SSID "THOA_197" #define WIFI_PASSWORD "11223344" // int timezone = 7 * 3600; uint8_t data_send; int dst = 0; uint8_t sec_ht, min_gh, sec_gh, hr_ht; uint8_t data0, data6; uint8_t data7, data8, data9, data10, data11, data12, data_all; struct tm* p_tm; SoftwareSerial s(D6, D5); //RX, TX void setup() { Serial.begin(9600); s.begin(9600); while (!Serial) continue; BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 100 PHỤ LỤC // Két nối wifi. WiFi.begin(WIFI_SSID, WIFI_PASSWORD); Serial.print("connecting"); while (WiFi.status() != WL_CONNECTED) { Serial.print("."); delay(500); } Serial.println(); Serial.print("connected: "); Serial.println(WiFi.localIP()); configTime(timezone, dst, "pool.ntp.org", "time.nist.gov"); Firebase.begin(FIREBASE_HOST); } void loop() { //------------------------------------------------ time_t now = time(nullptr); tm* p_tm = localtime(&now); min_gh = p_tm->tm_min + 5; switch (min_gh) { case 60: min_gh = 0; p_tm->tm_hour = p_tm->tm_hour + 1; break; case 61: min_gh = 1; p_tm->tm_hour = p_tm->tm_hour + 1; break; case 62: min_gh = 2; p_tm->tm_hour = p_tm->tm_hour + 1; break; case 63: min_gh = 3; p_tm->tm_hour = p_tm->tm_hour + 1; break; case 64: min_gh = 4; p_tm->tm_hour = p_tm->tm_hour + 1; break; case 65: min_gh = 5; p_tm->tm_hour = p_tm->tm_hour + 1; break; } String DMY = String(p_tm->tm_mday) + String("/") + String(p_tm->tm_mon + 1) + String("/") + String(p_tm->tm_year + 1900); String HMS = String(p_tm->tm_hour) + String(":") + String(min_gh) + String(":") + String(p_tm->tm_sec); //----------------------------------------------- data_send = 0; data_send = data7 | data8 << 1 | data9 << 2 | data10 << 3 | data11 << 4 | data12 << 5 | data_all << 6 ; if (s.available() > 0) { data0 = s.read(); data6 = s.read(); Serial.print("Data receive: "); Serial.println(data0); Serial.print("Data receive 6: "); Serial.println(data6); BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 101 PHỤ LỤC while (s.available() > 0) s.read(); } s.write(data_send); Serial.print("Data sent: "); Serial.println(data_send); //--------------------------------------------------- switch (data6) { case 1: Firebase.setString("/ThoiGianTu/Date/Tu1", DMY); Firebase.setString("/ThoiGianTu/Time/Tu1", HMS); delay(500); break; case 2: Firebase.setString("/ThoiGianTu/Date/Tu2", DMY); Firebase.setString("/ThoiGianTu/Time/Tu2", HMS); delay(500); break; case 3: Firebase.setString("/ThoiGianTu/Date/Tu3", DMY); Firebase.setString("/ThoiGianTu/Time/Tu3", HMS); delay(500); break; case 4: Firebase.setString("/ThoiGianTu/Date/Tu4", DMY); Firebase.setString("/ThoiGianTu/Time/Tu4", HMS); delay(500); break; case 5: Firebase.setString("/ThoiGianTu/Date/Tu5", DMY); Firebase.setString("/ThoiGianTu/Time/Tu5", HMS); delay(500); break; case 6: Firebase.setString("/ThoiGianTu/Date/Tu6", DMY); Firebase.setString("/ThoiGianTu/Time/Tu6", HMS); delay(500); break; } data_all = Firebase.getString("/AdminDieuKhien/All").toInt(); data7 = Firebase.getString("/AdminDieuKhien/Tu1").toInt(); data8 = Firebase.getString("/AdminDieuKhien/Tu2").toInt(); data9 = Firebase.getString("/AdminDieuKhien/Tu3").toInt(); data10 = Firebase.getString("/AdminDieuKhien/Tu4").toInt(); data11 = Firebase.getString("/AdminDieuKhien/Tu5").toInt(); data12 = Firebase.getString("/AdminDieuKhien/Tu6").toInt(); Firebase.setString("/TinhTrangTu/Tu1", String(data0 & 0x01)); Firebase.setString("/TinhTrangTu/Tu2", String((data0 & 0x02) >> 1)); Firebase.setString("/TinhTrangTu/Tu3", String((data0 & 0x04) >> 2)); Firebase.setString("/TinhTrangTu/Tu4", String((data0 & 0x08) >> 3)); Firebase.setString("/TinhTrangTu/Tu5", String((data0 & 0x10) >> 4)); Firebase.setString("/TinhTrangTu/Tu6", String((data0 & 0x20) >> 5)); //-------------------------------------------------------- } BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 102

Các file đính kèm theo tài liệu này:

  • pdfdo_an_thiet_ke_va_thi_cong_tu_dung_vat_dung_cua_giang_vien_b.pdf
Tài liệu liên quan