Báo cáo bài tập lớn môn học IoT và ứng dụng - SV. Lưu Minh Hiếu (PTIT)

Báo cáo chuyên đề Btl iot: đo lường, điều khiển thiết bị thông minh đánh giá toàn diện hiện trạng, dự báo triển vọng lĩnh vực hiện nay

Chuyên ngành

IoT và Ứng dụng

Người đăng

Ẩn danh

Thể loại

Báo cáo bài tập lớn

2024

42
2
0

Phí lưu trữ

30 Point

Tóm tắt

I. Hướng dẫn làm báo cáo bài tập lớn môn IoT và ứng dụng A Z

Một báo cáo bài tập lớn môn học IoT và ứng dụng chất lượng là yếu tố quyết định điểm số và thể hiện sự hiểu biết sâu sắc về môn học. Báo cáo không chỉ là việc trình bày lại lý thuyết mà còn là quá trình hiện thực hóa một ý tưởng, từ phân tích yêu cầu, thiết kế hệ thống, đến triển khai và kiểm thử. Để đạt kết quả cao, cấu trúc báo cáo cần rõ ràng, logic và đầy đủ các thành phần cốt lõi. Bắt đầu với việc đặt vấn đề, cần nêu bật được bối cảnh công nghệ và những hạn chế của các giải pháp hiện tại, từ đó làm rõ mục tiêu mà đề tài hướng tới. Ví dụ, một hệ thống IoT cho nhà thông minh (smart home) cần giải quyết bài toán giám sát từ xa và điều khiển tự động các thiết bị điện, vốn là điểm yếu của các hệ thống truyền thống. Việc xác định rõ mục tiêu, như đo lường nhiệt độ, độ ẩm, ánh sáng và điều khiển thiết bị, cùng với phạm vi cụ thể (ví dụ: áp dụng trong môi trường nhà ở) là bước nền tảng. Tiếp theo, định hướng giải pháp phải được trình bày một cách khoa học, bao gồm các giai đoạn: Phân tích yêu cầu, Thiết kế hệ thống, và Phát triển & Thử nghiệm. Trong giai đoạn phân tích, việc lựa chọn cảm biến IoT (như DHT11, LDR) và các thiết bị thực thi là cực kỳ quan trọng. Giai đoạn thiết kế đòi hỏi phải có sơ đồ khối hệ thống IoT tổng thể, mô tả sự tương tác giữa phần cứng và phần mềm. Cuối cùng, một kế hoạch phát triển và thử nghiệm chi tiết sẽ đảm bảo dự án đi đúng hướng và đáp ứng các mục tiêu đã đề ra. Việc tuân thủ một bố cục chuẩn sẽ giúp đồ án môn học IoT trở nên chuyên nghiệp và dễ dàng thuyết phục người đọc.

1.1. Xác định mục tiêu và phạm vi cho đồ án môn học IoT

Mục tiêu của một bài tập lớn IoT là xây dựng một hệ thống hoàn chỉnh có khả năng ứng dụng thực tiễn. Cụ thể, hệ thống cần có khả năng đo lường các chỉ số môi trường quan trọng như nhiệt độ, độ ẩm, và cường độ ánh sáng bằng các cảm biến IoT chuyên dụng. Dựa trên dữ liệu thu thập được, hệ thống phải tự động hoặc cho phép người dùng điều khiển từ xa các thiết bị điện như quạt, đèn, hay điều hòa. Một mục tiêu không thể thiếu là phát triển giao diện người dùng thân thiện, cho phép theo dõi và quản lý hệ thống một cách trực quan. Phạm vi của đề tài cần được giới hạn hợp lý để đảm bảo tính khả thi. Thông thường, các dự án sẽ tập trung vào một lĩnh vực cụ thể như nhà thông minh (smart home), nông nghiệp thông minh (smart agriculture), hoặc quản lý kho thông minh. Hệ thống sẽ sử dụng các linh kiện IoT phổ biến như ESP8266 hoặc Arduino, kết nối với một nền tảng IoT (IoT platform) để lưu trữ và xử lý dữ liệu.

1.2. Bố cục chuẩn của một mẫu báo cáo thực tập IoT chi tiết

Một mẫu báo cáo thực tập IoT chuyên nghiệp thường bao gồm các chương chính sau: Giới thiệu tổng quan về đề tài, Giao diện và thiết kế tổng thể, Chi tiết hệ thống, Mã nguồn (Code), và Kết quả thực nghiệm. Chương giới thiệu cần nêu rõ lý do chọn đề tài và mục tiêu. Chương thiết kế trình bày giao diện người dùng và sơ đồ khối hệ thống IoT, mô tả kiến trúc tổng quan. Chương chi tiết hệ thống sẽ đi sâu vào từng thành phần phần cứng (linh kiện IoT) và phần mềm (backend, frontend, broker MQTT). Phần mã nguồn sẽ trình bày cấu trúc code bài tập lớn IoT và giải thích các hàm chức năng quan trọng. Cuối cùng, chương kết quả sẽ đánh giá hiệu quả hoạt động của hệ thống, so sánh với mục tiêu ban đầu. Việc trình bày kèm theo slide báo cáo IoT sẽ giúp phần thuyết trình trở nên sinh động và hiệu quả hơn. Các tài liệu tham khảo môn IoT cũng cần được liệt kê đầy đủ ở cuối báo cáo.

II. Top linh kiện IoT cần thiết cho bài tập lớn IoT thành công

Lựa chọn phần cứng là bước đầu tiên và quan trọng nhất khi bắt đầu một bài tập lớn IoT. Một hệ thống IoT cơ bản bao gồm ba thành phần chính: thiết bị thu thập dữ liệu (cảm biến), bộ xử lý trung tâm (vi điều khiển), và thiết bị thực thi (actuator). Đối với bộ xử lý, ESP8266 là một lựa chọn tuyệt vời nhờ tích hợp sẵn WiFi, kích thước nhỏ gọn và giá thành hợp lý, rất phùách hợp cho việc giao tiếp với server qua giao thức MQTT. Các lựa chọn khác như ESP32 (mạnh mẽ hơn với Bluetooth) hay Raspberry Pi (một máy tính mini hoàn chỉnh) cũng rất phổ biến nhưng có thể phức tạp hơn cho người mới bắt đầu. Về phần cảm biến, cảm biến IoT DHT11 là lựa chọn kinh điển để đo nhiệt độ và độ ẩm, trong khi cảm biến quang trở LDR (Light Dependent Resistor) thường được dùng để đo cường độ ánh sáng. Các cảm biến này cung cấp dữ liệu đầu vào cho hệ thống. Để mô phỏng việc điều khiển thiết bị điện, đèn LED là một công cụ đơn giản và hiệu quả, có thể đại diện cho quạt, điều hòa, hay đèn chiếu sáng. Ngoài ra, không thể thiếu các linh kiện IoT phụ trợ như breadboard (bảng mạch cắm) để lắp ráp mạch tạm thời, dây cắm (jumper wires) để kết nối các thành phần, và điện trở để bảo vệ các linh kiện như LED. Việc lựa chọn đúng và đủ các thiết bị phần cứng sẽ quyết định đến sự ổn định và chức năng của toàn bộ hệ thống IoT mà bạn xây dựng.

2.1. Lựa chọn vi điều khiển ESP8266 ESP32 Arduino hay Raspberry Pi

Việc lựa chọn vi điều khiển là nền tảng cho đồ án môn học IoT. ESP8266 là một module WiFi SoC chi phí thấp, lý tưởng cho các dự án cần kết nối Internet đơn giản. Nó đủ mạnh để đọc dữ liệu từ cảm biến và gửi qua MQTT. ESP32 là phiên bản nâng cấp của ESP8266, với CPU lõi kép, nhiều chân GPIO hơn và tích hợp cả WiFi lẫn Bluetooth, phù hợp cho các hệ thống phức tạp hơn. Arduino, đặc biệt là dòng Uno, rất nổi tiếng vì cộng đồng hỗ trợ lớn và dễ học, nhưng thường cần thêm một module ngoài (như ESP8266) để kết nối WiFi. Raspberry Pi là một máy tính đơn bo mạnh mẽ chạy hệ điều hành Linux, có khả năng xử lý các tác vụ nặng như xử lý hình ảnh, chạy server, hoặc một nền tảng IoT (IoT platform) như Node-RED. Đối với bài tập lớn tập trung vào thu thập dữ liệu và điều khiển cơ bản, ESP8266 hoặc ESP32 là sự lựa chọn tối ưu về chi phí và hiệu năng.

2.2. Các loại cảm biến IoT phổ biến trong ứng dụng nhà thông minh

Trong một hệ thống nhà thông minh (smart home), cảm biến IoT đóng vai trò là các giác quan của hệ thống. Cảm biến nhiệt độ và độ ẩm như DHT11 hoặc DHT22 là thiết bị không thể thiếu để giám sát điều kiện không khí trong phòng, từ đó tự động điều khiển điều hòa. Cảm biến ánh sáng (LDR) giúp hệ thống nhận biết điều kiện sáng/tối để tự động bật/tắt đèn. Cảm biến chuyển động PIR (Passive Infrared) có thể phát hiện sự hiện diện của con người để kích hoạt các kịch bản an ninh hoặc tiết kiệm năng lượng. Ngoài ra, còn có các cảm biến khác như cảm biến khí gas (MQ-2) để cảnh báo rò rỉ, cảm biến cửa từ để giám sát an ninh. Việc kết hợp nhiều loại cảm biến giúp hệ thống IoT trở nên thông minh và tự động hóa cao hơn.

III. Phương pháp xây dựng hệ thống IoT với MQTT và ESP8266

Xây dựng một hệ thống IoT hoàn chỉnh đòi hỏi sự kết hợp nhịp nhàng giữa phần cứng và phần mềm, trong đó giao thức truyền thông đóng vai trò cầu nối. MQTT (Message Queuing Telemetry Transport) là một giao thức nhắn tin theo mô hình publish/subscribe cực kỳ nhẹ và hiệu quả, được thiết kế riêng cho các thiết bị IoT có tài nguyên hạn chế. Nguyên lý hoạt động của MQTT xoay quanh một trung tâm gọi là Broker. Các thiết bị (client), như ESP8266, có thể đóng vai trò Publisher (gửi tin nhắn đến một 'topic' cụ thể) hoặc Subscriber (đăng ký nhận tin nhắn từ một 'topic'). Ví dụ, ESP8266 đọc dữ liệu từ cảm biến và 'publish' lên topic 'sensor/data'. Một ứng dụng backend sẽ 'subscribe' vào topic này để nhận và lưu dữ liệu. Ngược lại, khi người dùng muốn bật đèn, ứng dụng sẽ 'publish' lệnh 'ON' đến topic 'device/control/lamp', và ESP8266 (đã 'subscribe' vào topic này) sẽ nhận lệnh và thực thi. Việc sử dụng Broker MQTT (như Mosquitto) giúp hệ thống trở nên linh hoạt và dễ mở rộng. Cấu hình broker cần chú ý đến bảo mật, ví dụ như vô hiệu hóa truy cập ẩn danh (allow_anonymous false) và sử dụng tệp mật khẩu để xác thực client, đảm bảo chỉ các thiết bị được cấp phép mới có thể tham gia vào mạng. Đây là bước quan trọng trong lập trình IoT để xây dựng một hệ thống an toàn và ổn định.

3.1. Nguyên lý hoạt động và lưu đồ giải thuật cho hệ thống

Để hiểu rõ cách hệ thống vận hành, việc xây dựng lưu đồ giải thuật là rất cần thiết. Luồng hoạt động bắt đầu tại vi điều khiển ESP8266. Đầu tiên, thiết bị khởi động, kết nối WiFi. Sau khi có kết nối mạng, nó sẽ kết nối đến MQTT Broker. Nếu kết nối thành công, ESP8266 sẽ đăng ký (subscribe) vào các topic điều khiển (ví dụ: iot/device/fan). Song song đó, trong vòng lặp chính (loop), thiết bị sẽ định kỳ đọc dữ liệu từ các cảm biến IoT (nhiệt độ, độ ẩm, ánh sáng). Dữ liệu này sau đó được đóng gói (thường ở định dạng JSON) và gửi (publish) lên một topic dữ liệu (ví dụ: iot/sensor/data). Đồng thời, ESP8266 liên tục lắng nghe tin nhắn trên các topic đã đăng ký. Khi nhận được lệnh (ví dụ: 'ON' trên topic iot/device/fan), nó sẽ thực thi hành động tương ứng (bật đèn LED tượng trưng cho quạt) và có thể gửi lại một tin nhắn xác nhận trạng thái. Nguyên lý hoạt động này đảm bảo hệ thống phản hồi nhanh và hoạt động hiệu quả.

3.2. Sơ đồ khối hệ thống IoT và cách kết nối các linh kiện

Một sơ đồ khối hệ thống IoT cung cấp cái nhìn tổng quan về kiến trúc. Sơ đồ này thường bao gồm các khối chính: Khối Cảm biến (DHT11, LDR), Khối Xử lý Trung tâm (ESP8266), Khối Giao tiếp (Module WiFi tích hợp), Khối Thiết bị Thực thi (LEDs), và Khối Nền tảng (Broker MQTT, Backend, Database, Frontend). Khối Cảm biến thu thập dữ liệu và gửi đến Khối Xử lý. Khối Xử lý đọc dữ liệu, giao tiếp với Khối Nền tảng thông qua MQTT. Người dùng tương tác với hệ thống qua Frontend (giao diện web/di động), các yêu cầu được gửi đến Backend. Backend xử lý logic và gửi lệnh điều khiển qua MQTT Broker đến Khối Xử lý, từ đó điều khiển Khối Thực thi. Việc kết nối các linh kiện IoT vật lý cần tuân thủ sơ đồ mạch, sử dụng breadboard và dây cắm để nối các chân của cảm biến và LED vào đúng các chân GPIO của ESP8266.

IV. Cách phát triển backend và frontend cho bài tập lớn IoT

Phần mềm là linh hồn của bài tập lớn IoT, biến dữ liệu thô từ cảm biến thành thông tin hữu ích và cung cấp giao diện để người dùng tương tác. Hệ thống phần mềm thường bao gồm hai phần chính: backend và frontend. Backend, được xây dựng bằng ExpressJS (một framework của Node.js), đóng vai trò là bộ não trung tâm. Nó thực hiện ba nhiệm vụ cốt lõi: giao tiếp với phần cứng qua Broker MQTT, tương tác với cơ sở dữ liệu (như MongoDB), và xử lý các yêu cầu từ frontend. Cụ thể, backend hoạt động như một MQTT client, đăng ký các topic để nhận dữ liệu từ cảm biến IoT và lưu vào MongoDB, đồng thời gửi lệnh điều khiển đến các thiết bị. Nó cũng cung cấp các API để frontend có thể truy vấn dữ liệu lịch sử hoặc gửi yêu cầu điều khiển. Về phía frontend, việc sử dụng ReactJS giúp tạo ra giao diện người dùng (UI) động và phản hồi nhanh. Frontend sẽ gửi các yêu cầu HTTP đến API của backend để lấy dữ liệu (ví dụ: nhiệt độ hiện tại, lịch sử bật/tắt thiết bị) và hiển thị chúng một cách trực quan qua biểu đồ hoặc bảng. Khi người dùng thực hiện một hành động, như nhấn nút bật đèn trên giao diện, frontend sẽ gọi API tương ứng trên backend, khởi tạo một chuỗi lệnh điều khiển thiết bị. Sự kết hợp giữa một backend mạnh mẽ và một frontend linh hoạt là chìa khóa để tạo ra một hệ thống IoT hoàn chỉnh và thân thiện với người dùng.

4.1. Xây dựng backend với Node.js và nền tảng IoT Thingspeak Blynk

Backend là trung gian xử lý logic cho hệ thống IoT. Sử dụng Node.js với framework ExpressJS cho phép xây dựng các API RESTful một cách nhanh chóng để giao tiếp với frontend và cơ sở dữ liệu MongoDB. Backend sẽ kết nối với broker MQTT để nhận dữ liệu từ ESP8266 và lưu trữ. Ngoài ra, các nền tảng IoT (IoT platform) như Thingspeak hoặc Blynk cung cấp giải pháp thay thế hoặc bổ sung. Thingspeak là một nền tảng mã nguồn mở tuyệt vời để thu thập, phân tích và trực quan hóa dữ liệu từ cảm biến. Blynk lại mạnh về việc xây dựng giao diện điều khiển di động một cách nhanh chóng mà không cần viết nhiều code frontend. Việc tích hợp các nền tảng này có thể giúp đơn giản hóa quá trình phát triển đồ án môn học IoT.

4.2. Cấu trúc code bài tập lớn IoT cho Arduino và ReactJS

Tổ chức code bài tập lớn IoT một cách khoa học giúp dễ dàng bảo trì và mở rộng. Đối với phần cứng (Arduino/ESP8266), mã nguồn nên được chia thành các hàm chức năng rõ ràng: connectWifi(), connectMqtt(), readSensors(), và callback() để xử lý tin nhắn MQTT đến. Các biến cấu hình như SSID, mật khẩu WiFi, địa chỉ broker nên được đặt ở đầu tệp để dễ dàng thay đổi. Đối với frontend ReactJS, cấu trúc thư mục thường bao gồm: src/components (chứa các thành phần giao diện tái sử dụng như Dashboard, Profile), src/pages (chứa các trang chính), src/services (chứa logic gọi API), và src/contexts (để quản lý trạng thái chung). Cấu trúc này giúp lập trình IoT trở nên có tổ chức, tách biệt giữa giao diện và logic, tuân thủ các nguyên tắc phát triển phần mềm hiện đại.

V. Bí quyết trình bày kết quả thực nghiệm báo cáo IoT ấn tượng

Chương kết quả thực nghiệm là phần quan trọng nhất trong báo cáo bài tập lớn môn học IoT và ứng dụng, nơi các kết quả của dự án được trình bày và chứng minh. Để gây ấn tượng, phần này cần phải trực quan, rõ ràng và bám sát các mục tiêu đã đề ra. Thay vì chỉ mô tả bằng chữ, hãy sử dụng thật nhiều hình ảnh chụp hệ thống phần cứng thực tế, ảnh chụp màn hình giao diện người dùng và các biểu đồ dữ liệu. Chức năng đo lường thời gian thực cần được minh họa bằng hình ảnh giao diện dashboard hiển thị các chỉ số nhiệt độ, độ ẩm, ánh sáng đang thay đổi. Đặc biệt, các biểu đồ thể hiện sự biến thiên của dữ liệu theo thời gian (ví dụ: biểu đồ đường của nhiệt độ trong 24 giờ) là bằng chứng thuyết phục cho thấy hệ thống IoT hoạt động ổn định. Đối với chức năng điều khiển thiết bị, cần có hình ảnh so sánh trạng thái trước và sau khi thực hiện lệnh (ví dụ: giao diện hiển thị đèn 'OFF' và đèn LED vật lý tắt, sau đó là giao diện 'ON' và đèn LED sáng). Chức năng lưu trữ và truy xuất dữ liệu có thể được thể hiện qua các trang 'Lịch sử hành động' hoặc 'Dữ liệu cảm biến', cho thấy khả năng tìm kiếm, lọc và phân trang dữ liệu. Việc trình bày kết quả một cách khoa học không chỉ chứng tỏ hệ thống hoạt động tốt mà còn thể hiện kỹ năng phân tích và tổng hợp của người thực hiện đồ án môn học IoT.

5.1. Demo chức năng giám sát nhiệt độ độ ẩm cho nhà thông minh

Chức năng cốt lõi của hệ thống IoT trong nhà thông minh (smart home) là giám sát môi trường. Kết quả thực nghiệm cần hiển thị rõ ràng giao diện dashboard đang cập nhật các thông số nhiệt độ, độ ẩm, và ánh sáng theo thời gian thực. Dữ liệu này được thu thập từ cảm biến DHT11 và LDR, sau đó được ESP8266 gửi lên server qua MQTT. Một điểm cộng lớn là khi giao diện có các yếu tố đồ họa thay đổi theo giá trị đo được, ví dụ như màu nền chuyển sang đỏ khi nhiệt độ cao. Việc trình bày một biểu đồ trực quan, vẽ lại sự thay đổi của các chỉ số này qua các thời điểm khác nhau, sẽ chứng minh được khả năng thu thập và lưu trữ dữ liệu liên tục của hệ thống.

5.2. Trình diễn điều khiển thiết bị từ xa và truy xuất dữ liệu

Chức năng điều khiển từ xa là ứng dụng thực tiễn nhất của một bài tập lớn IoT. Phần trình bày cần có hình ảnh người dùng tương tác trên giao diện web (nhấn nút bật/tắt) và hình ảnh hệ thống phần cứng vật lý phản hồi tương ứng (đèn LED sáng/tắt). Cần nhấn mạnh rằng hệ thống chỉ hiển thị thông báo thành công khi có xác nhận từ thiết bị, đảm bảo tính chính xác. Ngoài ra, việc demo các tính năng trên trang 'Lịch sử dữ liệu' như phân trang, tìm kiếm theo khoảng thời gian, hoặc lọc theo tên thiết bị sẽ cho thấy khả năng quản lý dữ liệu mạnh mẽ của backend. Đây là minh chứng rõ ràng cho việc hệ thống không chỉ hoạt động ở thời gian thực mà còn có khả năng lưu trữ và phân tích dữ liệu lịch sử.

VI. Tài liệu và slide báo cáo IoT tham khảo cho đồ án thành công

Để hoàn thành xuất sắc một đồ án môn học IoT, việc tham khảo các tài liệu chất lượng và chuẩn bị một bài trình bày chuyên nghiệp là vô cùng cần thiết. Nguồn tài liệu tham khảo môn IoT rất đa dạng, từ các trang web hướng dẫn kỹ thuật như Random Nerd Tutorials, các diễn đàn cộng đồng cho ArduinoRaspberry Pi, đến tài liệu chính thức của các công nghệ như MQTT.org. Đối với phần cứng, datasheet của các linh kiện IoT như ESP8266, ESP32, hay cảm biến DHT11 cung cấp thông tin chi tiết về thông số kỹ thuật và cách sử dụng. Về phần mềm, tài liệu của Node.js, ExpressJS, ReactJS và MongoDB là nguồn kiến thức không thể thiếu cho việc lập trình IoT. Bên cạnh báo cáo chi tiết, một slide báo cáo IoT súc tích và trực quan sẽ giúp bạn truyền tải ý tưởng hiệu quả hơn trong buổi bảo vệ. Slide nên tập trung vào các điểm chính: đặt vấn đề, sơ đồ khối hệ thống IoT, các công nghệ sử dụng, demo các chức năng chính, và kết quả đạt được. Cuối cùng, việc tham khảo và chia sẻ code bài tập lớn IoT từ các dự án mã nguồn mở trên GitHub cũng là một cách học hỏi và cải thiện kỹ năng nhanh chóng. Việc tổng hợp và sử dụng hiệu quả các nguồn tài nguyên này sẽ là chìa khóa giúp bạn chinh phục môn học IoT và ứng dụng.

6.1. Tổng hợp code bài tập lớn IoT và các thư viện quan trọng

Một phần không thể thiếu của báo cáo là code bài tập lớn IoT. Cung cấp một liên kết đến kho lưu trữ mã nguồn (ví dụ: GitHub) là một cách tuyệt vời để thể hiện tính minh bạch và chuyên nghiệp. Mã nguồn cho ESP8266/Arduino thường yêu cầu các thư viện như PubSubClient cho MQTT, DHT sensor library cho cảm biến DHT. Phần backend Node.js sẽ cần các gói như express, mongoose (để làm việc với MongoDB), và mqtt. Frontend ReactJS sẽ sử dụng react-router-dom cho điều hướng và axios hoặc fetch để gọi API. Việc liệt kê và giải thích ngắn gọn vai trò của các thư viện chính giúp người đọc hiểu rõ hơn về công nghệ được sử dụng.

6.2. Hướng phát triển trong tương lai cho các hệ thống IoT

Một bài tập lớn IoT thành công không chỉ dừng lại ở việc hoàn thành các yêu cầu cơ bản mà còn mở ra các hướng phát triển tiềm năng. Các cải tiến trong tương lai có thể bao gồm: tích hợp trí tuệ nhân tạo (AI) và học máy (Machine Learning) để hệ thống có thể tự học thói quen người dùng và đưa ra các kịch bản tự động thông minh hơn. Ví dụ, dự đoán thời điểm cần bật điều hòa dựa trên dữ liệu lịch sử. Mở rộng hệ thống sang các lĩnh vực khác như nông nghiệp thông minh (smart agriculture) để giám sát cây trồng hoặc quản lý kho thông minh để theo dõi hàng tồn kho. Ngoài ra, việc nâng cao tính bảo mật cho hệ thống IoT, sử dụng các giao thức mã hóa mạnh hơn như MQTT qua TLS/SSL, cũng là một hướng đi quan trọng để đảm bảo an toàn dữ liệu.

11/09/2025

Trích đoạn nội dung tài liệu

Chương 1: Giới thiệu Giới thiệu tổng quan về đề tài Chương 2: Giao diện, thiết kế tổng thể Trình bày các giao diện người dùng, cách thiết kế tổng thể hệ thống, sơ đồ khối, và sơ đồ kết nối các thành phần. Chương 3: Chi tiết hệ thống Mô tả chi tiết từng thành phần của hệ thống, từ cảm biến, bộ điều khiển đến các thành phần như broker mqtt, backend, frontend, … Chương 4: Code Trình bày mã nguồn của hệ thống, các thư mục và file, và cách thức hoạt động của phần mềm. Chương 5: Kết quả Đánh giá kết quả thử nghiệm hệ thống, so sánh với mục tiêu đề ra và đưa ra nhận xét về tính hiệu quả của hệ thống. Giao diện, thiết kế tổng thể 2.

Giao diện Giao diện, chúng ta sẽ mô tả chi tiết các màn hình chính của hệ thống IoT, bao gồm các chức năng và thiết kế của từng màn hình: Màn hình Dashboard là trung tâm của giao diện, nơi người dùng có thể theo dõi và quản lý các chỉ số môi trường trong thời gian thực. Trên màn hình này, các thông số như nhiệt độ, độ ẩm và ánh sáng được hiển thị rõ ràng, cho phép người dùng theo dõi sự thay đổi của chúng theo thời gian. Màn hình còn bao gồm các biểu đồ thể hiện sự biến động của các thông số này, giúp người dùng dễ dàng nắm bắt xu hướng và nhận biết các biến đổi quan trọng. Bên cạnh đó, màn hình Dashboard còn cung cấp các nút điều khiển để bật/tắt các thiết bị điện như quạt, điều hòa và đèn, cho phép người dùng quản lý các thiết bị này một cách nhanh chóng và thuận tiện.

Màn hình Data Sensor cung cấp cái nhìn tổng quan về tất cả các thông số đo lường từ trước đến nay. Đây là nơi người dùng có thể xem và quản lý dữ liệu lịch sử của các cảm biến. Màn hình Data Sensor bao gồm các chức năng phân trang để dễ dàng điều hướng qua nhiều dữ liệu, cùng với các công cụ tìm kiếm và sắp xếp để người dùng có thể nhanh chóng tìm thấy thông tin cần thiết. Các tùy chọn sắp xếp có thể được cấu hình để hiển thị dữ liệu theo các tiêu chí khác nhau như thời gian, loại cảm biến hoặc giá trị đo lường.

Màn hình Action History tập trung vào việc lưu trữ và quản lý lịch sử các hành động liên quan đến việc bật/tắt các thiết bị điện. Màn hình này cho phép người dùng xem lại tất cả các hành động đã được thực hiện, với các tùy chọn phân trang và tìm kiếm theo khoảng thời gian để dễ dàng theo dõi các sự kiện cụ thể. Bên cạnh đó, người dùng cũng có thể lọc dữ liệu theo từng thiết bị, giúp dễ dàng xác định các thay đổi và hoạt động của từng thiết bị trong hệ thống. Màn hình Profile chứa thông tin chi tiết của sinh viên sử dụng hệ thống.

Màn hình này cung cấp một cái nhìn tổng quan về thông tin cá nhân, bao gồm tên, ảnh đại diện, và các thông tin liên quan khác như github và báo cáo. Đây là nơi người dùng có thể cập nhật và quản lý thông tin cá nhân của mình, đảm bảo rằng các dữ liệu liên quan đến người sử dụng được giữ cập nhật và chính xác. Thiết kế tổng thế Hình 1: Ảnh thiết kế tổng thế của hệ thống Chương 3. Chi tiết về đề tài 3.

Các thiết bị phần cứng Trong hệ thống IoT được phát triển, các thành phần phần cứng đóng vai trò quan trọng trong việc thu thập dữ liệu, xử lý và điều khiển các thiết bị điện. Các thành phần phần cứng chính được sử dụng trong dự án bao gồm: 3. ESP8266: ESP8266 là một vi điều khiển tích hợp module WiFi, cho phép kết nối mạng không dây để gửi và nhận dữ liệu. Đây là bộ điều khiển trung tâm trong hệ thống, đảm nhận nhiệm vụ nhận tín hiệu từ các cảm biến và điều khiển các thiết bị điện (như đèn LED) dựa trên các tín hiệu đó.

Ngoài ra, ESP8266 còn chịu trách nhiệm giao tiếp với server qua giao thức MQTT để gửi dữ liệu thu thập được từ các cảm biến lên hệ thống và nhận lệnh điều khiển từ server để thực hiện các tác vụ điều khiển. Hình 2: Ảnh về module ESP8266 3. Cảm biến nhiệt độ và độ ẩm: Cảm biến nhiệt độ và độ ẩm (DHT11) được sử dụng để đo lường hai thông số môi trường quan trọng là nhiệt độ và độ ẩm. Cảm biến này có nhiệm vụ gửi dữ liệu thu thập được về ESP8266 để xử lý và truyền dữ liệu đó đến server hoặc sử dụng trực tiếp cho việc điều khiển các thiết bị khác.

Hình 3: Ảnh về cảm biến DHT11 3. Cảm biến ánh sáng: Cảm biến ánh sáng (ví dụ: LDR - Light Dependent Resistor) được sử dụng để đo cường độ ánh sáng trong môi trường. Khi cường độ ánh sáng thay đổi, điện trở của LDR thay đổi theo, tạo ra tín hiệu mà ESP8266 có thể đọc và xử lý. Thông tin về mức độ ánh sáng sẽ được sử dụng để điều khiển các thiết bị liên quan hoặc gửi về server để lưu trữ và phân tích.

Hình 4: Ảnh cảm biến ánh sáng LDR – TH078 3. Đèn LED: Ba đèn LED được sử dụng để tượng trưng cho ba thiết bị điện khác nhau: quạt, điều hòa và đèn chiếu sáng. ESP8266 sẽ điều khiển trạng thái bật/tắt của các đèn LED này dựa trên các tín hiệu nhận được từ server hoặc từ các cảm biến. Đây là cách mô phỏng đơn giản cho việc điều khiển các thiết bị điện trong thực tế.

Hình 5: Ảnh đèn LED 3. Các thiết bị phụ trợ khác: • Dây nối: Các dây nối (jumper wires) được sử dụng để kết nối các thành phần khác nhau trên breadboard, đảm bảo việc truyền tín hiệu giữa ESP8266, cảm biến và đèn LED. • Breadboard: Là bảng mạch thử nghiệm không hàn, breadboard được sử dụng để lắp ráp các mạch điện một cách dễ dàng và linh hoạt. Đây là nơi các thiết bị phần cứng được kết nối với nhau mà không cần hàn, giúp dễ dàng điều chỉnh mạch trong quá trình phát triển.

• Điện trở: Điện trở được sử dụng để hạn chế dòng điện trong mạch, đặc biệt là khi kết nối đèn LED để tránh tình trạng cháy hỏng do quá dòng. Các thành phần phần cứng này kết hợp với nhau tạo thành một hệ thống IoT hoàn chỉnh, cho phép thu thập dữ liệu từ môi trường, xử lý thông tin và điều khiển các thiết bị điện từ xa thông qua mạng internet. Dưới đây là hệ thống phần cứng hoàn chỉnh: Hình 6: Ảnh hệ thống phần cứng hoàn chỉnh 3. Lý thuyết về MQTT và Broker MQTT (Message Queuing Telemetry Transport) là một giao thức nhắn tin đơn giản và nhẹ, được thiết kế để truyền tải dữ liệu giữa các thiết bị có tài nguyên hạn chế như các cảm biến hoặc thiết bị nhúng.

MQTT hoạt động dựa trên mô hình publish/subscribe, trong đó: • Publisher: Thiết bị hoặc ứng dụng gửi (publish) thông tin lên một topic cụ thể. • Subscriber: Thiết bị hoặc ứng dụng đăng ký (subscribe) với một hoặc nhiều topic để nhận thông tin từ các publisher. • Broker: Là thành phần trung tâm trong hệ thống MQTT, broker nhận các tin nhắn từ các publisher và phân phối chúng đến các subscriber đã đăng ký với các topic tương ứng. Broker chịu trách nhiệm duy trì các kết nối với các client (publisher/subscriber), quản lý quyền truy cập vào các topic, và đảm bảo rằng các tin nhắn được gửi đến đúng các subscriber.

MQTT được thiết kế để hoạt động hiệu quả trong các môi trường có băng thông thấp, độ trễ cao hoặc mạng không ổn định, làm cho nó trở nên lý tưởng cho các ứng dụng IoT. Sử dụng Broker MQTT trong dự án Trong dự án của em, broker MQTT là thành phần không thể thiếu trong việc quản lý và phân phối các thông điệp giữa các thiết bị IoT. Để đơn giản hóa việc phát triển và thử nghiệm, em sử dụng server broker đã được cấu hình trên máy. Hình 7: Cấu hình file config mosquito.conf Trong cấu hình của broker MQTT, dòng lệnh sau được sử dụng để thiết lập các thông số quan trọng: • listener 1883 192.11: Dòng lệnh này cấu hình broker MQTT để lắng nghe (listen) trên địa chỉ IP cụ thể là 192.

Cổng 1883 là cổng mặc định dành cho giao thức MQTT không mã hóa. Điều này giới hạn việc truy cập broker chỉ từ những thiết bị trên cùng mạng nội bộ có địa chỉ IP trong phạm vi phù hợp, giúp tăng cường bảo mật và kiểm soát truy cập. • password_file passwd: Cấu hình này chỉ ra rằng broker sẽ sử dụng một tập tin mật khẩu (passwd) để quản lý xác thực người dùng. Mỗi thiết bị hoặc ứng dụng khi kết nối tới broker phải cung cấp tên người dùng và mật khẩu đúng với thông tin lưu trong tập tin này.

Điều này đảm bảo rằng chỉ những người dùng hợp lệ mới có thể kết nối và gửi/nhận thông điệp qua broker. • allow_anonymous false: Tùy chọn này được đặt thành false, nghĩa là broker không cho phép kết nối ẩn danh. Tất cả các kết nối phải thông qua quá trình xác thực bằng tên người dùng và mật khẩu. Điều này là cần thiết để đảm bảo rằng chỉ có những thiết bị và người dùng được cấp quyền mới có thể truy cập vào hệ thống, giúp tăng cường bảo mật và ngăn chặn các truy cập trái phép.

• Với file passwd đã cấu hình xong username và password(mật khẩu đã được mã hóa). Thử nghiệm publish và subcribe trên broker đã cấu hình: - Khởi động broker: Hình 8: Khởi động broker - Tiến hành thử nghiệm publish và subcribe để gửi, nhận dữ liệu Hình 9: pub dữ liệu - Nhận dữ liệu Hình 10: sub dữ liệu Sau khi cấu hình xong em đã thiết lập được một broker đồng thời có tính bảo mật. Broker này cho phép các thiết bị trong hệ thống IoT của em gửi và nhận các thông điệp, thực hiện điều khiển các thiết bị điện từ xa, và thu thập dữ liệu từ các cảm biến để phân tích. Giới thiệu Trong dự án này, backend được xây dựng bằng ExpressJS, một thư viện phổ biến của Node.js dùng để phát triển các ứng dụng web.

ExpressJS cung cấp một bộ công cụ mạnh mẽ nhưng đơn giản để phát triển các API và xử lý yêu cầu HTTP. Trong hệ thống IoT, backend đóng vai trò quan trọng trong việc quản lý dữ liệu và điều khiển các thiết bị thông qua giao thức MQTT và cơ sở dữ liệu MongoDB. Chức năng của Backend Backend thực hiện các nhiệm vụ chính sau: Trao đổi dữ liệu với hardware thông qua broker MQTT: • Đóng vai trò client: Backend hoạt động như một client trong hệ thống MQTT, liên kết với broker MQTT để gửi và nhận các thông điệp.

Nội dung được bảo vệ bản quyền — Tải xuống đầy đủ