1. Trang chủ
  2. » Giáo Dục - Đào Tạo

Hệ thống phòng học tự động và phát hiện hành vi ngủ gật

85 9 0

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

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

THÔNG TIN TÀI LIỆU

Nội dung

BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT THÀNH PHỐ HỒ CHÍ MINH ĐỒ ÁN TỐT NGHIỆP NGÀNH CNKT ĐIỆN TỬ VIỄN THÔNG HỆ THỐNG PHÒNG HỌC TỰ ĐỘNG VÀ PHÁT HIỆN HÀNH VI NGỦ GẬT GVHD: THS NGUYỄN NGƠ LÂM SVTH : HỒNG LÊ ĐỨC MINH PHAN TẤN LỰC SKL011205 Tp Hồ Chí Minh, tháng 6/2023 BỘ GIÁO DỤC & ĐÀO TẠO TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT TP HỒ CHÍ MINH KHOA ĐÀO TẠO CHẤT LƯỢNG CAO ĐỒ ÁN TỐT NGHIỆP HỆ THỐNG PHÒNG HỌC TỰ ĐỘNG VÀ PHÁT HIỆN HÀNH VI NGỦ GẬT SVTH: HOÀNG LÊ ĐỨC MINH MSSV: 17141105 PHAN TẤN LỰC MSSV: 17141103 Ngành: CÔNG NGHỆ KỸ THUẬT ĐIỆN TỬ VIỄN THÔNG GVHD: THS NGUYỄN NGÔ LÂM Tp Hồ Chí Minh, 06/2023 i TRƯỜNG ĐH SPKT TP HỒ CHÍ MINH KHOA CHẤT LƯỢNG CAO BỘ MÔN ĐIỆN TỬ VIỄN THƠNG CỘNG HỊA XÃ HỘI CHỦ NGHĨA VIỆT NAM ĐỘC LẬP - TỰ DO - HẠNH PHÚC o0o -Tp HCM, ngày 22 tháng 06 năm 2023 NHIỆM VỤ ĐỒ ÁN TỐT NGHIỆP Họ tên sinh viên: Chuyên ngành: Hệ đào tạo: Khóa: Hồng Lê Đức Minh Phan Tấn Lực Điện tử viễn thơng Đại học quy 2017 MSSV: 17141105 MSSV: 17141103 Mã ngành: 141 Mã hệ: Lớp: 17141CLVT1A I TÊN ĐỀ TÀI: HỆ THỐNG PHÒNG HỌC TỰ ĐỘNG VÀ PHÁT HIỆN HÀNH VI NGỦ GẬT II NHIỆM VỤ Các số liệu ban đầu: - Tìm hiểu hệ thống nhận diện thông qua camera - Tìm hiểu cảm biến ứng dụng vào đề tài - Tìm phương án để thiết kế hệ thống - Xây dựng mơ hình xếp cảm biến vào vị trí hợp lý Nội dung thực hiện: - Thiết kế thi công phần cứng: Viết chương trình cho module hệ thống giao tiếp với thiết bị điều khiển - Chạy thử demo điều chỉnh, viết báo cáo - Báo cáo đề tài tốt nghiệp III NGÀY GIAO NHIỆM VỤ: 08/03/2023 IV NGÀY HOÀN THÀNH NHIỆM VỤ: 22/06/2023 V HỌ VÀ TÊN CÁN BỘ HƯỚNG DẪN: CÁN BỘ HƯỚNG DẪN ThS Nguyễn Ngô Lâm BM ĐIỆN TỬ VIỄN THÔNG ii 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 CỘNG HỊA XÃ HỘI CHỦ NGHĨA VIỆT NAM ĐỘC LẬP - TỰ DO - HẠNH PHÚC o0o -Tp HCM, ngày 13 tháng 06 năm 2023 LỊCH TRÌNH THỰC HIỆN ĐỒ ÁN TỐT NGHIỆP Họ tên sinh viên 1: Hoàng Lê Đức Minh Lớp: 17141CLVT1A MSSV: 17141105 Họ tên sinh viên 2: Phan Tấn Lực Lớp: 17141CLVT1A MSSV: 17141103 Tên đề tài: HỆ THỐNG PHÒNG HỌC TỰ ĐỘNG VÀ PHÁT HIỆN HÀNH VI NGỦ GẬT Tuần/ngày Tuần Nội dung Xác nhận GVHD Gặp GVHD để nghe phổ biến quy định, thực chọn (08/03 – 14/03) đề tài, tên đề tài, thời gian làm việc Tuần GVHD tiến hành xét duyệt đề tài Thiết kế (15/03 – 21/03) sơ đồ nguyên lý, giải thích chức khối hệ thống Tuần Tìm hiểu Raspberry pi (29/03 – 04/04) Phương pháp nhận diện ngủ gật Tìm hiểu RFID firebase Tuần Viết chương 3, vẽ sơ đồ khối, sơ đồ nguyên lý (05/04 – 11/04) Giải thích chức khối Tuần Chỉnh sửa sơ đồ nguyên lí sơ đồ khối (12/04 – 18/04) Thêm chức cho hệ thống Tìm hiểu cảm biến nhiệt độ DHT11 Cảm biến độ sáng BH1750 Module relay để điều khiển thiết bị điện Thêm chức nút nhấn để bật tắt thủ công iii Tuần Chỉnh sửa sơ đồ nguyên lí (19/04 – 25/04) Thêm chức nút nhấn xác nhận thông tin cảnh báo từ hệ thống Báo cáo tiến độ Tuần Viết chương trình, kết nối phần cứng, viết báo cáo (26/04 – 02/05) Tuần Chỉnh sửa lỗi nội dung báo cáo, tiếp tục cơng việc lập trình (03/05 – 09/05) cho hệ thống Tuần Chỉnh sửa lỗi nội dung báo cáo, tiếp tục cơng việc lập trình (10/05 – 16/05) cho hệ thống Tuần 10 Chỉnh sửa lỗi nội dung báo cáo, tiếp tục cơng việc lập trình (17/05 – 23/05) cho hệ thống Tuần 11 Chỉnh sửa lỗi nội dung báo cáo, tiếp tục công việc lập trình (24/05 – 30/05) cho hệ thống Tuần 12 Chỉnh sửa lỗi nội dung báo cáo, tiếp tục công việc lập trình (31/05 – 06/06) cho hệ thống Tuần 13 Chỉnh sửa lỗi nội dung báo cáo, tiếp tục công việc lập trình (07/06 – 13/06) cho hệ thống Tuần 14 Hồn thiện nội dung báo cáo mơ hình sản phẩm (14/06 – 22/06 GV HƯỚNG DẪN (Ký ghi rõ họ tên) iii LỜI CAM ĐOAN Chúng cam kết đề tài kết việc tự thực dựa tài liệu có liên quan, khơng chép từ cơng trình trước Người thực đề tài Hoàng Lê Đức Minh Phan Tấn Lực iv LỜI CẢM ƠN Chúng muốn gửi lời cảm ơn chân thành đến thầy Nguyễn Ngô Lâm trực tiếp hướng dẫn giúp đỡ chúng tơi hồn thành đề tài Thầy tạo điều kiện, góp ý chia sẻ nhiều kinh nghiệm giúp chúng tơi hồn thành đề tài tốt Chúng muốn gửi lời cảm ơn đến thầy cô trường Đại Học Sư Phạm Kỹ Thuật cung cấp cho kiến thức chuyên môn tảng chuyên sâu, tạo điều kiện tốt cho chúng tơi hồn thành đề tài Chúng muốn gửi lời cảm ơn đến bạn sinh viên chia sẻ, trao đổi kiến thức kinh nghiệm quý báu thời gian thực đề tài Cuối cùng, muốn gửi lời cảm ơn đến gia đình, bạn bè người thân động viên, ủng hộ tạo điều kiện cho thực đề tài Xin chân thành cảm ơn! Người thực đề tài Hoàng Lê Đức Minh Phan Tấn Lực v MỤC LỤC 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 VẼ .viii LIỆT KÊ BẢNG ix TÓM TẮT x Chương TỔNG QUAN 1.1 ĐẶT VẤN ĐỀ 1.2 MỤC TIÊU 1.3 NỘI DUNG NGHIÊN CỨU 1.4 GIỚI HẠN 1.5 BỐ CỤC Chương CƠ SỞ LÝ THUYẾT 2.1 VI ĐIỀU KHIỂN 2.2 CẢM BIẾN NHIỆT ĐỘ DHT11 2.3 CẢM BIẾN ĐỘ SÁNG 2.4 ĐẦU ĐỌC THẺ RFID 13 2.5 Màn hình LCD 20x4 16 2.6 MODULE I2C PCF8574 18 2.7 MODULE RELAY 18 2.8 CÁC CHUẨN GIAO TIẾP SỬ DỤNG 19 2.9 SO SÁNH CÁC CHUẨN TRUYỀN DỮ LIỆU I2C, UART VÀ SPI 25 2.10 CƠ SỞ NHẬN DIỆN NGỦ GẬT 26 Chương THIẾT KẾ VÀ XÂY DỰNG HỆ THỐNG 27 3.1 YÊU CẦU VÀ SƠ ĐỒ KHỐI HỆ THỐNG 27 3.1.1 Yêu cầu hệ thống 27 3.1.2 Sơ đồ khối chức khối 27 3.1.3 Hoạt động hệ thống 28 3.2 THIẾT KẾ HỆ THỐNG PHẦN CỨNG 29 3.2.1 Khối RFID 29 3.2.2 Khối cảm biến nhiệt độ 30 vi 3.2.4 Khối hiển thị thông tin điểm danh 31 3.2.5 Khối Relay 32 3.2.6 Khối nút nhấn 32 3.2.7 Khối xử lý trung tâm 33 3.2.8 Khối camera 34 3.2.9 Khối nguồn 34 3.2.10 Sơ đồ nguyên lí hệ thống 36 Chương LẬP TRÌNH CHO HỆ THỐNG 37 4.1 GIỚI THIỆU 37 4.2 THI CÔNG HỆ THỐNG 37 4.2.1 Lắp ráp linh kiện 37 4.2.2 Đóng gói thi cơng mơ hình 38 4.3 LẬP TRÌNH HỆ THỐNG 39 4.3.1 Lưu đồ giải thuật giải thích 39 4.3.2 Giới thiệu Thony 44 4.3.3 Giới thiệu Firebase 45 4.3.4 Hướng dẫn sử dụng FIREBASE 46 4.3.5 Các thư viện sử dụng 50 4.4 TÀI LIỆU HƯỚNG DẪN SỬ DỤNG, THAO TÁC 55 4.5 DỰ TỐN MƠ HÌNH HỆ THỐNG LỚP HỌC TỰ ĐỘNG VÀ PHÁT HIỆN NGỦ GẬT 55 Chương KẾT QUẢ, NHẬN XÉT VÀ ĐÁNH GIÁ 57 5.1 KẾT QUẢ THỰC NGHIỆM 57 5.1.1 Kết phần mềm phần cứng 57 5.1.2 Nhận xét đánh giá 59 Chương KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 60 6.1 KẾT LUẬN 60 6.1.1 Kết đạt 60 6.1.2 Những mặt hạn chế 60 6.2 HƯỚNG PHÁT TRIỂN 60 TÀI LIỆU THAM KHẢO 62 PHỤ LỤC 64 vii LIỆT KÊ HÌNH VẼ Hình 1: Bộ vi xử lý .3 Hình 2: Raspberry pi mơ thực tế .4 Hình 3: Sơ đồ chân raspberry pi .5 Hình 4: Cặp nhiệt điện Hình 5: Nhiệt điện trở Hình 6: Cảm biến nhiệt bán dẫn .7 Hình 7: Nhiệt kế xạ Hình 8: Cảm biến nhiệt độ DHT11 Hình 9: Cảm biến ánh sáng photodiode Hình 10: Cảm biến phototransistor 10 Hình 11: Cảm biến ánh sáng photoresistor 10 Hình 12: Module cảm biến độ sáng BH1750 12 Hình 13: Sơ đồ nguyên lý cảm biến độ sáng BH1750 .12 Hình 14: Cấu tạo đầu đọc RFID 13 Hình 15: Cấu tạo thẻ tag 13 Hình 16: Nguyên lý hoạt động RFID .14 Hình 17: Các loại đầu đọc thẻ RFID thị trường 15 Hình 18: Module RC522 .16 Hình 19: Sơ đồ nguyên lý module RC522 .16 Hình 20: Màn hình LCD20x4 .17 Hình 21: Module chuyển đổi I2c PCF8574 18 Hình 22: Module relay kênh 19 Hình 23: Sơ đồ nguyên lý module relay 19 Hình 24: Giao tiếp UART 20 Hình 25: Chuỗi liệu chuẩn giao tiếp UART 20 Hình 26: Giao tiếp Master slave .21 Hình 27: Giao tiếp SPI 24 Hình 28: Master kết nối với nhiều slave .24 Hình 29: Quá trình truyền liệu theo nguyên tắc dịch bit 25 Hình 1: Sơ đồ khối hệ thống 27 Hình 2: Sơ đồ kết nối module RFID RC522 với Raspberry pi 30 Hình 3: Sơ đồ kết nối module DHT11 với Raspberry pi .30 Hình 4: Sơ đồ kết nối module BH1750 với Raspberry pi .31 Hình 5: Sơ đồ kết nối khối LCD 20x4 I2C với Raspberry pi 31 Hình 6: Khối relay kênh điều khiển thiết bị điện .32 Hình 7: Khối nút nhấn 33 Hình 8: khối xử lý trung tâm 33 Hình 9: Khối camera .34 viii CHƯƠNG KẾT QUẢ_NHẬN XÉT_ĐÁNH GIÁ Hình 4: Thông số đo từ cảm biến ánh sáng cảm biến nhiệt độ 5.1.2 Nhận xét đánh giá Sau khoảng thời gian dài nghiên cứu thực đồ án tốt nghiệp, nhóm đạt thành tựu đáng kể đề tài "Hệ thống lớp học tự động nhận diện ngủ gật" Các kết đạt bao gồm: Bảng 1: Số liệu thực nghiệm Kết thực nghiệm Đánh giá Cảm biến DHT11 Nhiệt độ chênh lệch ±2°C Điều khiển thiết bị điện nút nhấn Nút nhấn bị trễ, thời gian trễ rơi vào 2-3s Hệ thống nhận diện ngủ gật Có độ trễ khoảng 3s, độ xác khoảng 80% sau thử với 10 lần chạy thực nghiệm Hệ thống điểm danh Thông tin từ 4-5s để hiển thị lên LCD hiển thị Firebase Hiển thị LCD LCD hiển thị tốt thông tin cần thiết Cảm biến độ sáng BH1750 Cảm biến độ sáng có tốc độ cập nhật trễ khoảng 1s STT Nhìn chung, mơ hình hệ thống hoạt động tương đối ổn định, đạt yêu cầu hệ thống đề Tuy nhiên giới hạn phần cứng Raspberry pi nên khả nhận diện hình ảnh chưa tốt BỘ MƠN ĐIỆN TỬ VIỄN THÔNG 59 CHƯƠNG KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN Chương KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 6.1 KẾT LUẬN 6.1.1 Kết đạt Sau trình nghiên cứu thi cơng tổng hợp lại kết đạt so sánh với yêu cầu, mục tiêu đề tài đặt Nhóm đạt số yêu cầu sau: - Hồn thiện mơ hình, chức hệ thống hoạt động - Giao tiếp truyền liệu thành công Raspberry pi với module DHT11, BH1750, LCD 20x4 I2C, RC522, Relay - Hiển thị thông tin điểm danh lên hình LCD - Khi có thông báo phát ngủ gật, thực sáng đèn led - Tích hợp nút nhấn để xác thực thông báo, điều khiển thiết bị điện bật tắt thủ cơng, gọi hỗ trợ có cố - Hiểu biết Firebase - Trang bị camera giúp hệ thống nhận diện hành vi ngủ gật 6.1.2 Những mặt hạn chế - Phần mềm nhận diện hình ảnh chưa tối ưu phần cứng - Chất lượng hình ảnh cịn thấp - Chỉ dừng mở mức độ bật tắt thiết bị điện, chưa thể điều khiển nhiều thao tác điều hòa 6.2 HƯỚNG PHÁT TRIỂN Từ hạn chế trên, nhóm đề hướng phát triển cho đề tài sau: - Trang bị camera có chất lượng hình ảnh cao - Tối ưu phần mềm nhận diện để hoạt động mượt thiết bị có hiệu thấp - Sử dụng kết nối không dây để điều khiển thiết bị điện BỘ MÔN ĐIỆN TỬ VIỄN THÔNG 60 CHƯƠNG KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN - Sử dụng máy tính nhúng có khả xử lý hình ảnh tốt - Hệ thống cần thiết kế để tương thích với nhiều thiết bị khác nhau, bao gồm máy chiếu, hình, loa thiết bị tương tự - Phát triển ứng dụng di động cho phép học viên giảng viên truy cập điều khiển thiết bị phòng học từ xa BỘ MÔN ĐIỆN TỬ VIỄN THÔNG 61 TÀI LIỆU THAM KHẢO TÀI LIỆU THAM KHẢO ÂN, T (2022, 02/06/2022 02/06/2022) tktech Retrieved from tktech.vn: https://tktech.vn/cam-bien-cuong-do-anh-sang/ baoanjsc (2020, 24/02/2020 24/02/2020) baoanjsc Retrieved from baoanjsc.com.vn: https://baoanjsc.com.vn/du-an/rfid-la-gi-ung-dung-cuarfid-trong-san-xuat_2_69_31600_vn.aspx dayhocstem (2020) dayhocstem Retrieved from dayhocstem.com: https://dayhocstem.com/blog/2020/05/giao-dien-ghep-noi-spi.html denlednhaxuongcaocap (2020) Đèn Led nhà xưởng cao cấp Được truy lục từ denlednhaxuongcaocap.com: https://denlednhaxuongcaocap.com/tuvan/cuong-do-anh-sang-lagi/#:~:text=Ti%C3%AAu%20chu%E1%BA%A9n%20%C3%A1nh%20s%C 3%A1ng%20%C4%91%E1%BB%83,nh%C3%A2n%20vi%C3%AAn%20% C4%91%E1%BA%A1t%20150%20lux DevZone (2021) Retrieved from https: //www.facebook.com/106343431028265/posts/249915886671018/ handsontec (n.d.) handsontec Retrieved from handsontec.com: https://www.handsontec.com/dataspecs/4Ch-relay.pdf hshop (n.d.) hshop Retrieved from hshop.vn: https://hshop.vn/products/cam-biencuong-do-onh-song-lux-bh1750 hshop (n.d.) hshop Retrieved from hshop.vn: https://hshop.vn/products/mach-rfidrc522-nfc-13-56mhz hshop (n.d.) hshop Retrieved from hshop.vn: https://hshop.vn/products/lcd-textlcd2004-xanh-duong Isaac (n.d.) hwlibre.com Retrieved from hwlibre.com: https://www.hwlibre.com/vi/dht11/ LongPhan (2021, 10/12/2021 10/12/2021) mecsublog Được truy lục từ blog.mecsu.vn: https://blog.mecsu.vn/raspberry-pi-4-la-gi/ Nguyễn Đình Phú (08/2016) VI ĐIỀU KHIỂN Hồ Chí Minh.: Trường Đại học Sư Phạm Kỹ Thuật nshopvn (n.d.) nshopvn Retrieved from nshopvn.com: https://nshopvn.com/product/mach-mo-rong-i2c-waveshare-pcf8574/ BỘ MÔN ĐIỆN TỬ VIỄN THÔNG 62 TÀI LIỆU THAM KHẢO PPK, H Đ ( 2016) arduino.vn/ Retrieved from arduino.vn: http://arduino.vn/baiviet/1053-giao-tiep-i2c-voi-nhieu-module trungcapluatvithanh.edu.vn (2022) trungcapluatvithanh.edu.vn Retrieved from trungcapluatvithanh.edu.vn: https://trungcapluatvithanh.edu.vn/uart-la-gi6263/ vietchem (2022, 25/07/2022 25/07/2022) VIETCHEM Retrieved from vietchem.com.vnvietchem.com.vn: https://vietchem.com.vn/tin-tuc/nguyenly-hoat-dong-cua-cam-bien-nhiet-dola.html#:~:text=C%E1%BA%A3m%20bi%E1%BA%BFn%20nhi%E1%BB %87t%20%C4%91%E1%BB%99%20l%C3%A0%20m%E1%BB%99t%20t hi%E1%BA%BFt%20b%E1%BB%8B%20RTD%20(%C4%91%E1%BA% A7u,m%E1%BB%99t%20con%20s%E1% wisevietnam (2022, 05 10) wisevietnam.vn Được truy lục từ wisevietnam.vn: https://wisevietnam.vn/nhiet-do-la-gi/#ftoc-heading-1 BỘ MÔN ĐIỆN TỬ VIỄN THÔNG 63 PHỤ LỤC PHỤ LỤC ❖ Code thonny (Python IDE) cho Raspberry pi ➢ File sensors.py: import Adafruit_DHT from RPi_GPIO_i2c_LCD import lcd from picamera.array import PiRGBArray from picamera import PiCamera import cv2 import dlib from scipy.spatial import distance from time import sleep, strftime import RPi.GPIO as GPIO import mfrc522 import signal import datetime import smbus import time import math import pyrebase import threading continue_reading = True #FireBase AUTH : AIzaSyDWbkuJgAe0wk6qnu4wKH1nvrjXF7G1q5k #FireBase DataBase : https://datn-7637b-default-rtdb.asiasoutheast1.firebasedatabase.app/ camera = PiCamera() camera.resolution = (640, 480) camera.framerate = 32 rawCapture = PiRGBArray(camera, size=(640, 480)) config = { "apiKey": "AIzaSyDWbkuJgAe0wk6qnu4wKH1nvrjXF7G1q5k", BỘ MÔN ĐIỆN TỬ VIỄN THÔNG 64 PHỤ LỤC "authDomain": "datn-7637b-default-rtdb.asiasoutheast1.firebaseapp.com", "databaseURL": "https://datn-7637b-default-rtdb.asiasoutheast1.firebasedatabase.app/", "storageBucket": "datn-7637b.appspot.com", } GPIO setwarnings(False) firebase = pyrebase.initialize_app(config) db = firebase.database() storage = firebase.storage() piority_maylanh = piority_quat =0 piority_den =0 cap = relay_1_pin = relay_2_pin = relay_3_pin = 12 relay_4_pin = 13 buzzer_pin = GPIO.setmode(GPIO.BCM) GPIO.setup(relay_1_pin, GPIO.OUT) GPIO.setup(relay_2_pin, GPIO.OUT) GPIO.setup(relay_3_pin, GPIO.OUT) GPIO.setup(relay_4_pin, GPIO.OUT) GPIO.setup(16, GPIO.IN, pull_up_down=GPIO.PUD_UP) GPIO.setup(19, GPIO.IN, pull_up_down=GPIO.PUD_UP) GPIO.setup(23, GPIO.IN, pull_up_down=GPIO.PUD_UP)#butt3 GPIO.setup(26, GPIO.IN, pull_up_down=GPIO.PUD_UP) #SupportBUTT4 GPIO.setup(27, GPIO.IN, pull_up_down=GPIO.PUD_UP) #Camera Accept BỘ MÔN ĐIỆN TỬ VIỄN THÔNG 65 PHỤ LỤC GPIO.setup(22, GPIO.IN, pull_up_down=GPIO.PUD_UP) #Camera Denied LCD = lcd.HD44780(0x27) dht11_pin = 17 #buzzer = Buzzer(buzzer_pin) face_detector = dlib.get_frontal_face_detector() dlib_facelandmark = dlib.shape_predictor('/home/pi/Desktop/DATN/face_landmarks.dat') uid1 = [84, 190, 35, 36, 237] uid2 = [228, 106, 17, 35, 188] uid3 = [169, 26, 5, 123, 205] bus = smbus.SMBus(1) def may_lanh(channel): global piority_maylanh if piority_maylanh == 1: piority_maylanh = time.sleep(0.2) elif piority_maylanh == 0: piority_maylanh =1 time.sleep(0.2) print("maylanh") print(piority_maylanh) def den(channel): global piority_den if piority_den == 1: piority_den = time.sleep(0.2) elif piority_den == 0: piority_den =1 time.sleep(0.2) print("den") print(piority_den) BỘ MÔN ĐIỆN TỬ VIỄN THÔNG 66 PHỤ LỤC def quat(channel): global piority_quat if piority_quat == 1: piority_quat = time.sleep(0.2) elif piority_quat == 0: piority_quat =1 time.sleep(0.2) print("quat") print(piority_quat) def capture_sleep(channel): global cap cap = def cancel_picture(channel): global cap cap = #button GPIO.add_event_detect(16, GPIO.RISING, callback=may_lanh, bouncetime=300) #button GPIO.add_event_detect(19, GPIO.RISING, callback=den, bouncetime=300) #button GPIO.add_event_detect(23, GPIO.RISING, callback=quat, bouncetime=300) #button GPIO.add_event_detect(27, GPIO.RISING, callback=capture_sleep, bouncetime=300) #Camera GPIO.add_event_detect(22, GPIO.RISING, callback=cancel_picture, bouncetime=300) def Detect_Eye(eye): BỘ MÔN ĐIỆN TỬ VIỄN THÔNG 67 PHỤ LỤC poi_A = distance.euclidean(eye[1], eye[5]) poi_B = distance.euclidean(eye[2], eye[4]) poi_C = distance.euclidean(eye[0], eye[3]) aspect_ratio_Eye = (poi_A+poi_B)/(2*poi_C) return aspect_ratio_Eye #Sensors def read_dht11(): dht11_sensor = Adafruit_DHT.DHT11 humidity, temperature = Adafruit_DHT.read_retry(dht11_sensor, dht11_pin) return temperature, humidity def read_bh1750(): bh1750_addr = 0x23 bus.write_byte(bh1750_addr, 0x10) time.sleep(0.5) data = bus.read_i2c_block_data(bh1750_addr, 0x00) lux = math.ceil((data[1] + (256 * data[0])) / 1.2) return lux def control_relay(lux, temp): if temp > 28 and piority_maylanh == 0: GPIO.output(relay_1_pin, GPIO.HIGH) else: GPIO.output(relay_1_pin, GPIO.LOW) if lux < 80 and piority_den == 0: GPIO.output(relay_2_pin, GPIO.HIGH) else: GPIO.output(relay_2_pin, GPIO.LOW) if temp > 28 and piority_quat == 0: GPIO.output(relay_3_pin, GPIO.HIGH) else: GPIO.output(relay_3_pin, GPIO.LOW) MIFAREReader = mfrc522.MFRC522() BỘ MÔN ĐIỆN TỬ VIỄN THÔNG 68 PHỤ LỤC def read_uid(): (status, TagType) = MIFAREReader.MFRC522_Request(MIFAREReader.PICC_REQIDL) if status != MIFAREReader.MI_OK: return None (status, uid) = MIFAREReader.MFRC522_Anticoll() if status != MIFAREReader.MI_OK: return None return uid def end_read(signal,frame): global continue_reading continue_reading = False GPIO.cleanup() signal.signal(signal.SIGINT, end_read) def drowsy_detect(): global cap for frame in camera.capture_continuous(rawCapture, format="bgr", use_video_port=True): image = frame.array gray_scale = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY) faces = face_detector(gray_scale) for face in faces: face_landmarks = dlib_facelandmark(gray_scale, face) leftEye = [] rightEye = [] for n in range(42, 48): x = face_landmarks.part(n).x y = face_landmarks.part(n).y rightEye.append((x, y)) next_point = n+1 if n == 47: next_point = 42 BỘ MÔN ĐIỆN TỬ VIỄN THÔNG 69 PHỤ LỤC x2 = face_landmarks.part(next_point).x y2 = face_landmarks.part(next_point).y #cv2.line(frame, (x, y), (x2, y2), (0, 255, 0), 1) for n in range(36, 42): x = face_landmarks.part(n).x y = face_landmarks.part(n).y leftEye.append((x, y)) next_point = n+1 if n == 41: next_point = 36 x2 = face_landmarks.part(next_point).x y2 = face_landmarks.part(next_point).y #cv2.line(frame, (x, y), (x2, y2), (255, 255, 0), 1) right_Eye = Detect_Eye(rightEye) left_Eye = Detect_Eye(leftEye) Eye_Rat = (left_Eye+right_Eye)/2 Eye_Rat = round(Eye_Rat, 2) if Eye_Rat < 0.25: GPIO.output(relay_4_pin,1) if cap == 1: cv2.imwrite('sleep_person.png',image) time.sleep(2) storage.child("Phong Hoc 1").put("sleep_person.png") cap = GPIO.output(relay_4_pin,0) if cap == 0: GPIO.output(relay_4_pin,0) cv2.imshow("CV2", image) key = cv2.waitKey(1) & 0xFF rawCapture.truncate(0) def sensors(): while True: BỘ MÔN ĐIỆN TỬ VIỄN THÔNG 70 PHỤ LỤC uid = read_uid() temp, hum = read_dht11() lux = read_bh1750() control_relay(lux, temp) LCD.set("Temp:"+str(temp)+chr(223)+"C "+"Lux:"+str(lux)+"% ",1) LCD.set("Humidity: "+str(hum)+"% ",2) LCD.set("Waiting for card ",3) LCD.set(" ",4) #print("Temperature: "+str(temp)+"C"+" Humidity: ",str(hum)+"%") #if GPIO.event_detected(25): #data = {'Ho tro': 'phong hoc 1'} #db.child('Phong hoc 1').set(data) #else: #db.child('Phong hoc 1').child('Ho tro').remove() if uid is not None and uid == [84, 190, 35, 36, 237]: now = datetime.datetime.now() print("Hoang le Duc Minh") LCD.set("Hoang le Duc Minh ",3) print("MSSV:17141105") LCD.set("MSSV:17141105",4) print("{}".format(now.strftime("%Y-%m-%d"))) print("time: {}".format(now.strftime("%H:%M:%S"))) data ={'Ten' : 'Hoang le Duc Minh', 'MSSV' : 17141105, 'Time' : now.strftime("%H:%M:%S") } db.child("Phong hoc 1").child("Sinh Vien 1").set(data) if uid is not None and uid == [228, 106, 17, 35, 188]: now = datetime.datetime.now() print("Phan Tan Luc") LCD.set("Phan Tan Luc ",3) print("MSSV:17141103") BỘ MÔN ĐIỆN TỬ VIỄN THÔNG 71 PHỤ LỤC LCD.set("MSSV:17141103",4) print("{}".format(now.strftime("%Y-%m-%d"))) print("time: {}".format(now.strftime("%H:%M:%S"))) data ={'Ten' : 'Phan Tan Luc', 'MSSV' : 17141103, 'Time' : now.strftime("%H:%M:%S") } db.child("Phong hoc 1").child("Sinh Vien 2").set(data) if uid is not None and uid == [169, 26, 5, 123, 205]: now = datetime.datetime.now() print("ten giang vien") print("MSGV:") print("{}".format(now.strftime("%Y-%m-%d"))) print("time: {}".format(now.strftime("%H:%M:%S"))) elif uid is not None: print("Waiting for card ") if name == ' main ': threading.Thread(target= sensors).start() threading.Thread(target = drowsy_detect).start() BỘ MÔN ĐIỆN TỬ VIỄN THÔNG 72 S K L 0

Ngày đăng: 08/12/2023, 15:28

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

TÀI LIỆU LIÊN QUAN

w