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 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
----o0o----
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH
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
BM. ĐIỆN TỬ CÔNG NGHIỆP – Y SINH CÁN BỘ HƯỚNG DẪN
ii
CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM ĐỘC LẬP - TỰ DO - HẠNH PHÚC ----o0o----
TRƯỜNG ĐH SPKT TP. HỒ CHÍ MINH KHOA ĐIỆN-ĐIỆN TỬ BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – 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
Tuần/ngày Nội dung Xác nhận GVHD
Tìm hiểu về cảm biến vân tay R305.
Tìm hiểu Arduino Mega 2560 R3 và LCD TFT cảm ứng 3.2 inch. Giao tiếp giữa module cảm biến vân tay R305 và Arduino. Giao tiếp giữa LCD TFT cảm ứng, cảm biến thời gian thực DS1307 và Arduino.
Kết hợp giao tiếp và trao đổi dữ liệu giữa R305, LCD TFT cảm ứng, DS1307 và Arduino.
Tìm hiểu về Firebase cập nhật dữ liệu điều khiển giữa Firebase và ESP8266. Thiết kế ứng dụng trên điện thoại android. Tuần 3 09/09/2019 Tuần 4 16/09/2019 Tuần 5 23/08/2019 Tuần 6 30/09/2019 Tuần 7 07/10/2019 Tuần 8 14/10/2019 Tuần 9 21/10/2019 Tuần 10 28/10/2019
Tuần 11 04/11/2019 Thiết kế sơ đồ nguyên lý phần cứng của hệ thống. Thiết kế mạch PCB cho hệ thống. Viết chương trình arduino và ESP8266.
Thiết kế và thi công tủ đựng vật dụng.
Tiến hành chạy thử nghiệm phần cứng. Lắp ráp phần cứng vào tủ, đi dây và hoàn thiện. Kiểm tra lại phần cứng, giao tiếp giữa phần cứng và ứng dụng trên điện thoại. Kiểm tra lại toàn bộ hệ thống. Tiến hành viết báo cáo cho đề tài. Hoàn thiện đề tài.
Tuần 12 11/112019 Tuần 13 18/11/2019 Tuần 14 25/11/2019 Tuần 15 02/12/2019 Tuần 16 09/12/2019 Tuần 17 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
Nhóm thực hiện đề tài
công trình đã có trước đó.
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.
Nhóm thực hiện đề tài
Xin chân thành cảm ơn!
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ày lý thuyết về các module, cảm biến và linh kiện sử dụng trong
hệ thống, các chuẩn truyền thông, giao thức.
- Chương 3: Thiết kế và tính toán
Chương này thiết kế sơ đồ khối, sơ đồ nguyên lí của các khối trong hệ thống và
thực hiện tính toán thiết kế.
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 2
CHƯƠNG 1: TỔNG QUAN
- Chương 4: Thi công hệ thống
Chương này trình bày lưu đồ giải thuật, thiết kế app android, viết chương trình hệ
thống, thiết kế sơ đồ mạch in PCB.
- Chương 5: Kết quả, nhận xét và đánh giá
Chương này trình bày kết quả thi công phần cứng và kết quả hình ảnh thực tế của
tủ, nhận xét đánh giá chung về sản phẩm.
- Chương 6: Kết luận và hướng phát triển
Trong chương này sẽ đưa ra kết quả đạt được, phân tích những ưu nhược điểm và
đề xuất hướng phát triển đề tài.
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 3
CHƯƠNG 2: CƠ SỞ LÝ THUYẾT
CHƯƠNG 2: CƠ SỞ LÝ THUYẾT
2.1 TỔNG QUAN VỀ TỦ ĐỒ BẢO MẬT
2.1.1 Giới thiệu tủ đồ bảo mật và đặc điểm của tủ bảo mật
Tủ đồ bảo mật đang dần trở thành thiết bị phổ biến và được ứng dụng ở nhiều nơi bởi
mỗi cá nhân, gia đình hay tập thể đều có những giấy tờ, vật dụng quan trọng cần được
bảo mật. Tủ bảo mật là loại tủ có kích thước, hình dáng giống như tủ đựng hồ sơ, tài liệu
bình thường nhưng có tính bảo mật cao hơn. Tủ thường được dùng để cất giữ những
giấy tờ hồ sơ quan trọng, tài sản riêng. Tủ bảo mật được thiết kế tiêu chuẩn với các loại
phổ biến là tủ 2 cánh, 4 cánh và 6 cánh. Ngoài ra, tủ còn được thiết kế theo yêu cầu, mục
đích và nhu cầu cụ thể của từng người sử dụng.
Hiện nay có nhiều công nghệ bảo mật được tích hợp trong tủ đồ để nâng cao khả năng
bảo vệ cho tài sản như mật khẩu số, thẻ RFID, vân tay sinh trắc học,…mà phổ biến nhất
là mật khẩu số và thẻ RFID vình sự đơn giản và giá thành phù hợp với đại đa số người
sử dụng. Công nghệ vân tay cũng đã được ứng dụng nhiều trong các sản phẩm máy
chấm công, cửa thông minh, tủ thông minh,…tuy nhiên giá thành cao hơn khiến cho
chúng chỉ được sử dụng trong các cơ quan, môi trường đặc thù chứ chưa quá phổ biến
cho người dùng thông thường.
Hình 2.1. Tủ đồ bảo mật bằng vân tay
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 4
CHƯƠNG 2: CƠ SỞ LÝ THUYẾT
Hình 2.2. Tủ đồ bảo mật bằng mật mật khẩu và khóa
- Được làm từ vật liệu thép sơn tĩnh điện dày từ 0.8 mm đến 1.2 mm (tùy theo nhu cầu
Đặc điểm của tủ bảo mật:
của người sử dụng) nên có độ bền rất cao. Chất liệu thép sơn tĩnh điện giúp tủ bảo
- Đáy tủ có hệ thống bánh xe sắt giúp việc di chuyển tủ sang các vị trí khác nhau dễ
mật có độ bóng, mịn tuyệt đối, đặc biệt là khả năng chống ăn món, chống oxi hóa.
- Đặc điểm quan trọng nhất của tủ bảo mật chính là hệ thống bảo mật của tủ nằm trên
dàng ( vì tủ có trọng lượng lớn)
các cánh tủ. Với công nghệ bảo mật khác nhau như khóa mã (mật khẩu) riêng biệt,
khóa chìa 4 cạnh,… hệ thống an toàn giúp cánh được bảo vệ an toàn gây khó khăn
với những nguy cơ cố tình cạy, phá trong thời gian ngắn.
- Tủ bảo mật được sử dụng phổ biến trong các công ty, trường học để bảo quản những
2.1.2 Ứng dụng của tủ đồ bảo mật
dụng cụ, hồ sơ quan trọng, có giá trị, tránh việc xâm phạm tủ một cách có chủ ý khi
- Hạn chế việc mất cắp những đồ đạc được lưu trữ trong tủ.
chưa được phép.
Ngoài ra với tính bảo mật và độ bền cao, tủ bảo mật còn được ưa chuộng trong môi trường quân đội, nơi đề cao tính bảo mật và kỷ luật để bảo quản giấy tờ của lãnh đạo, quân tư trang của quân nhân.
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 5
CHƯƠNG 2: CƠ SỞ LÝ THUYẾT
2.2 TỔNG QUAN VỀ CÔNG NGHỆ NHẬN DẠNG VÂN TAY
2.2.1 Lịch sử ra đời nhận dạng vân tay
Từ thế kỉ thứ XIV, việc sử dụng dấu vân tay và vân chân để nhận dạng đã được người
Ấn Độ áp dụng. Khi một đứa trẻ ra đời, người Trung Quốc đã dùng mực bôi đen chân
tay nó và in dấu lên một tờ giấy. Người Mỹ bắt đầu sử dụng dấu vân tay vào tháng 7
năm 1858. William Idiot, một quan cai trị người Singapore tại Lào, do quá bức xúc với
tính gian trá đã bắt thương gia bản xứ là Rajyadhar Konai in dấu bàn tay lên mặt sau của
tờ hợp đồng.
Khoa học về dấu vân tay được Francis Galton khởi xướng vào cuối thế kỉ thứ XIX. Năm
1880, Henry Faulds đưa ra lý luận về số lượng vân tay RC (Ridge Count) để đánh giá
mức độ phụ thuộc của vân tay vào gen di truyền. Năm 1868 nhà bác học Roberts chỉ ra
rằng mỗi ngón tay có một môi trường phát triển vi mô khác nhau. Năm 1968 nhà bác
học Holt đã chứng minh được rằng có thể dự đoán tương đối chính xác tổng số lượng
vân tay TRC (Total Ridge Count) và mức độ phụ thuộc của chúng vào gen di truyền của
mỗi người. Vào nửa sau của thế kỉ XIX, Richard Edward Henry của Scotland Yard (cơ
quan an ninh của Anh) đã phát triển phương pháp phân loại và nhận dạng dấu vân tay.
Phương pháp này được Francis Galton cải tiến vào năm 1892. Juan Vucetich đã tạo ra
một hệ thống phân loại khác cho các nước dùng tiếng Tây Ban Nha. Sau Vụ án Francisca
Rojas ở Necochea, Argentina trở thành quốc gia đầu tiên trên thế giới chính thức thừa
nhận việc lăn tay để làm phương pháp nhận dạng thay cho phép đo người Bertillon của
Alphonse Bertillon.
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 6
CHƯƠNG 2: CƠ SỞ LÝ THUYẾT
Hình 2.3. Một số hình ảnh vân tay được sử dụng thời xưa
2.2.2 Hệ thống nhận dạng vân tay
Hệ thống nhận dạng vân tay hoạt động theo nguyên tắc: Khi đặt ngón tay lên trên một
thiết bị đọc dấu vân tay, ngay lập tức thiết bị này sẽ quét hình ảnh ngón tay đó và đưa
vào hệ thống. Hệ thống sẽ xử lý dấu vân tay, chuyển sang dạng dữ liệu số rồi đối chiếu
các đặc điểm của vân tay đó với dữ liệu đã được lưu trữ trong hệ thống. Nếu dấu vân
tay này khớp với dữ liệu sẽ cho phép hệ thống thực hiện các chức năng tiếp theo.
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 7
CHƯƠNG 2: CƠ SỞ LÝ THUYẾT
Hình 2.4. Cấu trúc cơ bản của hệ thống nhận dạng vân tay
- Hệ thống này gồm 2 phần:
- Verification (Xác nhận dấu vân tay): Đầu tiên một người sẽ cung cấp dấu vân tay
cùng với thông hoặc đặc điểm cá nhân của người đó như họ tên, ngày sinh, quê
quán..Bước này nhằm tạo ra một cơ sở dữ liệu tương ứng dấu vân tay và các đặc điểm
liên quan. Nguyên lý cơ bản của hệ thống này là sử dụng các diot phát sáng để truyền
các tia gần hồng ngoại (Near Infrared NIR) tới ngón tay và chúng sẽ được hấp thụ lại
bởi hồng cầu trong máu. Vùng các tia bị hấp thụ trở thành vùng tối trong hình ảnh và
được chụp lại bởi camera CCD. Sau đó, hình ảnh được xử lý và tạo ra mẫu vân tay. Mẫu
vân tay được chuyển đổi thành tín hiệu số và là dữ liệu để nhận dạng người sử dụng chỉ
trong vòng chưa đến 2 giây
- Identification (Nhận diện dấu vân tay): Dấu vân tay sẽ được đưa thu thập từ một
sensor để đối chiếu với database chứa các vân tay để truy ra các đặc điểm muốn truy
xuất. Việc đối sánh ảnh vân tay cần nhận dạng chỉ cần được tiến hành trên các vân tay
(có trong cơ sở dũ liệu) thuộc loại đã được xác định nhờ quá trình phân loại. Đây là giai
đoạn quyết định xem hai ảnh vân tay có hoàn toàn giống nhau hay không và đưa ra kết
quả nhận dạng, tức là ảnh vân tay cần nhận dạng tương ứng với vân tay của cá thể nào
đã được lưu trữ trong cơ sở dữ liệu.
- Có 2 phương pháp nhận dạng vân tay thường được sử dụng là:
- Phương pháp 1: Dựa vào các đặc tính cụ thể của dấu vân tay, như điểm cuối, điểm rẽ
nhánh của các vân trên tay.
- Phương pháp 2: So sánh toàn bộ đặc tính của dấu vân tay.
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 8
CHƯƠNG 2: CƠ SỞ LÝ THUYẾT
2.2.3 Ứng dụng công nghệ nhận dạng vân tay hiện nay
Ngày nay với sự phát triển của khoa học công nghệ, công nghệ nhận dạng vân tay đã
được phát triển và ứng dụng rất nhiều trong các lĩnh vực của đời sống. Những thiết bị
điện tử có khả năng sử dụng dữ liệu sinh trắc học trong thời gian thực để bảo vệ thông
tin bí mật của con người. Con người sẽ không phải tạo, lưu giữ hay ghi nhớ mật khẩu
dành cho thư điện tử, thẻ ngân hàng.
Dấu vân tay không những được sử dụng trong lĩnh vực hình sự mà còn được sử dụng
trong việc xác nhận nhân thân của cá nhân khi truy cập mạng hoặc mở khoá. Một số
ngân hàng đã bắt đầu thanh toán thẻ ATM sử dụng máy đọc vân tay. Trong y học, dựa
trên những bức tranh vân tay đặc trưng, người ta phát hiện ra những bệnh do sai lệch
gen. Chính phủ một số nước đã thực hiện việc thắt chặt an ninh và quản lý hộ chiếu bằng
cách thử nghiệm công nghệ nhận dạng vân tay. Tại Mỹ, thẻ tín dụng sắp tới kỳ trở thành
đồ cổ, trong các chuỗi siêu thị Thrifway, khách hàng trả tiền mua hàng bằng cách nhận
dạng vân tay.
Hình 2.5. Thanh toán mua hàng bằng dấu vân tay
Hiện nay đã có trên 100 quốc gia sử dụng hộ chiếu điện tử bằng công nghệ nhận dạng
vân tay. Sử dụng vân tay được đánh giá là một giải pháp bảo mật hữu hiệu và xác nhận
nhân thân chính xác.
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 9
CHƯƠNG 2: CƠ SỞ LÝ THUYẾT
Tại Việt Nam, công nghệ nhận dạng vân tay đã đang đi vào đời sống với các ứng dụng
như: chấm công, điểm danh nhân viên, thanh toán online trên smartphone,..Các thiết bị
bảo vệ sử dụng vân tay như khóa cửa, két sắt,..
Hình 2.6. Máy chấm công Hình 2.7. Khóa cửa bảo mật vân tay
Ưu và nhược điểm của công nghệ cảm biến vân tay:
Ưu điểm:
- Mở khoá thiết bị hoặc ứng dụng chỉ với một cú chạm.
- Tính xác thực cao vì vân tay mỗi người là duy nhất.
- Yên tâm bởi hệ thống sẽ cho nhận dạng nhiều ngón tay khác nhau.
Nhược điểm:
- Cảm biến vân tay chỉ là một hệ thống xác thực, nếu ứng dụng vào điện thoại
thì nguy cơ về thất thoát vệ dữ liệu trên điện thoại người sử dụng là rất cao, khi
bạn ngủ hoặc mất ý thức thì chính ngón tay sẽ mở khoá tất cả.
2.3 TỔNG QUAN VỀ HỆ ĐIỀU HÀNH ANDROID
2.3.1 Khái niệm hệ điều hành android
Android là một hệ điều hành dựa trên nền tảng Linux được thiết kế dành cho các thiết
bị di động có màn hình cảm ứng như điện thoại thông minh và máy tính bảng. Ban đầu,
Android được phát triển bởi Android, Inc. Với sự hỗ trợ tài chính từ Google và sau này
được chính Google mua lại vào năm 2005. Android ra mắt vào năm 2007 cùng với tuyên
bố thành lập liên minh thiết bị cầm tay mở: một hiệp hội gồm các công ty phần
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 10
CHƯƠNG 2: CƠ SỞ LÝ THUYẾT
cứng, phần mềm, và viễn thông với mục tiêu đẩy mạnh các tiêu chuẩn mở cho các thiết
bị di động. Chiếc điện thoại đầu tiên chạy Android được bán vào năm 2008.
Hình 2.8. Logo hệ điều hành Android
2.3.2 Giao diện
Giao diện người dùng của Android dựa trên nguyên tắc tác động trực tiếp, sử dụng
cảm ứng chạm tương tự như những động tác ngoài đời thực như vuốt, chạm, kéo giãn
và thu lại để xử lý các đối tượng trên màn hình. Sự phản ứng với tác động của người
dùng diễn ra gần như ngay lập tức, nhằm tạo ra giao diện cảm ứng mượt mà.
Hình 2.9. Giao diện của thiết bị chạy hệ điều hành Android
Các thiết bị Android sau khi khởi động sẽ hiển thị màn hình chính, điểm khởi đầu với
các thông tin chính trên thiết bị, tương tự như khái niệm desktop (bàn làm việc) trên
máy tính để bàn. Màn hính chính Android thường gồm nhiều biểu tượng (icon) và tiện
ích (widget); biểu tượng ứng dụng sẽ mở ứng dụng tương ứng, còn tiện ích hiển thị
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 11
CHƯƠNG 2: CƠ SỞ LÝ THUYẾT
những nội dung sống động, cập nhật tự động như dự báo thời tiết, hộp thư của người
dùng, hoặc những mẩu tin thời sự ngay trên màn hình chính. Màn hình chính có thể gồm
nhiều trang xem được bằng cách vuốt ra trước hoặc sau, mặc dù giao diện màn hình
chính của Android có thể tùy chỉnh ở mức cao, cho phép người dùng tự do sắp đặt hình
dáng cũng như hành vi của thiết bị theo sở thích.
Hình 2.10. Thanh trạng thái của thiết bị chạy hệ điều hành Android
Ở phía trên cùng màn hình là thanh trạng thái, hiển thị thông tin về thiết bị và tình
trạng kết nối. Thanh trạng thái này có thể "kéo" xuống để xem màn hình thông báo gồm
thông tin quan trọng hoặc cập nhật của các ứng dụng, như email hay tin nhắn SMS mới
nhận, mà không làm gián đoạn hoặc khiến người dùng cảm thấy bất tiện.Trong các phiên
bản đời đầu, người dùng có thể nhấn vào thông báo để mở ra ứng dụng tương ứng, về
sau này các thông tin cập nhật được bổ sung thêm tính năng, như có khả năng lập tức
gọi ngược lại khi có cuộc gọi nhỡ mà không cần phải mở ứng dụng gọi điện ra. Thông
báo sẽ luôn nằm đó cho đến khi người dùng đã đọc hoặc xóa nó đi.
2.3.3 Ứng dụng
Các ứng dụng cho Android được phát triển bằng ngôn ngữ Java sử dụng Bộ phát triển
phần mềm Android (SDK). SDK bao gồm một bộ đầy đủ các công cụ dùng để phát
triển gồm có công cụ gỡ lỗi, thư viện phần mềm, bộ giả lập điện thoại dựa trên tài liệu
hướng dẫn, mã nguồn mẫu, và hướng dẫn từng bước. Môi trường phát triển tích
hợp (IDE) được hỗ trợ chính thức là Eclipse sử dụng phần bổ sung Android
Development Tools (ADT). Các công cụ phát triển khác cũng có sẵn, gồm có Bộ phát
triển gốc dành cho các ứng dụng hoặc phần mở rộng viết bằng C hoặc C++, Google App
Inventor, một môi trường đồ họa cho những nhà lập trình mới bắt đầu, và nhiều nền tảng
ứng dụng web di động đa nền tảng phong phú.
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 12
CHƯƠNG 2: CƠ SỞ LÝ THUYẾT
Hình 2.11. Kho ứng dụng Google Play Store
Android có lượng ứng dụng của bên thứ ba ngày càng nhiều, được chọn lọc và đặt
trên một cửa hàng ứng dụng như Google Play hay Amazon Appstore để người dùng lấy
về, hoặc bằng cách tải xuống rồi cài đặt tập tin APK từ trang web khác. Các ứng dụng
trên Play Store cho phép người dùng duyệt, tải về và cập nhật các ứng dụng do Google
và các nhà phát triển thứ ba phát hành. Play Store được cài đặt sẵn trên các thiết bị thỏa
mãn điều kiện tương thích của Google. Ứng dụng sẽ tự động lọc ra một danh sách các
ứng dụng tương thích với thiết bị của người dùng, và nhà phát triển có thể giới hạn ứng
dụng của họ chỉ dành cho những nhà mạng cố định hoặc những quốc gia cố định vì lý
do kinh doanh. Nếu người dùng mua một ứng dụng mà họ cảm thấy không thích, họ
được hoàn trả tiền sau 15 phút kể từ lúc tải về và một vài nhà mạng còn có khả năng
mua giúp các ứng dụng trên Google Play, sau đó tính tiền vào trong hóa đơn sử dụng
hàng tháng của người dùng. Đến tháng 9 năm 2012, có hơn 675.000 ứng dụng dành cho
Android, và số lượng ứng dụng tải về từ Play Store ước tính đạt 25 tỷ.
2.3.4 Ưu và nhược điểm của hệ điều hành Android
Ưu điểm:
- Là hệ điều hành có mã nguồn mở nên khả năng tuỳ biến cao, có thể tùy ý chỉnh sửa.
- Kho ứng dụng Google Play Store đồ sộ.
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 13
CHƯƠNG 2: CƠ SỞ LÝ THUYẾT
- Thân thiện và dễ sử dụng.
- Khả năng đa nhiệm, chạy cùng lúc nhiều ứng dụng cao.
Nhược điểm:
- Màn hình cơ bản hệ điều hành Android cung cấp một giao diện người dùng đẹp và
trực quan.
- Dễ nhiễm phần mềm độc hại và virus. Do tính chất mã nguồn mở, nhiều phần mềm
không được kiểm soát có chất lượng không tốt dễ gây hại cho thiết bị.
- Khả năng bảo mật không cao qua đó người dùng có thể bị đánh cắp thông tin qua các
ứng dụng.
- Kho ứng dụng quá nhiều dẫn đến khó kiểm soát chất lượng các ứng dụng.
- Hiện tượng giật lag trong quá trình sử dụng diễn ra thường xuyên do đặc trưng hệ
điều hành sản sinh ra nhiều file rác.
2.4 TỔNG QUAN VỀ FIREBASE
2.4.1 Lịch sử và khái niệm
Năm 2011, startup tiền thân của Firebase được thành lập, được gọi là Envolve. Nó
cung cấp cho các nhà phát triển API cho phép tích hợp tính năng nhắn tin trực tuyến vào
trang web của họ. Điều thú vị là các nhà phát triển sử dụng Envolve không chỉ để làm
nhắn tin trực tuyến. Họ sử dụng Envolve để đồng bộ hóa dữ liệu ứng dụng, chẳng hạn
như một trạng thái game giữa các user trong thời gian thực. Điều đó đã dẫn đến các nhà
sáng lập của Envolve tách riêng hệ thống chat và kiến trúc realtime. Năm 2012, Firebase
được tạo như một công ty cung cấp dịch vụ với tính năng realtime. Sau khi được Google
mua lại năm 2014, Firebase nhanh chóng phát triển thành một nền tảng đa chức năng như
ngày nay.
Hình 2.12. Biểu tượng của nền tảng Firebase
Firebase là một nền tảng ứng dụng di động và web với các công cụ và hạ tầng được
thiết kế để giúp các lập trình viên xây dựng các ứng dụng chất lượng cao. Với Google
Firebase, chúng ta có thể tạo ra các ứng dụng chat như Yahoo Message của ngày xưa
hoặc như Facebook Messager của ngày nay trong thời gian cực ngắn như khoảng một
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 14
CHƯƠNG 2: CƠ SỞ LÝ THUYẾT
ngày thậm chí là vài giờ bởi đơn giản là bạn chỉ cần lo phần client còn phần server và
database đã có firebase lo. Firebase là sự kết hợp giữa nền tảng cloud với hệ thống máy
chủ cực kì mạnh mẽ tới từ Google, để cung cấp cho chúng ta những API đơn giản, mạnh
mẽ và đa nền tảng trong việc quản lý, sử dụng database.
2.4.2 Các tính năng chính
a. Realtime database
Trong đồ án này chúng ta sử dụng 1 công cụ rất thông dụng của Firebase là Realtime
Database - Cơ sở dữ liệu thời gian thực. Firebase Realtime Database là một cơ sở dữ liệu
NoSQL trên đám mây cho phép bạn lưu trữ và đồng bộ hóa dữ liệu giữa các user trong
thời gian thực. Realtime Database cơ bản chỉ là một đối tượng JSON lớn mà các nhà phát
triển có thể quản lý thời gian thực.
Hình 2.13. Cây Json của Realtime Database
Chỉ với một API duy nhất, Realtime Database cung cấp cho ứng dụng của bạn cả giá
trị hiện tại của dữ liệu và bất kì cập nhật mới nào.Đồng bộ hóa thời gian thực giúp người
dùng truy cập dữ liệu của họ dễ dàng từ bất kì thiết bị nào cũng như tương tác với các
người dùng khác. Realtime Database cũng tích hợp với Firebase Authentication để cung
cấp một tiến trình xác thực đơn giản và trực quan.
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 15
CHƯƠNG 2: CƠ SỞ LÝ THUYẾT
Hình 2.14. Các thiết bị tương tác với Realtime Database
b. Authentication
Hình 2.15. Xác thực người dùng qua Authentication
Firebase Authentication cung cấp dịch vụ backend, SDKs sẵn sàng sử dụng, và các
thư viện UI được làm sẵn để giúp ứng dụng của bạn xác thực người dùng.
Thông thường, bạn phải mất cả tháng để xây dựng hệ thống xác thực và thường xuyên
phải bảo trì nó. Nhưng nếu bạn sử dụng Firebase, bạn chỉ dưới 10 dòng code để xử lý
mọi thứ, bao gồm cả những thao tác phức tạp như sát nhập tài khoản.
Bạn có thể xác thực người dùng qua các phương thức như: Email, Phone number,
Facebook, Google, Twitter, ...
Sử dụng Firebase Authentication giúp dễ dang hơn cho việc xây dựng hệ thống xác thực
an toàn, trong khi cũng cải thiện trải nghiệm cho người dùng.
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 16
CHƯƠNG 2: CƠ SỞ LÝ THUYẾT
c. Firebase Cloud Messaging (FCM)
Hình 2.16. Các thiết bị gửi và nhận tin nhắn qua Firebase Cloud Messaging
Firebase Cloud Messaging cung cấp một kết nối hiệu quả và đáng tin cậy giữa server
và thiết bị của bạn, cho phép bạn gửi và nhận tin nhắn hoặc thông báo trên iOS, Android
và Web mà không mất thêm chi phí.
Bạn có thể gửi tin nhắn thông báo (giới hạn 2KB) hoặc tin nhắn dữ liệu (giới hạn
4KB).
Sử dụng FCM, bạn có thể dễ dàng xác định đối tượng mục tiêu với các phân khúc được
định nghĩa trước hoặc do bạn tự định nghĩa, sử dụng nhân khẩu học và hành vi. Bạn có
thể gửi tin nhắn tới một nhóm các thiết bị được đăng kí theo các chủ đề xác định, hoặc
bạn có thể nhận được chi tiết như một thiết bị duy nhất.
FCM có thể gửi tin nhắn ngay lập tức hoặc trong tương lai theo múi giờ của người
dùng. Bạn có thể gửi dữ liệu tùy chỉnh như cài đặt độ ưu tiên, âm thanh, ngày hết hạn, và
cũng theo dõi các sự kiện tùy chỉnh.
2.4.3 Ưu và nhược điểm của Firebase
Ưu điểm
- Tính bảo mật cao
- Sử dụng ứng dụng dễ dàng
- Kết nối nhanh
- Người đăng ký tài khoản miễn phí có 1GB dung lượng lưu trữ.
Nhược điểm
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 17
CHƯƠNG 2: CƠ SỞ LÝ THUYẾT
Đăng ký tài khoản miễn phí nhưng giới hạn số lượng đăng ký hoặc người truy cập trong
khi có tính phí thì sẽ trả phí theo thuê bao và dung lượng lưu trữ.
Hình 2.17. Giao diện hiển thị các project của Firebase
2.5 CÁC CHUẨN TRUYỀN DỮ LIỆU 2.5.1 Chẩn giao tiếp I2C
I2C là tên viết tắt của cụm từ Inter-Integrated Circuit. Đây là đường Bus giao tiếp
giữa các IC với nhau. Bus I2C được sử dụng làm bus giao tiếp ngoại vi cho rất nhiều
loại IC khác nhau như các loại Vi điều khiển 8051, PIC, ARM
Hình 2.18. Bus I2C và các thiết bị ngoại vi
- Đặc điểm giao tiếp I2C:
Một giao tiếp I2C gồm có 2 dây: Serial Data (SDA) và Serial Clock (SCL). SDA là
đường truyền dữ liệu 2 hướng, còn SCL là đường truyền xung đồng hồ để đồng bộ và
chỉ theo một hướng. Khi một thiết bị ngoại vi kết nối vào đường bus I2C thì chân SDA
của nó sẽ nối với dây SDA của bus, chân SCL sẽ nối với dây SCL.
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 18
CHƯƠNG 2: CƠ SỞ LÝ THUYẾT
Mỗi dây SDA hãy SCL đều được nối với điện áp dương của nguồn cấp thông qua
một điện trở kéo lên (pullup resistor). Sự cần thiết của các điện trở kéo này là vì chân
giao tiếp I2C của các thiết bị ngoại vi thường là dạng cực máng hở (opendrain hay
opencollector). Giá trị của các điện trở này khác nhau tùy vào từng thiết bị và chuẩn
giao tiếp, thường dao động trong khoảng 1 KΩ đến 4.7KΩ.
Chế độ hoạt động (tốc độ truyền):
Các bus I2C có thể hoạt động ở ba chế độ, hay nói cách khác các dữ liệu trên bus
I2C có thể được truyền trong ba chế độ khác nhau.
- Chế độ tiêu chuẩn (Standard mode)
- Chế độ nhanh (Fast mode)
- Chế độ cao tốc High-Speed (Hs) mode
Hình 2.19. Trình tự truyền bit trên đường truyền
Trình tự truyền bit trên đường truyền:
- Thiết bị chủ tạo một điều kiện start. Điều kiện này thông báo cho tất cả các thiết bị tớ
lắng nghe dữ liệu trên đường truyền.
- Thiết bị chủ gửi địa chỉ của thiết bị tớ mà thiết bị chủ muốn giao tiếp và cờ đọc/ghi dữ
liệụ (nếu cờ thiết lập lên 1 thì byte tiếp theo được truyền từ thiết bị tớ đến thiết bị chủ,
nếu cờ thiết lập xuống 0 thì byte tiếp theo truyền từ thiết bị chủ đến thiết bị tớ).
- Khi thiết bị tớ trên bus I2C có địa chỉ đúng với địa chỉ mà thiết bị chủ gửi sẽ phản hồi
lại bằng một xung ACK.
- Giao tiếp giữa thiết bị chủ và tớ trên bus dữ liệu bắt đầu. Cả chủ và tớ đều có thể nhận
hoặc truyền dữ liệu tùy thuộc vào việc truyền thông là đọc hay viết. Bộ truyền gửi 8bit
dữ liệu tới bộ nhận, bộ nhận trả lời với một bit ACK.
- Để kết thúc quá trình giao tiếp, thiết bị chủ tạo ra một điều kiện stop.
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 19
CHƯƠNG 2: CƠ SỞ LÝ THUYẾT
2.5.2 Chuẩn truyền thông UART
UART viết tắt của “Universal Asynchronous Receiver / Transmitter” là kiểu truyền
thông tin nối tiếp không đồng bộ thường là một mạch tích hợp. Chức năng chính của
UART là truyền dữ liệu nối tiếp. Trong UART, giao tiếp giữa hai thiết bị có thể được
thực hiện theo hai cách là giao tiếp dữ liệu nối tiếp và giao tiếp dữ liệu song song.
Việc truyền dữ liệu của UART có thể được thực hiện bằng cách sử dụng bus dữ liệu
ở dạng song song bởi các thiết bị khác như vi điều khiển, bộ nhớ, CPU,.. Sau khi nhận
được dữ liệu song song từ bus, nó tạo thành gói dữ liệu bằng cách thêm ba bit như bắt
đầu, dừng lại và trung bình. Nó đọc từng bit gói dữ liệu và chuyển đổi dữ liệu nhận được
thành dạng song song để loại bỏ ba bit của gói dữ liệu. Tóm lại, gói dữ liệu nhận được
bởi UART chuyển song song về phía bus dữ liệu ở đầu nhận.
Hình 2.20. Truyền thông UART
- Start-bit
Start-bit còn được gọi là bit đồng bộ hóa được đặt trước dữ liệu thực tế. Nói chung,
một đường truyền dữ liệu không hoạt động được điều khiển ở mức điện áp cao. Để
bắt đầu truyền dữ liệu, truyền UART kéo đường dữ liệu từ mức điện áp cao (1) xuống
mức điện áp thấp (0). UART thu được thông báo sự chuyển đổi này từ mức cao sang
mức thấp qua đường dữ liệu cũng như bắt đầu hiểu dữ liệu thực. Chỉ có một start-bit.
- Bit dừng
Bit dừng được đặt ở phần cuối của gói dữ liệu. Thông thường, bit này dài 2 bit
nhưng thường chỉ sử dụng 1 bit. Để dừng sóng, UART giữ đường dữ liệu ở mức điện
áp cao.
- Bit chẵn lẻ
Bit chẵn lẻ cho phép người nhận đảm bảo liệu dữ liệu được thu thập có đúng hay
không. Đây là một hệ thống kiểm tra lỗi cấp thấp và bit chẵn lẻ có sẵn trong hai phạm
vi như Chẵn lẻ – chẵn lẻ cũng như Chẵn lẻ – lẻ.
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 20
CHƯƠNG 2: CƠ SỞ LÝ THUYẾT
- Dữ liệu bit hoặc khung dữ liệu
Các bit dữ liệu bao gồm dữ liệu thực được truyền từ người gửi đến người nhận. Độ
dài khung dữ liệu có thể nằm trong khoảng 5 và 8. Nếu bit chẵn lẻ không được sử
dụng thì chiều dài khung dữ liệu có thể dài 9 bit. Nói chung, LSB của dữ liệu được
truyền trước tiên sau đó nó rất hữu ích cho việc truyền.
2.5.3 Chuẩn truyền thông SPI
SPI (Serial Peripheral Interface, SPI bus) là một chuẩn đồng bộ nối tiếp để truyền
dữ liệu ở chế độ song công toàn phần.
Khác với cổng nối tiếp chuẩn (standard serial port), SPI là giao diện đồng bộ, trong
đó bất cứ quá trình truyền nào cũng được đồng bộ hóa với tín hiệu xung clock, tín hiệu
này sinh ra bởi thiết bị master (thiết bị chủ động). Thiết bị ngoại vi bên phía nhận (bị
động) làm đồng bộ quá trình nhận chuỗi bit với tín hiệu xung clock. Có thể kết nối một
số vi mạch vào mỗi giao diện ngoại vi nối tiếp của vi mạch-thiết bị master. Thiết bị
master chọn thiết bị động để truyền dữ liệu bằng cách kích hoạt tín hiệu "chọn chip"
(chip select) trên vi mạch bị động. Thiết bị ngoại vi nếu không được chọn bởi bộ vi xử
lý sẽ không tham gia vào quá trình truyền theo giao diện SPI.
MOSI (Master Out Slave In) hay SI - cổng ra của bên master, cổng vào của bên
- Trong giao diện SPI có sử dụng bốn tín hiệu số:
MISO (Master In Slave Out) hay SO - cổng vào của bên master, cổng ra của bên
bị động, dành cho việc truyền dữ liệu từ thiết bị master đến thiết bị slave.
SCLK (Serial Clock) hay SCK - tín hiệu xung clock nối tiếp, dành cho việc
bị động, dành cho việc truyền dữ liệu từ thiết bị slave đến thiết bị master.
CS hay SS (Chip Select, Slave Select): chọn vi mạch, chọn thiết bị slave.
truyền tín hiệu dành cho thiết bị slave.
Hình 2.21. Giao tiếp SPI
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 21
CHƯƠNG 3: TÍNH TOÁN VÀ THIẾT KẾ
CHƯƠNG 3: TÍNH TOÁN VÀ THIẾT KẾ
3.1 GIỚI THIỆU
Yêu cầu đề tài: Thiết kế tủ đựng vật dụng của giảng viên bảo mật bằng vân tay với
kích thước 145x85x40 cm, gồm 6 hộc chứa. Người sử dụng tương tác và điều khiển
thông qua màn hình cảm ứng LCD TFT 3.2 inch. 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. Qua những yêu cầu đã đề ra nhóm sẽ tiến
hành tính toán và thiết kế cho hệ thống.
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
Hình 3.1. Sơ đồ khối hệ thống
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 22
CHƯƠNG 3: TÍNH TOÁN VÀ THIẾT KẾ
Chức năng từng khối:
- Khối xử lý trung tâm: Là khối điều khiển trung tâm cho toàn hệ thống, có nhiệm
vụ kết nối với các thành phần trong hệ thống để truyền dữ liệu điều khiển từ người
sử dụng đến các thiết bị, đồng thời nhận dữ liệu của các cảm biến xử lý và thự thi.
- Khối cảm biến vân tay: Sử dụng cảm biến vân tay R305 với chức năng quét vân
tay của người dùng, giao tiếp với vi điều khiển để thực hiện chức năng tương ứng.
- Khối module wifi: Khối này có chức năng kết nối với mạng wifi và giao tiếp với
vi điều khiển truyền và nhận dữ liệu sau đó sẽ gửi lên cơ sở dữ liệu để lưu trữ.
- Khối thời gian thực: Cung cấp thời gian thực cho hệ thống.
- Khối điều khiển và hiển thị (LCD touch screen): Sử dụng một màn hình cảm ứng
cho phép người dùng tương tác và điều khiển trực tiếp trên màn hình. Đồng thời
hiển thị các thông tin khác từ vi điều khiển trung tâm.
- Khối relay: Nhận tín hiệu điều khiển từ khối xử lý trung tâm để đóng mở các relay
tương ứng với các khóa tủ.
- Khóa chốt điện: Có chức năng khóa hoặc mở các hộc tủ.
- Khối nguồn, UPS và pin dự phòng: Cung cấp nguồn liên tục cho toàn bộ hệ thống,
UPS với chức năng chuyển mạch tự động cấp nguồn dự phòng lúc mất điện.
- App: Là một ứng dụng android có chức năng điều khiển và hiển thị thông tin tủ.
- Firebase: Là một nền tảng ứng dụng di động và web kết nối giữa App và module
wifi để thực thiện các chức năng của hệ thống.
3.3 TÍNH TOÁN VÀ THIẾT KẾ MẠCH 3.3.1 Khối cảm biến vân tay
Hình 3.2. Module cảm biến vân tay R305
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 23
CHƯƠNG 3: TÍNH TOÁN VÀ THIẾT KẾ
Hình 3.3. Hình dạng bên ngoài và kích thước module R305
Thông số kỹ thuật:
- Điện áp cung cấp: DC 3.6 ~ 6.0V
- Dòng điện làm việc: 100mA
- Dòng điện cực đại: 150mA
- Thời gian nhập hình ảnh vân tay: <0,3 giây
- Diện tích cửa sổ: 18x22 mm
- Phương pháp kết hợp:
+ Phương pháp so sánh (1:1)
+ Phương pháp tìm kiếm (1:N)
- Tệp tính năng: 256 byte
- Tệp mẫu: 512 byte
- Dung lượng lưu trữ: 980 bit
- Cấp độ bảo mật: năm cấp độ (thấp đến cao: 1, 2, 3, 4, 5)
- Tỷ lệ giả (FAR): < 0,001%
- Tỷ lệ loại bỏ (FRR): < 0,1%
- Thời gian tìm kiếm trung bình: < 0,8 giây (1: 880)
- Giao diện máy chủ: UART USB1.1
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 24
CHƯƠNG 3: TÍNH TOÁN VÀ THIẾT KẾ
- Tốc độ truyền thông (UART): (9600 x N) bps trong đó N = 1 ~ 12 (giá trị mặc
định N = 6, tức là 57600bps)
- Môi trường làm việc: Nhiệt độ: -10°C ~ +40°C
- Độ ẩm tương đối: 40% rh - 85% rh (không ngưng tụ)
Hình 3.4. Các chân kết nối của module cảm biến vân tây R305
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
Số thứ tự Tên Chức năng
1 VCC Ngõ vào 3.6V-6V
2 GND Ngõ vào 0V
3 TX Ngõ ra truyền dữ liệu
4 RX Ngõ vào nhận dữ liệu
5 VCC 5VDC
6 D- Data-
7 D+ Data+
8 GND 0V
- Khối cảm biến vân tay sử dụng module vân tay R305 có sơ đồ kết nối như sau:
Hình 3.5. Sơ đồ kết nối cảm biến vân tay với vi điều khiển
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 25
CHƯƠNG 3: TÍNH TOÁN VÀ THIẾT KẾ
- Giao tiếp giữa cảm biến vân tay và arduino theo chuẩn UART.
- Điện áp sử dụng 5V.
- Dòng điệ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:
- 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
Hình 3.6. Board arduino mega 2560
AVR ATMega2560. ATMega2560 có 256 KB bộ nhớ flash để lưu trữ mã (trong đó có
- 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),
8 KB được sử dụng cho bộ nạp khởi động), 8 KB SRAM và 4 KB của EEPROM.
- 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à
ngoài ra có một chân nối đất (GND) và một chân điện áp tham chiếu (AREF).
- 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
1024 giá trị khác nhau).
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
- 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
CHƯƠNG 3: TÍNH TOÁN VÀ THIẾT KẾ
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
- Sơ đồ chân và kí hiệu chân trên board arduino mega 2560:
Nặng 37g
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 Mô tả
1 2 3 GND VCC NC
4 RS Chức năng Nối mass Cấp nguồn 3.3V Lựa chọn ghi hoặc truyền dữ liệu RS = 0 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 Ghi dữ liệu 5
RD Đọc dữ liệu 6
7-14 15 DB8-DB15 CS WR = 0 WR = 1 RD = 1 RD = 0 Bus dữ liệu 8 bit Mức thấp
F_CS 16 Mức thấp Truyền nhận dữ liệu 8 bit Lựa chọn chip của LCD Lựa chọn chip Flash (chip Flash W25X16 mặc định không được sử dụng)
REST 17 Khởi đầu lại hoạt động của LCD
NC 18
LED_A Cấp nguồn cho đèn nền 19
20 21-28 NC DB0-DB7 Truyền nhận dữ liệu 8 bit
T_CLK 29 Giữ nhịp cho giao tiếp SPI của cảm ứng
T_CS 30
Ở mức thấp trong 8ms, sau đó kéo lên mức cao lại ngay Được mắc nối tiếp với điện trở hạn dòng 3.9 Ohm và kết nối với nguồn 3.3V Bus dữ liệu 8 bit Mỗi nhịp trên chân báo hiệu 1 bit dữ liệu đến hoặc đi Ở mức cao khi không làm việc T_DIN 31
NC 32
T_DO 33
T_IRQ Lựa chọn Slave cần giao tiếp trong SPI của cảm ứng Dữ liệu đầu vào của bộ điều khiển cảm ứng XPT2046 (MISO) Dữ liệu đầu ra của bộ điều khiển cảm ứng XPT2046 (MOSI) Ngắt dữ liệu của bộ điều khiển cảm ứng XPT2046 34
Thường ở mức cao, khi cảm ứng thì xuống mức thấp SD_DO 35
SD_CLK Dữ liệu đầu ra trong giao tiếp SPI của thẻ nhớ (MOSI) Giữ chịp cho giao tiếp SPI của thẻ SD 36
Mỗi nhịp trên chân báo hiệu 1 bit dữ liệu đến hoặc đi SD_DIN 37
SD_CS 38
NC NC Dữ liệu đầu vào trong giao tiếp SPI của thẻ nhớ (MISO) Lựa chọn Slave cần giao tiếp trong SPI của thẻ nhớ 39 40
- 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)
Arduino Mega 2560
1
1
5
200
200
Cảm biến vân tay
2
1
5
100
100
3 Module thời gian thực
1
5
150
150
Module wifi
4
1
5
120
120
LCD TFT
5
1
5
150
150
Relay
6
6
5
200
1200
Khóa chốt điện
7
6
12
500
3000
UPS 12V
8
1
12
100
100
Ổn áp LM2596
9
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).
= 1,87 giờ
t = (4200x2)x3,7x0,7 (12x500)+(5x1120)
= 21756 11600
- η: Hệ số sử dụng pin. Thông thường η=0,7.
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
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ế độ:
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
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
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
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 đồ
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
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
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
Hình 1Hình 4.22. Giao diện phần mềm lập trình Arduino IDE
các thao tác input/output được dễ dàng hơn.
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ÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 63
CHƯƠNG 4: THI CÔNG HỆ THỐNG
Hình 4.31. Thông báo nhập mật khẩu
Hình 4.32. Giảng viên nhập mật khẩu
Hình 4.33. Quét vân tay lần 1
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 64
CHƯƠNG 4: THI CÔNG HỆ THỐNG
Hình 4.34. Quét vân tay lần 2
Hình 4.35. Thêm vân tay thành công
Hướng dẫn sử dụng ứng dụng App android
Sau khi truy cập vào ứng dụng trên các thiết bị Android thì giao diện ban đầu của ứng
dụng hiện ra như hình dưới:
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 65
CHƯƠNG 4: THI CÔNG HỆ THỐNG
Hình 4.36. Giao diện bắt đầu của ứng dụng Hình 4.37. Người quản lí đăng nhập
Ở màn hình Menu có 2 chế độ lựa chọn. Chế độ người dùng dành cho người sử dụng
tủ đồ có thể vào và xem các thông tin về tủ đồ như tình trạng của các ngăn tủ có hoặc
chưa có đồ, thời gian hết hạn của ngăn tủ đã có đồ. Ngoài ra người quản lí của tủ đồ sẽ
đăng nhập bằng địa chỉ Email và mật khẩu riêng để vào được Chế độ quản lí.
Trong Chế độ người dùng, người sử dụng chỉ có thể xem các thông tin của tủ đồ chứ
không có quyền điều khiển hay can thiệp vào các ngăn tủ. Ô báo trạng thái có 2 màu
xanh và đỏ. Màu xanh thể hiện ngăn tủ còn trống, còn màu đỏ ngược lại cho biết ngăn
tủ đã có đồ. Khi ngăn tủ có đồ, ô báo trạng thái chuyển sang màu đỏ, đồng thời thanh
thời gian giới hạn sẽ hiện lên cho biết thời điểm ngăn đồ hết hạn, người sử dụng cần lấy
đồ trước mốc thời gian đó để tránh phải liên hệ với người quản lí hoặc mất đồ trong 1
số trường hợp.
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 66
CHƯƠNG 4: THI CÔNG HỆ THỐNG
Hình 4.38. Giao diện bên trong chế độ người dùng
Trong Chế độ quản lí, người quản lí tủ đều có các chức năng xem thông tin như trong
Chế độ người dùng. Ngoài ra người quản lí còn có các nút nhấn riêng cho từng ngăn tủ
đề có thể mở bất kỳ ngăn tủ nào đề phòng các trường hợp có sự cố trong hệ thống làm
mất ID vân tay của người gửi, người quản lí sẽ mở ngăn tủ để lấy lại đồ cho người sử
dụng. Bên cạnh đó còn 1 nút nhấn dành cho trường hợp đặc biệt như mất điện khiến
toàn bộ ID mất hết hoặc hỏa hoạn cần phải lấy tất cả đồ gấp, người quản lí sử dụng nút
này để mở toàn bộ các ngăn tủ cùng một lúc.
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 67
CHƯƠNG 4: THI CÔNG HỆ THỐNG
Hình 4.39. Giao diện bên trong chế độ quản lý
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 68
CHƯƠNG 5: KẾT QUẢ_NHẬN XÉT_ĐÁNH GIÁ
CHƯƠNG 5: KẾT QUẢ_NHẬN XÉT_ĐÁNH GIÁ
5.1 GIỚI THIỆU
Chương này trình bày kết quả của cả quá trình nghiên cứu làm đề tài trong thời gian
16 tuần. Bên cạnh đó là nhận xét, đánh giá và đề xuất hướng phát triển của sản phẩm
mô hình để hoàn thiện và có thể đi vào thực tế.
5.2 KẾT QUẢ ĐẠT ĐƯỢC
Các chuẩn truyền dữ liệu
- Tìm hiểu và nắm được các kiến thức cần thiết của các chuẩn truyền dữ liệu UART,
SPI, I2C.
Về phần cứng
- Biết cách sử dụng phần mền altium để thiết kế sơ đồ nguyên lý của hệ thống.
- Biết sử dụng phần mềm eagle để thiết kế mạch PCB 2 lớp.
- Nâng cao được kĩ năng thi công mạch (hàn linh kiện, kiểm tra các thành phần trong
mạch).
- Biết cách tính toán các giá trị điện áp dòng điện trong hệ thống để chọn nguồn phù
hợp.
- Biết kết nối các linh kiện với nhau sao cho phù hợp tạo thành một hệ thống hoàn
chỉnh.
Phần mềm lập trình
- Biết lập trình cho arduino, ESP8266 sử dùng phần mềm adduino IDE.
- Biết sử dụng phần mềm android studio viết được app mobile chạy trên điện thoại
android.
Firebase
- Xây dựng Firebase và sử dụng công cụ Realtime Database.
- Biết kết nối dữ liệu giữa hệ thống với firre base.
- Kết nối database thông qua app Android.
Các thành phần khác trong hệ thống
- Biết sử dụng và lập trình cho module wifi ESP8266.
- Nắm được nguyên lý hoạt động của cảm biến vân tay.
- Nắm được nguyên lý hoạt động module relay, module thời gian thực.
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 69
CHƯƠNG 5: KẾT QUẢ_NHẬN XÉT_ĐÁNH GIÁ
5.3 KẾT QUẢ THỰC NGHIỆM
5.3.1 Thiết kế thi công tủ
Một số hình ảnh sau khi hoàn thiện:
Hình 5.1. Hình ảnh thực tế mặt trước tủ sau khi hoàn thiện
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 70
CHƯƠNG 5: KẾT QUẢ_NHẬN XÉT_ĐÁNH GIÁ
Hình 5.2. Mặt bên phải tủ sau khi hoàn thiện
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 71
CHƯƠNG 5: KẾT QUẢ_NHẬN XÉT_ĐÁNH GIÁ
5.3.2 Phần cứng, giao diện điều khiển
Hình 5.3. Board mạch lắp bên trong tủ
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 72
CHƯƠNG 5: KẾT QUẢ_NHẬN XÉT_ĐÁNH GIÁ
Hình 5.4. Mặt trước board điều khiển
Một số hình ảnh lúc thao tác sử dụng tủ:
- Giao diện chính:
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 73
CHƯƠNG 5: KẾT QUẢ_NHẬN XÉT_ĐÁNH GIÁ
Hình 5.5. Giao diện chính
- Chế độ “Gửi đồ”:
Hình 5.6. Quét vân tay gửi đồ
Hình 5.7. Gửi đồ thành công
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 74
CHƯƠNG 5: KẾT QUẢ_NHẬN XÉT_ĐÁNH GIÁ
- Chế độ “Lấy đồ”:
Hình 5.8. Quét vân tay lấy đồ
Hình 5.9. Thông báo lấy đồ thành công
- Chế độ “Thêm vân tay”:
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 75
CHƯƠNG 5: KẾT QUẢ_NHẬN XÉT_ĐÁNH GIÁ
Hình 5.10. Thông báo nhập mật khẩu
Hình 5.11. Giao diện nhập mật khẩu
Sau khi nhập mật khẩu đúng chuyển sang giao diện quét để thêm vân tay
Hình 5.12. Quét vân tay lần 1
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 76
CHƯƠNG 5: KẾT QUẢ_NHẬN XÉT_ĐÁNH GIÁ
Hình 5.13. Quét vân tay lần 2
Hình 5.14. Thêm vân tay thành công
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 77
CHƯƠNG 5: KẾT QUẢ_NHẬN XÉT_ĐÁNH GIÁ
5.3.3 App android
Một số hình ảnh của app khi sử dụng:
Hình 5.15. Giao diện bắt đầu của ứng dụng Hình 5.16. Người quản lí đăng nhập
Ở chế độ người dùng có 6 biểu tượng tương ứng với 6 hộc tủ. Icon hiện màu xanh là
tủ đó còn trống, khi có người dùng gửi đồ icon chuyển sang màu đỏ đồng thời hiện
thời gian gửi đồ.
Tương tự như chế độ người dùng, chế độ quản lí có các nút nhấn riêng cho từng ngăn
tủ đề có thể mở bất kỳ ngăn tủ nào đề phòng các trường hợp có sự cố trong hệ thống làm
mất ID vân tay của người gửi, người quản lí sẽ mở ngăn tủ để lấy lại đồ cho người sử
dụng. Bên cạnh đó còn 1 nút nhấn dành cho trường hợp đặc biệt như mất điện khiến
toàn bộ ID mất hết hoặc hỏa hoạn cần phải lấy tất cả đồ gấp, người quản lí sử dụng nút
này để mở toàn bộ các ngăn tủ cùng một lúc.
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 78
CHƯƠNG 5: KẾT QUẢ_NHẬN XÉT_ĐÁNH GIÁ
Hình 5.17. Giao diện bên trong chế độ người dùng
Hình 5.18. Giao diện bên trong chế độ quản lý.
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 79
CHƯƠNG 5: KẾT QUẢ_NHẬN XÉT_ĐÁNH GIÁ
5.4 NHẬN XÉT, ĐÁNH GIÁ
5.4.1 Nhận xét
Sau thời gian 16 tuần nghiên cứu và thực hiện đề tài, hệ thống cơ bản đáp ứng được
yêu cầu thiết kế ban đầu. Dưới đây là một số nhận xét:
Tủ:
- Tủ đựng vật dụng giảng viên hoàn thiện chắc chắn, đáp ứng được nhu cầu cơ bản
nhất của giảng viên trong việc gửi đồ hằng ngày.
- Thiết kế và hoàn thiện khá đẹp mắt.
- Hộc tủ với kích thước vừa phải có thể để vừa một balo hay laptop 15 inch.
- Độ bảo mật của tủ rất cao.
Phần cứng, giao diện điều khiển:
- Mạch điều khiển trung tâm hoạt động ổn định, chính xác.
- Tốc độ quét và nhận dạng vân tay nhanh.
- Quá trình gửi đồ và lấy đồ diễn ra nhanh chóng.
- Thời gian hoạt động ở chế độ Pin dự phòng chỉ khoảng 5 giờ.
- Đôi lúc có độ trễ nhất định khi điều khiển qua app android. Tuy nhiên đây là yếu tố
khách quan của mạng wifi, việc này không ảnh hưởng nhiều đến người sử dụng.
- Giao diện người dùng đơn giản dễ sử dụng.
- Admin và người dùng dễ dàng theo dõi tình trạng tủ thông qua app android.
App android:
- Giao diện trực quan, đơn giản và dễ sử dụng.
- Hiển thị đầy đủ thông tin cần thiết cho người sử dụng biết và theo dõi.
- Đôi lúc có độ trễ nhất định khi điều khiển qua app android. Tuy nhiên đây là yếu tố
khách quan do mạng wifi, việc này không ảnh hưởng nhiều đến người sử dụng.
- Hiện tại app chỉ chạy được trên nền tản hệ điều hành android.
5.4.2 Đánh giá
Bảng 5.1: Số liệu thực nghiệm
Số lần thực Số lần thành Đánh giá Quá trình nghiệm công
Gửi đồ 20 20 ĐẠT
Lấy đồ 20 20 ĐẠT
Thêm vân tay 20 19 ĐẠT
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 80
CHƯƠNG 5: KẾT QUẢ_NHẬN XÉT_ĐÁNH GIÁ
Điều khiển bằng app 20 ĐẠT 17
Thông báo hết hạn 20 ĐẠT 19
Sau quá trình vận hành thử hệ thống, nhóm có những đánh giá sau đây: Hệ thống hoạt
động ổn định đạt được những mục tiêu ban đầu đề ra. Tủ thiết kế khá đẹp, hoàn thiện
chắc chắn và độ tin cậy cao.
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 81
CHƯƠNG 6: KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN
CHƯƠNG 6: KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN
6.1 KẾT LUẬN
Sau khoảng 16 tuần nghiên cứu và tìm hiểu, nhóm đã hoàn thành đồ án và thi công ra
sản phẩm tủ đồ vân tay cho giảng viên đáp ứng được những yêu cầu đã đặt ra ban đầu:
- Sản phẩm tủ được thi công hoàn thiện, đi dây gọn gàng có thể mang vào sử dụng.
- Tốc độ nhận dạng vân tay nhanh, chính xác.
- Các chức năng như gửi đồ, lấy đồ, thêm vân tay hoạt động mượt mà, ổn định.
- Chức năng tự động giải phóng tủ khi quá hạn hoạt động đúng theo yêu cầu.
- Tủ hoạt động bình thường khi mất điện nhờ tích hợp mạch UPS và pin dự phòng.
- App android có giao diện trực quan, dễ theo dõi.
- Chế độ của người quản lí được bảo mật bằng tài khoản Gmail.
- Thời gian trễ khi điều khiển tủ bằng App khá lớn khoảng 2 đến 3 giây.
- Thời gian duy trì hoạt động của tủ ở chế độ Pin dự phòng chưa cao.
6.2 HƯỚNG PHÁT TRIỂN
- Thiết kế tủ với mẫu mã đẹp mắt hơn, số lượng hộc tủ nhiều hơn phù hợp với từng
mục đích sử dụng khác nhau.
- Tích hợp thêm tính năng bảo mật bằng RFID.
- Tích hợp khóa cơ truyền thống để mở tủ trong trường hợp xảy ra lỗi của hệ thống.
- Lưu trữ thông tin cá nhân của người dùng mỗi khi gửi đồ hoặc lấy đồ lên hệ thống
quản lý giúp tăng khả năng bảo mật.
- Nâng cấp giao diện cũng như chức năng của App Android.
- Phát triển ứng dụng chạy trên nhiều thiết bị có kích thước màn hình khác nhau.
- Tăng dung lượng Pin dự phòng để tủ hoạt động nhiều giờ hơn khi mất điện.
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 82
TÀI LIỆU THAM KHẢO
TÀI LIỆU THAM KHẢO
Sách tham khảo
[1] Nguyễn Văn Hiệp - Đinh Quang Hiệp, “Lập trình android cơ bản ”, Nhà xuất bản
ĐH Quốc Gia, Tp.HCM, 2015.
[2] Nguyễn Đình Phú, “Giáo trình Vi xử lí ”, Trường ĐHSPKT, Tp.HCM, 2013.
[3] Phạm Hải, “Tìm hiểu cách thức hoạt động của công nghệ bảo mật vân tay”,
quantrimang.com, 11/2018
[4] Nguyễn Khắc Thành, “Điểm danh sinh viên bằng vân tay” , Đồ án tốt nghiệp, trường
ĐHSPKT Tp.HCM, 2016.
[5] Trần Anh Đề - Trần Sơn Lành, “Hệ thống điểm danh bằng vân tay sử dụng vi điều
khiển ARM”, Đồ án tốt nghiệp, trường ĐHSPKT Tp.HCM, 2016.
Website tham khảo
[1] www.arduino.vn
[2] www.wikipedia.org
[3] www.alldatasheet.com
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 83
PHỤ LỤC
PHỤ LỤC
Code arduino
#include
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 84
Wire.write(dec2bcd(hr)); Wire.write(dec2bcd(wd)); // day of week: Sunday = 1, Saturday = 7 Wire.write(dec2bcd(d)); Wire.write(dec2bcd(mth)); Wire.write(dec2bcd(yr)); Wire.endTransmission(); } void readDS1307() { Wire.beginTransmission(DS1307); Wire.write((byte)0x00); Wire.endTransmission(); Wire.requestFrom(DS1307, NumberOfFields); second = bcd2dec(Wire.read() & 0x7f); minute = bcd2dec(Wire.read() ); hour = bcd2dec(Wire.read() & 0x3f); // chế độ 24h. wday = bcd2dec(Wire.read() ); day = bcd2dec(Wire.read() ); month = bcd2dec(Wire.read() ); year = bcd2dec(Wire.read() ); year += 2000; if (currentPage == '0') { myGLCD.setBackColor(255, 255, 255); myGLCD.print("/", 151, 30); myGLCD.print("/", 196, 30); myGLCD.printNumI(year, 213, 30, 2); myGLCD.print(":", 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) {
PHỤ LỤC
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 85
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);
PHỤ LỤC
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 86
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);
PHỤ LỤC
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 87
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); }
PHỤ LỤC
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 88
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);
PHỤ LỤC
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 89
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();
PHỤ LỤC
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 90
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;
PHỤ LỤC
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 91
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; } }
PHỤ LỤC
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 92
// 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; }
PHỤ LỤC
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 93
// 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; }
PHỤ LỤC
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 94
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;
PHỤ LỤC
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 95
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;
PHỤ LỤC
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 96
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 <= 285) && (y >= 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 <= 285) && (y >= 130) && (y <= 170)) { drawFrame(35, 130, 285, 170); currentPage = 'A'; myGLCD.clrScr(); drawTRANG1_LAYDO(); } if ((x >= 35) && (x <= 285) && (y >= 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 <= 60) && (y >= 10) && (y <= 36)) { drawFrame(10, 10, 60, 36); currentPage = '0'; // Indicates we are at home screen myGLCD.clrScr(); drawHomeScreen(); } } getFingerprintIDez1(); } //----------------------------------------------------------------------- -- if (currentPage == '$') {
PHỤ LỤC
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 97
if (myTouch.dataAvailable()) { myTouch.read(); x = myTouch.getX(); y = myTouch.getY(); if ((x >= 10) && (x <= 60) && (y >= 10) && (y <= 36)) { drawFrame(10, 10, 60, 36); currentPage = '0'; // Indicates we are at home screen myGLCD.clrScr(); drawHomeScreen(); } if ((x >= 35) && (x <= 285) && (y >= 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'); }
PHỤ LỤC
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 98
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; }
PHỤ LỤC
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 99
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 <= 60) && (y >= 10) && (y <= 36)) { drawFrame(10, 10, 60, 36); currentPage = '0'; // Indicates we are at home screen myGLCD.clrScr(); drawHomeScreen(); } } getFingerprintIDez2(); } }
PHỤ LỤC
#include
Code Wifi ESP8266
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 100
// 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);
PHỤ LỤC
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 101
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)); //-------------------------------------------------------- }
PHỤ LỤC
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 102

