TỔNG QUAN
ĐẶT VẤN ĐỀ
Trong lớp học, tình trạng ngủ gật của học sinh là một vấn đề khá phổ biến
Học sinh thường gặp khó khăn trong việc tập trung vào bài học, gây ra sự gián đoạn cho lớp học Tình trạng ngủ gật không chỉ ảnh hưởng đến sức khỏe mà còn cản trở sự phát triển của học sinh Ngoài ra, việc điều chỉnh nhiệt độ trong lớp học bằng các thiết bị điện cũng làm mất tập trung cho học sinh và ảnh hưởng đến quá trình giảng dạy của giảng viên.
Sau quá trình học tập và nghiên cứu, cũng như tham khảo qua một số bài như
Hệ thống điểm danh thông minh sử dụng nhận diện khuôn mặt đã được nghiên cứu vào năm 2019 Tuy nhiên, các hệ thống này thường yêu cầu camera góc rộng với chi phí cao, và các cơ sở áp dụng cần có hệ thống cơ sở dữ liệu riêng để lưu trữ thông tin điểm danh và tự động hóa quy trình quản lý lớp học.
Nhóm đã nắm bắt được kiến thức và ý tưởng để lập trình các module cảm biến và camera trên Raspberry Pi với chi phí thấp và sử dụng cơ sở dữ liệu miễn phí như Firebase Đề tài “hệ thống nhận diện ngủ gật và điều khiển lớp học tự động sử dụng cảm biến” được đưa ra nhằm giải quyết hai vấn đề chính: hỗ trợ giáo viên và nhà trường phát hiện kịp thời khi học sinh ngủ gật để can thiệp, và ứng dụng cảm biến để biến lớp học truyền thống thành lớp học tự động, tạo ra môi trường giảng dạy và học tập thoải mái nhất.
MỤC TIÊU
- Sử dụng cảm biến nhiệt độ và độ sáng biến một phòng học bình thường thành tự động
- Ứng dụng nhận diện ngủ gật với Raspberry pi với các loại camera
- Sử dụng RFID RC522 để điểm danh và kiểm tra thông tin học viên đồng thời hiển thị lên Firebase và LCD
NỘI DUNG NGHIÊN CỨU
- Nội dung 1: Tìm hiểu về các hệ thống nhận diện ngủ gật
- Nội dung 2: Tìm hiểu điểm danh bằng RFID hiển thị lên LCD và gửi thông tin lên FIREBASE
- Nội dung 4: Kết nối phần cứng các module với raspberry pi
- Nội dung 5: Chạy thử và điều chỉnh hệ thống
- Nội dung 6: Thi công mô hình cho hệ thống
- Nội dung 7: Viết báo cáo
GIỚI HẠN
Đề tài này vẫn còn một số giới hạn sau:
- Tốc độ xử lí của cả hệ thống còn chậm
- Module nhận diện ngủ gật trên raspberry chưa được tối ưu
- Độ tin cậy của module nhận diện có thể bị ảnh hưởng bởi nhiều yếu tố
BỐ CỤC
Mô hình lớp học tự động đang được giới thiệu như một giải pháp tiềm năng để tạo ra môi trường học tập lý tưởng Nghiên cứu này nhằm xác định mục tiêu, đối tượng và phạm vi ứng dụng của mô hình, từ đó phát triển những phương pháp giảng dạy hiệu quả hơn Việc áp dụng mô hình này không chỉ giúp cải thiện chất lượng giáo dục mà còn đáp ứng nhu cầu học tập đa dạng của học sinh.
● Chương 2: Cơ Sở Lý Thuyết
Trình bày tổng quát về thông tin phần cứng được sử dụng trong hệ thống
● Chương 3: Thiết kế và xây dựng hệ thống
Bài viết cần trình bày chi tiết sơ đồ khối của hệ thống, bao gồm chức năng của từng khối, sơ đồ nguyên lý và cách kết nối giữa các linh kiện, nhằm mô tả rõ ràng cách thức hoạt động của toàn bộ hệ thống.
● Chương 4: Lập trình cho hệ thống
● Chương 5: Kết quả nhận xét và đánh giá
Trình bày kết quả bằng hình ảnh Đánh giá kết quả
• Chương 6: kết luận và hướng phát triển
Từ kết quả có được, nếu kết luận ưu nhược điểm hệ thống, đưa ra hướng phát triển và cải thiện
CƠ SỞ LÝ THUYẾT
VI ĐIỀU KHIỂN
Vi xử lý, còn được gọi là vi điều khiển hoặc vi tính nhúng, là một loại chip điện tử tích hợp nhiều thành phần bên trong, trong đó bao gồm bộ xử lý trung tâm.
(CPU), bộ nhớ và các thiết bị ngoại vi (peripheral devices) (Nguyễn Đình Phú,
08/2016) Chúng có khả năng xử lý và điều khiển các tác vụ phức tạp một cách nhanh chóng và hiệu quả
Hình 2 1: Bộ vi xử lý
Bộ nhớ trong vi điều khiển lưu trữ chương trình và dữ liệu cần xử lý, trong khi thiết bị ngoại vi thực hiện chức năng nhập và xuất dữ liệu từ bên ngoài Sự kết hợp giữa bộ nhớ và thiết bị ngoại vi tạo nên một hệ thống vi điều khiển hoàn chỉnh.
Một hệ thống vi điều khiển càng phức tạp khi yêu cầu điều khiển càng cao
Khi yêu cầu điều khiển đơn giản, hệ thống vi điều khiển vẫn cần có các khối cơ bản Để kết nối các khối này, nhà thiết kế phải nắm vững kiến thức về thành phần vi điều khiển, bộ nhớ và thiết bị ngoại vi Tuy nhiên, hệ thống vi điều khiển có thể trở nên phức tạp và chiếm nhiều không gian trên mạch in Điều quan trọng là người thiết kế cần hiểu rõ về hệ thống Hơn nữa, vi điều khiển thường xử lý dữ liệu theo byte hoặc word, trong khi các đối tượng điều khiển trong công nghiệp thường hoạt động theo bit.
2.1.2 Các loại máy tính nhúng thông dụng
Các loại máy tính nhúng thông dụng trên thị trường hiện nay bao gồm:
Raspberry Pi là một máy tính nhúng phổ biến, nổi bật với khả năng xử lý mạnh mẽ Nó được tích hợp nhiều thiết bị ngoại vi, bao gồm cổng Ethernet, Wi-Fi, Bluetooth và GPIO, giúp người dùng dễ dàng kết nối và mở rộng chức năng.
Arduino: Là một loại vi điều khiển phổ biến, tích hợp các thiết bị ngoại vi như
GPIO, I2C, SPI và các cảm biến để thực hiện các ứng dụng nhúng
BeagleBone là một máy tính nhúng phổ biến, nổi bật với khả năng xử lý mạnh mẽ và tích hợp nhiều thiết bị ngoại vi, bao gồm GPIO, Ethernet và các cổng giao tiếp khác.
NVIDIA Jetson Nano là một máy tính nhúng mạnh mẽ, được tối ưu hóa cho các ứng dụng trí tuệ nhân tạo Thiết bị này hỗ trợ tích hợp nhiều loại ngoại vi, mang lại khả năng xử lý ấn tượng cho các dự án AI.
Ethernet, Wi-Fi và GPIO
Orange Pi là một máy tính nhúng mạnh mẽ, được thiết kế để tích hợp nhiều thiết bị ngoại vi như Ethernet, Wi-Fi và các cổng giao tiếp khác, mang đến khả năng xử lý vượt trội cho các ứng dụng đa dạng.
Nhóm sử dụng Raspberry Pi 4 phiên bản 8GB RAM để thực hiện nhận diện hình ảnh qua camera và kết nối với cảm biến nhằm điều khiển các thiết bị điện.
Hình 2 2: Raspberry pi 4 mô phỏng và thực tế
2.1.3 Raspberry pi 4 Đề tài này sẽ trình bày về một máy tính nhúng có tên là Raspberry Pi 4 Với kích thước chỉ bằng một chiếc thẻ tín dụng nhưng lại tích hợp đầy đủ các linh kiện
Raspberry Pi 4 sở hữu tốc độ xung nhịp tối đa 1,5GHz và có thể trang bị lên đến 8GB RAM, đồng thời hỗ trợ nhiều phiên bản hệ điều hành như Raspbian và Ubuntu.
Windows 10 IoT Core Trong đề tài này, nhóm sẽ sử dụng phiên bản Raspberry Pi 4 có RAM 8GB (LongPhan, 2021)
Hình 2 3: Sơ đồ chân trên raspberry pi 4
✓ Một số thông số kỹ thuật:
• 4 lõi xử lý Cortex-A72, mỗi lõi có tần số xung nhịp 1.5 GHz, kiến trúc vi xử lý 64-bit của ARM
• Wifi chuẩn IEEE 802.11ac hỗ trợ băng tầng 2.4 GHz và 5 GHz
• 4 cổng USB (Universal Serial Bus) type A
• Nguồn DC 5V – 3A DC chuẩn USB-C
• Có 2 nguồn ra chân GPIO là 5V và 3,3V
CẢM BIẾN NHIỆT ĐỘ DHT11
Nhiệt độ là đại lượng vật lý cơ bản, thể hiện mức độ nóng hoặc lạnh của vật thể hay môi trường xung quanh Nó được đo bằng các đơn vị như độ C (Celsius), độ F (Fahrenheit) và độ K (Kelvin).
Nhiệt độ là thước đo mức độ năng lượng nhiệt của một vật hoặc môi trường, với nhiệt độ cao biểu thị sự nóng hơn và nhiệt độ thấp biểu thị sự lạnh hơn Việc chuyển đổi giữa các đơn vị đo nhiệt độ khác nhau có thể được thực hiện dễ dàng thông qua các công thức toán học đơn giản.
Cảm biến nhiệt độ là thiết bị đo sự biến đổi nhiệt độ của vật thể, có thể là đầu dò điện trở (Resistance Temperature Detector) hoặc cặp nhiệt điện Khi nhiệt độ thay đổi, cảm biến phát ra tín hiệu tương ứng, và các bộ đọc sẽ chuyển đổi tín hiệu này thành giá trị số cụ thể.
2.2.3 Phân loại cảm biến nhiệt độ
Có 3 loại cảm biến nhiệt độ phổ biến:
• Cảm biến nhiệt độ (Cặp nhiệt điện – Thermocouple) (vietchem, 2022):
Hiệu ứng Seebeck được sử dụng để tạo ra điện thế tương ứng với nhiệt độ, thông qua các cặp nhiệt điện như K, R, S, T, J, tùy thuộc vào vật liệu chế tạo Các cặp nhiệt điện này nổi bật với độ bền cao và khả năng đo nhiệt độ rộng, vì vậy chúng thường được ứng dụng trong ngành công nghiệp Tuy nhiên, độ chính xác của chúng không cao bằng một số loại cảm biến nhiệt độ khác.
• Nhiệt điện trở (RTD - Resistance Temperature Detector) (vietchem,
Sử dụng hiệu ứng nhiệt điện trở để đo nhiệt độ, RTD thường được làm từ các vật liệu như platinum, nickel hoặc copper Với độ chính xác cao, RTD được ứng dụng rộng rãi trong thiết bị y tế và ngành công nghiệp chế tạo thiết bị chính xác.
• Điện trở oxit kim loại (Metal Oxide Resistive Sensor) (vietchem, 2022):
Sử dụng hiệu ứng nhiệt điện trở của oxit kim loại để đo nhiệt độ là một phương pháp hiệu quả Điện trở của vật liệu này có độ chính xác trung bình và chi phí thấp, khiến chúng trở thành lựa chọn phổ biến trong các ứng dụng tiêu thụ năng lượng, đặc biệt là trong các thiết bị gia dụng.
• Cảm biến nhiệt bán dẫn (Semiconductor Temperature Sensor) (vietchem,
Cảm biến nhiệt bán dẫn, bao gồm các loại như diode, IC và transistor, hoạt động dựa trên hiệu ứng nhiệt điện trở hoặc điện thế để đo nhiệt độ Chúng nổi bật với độ chính xác cao và tốc độ đáp ứng nhanh, được ứng dụng rộng rãi trong các hệ thống điều khiển nhiệt độ và thiết bị di động.
Hình 2 6: Cảm biến nhiệt bán dẫn
Nhiệt kế bức xạ (Infrared Temperature Sensor) là thiết bị đo nhiệt độ sử dụng ánh sáng hồng ngoại mà không cần tiếp xúc với vật thể Thiết bị này được ứng dụng phổ biến trong lĩnh vực y tế, thực phẩm và công nghiệp để đo nhiệt độ của các bề mặt nóng.
Hình 2 7: Nhiệt kế bức xạ
2.2.4 Cảm biến nhiệt độ DHT11
Có nhiều loại cảm biến nhiệt độ thông dụng trên thị trường như LM35,
DS18B20, DHT11, PT100, KTY81, NTC, … Tuy nhiên, để đo nhiệt độ môi trường xung quanh và chi phí thấp thì DHT11 là lựa chọn phù hợp
Cảm biến nhiệt độ DHT11 có khả năng đo nhiệt độ từ 0 đến 50 độ C với độ chính xác cao và độ phân giải 8 bit Thời gian giữa hai lần đo là 2 giây Ngoài ra, DHT11 cũng đo độ ẩm không khí trong khoảng 20% đến 90% với độ chính xác 5% Thiết bị này dễ sử dụng, chỉ cần kết nối với điện áp 5VDC và đọc dữ liệu qua chân số liệu.
Cảm biến DHT11 giao tiếp với vi điều khiển qua giao thức 1-wire, cho phép truyền tải dữ liệu về nhiệt độ và độ ẩm Khi nhận lệnh từ vi điều khiển, cảm biến sẽ gửi lại một gói dữ liệu được mã hóa dưới dạng số, sử dụng chuỗi xung có độ dài khác nhau để truyền tải thông tin.
• Điện áp hoạt động: từ 3.3V ~ 5.5V
• Dòng tiêu thụ: khoảng 1.5mA ~ 2.5mA
• Đo độ ẩm: từ 20% ~ 90% với độ sai lệch khoảng 5%
• Đo nhiệt độ: từ 0 đến 50 độ C với độ sai lệch khoảng 2 độ C
Hình 2 8: Cảm biến nhiệt độ DHT11
CẢM BIẾN ĐỘ SÁNG
Cảm biến độ sáng là thiết bị thiết yếu trong việc đo lường và phản hồi mức độ ánh sáng trong không gian cụ thể Thiết bị này thường được áp dụng trong các hệ thống tự động hóa và Internet of Things (IoT) để tự động điều khiển ánh sáng, mang lại tiện ích và hiệu quả năng lượng.
2.3.2 Phân loại cảm biến độ sáng
Cảm biến độ sáng có thể được phân loại dựa trên nhiều tiêu chí khác nhau
Cảm biến đo cường độ ánh sáng sử dụng photodiode hoạt động dựa trên nguyên lý tạo ra dòng điện khi ánh sáng được hấp thụ vào vùng bán dẫn Thiết bị này đo lường cường độ ánh sáng thông qua một mạch đo dòng điện, sau đó chuyển đổi kết quả thành đơn vị đo cường độ ánh sáng.
Hình 2 9: Cảm biến ánh sáng photodiode
• Cảm biến đo cường độ ánh sáng dựa trên phototransistor:
Phototransistor là một loại transistor đặc biệt có khả năng tạo ra dòng điện dựa trên độ sáng Khi ánh sáng chiếu vào khu vực bán dẫn, dòng điện trong phototransistor sẽ tăng lên Thiết bị này đo cường độ ánh sáng thông qua mạch đo dòng điện và chuyển đổi kết quả thành đơn vị đo cường độ ánh sáng.
• Cảm biến ánh sáng Photoresistor (hay còn gọi là LDR - Light Dependent
Photoresistor là cảm biến đo cường độ ánh sáng, hoạt động dựa trên nguyên lý điện trở thay đổi theo độ sáng Được chế tạo từ vật liệu bán dẫn, photoresistor có khả năng hấp thụ ánh sáng và điện trở của nó sẽ biến đổi khi mức độ sáng thay đổi.
Hình 2 11: Cảm biến ánh sáng photoresistor
2.3.3 Các loại cảm biến cường độ ánh sáng trên thị trường
Trên thị trường hiện nay có rất nhiều loại cảm biến đo độ sáng, bao gồm cả
Cảm biến ánh sáng như BH1750, TSL2561, MAX44009, ALS-PT19 và TEMT6000 đều có những ưu điểm và nhược điểm riêng, phù hợp với nhu cầu và yêu cầu của từng ứng dụng cụ thể Việc lựa chọn cảm biến phù hợp sẽ giúp tối ưu hóa hiệu suất và độ chính xác trong các dự án liên quan đến đo lường ánh sáng.
Nhóm đã lựa chọn cảm biến BH1750 với những lợi ích như:
Cảm biến BH1750 là một thiết bị đo độ sáng kỹ thuật số với độ chính xác cao và độ nhạy vượt trội so với nhiều loại cảm biến khác.
BH1750 có độ nhạy cao, cho phép đo độ sáng từ mức thấp đến cao Thiết bị này có khả năng đo các dải sóng ánh sáng đa dạng, bao gồm cả ánh sáng nhìn thấy và các loại ánh sáng không nhìn thấy như ánh sáng hồng ngoại và ánh sáng UV.
• Giá thành rẻ: BH1750 có giá thành rẻ hơn so với nhiều loại cảm biến đo độ sáng khác có tính năng tương tự
BH1750 là một cảm biến ánh sáng dễ sử dụng, cho phép kết nối với các thiết bị điện tử và vi điều khiển qua giao tiếp I2C hoặc SPI, rất phù hợp cho các ứng dụng IoT.
2.3.4 Cảm biến đo cường độ ánh sáng BH1750 [6]
Cảm biến này có khả năng đo độ sáng của môi trường xung quanh thông qua việc chuyển đổi ánh sáng thành một tín hiệu điện tử (hshop, n.d.)
Bảng 2 1:Thông số kỹ thuật cảm biến BH1750
STT Thông số kỹ thuật Giá trị
3 Khoảng cách giữa 2 mức sáng
8 Một số giá trị về độ sáng: (denlednhaxuongcaocap, 2020)
• Buổi tối: 0.001 – 0.02 Lux Đối với hệ thống lớp học thường sử dụng độ sáng có mức ánh sáng ở khoảng lớn hơn hoặc bằng 500lux
Hình 2 12: Module cảm biến độ sáng BH1750
Hình 2 13: Sơ đồ nguyên lý cảm biến độ sáng BH1750.
ĐẦU ĐỌC THẺ RFID
2.4.1 Đầu đọc thẻ RFID Đầu đọc thẻ RFID là một thiết bị sử dụng công nghệ RFID (Radio Frequency
Thẻ RFID chứa thông tin lưu trữ trong chip điện tử và truyền tải dữ liệu qua sóng radio tới đầu đọc RFID, cho phép nhận diện và thu thập thông tin hiệu quả.
Hình 2 14: Cấu tạo của đầu đọc RFID
Hình 2 15: Cấu tạo của thẻ tag
Nguyên lý hoạt động của RFID:
Thẻ RFID nhận tín hiệu từ anten và gửi phản hồi về đầu đọc thông qua tín hiệu sóng khác Tín hiệu này chứa thông tin lưu trữ trong chip của thẻ, bao gồm mã số sản phẩm, tên sản phẩm, và ngày sản xuất.
Sau khi đầu đọc nhận tín hiệu từ thẻ RFID, nó sẽ tiến hành giải mã dữ liệu và gửi thông tin này đến hệ thống điều khiển hoặc máy tính để xử lý.
Hình 2 16: Nguyên lý hoạt động của RFID
Phân loại RFID dựa trên tần số hoạt động:
• Tần số thấp (LF): từ 125 kHz đến 134 kHz
• Tần số cao (HF): 13.56 MHz
• Tần số siêu cao (UHF): từ 860 MHz đến 960 MHz, khoảng cách đọc từ 7m đến 15m
Phân loại RFID dựa trên cách thức hoạt động của thẻ RFID:
Thẻ RFID không có pin, hay còn gọi là thẻ RFID thụ động, hoạt động mà không cần nguồn cung cấp riêng Thay vào đó, nó sử dụng năng lượng từ sóng tần để truyền tải tín hiệu dữ liệu đến đầu đọc RFID.
Thẻ RFID có pin (Active RFID) được trang bị nguồn cung cấp riêng, cho phép nó truyền tải tín hiệu dữ liệu ở khoảng cách xa hơn so với thẻ RFID không có pin.
2.4.3 Các loại đầu đọc thẻ RFID trên thị trường
Trên thị trường có nhiều loại module đọc thẻ RFID như RC522, R10C,
Hình 2 17: Các loại đầu đọc thẻ RFID trên thị trường
Nhóm đã lựa chọn module RC522 với những lợi ích như:
• Giá thành: RC522 là một module đọc thẻ RFID giá rẻ và phù hợp với các ứng dụng thử nghiệm, học tập và phát triển sản phẩm
RC522 là một module RFID dễ sử dụng, được thiết kế với các chân kết nối rõ ràng và hỗ trợ nhiều giao thức truyền thông, giúp người dùng dễ dàng triển khai và tích hợp vào các dự án của mình.
• Tương thích rộng: RC522 có thể tương thích với nhiều loại vi điều khiển như
• Tốc độ đọc cao: RC522 có thể đọc dữ liệu từ thẻ RFID với tốc độ cao
• Hỗ trợ nhiều loại thẻ RFID: RC522 có khả năng đọc nhiều loại thẻ RFID khác nhau
Module RC522 là thiết bị đọc thẻ RFID, cho phép ghi và đọc dữ liệu của học sinh Khi học sinh quét thẻ, hệ thống sẽ tự động lưu trữ thông tin và thời gian quét, phục vụ cho việc điểm danh hiệu quả.
❖ Thông số kỹ thuật (hshop, hshop, n.d.):
• Dòng điện tiêu thụ: khoảng 13mA
• Tần số đọc thẻ 13.56MHz
• Khoảng cách hoạt động: 0 ~ 60mm
Hình 2 19: Sơ đồ nguyên lý module RC522
Màn hình LCD 20x4
Màn hình LCD 20x4 là một thiết bị hiển thị có kích thước 20x4 ký tự, có khả năng kết nối với khối xử lý thông qua giao thức I2C hoặc kết nối trực tiếp Nhờ vào những tính năng này, nhóm đã ứng dụng màn hình để hiển thị thông tin điểm danh khi học viên quét thẻ.
2.5.2 Đặc điểm kỹ thuật LCD 20x4
• Sử dụng điện áp trong khoảng 3V~5 V
• Điện áp tiêu thụ 1mA khi không có đèn nền và 50mA khi có đèn nền
• Có đèn led nền, có thể dùng biến trở hoặc PWM điều chình độ sáng để sử dụng ít điện năng hơn
• Giao tiếp với Pi qua chuẩn I2C
Hình 2 20: Màn hình LCD20x4 Để điều khiển màn hình LCD thông qua giao thức truyền thông I2C trên Raspberry
Để điều khiển LCD trên Raspberry Pi qua giao thức I2C, bạn cần sử dụng thư viện LCD I2C cùng với các lệnh điều khiển phù hợp Dưới đây là một số lệnh điều khiển LCD phổ biến mà bạn có thể áp dụng.
• lcd_init(): Khởi tạo màn hình LCD
• lcd_clear(): Xoá màn hình LCD
• lcd_home(): Đưa con trỏ về vị trí ban đầu trên màn hình LCD
• lcd_set_cursor(row, col): Thiết lập vị trí con trỏ trên màn hình LCD với hàng
(row) và cột (col) cụ thể
• lcd_backlight(on/off): Bật hoặc tắt đèn nền của màn hình LCD
• lcd_address(address): Thiết lập địa chỉ I2C của màn hình LCD
Lệnh hiển thị ký tự và chuỗi văn bản:
• lcd_write(char): Hiển thị một ký tự cụ thể lên màn hình LCD
• lcd_write_string(string): Hiển thị một chuỗi ký tự lên màn hình LCD.
MODULE I2C PCF8574
Nhằm đơn giản hóa hệ thống khi thi công, nhóm sử dụng module chuyển đổi
I2C được kết nối sẵn trên màn hình LCD, khi đó số chân kết nối đến raspberry pi được giảm từ 15 chân còn 4 chân
Hình 2 21: Module chuyển đổi I2c PCF8574
Thông số kỹ thuật (nshopvn, n.d.):
• Điện áp sử dụng để hoạt động khoảng 3.3~5VDC
MODULE RELAY
Nhóm sử dụng module relay tích hợp opto cách li để điều khiển các thiết bị như quạt, điều hòa và đèn thông qua tín hiệu từ Raspberry Pi Việc áp dụng opto cách li giúp bảo vệ mạch, ngăn ngừa tia hồ quang và nhiễu trong quá trình relay đóng mở Module này có 6 chân vào, bao gồm 1 chân 5V, GND và 4 chân tín hiệu điều khiển Ngoài ra, nó còn có 12 chân ra với 4 bộ chân NC và COM.
NO Thường thì chân COM và NO được kết nối với các thiết bị điện (handsontec)
Hình 2 23: Sơ đồ nguyên lý module relay
CÁC CHUẨN GIAO TIẾP SỬ DỤNG
UART (Universal Asynchronous Receiver/Transmitter) - là chuẩn giao tiếp nối tiếp được dùng để truyền và nhận dữ liệu giữa các thiết bị điện tử khác nhau
UART sử dụng hai tín hiệu chính là TX (Truyền) và RX (Nhận) để giao tiếp dữ liệu Để kết nối hai thiết bị, chân TX của thiết bị này sẽ được nối trực tiếp với chân RX của thiết bị kia và ngược lại.
Chân Tx (truyền) của một thiết bị kết nối trực tiếp với chân Rx (nhận) của thiết bị kia và ngược lại
UART có 3 chế độ truyền dữ liệu nối tiếp;
Trong chế độ full duplex, giao tiếp giữa master và slave diễn ra đồng thời, cho phép cả hai bên gửi và nhận dữ liệu mà không bị gián đoạn.
• Half duplex: Chỉ có thể truyền dữ liệu theo một hướng trong một thời điểm
• Simplex: Chỉ có thể truyền dữ liệu theo một chiều
Cách hoạt động của UART
Hình 2 25: Chuỗi dữ liệu trong chuẩn giao tiếp UART
• Start bit: Tín hiệu đánh dấu bắt đầu khung truyền thông với giá trị logic mức thấp
• Data bit: Là các bit chứa dữ liệu truyền đi Số lượng bit này có thể từ 5 đến
9 bit, tùy thuộc vào cấu hình UART
Bit parity là một công cụ kiểm tra lỗi quan trọng, giúp xác định tính chính xác của dữ liệu trong quá trình truyền tải Khi cấu hình UART có sử dụng bit parity, có thể chọn giữa parity even, parity odd hoặc không sử dụng bit parity (parity none).
• Stop bit: Tín hiệu đánh dấu kết thúc khung truyền thông với giá trị logic
UART là chuẩn giao tiếp nối tiếp không đồng bộ, khác với chuẩn giao tiếp
I2C không sử dụng tín hiệu đồng hồ để đồng bộ hóa quá trình truyền và nhận dữ liệu Thay vào đó, hai thiết bị giao tiếp cần thống nhất về tốc độ baud, giúp đảm bảo dữ liệu được truyền và nhận một cách chính xác.
Giao thức I2C (Inter-Integrated Circuit) là một phương tiện truyền thông nối tiếp cho phép truyền dữ liệu từng bit qua một đường duy nhất (SDA), kết nối nhiều thiết bị ngoại vi với vi điều khiển thông qua hai dây SDA và SCL Để mạng I2C hoạt động hiệu quả, cần ít nhất hai cặp điện trở kéo lên, thường có giá trị 4k7Ω hoặc 1k2Ω, tùy thuộc vào tốc độ và khoảng cách truyền Việc sử dụng điện trở kéo lên giúp duy trì tín hiệu SDA và SCL ở mức cao khi không có thiết bị nào truyền dữ liệu.
Hình 2 26: Giao tiếp giữa Master và các slave
Bảng 2 2: Gói tin truyền dữ liệu I2C
Start 7 or 10 bits Read/ write bit
• Start: trước khi SCL chuyển từ mức cao xuống mức thấp, SDA sẽ chuyển từ mức cao xuống mức thấp
• Address frame: Chuỗi 7 hoặc 10bit duy nhất được sử dụng để xác định slave nào sẽ tham gia giao tiếp với master
• Read/ write bit: 1bit thể hiện cho hoạt động của master gửi dữ liệu đến slave
(ở bit thấp) hay đang yêu cầu dữ liệu từ slave (ở bit cao)
• ACK/NACK bit: bit xác nhận khi dữ liệu hoặc địa chỉ được gửi thành công,
1bit ACK sẽ được gửi lại cho thiết bị gửi từ thiết bị nhận
• Stop: sau khi SCL chuyển từ mức thấp lên mức cao, thì SDA cũng chuyển trạng thái từ mức thấp lên mức cao
Trong quá trình truyền dữ liệu trên bus I2C, thiết bị chủ sử dụng tín hiệu
START để bắt đầu quá trình truyền Sau đó, thiết bị chủ sẽ gửi địa chỉ của thiết bị đích để truyền dữ liệu đến
Các thiết bị trên bus I2C sẽ lắng nghe địa chỉ được chỉ định, và chỉ khi địa chỉ phù hợp xuất hiện, thiết bị đó mới tiếp tục truyền dữ liệu trên bus I2C.
Khi thiết bị đích được xác định, thiết bị chủ gửi lệnh hoặc dữ liệu qua tín hiệu SDA Sau khi nhận dữ liệu, thiết bị đích phản hồi bằng tín hiệu ACK để xác nhận đã nhận thành công.
Nếu thiết bị đích không nhận được dữ liệu, nó sẽ phản hồi bằng tín hiệu NACK (not acknowledge), dẫn đến việc quá trình truyền dữ liệu bị hủy.
Sau khi quá trình truyền dữ liệu hoàn tất, thiết bị chủ sẽ phát tín hiệu STOP để kết thúc việc truyền trên bus I2C Các thiết bị khác sẽ dừng lại và chờ nhận tín hiệu tiếp theo.
STOP này và trả về trạng thái ban đầu để chuẩn bị cho việc truyền dữ liệu tiếp theo trên bus I2C
Trong lập trình điều khiển thiết bị qua giao thức I2C, ngôn ngữ lập trình sử dụng chuẩn giao tiếp I2C và cung cấp các hàm để gửi và nhận dữ liệu giữa vi điều khiển và thiết bị ngoại vi thông qua SMBus Để sử dụng thư viện I2C trong Python, trước tiên bạn cần cài đặt thư viện này.
"smbus" bằng lệnh sau: sudo apt-get install python-smbus
Sau khi cài đặt, ta có thể import thư viện "smbus" vào chương trình Python để sử dụng các hàm của thư viện i2c như sau: import smbus
# Khởi tạo đối tượng i2c i2c = smbus.SMBus(1)
# Gửi dữ liệu từ thiết bị có địa chỉ là 0x68 i2c.write_byte(0x68, 0x01)
# Nhận dữ liệu từ thiết bị có địa chỉ là 0x68 data = i2c.read_byte(0x68)
# Gửi dữ liệu từ thiết bị có địa chỉ là 0x68 và thanh ghi là 0x00 i2c.write_byte_data(0x68, 0x00, 0x01)
# Nhận dữ liệu từ thiết bị có địa chỉ là 0x68 và thanh ghi là 0x00 data = i2c.read_byte_data(0x68, 0x00)
SPI (Serial Peripheral Interface) là một chuẩn giao tiếp đồng bộ, cho phép truyền dữ liệu giữa vi điều khiển và các thiết bị điện tử khác trong hệ thống Giao tiếp qua SPI hoạt động theo mô hình master-slave, trong đó thiết bị master điều khiển và thiết bị slave nhận lệnh Dữ liệu được truyền qua các chân MOSI (Master Output Slave Input) từ master đến slave, chân MISO (Master Input Slave Output) từ slave đến master, chân SCK (Serial Clock) để đồng bộ hóa thời gian truyền dữ liệu, và chân SS (Slave Select) để chọn thiết bị cần truyền dữ liệu.
Hệ thống SPI cơ bản nhất bao gồm một master và một slave, nhưng một master có thể điều khiển nhiều slave Các thiết bị giao tiếp qua SPI thường được áp dụng trong các ứng dụng như cảm biến, màn hình và chip nhớ.
Chuỗi SPI (Serial Peripheral Interface) sử dụng ba tín hiệu để truyền dữ liệu giữa thiết bị master và các thiết bị slave Các tín hiệu này bao gồm:
• Tín hiệu xung đồng hồ (SCLK): Được sử dụng để đồng bộ truyền dữ liệu giữa các thiết bị
• Tín hiệu dữ liệu truyền từ master đến slave (MOSI - Master Out Slave In)
• Tín hiệu dữ liệu truyền từ slave về master (MISO - Master In Slave Out)
• Tín hiệu chọn thiết bị slave (SS/CS - Slave Select/Chip Select): Được sử dụng để chọn thiết bị slave nào sẽ truyền hoặc nhận dữ liệu
Nguyên lý hoạt động của giao tiếp SPI:
Truyền dữ liệu tuần tự giữa một thiết bị master và nhiều thiết bị slave sử dụng tín hiệu clock chung và các tín hiệu truyền dữ liệu đồng thời trên các kênh tương ứng.
Hình 2 28: Master kết nối với nhiều slave
Trong giao tiếp SPI, dữ liệu được truyền và đồng bộ hóa giữa thiết bị Master và thiết bị Slave Khi Master cần gửi dữ liệu đến một thiết bị Slave cụ thể, nó sẽ kích hoạt chân Slave Select (SS) của thiết bị đó để xác định thiết bị cần truyền dữ liệu.
Hình 2 29: Quá trình truyền dữ liệu theo nguyên tắc dịch bit
Trong giao tiếp SPI, dữ liệu được truyền theo nguyên tắc "dịch bit" qua hai kênh MOSI và MISO Kênh MOSI truyền dữ liệu từ master đến slave, trong khi kênh MISO truyền dữ liệu từ slave về master Để đảm bảo tính đồng bộ và độ chính xác, các thiết bị truyền và nhận dữ liệu theo thứ tự từ bit cao nhất đến bit thấp nhất, giúp việc đọc và ghi dữ liệu trở nên chính xác và hiệu quả hơn.
SO SÁNH CÁC CHUẨN TRUYỀN DỮ LIỆU I2C, UART VÀ SPI
Bảng 2 3: So sánh giữa các chuẩn truyền dữ liệu
CƠ SỞ NHẬN DIỆN NGỦ GẬT
Ngủ gật là hiện tượng khi một người bất ngờ mất tập trung và rơi vào giấc ngủ ngắn, thường kéo dài chỉ từ vài giây đến vài phút.
2.10.2 Phương pháp nhận biết ngủ gật
Sử dụng camera để theo dõi biểu hiện của mắt, hệ thống sẽ nhận diện tình trạng ngủ gật khi phát hiện mắt khép lại với tỷ lệ EAR nhỏ hơn hoặc bằng 0.3 trong thời gian kéo dài hơn 3 giây.
2.10.3 Thuật toán nhận diện ngủ gật Để xác định được người trước camera có đang ngủ gật hay không chúng ta sẽ dựa kỹ thuật tỷ lệ khung hình của mắt (EAR) có công thức như sau:
Hình 4 1: Tỉ lệ khung hình mắt
Chúng ta có thể thu thập các điểm p1 đến p6 như hình trên thông qua việc sử dụng thư viện dlib kết hợp với OpenCV, cùng với tệp chứa các mốc khuôn mặt.
Khi EAR = 0, điều này cho thấy mắt đang nhắm, và công thức chỉ áp dụng cho một mắt Do đó, cần tính EAR cho mắt còn lại bằng công thức tương tự Chúng ta ký hiệu EARL cho mắt trái và EARR cho mắt phải Để tính tỉ lệ mắt cuối cùng, ta sử dụng công thức sau:
2Thông thường Avg EAR rơi vào khoảng từ 0 đến 0.3 là mắt đang nhắm, trong
THIẾT KẾ VÀ XÂY DỰNG HỆ THỐNG
YÊU CẦU VÀ SƠ ĐỒ KHỐI HỆ THỐNG
Sau khi nghiên cứu và lập kế hoạch, nhóm đã triển khai hệ thống phòng học tự động với khả năng phát hiện học sinh ngủ gật trong lớp Hệ thống này tích hợp nhiều chức năng thông minh nhằm nâng cao hiệu quả giảng dạy và theo dõi tình trạng học tập của sinh viên.
• Thực hiện điểm danh, quản lý học viên thông qua quẹt thẻ RFID tiết kiệm thời gian cho học viên và giáo viên
• Hiển thị thông tin nhiệt độ, ánh sáng và thông tin học viên khi quét thẻ và thời gian quẹt thẻ, đồng thời lưu lên firebase để điểm danh
Camera sẽ được lắp đặt để giám sát học viên trong lớp học Khi camera phát hiện học viên có dấu hiệu buồn ngủ, hệ thống sẽ thông báo cho giáo viên qua đèn báo.
• Trên bàn giáo viên được tích hợp 2 nút nhấn để xác thực thông báo của hệ thống khi phát hiện ngủ gật
• Relay được dùng để bật tắt đèn thông qua những thông số từ cảm biến gửi về
• Khi có sự cố xảy ra thì hệ thống sẽ được tích hợp 1 nút nhấn để gọi hỗ trợ
3.1.2 Sơ đồ khối và chức năng từng khối
Hình 3 1: Sơ đồ khối của hệ thống
Chức năng của từng khối
Cung cấp điện áp, dòng điện cho các module, cảm biến và khối xử lý trung tâm
Dùng để thực hiện quét thẻ điểm danh, thông tin ở khối này sẽ được đưa về khối xử lý để lấy thông tin và đưa ra khối hiển thị
− Khối cảm biến nhiệt độ:
Thực hiện đo nhiệt độ trong phòng học và gửi tín hiệu kĩ thuật số về khối xử lý trung tâm
− Khối cảm biến cường độ ánh sáng: Đo cường độ ánh sáng hiện tại trong phòng và gửi tín hiệu về khối xử lý trung tâm
Hiển thị thông tin từ cảm biến và thông tin học viên khi quét thẻ sau khi khối trung tâm đã xử lý xong và gửi đến LCD
Thực hiện bật tắt thiết bị điện sau khi nhận tín hiệu điều khiển từ khối trung tâm
Giám sát hình ảnh trực tiếp trong phòng học và đưa vào khối xử lý trung tâm để thực hiện xử lý ảnh
Bài viết giới thiệu về một thiết bị gồm 6 nút nhấn, mỗi nút đảm nhận vai trò riêng biệt Các nút này được sử dụng để điều khiển thiết bị điện, xác nhận thông tin cảnh báo từ hệ thống và gọi hỗ trợ khi cần thiết.
Khối xử lý trung tâm là thành phần quan trọng nhất của hệ thống, chịu trách nhiệm xử lý thông tin từ các cảm biến, nút nhấn và camera, đồng thời gửi tín hiệu điều khiển đến khối relay và màn hình LCD.
3.1.3 Hoạt động của hệ thống
Khi hệ thống khởi động, các cảm biến thu thập dữ liệu và gửi về khối xử lý trung tâm Tại đây, dữ liệu được tiếp nhận và xử lý, từ đó trung tâm sẽ kích hoạt relay để điều chỉnh hoạt động của quạt và điều hòa theo nhu cầu.
Khi cảm biến ánh sáng nhận thấy mức độ sáng không đủ hoặc quá mức, hệ thống xử lý trung tâm sẽ tự động điều chỉnh bằng cách bật đèn để đảm bảo đủ ánh sáng hoặc tắt đèn để tiết kiệm năng lượng.
Hệ thống tích hợp đầu đọc RFID giúp giảng viên và học viên điểm danh nhanh chóng, tiết kiệm thời gian trong lớp học Khi học viên quét thẻ, thông tin và thời gian sẽ hiển thị trên màn hình LCD 20x4 và được gửi lên Firebase.
Khối camera giám sát lớp học và phát hiện học viên ngủ gật Khi phát hiện trường hợp này, camera sẽ thông báo cho giáo viên bằng cách sáng đèn LED Giáo viên xác thực thông báo qua hai nút nhấn.
Nếu xảy ra sự cố, hệ thống cũng được trang bị một nút nhấn để gọi hỗ trợ.
THIẾT KẾ HỆ THỐNG PHẦN CỨNG
3.2.1 Khối RFID Để điểm danh bằng quẹt thẻ RFID, nhóm sử dụng đầu đọc RC522 kết nối với
Raspberry pi Cách kết nối RC522 với Raspberry pi như sau:
− Kết nối chân VCC của module với chân 3V3 của Raspberry Pi để cấp nguồn cho module
− Kết nối chân GND của module với chân GND của Raspberry Pi để hoàn tất mạch cấp nguồn
− Kết nối chân RST của module với chân GPIO 8 của Raspberry Pi để điều khiển thao tác reset của module
− Kết nối chân SCK của module với chân GPIO 11 của Raspberry Pi để đồng bộ hóa truyền dữ liệu
− Kết nối chân SDA của module với chân GPIO 7 của Raspberry Pi để truyền dữ liệu giữa module và vi điều khiển
− Kết nối chân SCL của module với chân GPIO 9 của Raspberry Pi để điều khiển module
Hình 3 2: Sơ đồ kết nối module RFID RC522 với Raspberry pi
3.2.2 Khối cảm biến nhiệt độ
Cảm biến nhiệt độ DHT11 sẽ được sử dụng để đo nhiệt độ trong phòng, với ba chân kết nối là VCC, GND và Vout Để hoạt động hiệu quả, cảm biến cần được cung cấp nguồn điện.
Kết nối DHT11 bằng cách sử dụng chân 5V và GND, đồng thời nối chân Vout của nó với GPIO 17 Điện áp đầu ra của DHT11 tương ứng với nhiệt độ, với tỷ lệ 0,01V cho mỗi 1 độ C.
Hình 3 3: Sơ đồ kết nối module DHT11 với Raspberry pi 3.2.3 Khối cảm biến cường độ ánh sáng
Trong đề tài này, việc đo cường độ ánh sáng được thực hiện bằng thiết bị BH1750
Thiết bị này được sử dụng vì tính đơn giản và tiện dụng của nó Để sử dụng
Để sử dụng cảm biến BH1750, bạn chỉ cần kết nối chân SCL và SDA của nó với chân SCL và SDA của khối xử lý trung tâm, sau đó cấp nguồn cho thiết bị Việc này giúp bạn dễ dàng đo cường độ ánh sáng.
Hình 3 4: Sơ đồ kết nối module BH1750 với Raspberry pi
3.2.4 Khối hiển thị thông tin điểm danh Để hiển thị thông tin điểm danh, chúng ta có thể sử dụng một khối LCD 20x4 kết hợp với I2C PCF8574 để giảm số lượng kết nối trên hệ thống, giúp cho việc kiểm tra và sửa chữa trở nên thuận tiện hơn
Các chân P4, P5, P6, P7 của PCF8574 sẽ được kết nối với các chân D4, D5, D6, D7 của LCD Chân P0, P1, P2 của PCF8574 sẽ lần lượt được nối với chân RS, RW, E của LCD
Ngoài ra, chúng ta cần cấp nguồn 5V cho LCD thông qua các chân VSS và VDD, và kết nối chân A0, A1, A2 với GND để thiết lập địa chỉ I2C cho PCF8574
Hình 3 5: Sơ đồ kết nối khối LCD 20x4 I2C với Raspberry pi
3.2.5 Khối Relay Để điều khiển các thiết bị điện như đèn, quạt và điều hòa, nhóm sử dụng một module relay 4 kênh Module relay này bao gồm các chân tín hiệu vào IN1, IN2,
Trong dự án này, các chân IN3 và IN4 sẽ được kết nối với các chân GPIO 5, 6, 12, 13 của khối xử lý trung tâm VCC và GND sẽ cung cấp nguồn 5V cho module Bên cạnh đó, module còn có các cổng COM, NO và NC, trong đó nhóm lựa chọn sử dụng cổng thường mở.
NO (kích tiếp điểm đóng) và COM (cổng chung) để cấp điện cho các thiết bị
Hình 3 6: Khối relay 4 kênh điều khiển thiết bị điện
Khối nút nhấn gồm 6 nút chức năng, trong đó có 3 nút bật tắt cho đèn, quạt và điều hòa Hai nút còn lại dùng để xác nhận thông tin sinh viên về tình trạng ngủ gật vào cơ sở dữ liệu Nút cuối cùng được sử dụng để gọi kỹ thuật viên khi có sự cố với hệ thống điện.
Khi kết nối tín hiệu đầu vào với vi điều khiển, việc sử dụng điện trở kéo (pull-up resistor) là cần thiết để duy trì tín hiệu đầu vào ở mức cao (1) khi không có tín hiệu Giá trị điện trở kéo (Rp) phải đủ lớn để không làm quá tải tín hiệu đầu vào, nhưng cũng cần đủ nhỏ để dễ dàng kéo tín hiệu xuống mức thấp (0) khi có tín hiệu vào Thông thường, giá trị điện trở kéo được chọn bằng 1/10 giá trị trở kháng (R) của đầu vào vi điều khiển.
Với trở kháng đầu vào thông thường trong vi điều khiển khoảng từ 100KΩ -
Để đảm bảo tín hiệu đầu vào dễ dàng bị kéo xuống mức thấp (0) khi có tín hiệu vào, chúng ta có thể chọn giá trị điện trở kéo lên khoảng 10KΩ.
3.2.7 Khối xử lý trung tâm Để tăng tốc độ xử lý và tối ưu cho việc thực hiện xử lý ảnh, máy tính là một phương án hữu hiệu Nhóm đã chọn sử dụng Raspberry Pi 4 vì tính thuận tiện cho việc thêm nhiều khối và điều khiển nhiều thiết bị Để kết nối các module phù hợp với Raspberry Pi 4, nhóm sử dụng các chân sau đây:
• Chân SCL, SDA của Rpi4 sẽ được kết nối với chân SCL, SDA của các module
BH1750, RC522 và I2C cho LCD
• Các chân GPIO 5, 6, 12, 13 sẽ lần lượt nối vào IN1, 2, 3, 4 của module relay 4 kênh
• Các chân GPIO 7, 8, 9, 10, 11, 14 sẽ được kết nối với 6 nút nhấn
Hình 3 8: khối xử lý trung tâm
3.2.8 Khối camera Để phát hiện hành vi ngủ gật của học viên, nhóm đã sử dụng pi camera và kết nối nó với Raspberry Pi Khi học viên ngủ gật, cam sẽ chụp hình và gửi thông tin đến
Hệ thống Raspberry Pi sẽ phân tích hình ảnh để xác định trạng thái của học viên, liệu họ có đang ngủ hay không Khi phát hiện học viên ngủ, tín hiệu sẽ được gửi đến đèn báo để giáo viên có thể biết tình trạng của học viên và tương tác kịp thời Giáo viên sẽ được trang bị một nút nhấn để xác nhận tính chính xác của thông báo Nếu thông báo đúng, hình ảnh sẽ được lưu trữ trong hệ thống để theo dõi.
Bảng 3 1: Thông số hoạt động của các linh kiện hệ thống
STT Thiết bị Dòng (mA) Điện áp(V)
3 Cảm biến nhiệt độ DHT11 1 3,3
4 Cảm biến ánh sáng BH1750 1 3,3
Để cấp nguồn cho Raspberry Pi 4, hãy sử dụng adapter 5V/3A trở lên thông qua cổng USB Type C Từ Raspberry Pi, bạn có thể cấp nguồn điều khiển cho toàn bộ hệ thống qua chân 5V.
Hình 3 10: Khối nguồn chuyển đổi điện 220VAC sang 5VDC
3.2.10 Sơ đồ nguyên lí hệ thống
Hình 3 11: Sơ đồ nguyên lý hệ thống
LẬP TRÌNH CHO HỆ THỐNG
GIỚI THIỆU
Sau khi hoàn tất việc tính toán và chọn lựa linh kiện phù hợp, chương này sẽ trình bày quy trình thi công hệ thống, bao gồm cả phần cứng và phần mềm.
1 máy tính nhúng Raspberry pi 4, các module cảm biến, RC522 và relay sẽ được nhóm kết nối bằng dây cắm
Nhóm thực hiện lập trình trên phần mềm Thonny và gửi dữ liệu lên Firebase.
THI CÔNG HỆ THỐNG
Dưới đây là bảng liệt kê các linh kiện sử dụng:
Bảng 4 1: Danh sách các linh kiện
STT Tên linh kiện Giá trị Số lượng Kích thước Chú thích
1 Raspberry pi 4B 5V 1 88x58x19.5mm 8BG RAM
3 Module cảm biến ánh sáng BH1750 3,3V 1 2.4x2.4x0.8mm
7 Module Relay 4 kênh 5V 1 75x55x18mm 4 kênh
4.2.2 Đóng gói và thi công mô hình
Sau khi hoàn tất việc kết nối và lắp ráp tất cả các linh kiện vào mô hình, chúng ta cấp nguồn và theo dõi trên màn hình hiển thị của Raspberry Pi Cần kiểm tra xem các chức năng của LCD, module RC522, cảm biến ánh sáng và cảm biến nhiệt độ có hoạt động ổn định hay không.
Hình 4 2: Mô hình sản phẩm
LẬP TRÌNH HỆ THỐNG
4.3.1 Lưu đồ giải thuật và giải thích
Hình 4.3: Lưu đồ giải thuật chương trình chính.
Giải thích lưu đồ chương trình chính:
- Bắt đầu chương trình hệ thống sẽ chia thành 2 luồng xử lí:
- luồng thứ nhất sẽ xử lí tác vụ nhận diện ngủ gật với camera được kết nối với
Raspberry Pi sẽ kiểm tra trạng thái của nút nhấn BT4 và BT5 thông qua cổng USB type A, sau đó gọi hàm con để kiểm tra tình trạng ngủ gật.
Khi EAR lớn hơn 0.3, hệ thống sẽ quay lại trạng thái kiểm tra nút nhấn Nếu EAR nhỏ hơn 0.3 và nút BT4 được nhấn, hệ thống sẽ thực hiện hành động gửi hình ảnh lên.
Firebase và việc tắt đèn LED báo hiệu là một phần quan trọng trong hệ thống Khi đèn LED nhấp nháy và nút BT5 được nhấn, hệ thống sẽ trở lại trạng thái kiểm tra nút nhấn BT4 và BT5.
- Luồng thứ hai: hệ thống sẽ thực hiện kiểm tra nút nhấn BT1, BT2, BT3,
BT6 sẽ tiến hành đọc giá trị từ RFID, thu thập dữ liệu từ cảm biến DHT11 và BH1750, sau đó gọi hàm con để thực hiện các hành động điều khiển relay và hiển thị thông tin.
Hình 4.4: Lưu đồ chương trình con nhận diện ngủ gật
Chương trình nhận diện ngủ gật bắt đầu bằng việc khởi động camera và trích xuất khung hình từ camera thông qua thư viện OpenCV Trong quá trình xử lý hình ảnh, thư viện dlib và OpenCV được sử dụng để xác định các điểm mốc trên khuôn mặt dựa vào file dat của dlib Để phát hiện tình trạng buồn ngủ, công thức EAR (Eye Aspect Ratio) được áp dụng Nếu không phát hiện tình trạng buồn ngủ, chương trình sẽ tiếp tục tìm kiếm các mốc trên khuôn mặt Khi phát hiện học viên đang ngủ, đèn cảnh báo sẽ được bật lên.
Khi giảng viên phát hiện đèn bật, điều này có thể cho thấy một học viên đang ngủ Trong trường hợp đó, giảng viên có thể nhấn nút xác nhận để chụp lại hình ảnh của học viên, sử dụng làm bằng chứng cho việc mất tập trung Nếu không có học viên nào ngủ, chương trình sẽ tiếp tục xác định các mốc trên khuôn mặt.
Để kiểm tra điểm danh học viên, chúng ta sử dụng khối RFID Khi học viên đưa thẻ RFID vào, khối RFID sẽ kiểm tra UID của thẻ Nếu UID đúng, hệ thống sẽ ghi lại thời gian và lưu kết quả điểm danh Ngược lại, nếu UID không chính xác, hệ thống sẽ hiển thị thông báo "Thẻ không chính xác" và tiếp tục kiểm tra tình trạng của thẻ Quy trình này giúp đảm bảo việc điểm danh học viên diễn ra chính xác và hiệu quả.
Hình 4.6: Lưu đồ điều khiển các cảm biến.
Giải thích lưu đồ điều khiển các cảm biến:
- Khi cấp nguồn cho hệ thống, cảm biến sẽ hoạt động và gửi tín hiệu về cho
Raspberry pi, nếu giá trị đọc được từ cảm biến nhiệt độ lớn hơn 28 độ thì relay
1 và 2 sẽ bật, cảm biến ánh sáng đo được giá trị nhỏ hơn 1500 lux thì relay 3 bật
- Các nút nhấn sẽ được kết nối với Raspberry pi, nếu thấy nút nhấn đã được nhấn thì sẽ thực hiện việc đảo trạng thái của relay
4.3.2 Giới thiệu về Thony a Giới thiệu về Thony
Thonny là một môi trường lập trình Python miễn phí và mã nguồn mở, được thiết kế đặc biệt để hỗ trợ người dùng trong việc học và lập trình Python một cách dễ dàng Với giao diện đơn giản và thân thiện, Thonny giúp các lập trình viên mới bắt đầu làm quen với Python một cách nhanh chóng và hiệu quả.
Thonny là một công cụ lập trình phổ biến trong cộng đồng Python, hỗ trợ trên nhiều nền tảng như Windows, macOS và Linux Để cài đặt Thonny cho Raspberry Pi 4, người dùng có thể thực hiện theo các bước hướng dẫn cụ thể.
Truy cập vào Raspberry Pi và mở terminal
Bước 2: Cập nhật hệ thống
Sử dụng lệnh sau để cập nhật hệ thống:
Sử dụng lệnh sau để cài đặt Thonny:
- sudo apt-get install thonny
Sau khi cài đặt xong, khởi động Thonny bằng cách vào Menu ->
Bước 5: Bắt đầu sử dụng Thonny Nếu bạn không sử dụng môi trường đồ họa trên Raspberry, hãy cài đặt phiên bản Thonny không có giao diện đồ họa bằng lệnh sau.
- sudo apt-get install thonny-cli
Firebase là nền tảng dịch vụ đám mây của Google, cung cấp nhiều công cụ và dịch vụ hỗ trợ phát triển ứng dụng di động và web Với Firebase, các nhà phát triển có thể dễ dàng và nhanh chóng tạo ra những ứng dụng chất lượng cao.
Các tính năng của Firebase bao gồm:
Firebase là bộ công cụ phát triển ứng dụng mạnh mẽ, cung cấp đầy đủ các tính năng cho ứng dụng di động và web như cơ sở dữ liệu, lưu trữ, xác thực, phân tích, và thông báo đẩy, giúp tối ưu hóa quy trình phát triển và nâng cao trải nghiệm người dùng.
Firebase cung cấp cơ sở dữ liệu thời gian thực, giúp các ứng dụng của bạn cập nhật và đồng bộ hóa dữ liệu ngay lập tức trên mọi nền tảng.
Firebase cung cấp một hệ thống xác thực người dùng an toàn và dễ sử dụng, giúp bạn quản lý người dùng hiệu quả và kiểm soát quyền truy cập vào ứng dụng của mình.
Firebase cung cấp dịch vụ lưu trữ đám mây linh hoạt và an toàn, cho phép bạn dễ dàng lưu trữ dữ liệu và tệp cho ứng dụng của mình.
TÀI LIỆU HƯỚNG DẪN SỬ DỤNG, THAO TÁC
Bước 1: Cấp nguồn cho hệ thống, hệ thống sử dụng nguồn adapter 5V- 3A hoặc các bộ sạc điện thoại có công suất lớn hơn hoặc bằng 15W
Bước 2: Sau khi Raspberry pi khởi động xong, ta truy cập vào Raspberry pi bằng phần mềm “RealVNC viewer”
Bước 3: chạy file sensor.py để hệ thống khởi động
DỰ TOÁN MÔ HÌNH HỆ THỐNG LỚP HỌC TỰ ĐỘNG VÀ PHÁT HIỆN NGỦ GẬT
Bảng 4 9: Dự toán hệ thống
STT Danh mục linh kiện thông số kỹ thuật Đơn giá
Trong thời gian thiết kế và thi công hệ thống kéo dài từ 3 đến 4 tháng, nhóm đã đầu tư khoảng 5,994,500 VNĐ cho việc mua linh kiện Để giảm chi phí sản phẩm, nhóm dự định tối ưu hóa phần mềm, giúp nó hoạt động hiệu quả trên các thiết bị có hiệu năng thấp hơn và giá thành rẻ hơn trong tương lai.
KẾT QUẢ, NHẬN XÉT VÀ ĐÁNH GIÁ
KẾT QUẢ THỰC NGHIỆM
5.1.1 Kết quả phần mềm và phần cứng Đây là kết quả thực tế khi nhắm mắt và mở mắt, lúc đó hệ thống sẽ nhận diện là ta đang buồn ngủ hoặc đang thức
Hình 5 1: Nhận diện ngủ gật
Với khối RFID ta thử đọc và ghi một số thông tin vào thẻ và kết quả nhận được khi ta scan 2 thẻ được hiển thị như hình 5.2
Để kiểm tra tính năng gửi thông tin từ thẻ RFID lên Firebase, cần thực hiện một số bước cụ thể Màn hình LCD sẽ hiển thị thông tin khi quẹt thẻ điểm danh.
Tạo 2 biến hoc_vien_1 và hoc_vien_2 để lưu thông tin của hai học viên
1 Sử dụng thẻ RFID để đọc thông tin từ thẻ, sau đó gửi thông tin lên Firebase
2 Kiểm tra kết quả để xác nhận việc gửi thông tin thành công
Sau khi thực hiện các bước trên, ta đã có kết quả như hình 5.3
Việc dùng thẻ RFID để gửi thông tin lên Firebase đã thành công
Hình 5 3: Hiển thị thông tin khi học viên quẹt thẻ
Giá trị 1 là học viên có đi học và 0 là vắng mặt
Cảm biến DHT11 được sử dụng để đo nhiệt độ và cho ra kết quả với đơn vị độ C
Cảm biến BH1750 được sử dụng để đo độ sáng và cung cấp kết quả tính bằng lux Những dữ liệu đo được từ cảm biến sẽ được gửi về Raspberry, nơi chúng được so sánh với các điều kiện đã được cài đặt sẵn để đưa ra tín hiệu điều khiển relay.
Hình 5 4: Thông số đo được từ cảm biến ánh sáng và cảm biến nhiệt độ
5.1.2 Nhận xét và đánh giá
Sau một thời gian dài nghiên cứu và thực hiện đồ án tốt nghiệp, nhóm đã đạt được những thành tựu đáng kể trong đề tài "Hệ thống lớp học tự động và nhận diện ngủ gật" Các kết quả đạt được bao gồm việc phát triển một hệ thống lớp học tự động hiệu quả và công nghệ nhận diện ngủ gật, góp phần nâng cao chất lượng giáo dục và sự chú ý của học sinh trong lớp học.
Bảng 5 1: Số liệu thực nghiệm
STT Kết quả thực nghiệm Đánh giá
1 Cảm biến DHT11 Nhiệt độ chênh lệch ±2°C
2 Điều khiển thiết bị điện bằng nút nhấn Nút nhấn đôi khi bị trễ, thời gian trễ rơi vào 2-3s
3 Hệ thống nhận diện ngủ gật
Có độ trễ khoảng 3s, độ chính xác khoảng 80% sau khi thử với 10 lần chạy thực nghiệm
Thông tin mất từ 4-5s để hiển thị lên LCD và hiển thị trên Firebase
5 Hiển thị LCD LCD hiển thị tốt các thông tin cần thiết
6 Cảm biến độ sáng BH1750
Cảm biến độ sáng có tốc độ cập nhật trễ khoảng 1s
Mô hình hệ thống hoạt động ổn định và đáp ứng các yêu cầu đã đề ra Tuy nhiên, do hạn chế về phần cứng của Raspberry Pi, khả năng nhận diện hình ảnh vẫn chưa đạt hiệu quả mong muốn.