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