lOMoARcPSD| 58647650
HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG
KHOA CÔNG NGHỆ THÔNG TIN 1
BÁO CÁO BÀI TẬP LỚN
MÔN HỌC: IOT VÀ ỨNG DỤNG
:
Nguyễn Quốc Uy
Lớp
:
06
Sinh viên thực hiện
:
Phạm Thùy Trang
Mã sinh viên
:
B21DCAT184
Hà Nội, 2024
lOMoARcPSD| 58647650
CHƯƠNG 1. Giới thiệu
1.1. Mô tả ề tài và mục ích ề tài
Đề tài này tập trung vào việc phát triển một hệ thống giám sát và iều khiển nhiệt ộ,
ẩm, cũng như các thiết bị như iều hòa, iện, quạt thông qua web. Hệ thống sử dụng
Python Flask làm nền tảng cho phần backend, cung cấp các API ứng dụng thể lấy
thông tin về nhiệt ộ, ộ ẩm và trạng thái của các thiết bị. Đồng thời, hệ thống cũng hỗ trợ
các API iều khiển bật/tắt các thiết bị từ xa, ảm bảo sự tiện lợi linh hoạt cho người
dùng. sở dữ liệu MySQL ược sử dụng u trữ toàn bộ dữ liệu liên quan, bao gồm
thông tin về môi trường, trạng thái thiết bị lịch sử tương tác của người dùng. Người
dùng không chỉ thể dễ dàng iều khiển c thiết bị từ xa thông qua ứng dụng còn
có thể liên tục theo dõi các chỉ số môi trường và hoạt ộng của thiết bị qua các biểu ồ cập
nhật theo thời gian thực, cũng như xem lại lịch sử sử dụng.
1.2. Thiết bị sử dụng 1.2.1.
NODE MCU ESP32
- Thông số kỹ thuật:
CPU: Dual-core Tensilica Xtensa LX6, 240 MHz.
RAM: 520 KB SRAM.
Flash: 4 MB (mặc ịnh, có thể mở rộng).
Kết nối:
Wi-Fi: 802.11 b/g/n, 2.4 GHz.
Bluetooth: v4.2 (Classic + BLE).
GPIO: 34 chân (PWM, ADC, DAC, I2C, SPI, UART, CAN...).
ADC/DAC:
ADC: 18 kênh, 12-bit.
DAC: 2 kênh, 8-bit.
Bảo mật: AES, SHA-2, RSA, ECC, Secure Boot.
Tiết kiệm năng lượng: Deep Sleep (~10 µA).
Kích thước: Module phổ biến: ESP32-WROOM-32 (25 x 18 mm).
lOMoARcPSD| 58647650
Hình 1-1. ESP32
1.2.2. Cảm biến nhiệt ộ, ộ ẩm DHT11
- Thông số kỹ thuật:
Dải o:
o Nhiệt ộ: 0°C ến 50°C (±2°C).
o Độ ẩm: 20% ến 90% RH (±5% RH).
Độ phân giải: o Nhiệt ộ: 1°C.
o Độ ẩm: 1% RH.
Nguồn iện:
o Điện áp hoạt ộng: 3.3V 5.5V. o Dòng tiêu thụ: ~0.3 mA (chế o), ~60 μA
(chế ộ chờ).
Hình 1-2. Cảm biến DHT11
1.2.3. Cảm biến ánh sáng LDR
- Thông số kỹ thuật:
Dải hoạt ộng:
o Cường ộ ánh sáng: 1 lux ến 10,000 lux (tùy loại LDR).
Điện trở:
o Trong bóng tối: Lên ến 1 MΩ.
o Trong ánh sáng mạnh: Dưới 1 kΩ.
Điện áp hoạt ộng: 3.3V – 5V (phụ thuộc vào mạch kết nối).
lOMoARcPSD| 58647650
Hình 1-3. Cảm biến LDR
1.2.4. Breadboard
1.2.5. Dây nối 1.2.6. Đèn LED
1.3. Công nghệ sử dụng
1.3.1. Trình biên dịch Arduino IDE
- Arduino IDE là một phần mềm mã nguồn mở chủ yếu ược sử dụng ể viết và biên
dịch mã vào module Arduino.
- các phiên bản cho các hệ iều hành như MAC, Windows, Linux chạy
trên nền tảng Java i kèm với các chức năng và lệnh có sẵn óng vai trò quan trọng
ể gỡ lỗi, chỉnh sửa và biên dịch mã trong môi trường.
- rất nhiều các module Arduino như Arduino Uno, Arduino Mega, Arduino
Leonardo, Arduino Micro và nhiều module khác.Mỗi module chứa một bộ vi iều
khiển trên bo mạch ược lập trình và chấp nhận thông tin dưới dạng mã.
- Môi trường IDE chủ yếu chứa hai phần bản: Trình chỉnh sửa Trình biên
dịch, phần ầu sử dụng ể viết ược yêu cầu và phần sau ược sử dụng ể biên dịch
và tải mã lên module Arduino.
- Môi trường này hỗ trợ cả ngôn ngữ C và C++.
lOMoARcPSD| 58647650
1.3.2. Visual Studio Code 1.3.3. Python Flask 1.3.4. MySQL 1.3.5. Mosquitto
lOMoARcPSD| 58647650
CHƯƠNG 2. GIAO DIỆN TỔNG THỂ
2.1. Giao diện web
Hình 2-1. Giao diện Dashboard
Hình 2-2. Giao diện Data Sensor
lOMoARcPSD| 58647650
Hình 2-3. Giao diện Device History
Hình 2-4. Giao diện Profile
lOMoARcPSD| 58647650
Hình 2-5. Giao diện Dashboard 2
Hình 2-6. Giao diện Data Sensor 2
2.2. Giao diện API docs
2.3. Giao diện thiết bị
lOMoARcPSD| 58647650
CHƯƠNG 3. THIẾT KẾ CHI TIẾT
3.1. Thiết kế hệ thống
Hình 3-1. Quy trình hoạt ộng của hệ thống
CHƯƠNG 4. CODE
4.1. Embedded Code
- Khai báo các thư viện cần thiết gồm:
lOMoARcPSD| 58647650
- Xác ịnh các chân cắm:
- Cài ặt mạng ể kết nối với mosquitto
- Thực hiện kết nối ến mạng
- Gọi hàm callback ể thực hiện lắng nghe
lOMoARcPSD| 58647650
4.2. Backend code
- Trong code Python Flask có cài ặt các hàm trong các route ể web thực hiện gọi tới
lOMoARcPSD| 58647650
Hình 4-1. Gọi các thư viện cần thiết và kết nối tới database
Hình 4-2. Kết nối tới mosquitto
lOMoARcPSD| 58647650
Hình 4-3. Route /data ể thực hiện lấy dữ liu
lOMoARcPSD| 58647650
Hình 4-4. Route /update_device gửi lệnh tới Arduino ể iều khiển thiết bị và lưu lịch sử vào database
Hình 4-5. Route /device_history_data ể lấy dữ liệu lịch sử dùng thiết bị trong database
Hình 4-6. Route /get_data_sensor ể lấy dữ liệu lịch sử o cảm biến
4.3. Frontend code
lOMoARcPSD| 58647650
CHƯƠNG 5. TỔNG KẾT
5.1. Tổng quan
Trong quá trình phát triển hệ thống, em ã thực hiện thành công các chức năng o của
cảm biến theo thời gian thực, iều khiển thiết bị lưu trữ dữ liệu cho người dùng
thể kiểm tra lại.
Hình 5-1. Phần cứng
5.2. Theo dõi thông tin theo thời gian thực
Hình 5-2. Giao diện theo dõi cảm biến theo thời gian thực
lOMoARcPSD| 58647650
5.3. Xem lịch sử o cảm biến và sử dụng thiết bị
- Tại giao diện xem lịch sử o cảm biến sử dụng thiết bị, người dùng có thể sắp
xếp, tìm kiếm theo cột và chọn số bản ghi hiển thị mỗi trang.
Hình 5-3. Giao diện lịch sử o cảm biến
Hình 5-4. Giao diện lịch sử dùng thiết b
ss

Preview text:

lOMoAR cPSD| 58647650
HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG
KHOA CÔNG NGHỆ THÔNG TIN 1
BÁO CÁO BÀI TẬP LỚN
MÔN HỌC: IOT VÀ ỨNG DỤNG
Giảng viên hướng dẫn : Nguyễn Quốc Uy Lớp : 06
Sinh viên thực hiện : Phạm Thùy Trang
Mã sinh viên : B21DCAT184 Hà Nội, 2024 lOMoAR cPSD| 58647650
CHƯƠNG 1. Giới thiệu
1.1. Mô tả ề tài và mục ích ề tài
Đề tài này tập trung vào việc phát triển một hệ thống giám sát và iều khiển nhiệt ộ,
ộ ẩm, cũng như các thiết bị như iều hòa, iện, quạt thông qua web. Hệ thống sử dụng
Python Flask làm nền tảng cho phần backend, cung cấp các API ể ứng dụng có thể lấy
thông tin về nhiệt ộ, ộ ẩm và trạng thái của các thiết bị. Đồng thời, hệ thống cũng hỗ trợ
các API ể iều khiển bật/tắt các thiết bị từ xa, ảm bảo sự tiện lợi và linh hoạt cho người
dùng. Cơ sở dữ liệu MySQL ược sử dụng ể lưu trữ toàn bộ dữ liệu liên quan, bao gồm
thông tin về môi trường, trạng thái thiết bị và lịch sử tương tác của người dùng. Người
dùng không chỉ có thể dễ dàng iều khiển các thiết bị từ xa thông qua ứng dụng mà còn
có thể liên tục theo dõi các chỉ số môi trường và hoạt ộng của thiết bị qua các biểu ồ cập
nhật theo thời gian thực, cũng như xem lại lịch sử sử dụng.
1.2. Thiết bị sử dụng 1.2.1. NODE MCU ESP32 - Thông số kỹ thuật:
• CPU: Dual-core Tensilica Xtensa LX6, 240 MHz. • RAM: 520 KB SRAM.
• Flash: 4 MB (mặc ịnh, có thể mở rộng). • Kết nối:
• Wi-Fi: 802.11 b/g/n, 2.4 GHz.
• Bluetooth: v4.2 (Classic + BLE).
• GPIO: 34 chân (PWM, ADC, DAC, I2C, SPI, UART, CAN...). • ADC/DAC: • ADC: 18 kênh, 12-bit. • DAC: 2 kênh, 8-bit.
• Bảo mật: AES, SHA-2, RSA, ECC, Secure Boot.
• Tiết kiệm năng lượng: Deep Sleep (~10 µA).
• Kích thước: Module phổ biến: ESP32-WROOM-32 (25 x 18 mm). lOMoAR cPSD| 58647650 Hình 1-1. ESP32
1.2.2. Cảm biến nhiệt ộ, ộ ẩm DHT11 - Thông số kỹ thuật: • Dải o:
o Nhiệt ộ: 0°C ến 50°C (±2°C).
o Độ ẩm: 20% ến 90% RH (±5% RH).
• Độ phân giải: o Nhiệt ộ: 1°C. o Độ ẩm: 1% RH. • Nguồn iện:
o Điện áp hoạt ộng: 3.3V – 5.5V. o Dòng tiêu thụ: ~0.3 mA (chế ộ o), ~60 μA (chế ộ chờ).
Hình 1-2. Cảm biến DHT11
1.2.3. Cảm biến ánh sáng LDR - Thông số kỹ thuật: • Dải hoạt ộng:
o Cường ộ ánh sáng: 1 lux ến 10,000 lux (tùy loại LDR). • Điện trở:
o Trong bóng tối: Lên ến 1 MΩ.
o Trong ánh sáng mạnh: Dưới 1 kΩ.
• Điện áp hoạt ộng: 3.3V – 5V (phụ thuộc vào mạch kết nối). lOMoAR cPSD| 58647650
Hình 1-3. Cảm biến LDR
1.2.4. Breadboard
1.2.5. Dây nối 1.2.6. Đèn LED
1.3. Công nghệ sử dụng
1.3.1. Trình biên dịch Arduino IDE
- Arduino IDE là một phần mềm mã nguồn mở chủ yếu ược sử dụng ể viết và biên
dịch mã vào module Arduino.
- Nó có các phiên bản cho các hệ iều hành như MAC, Windows, Linux và chạy
trên nền tảng Java i kèm với các chức năng và lệnh có sẵn óng vai trò quan trọng
ể gỡ lỗi, chỉnh sửa và biên dịch mã trong môi trường.
- Có rất nhiều các module Arduino như Arduino Uno, Arduino Mega, Arduino
Leonardo, Arduino Micro và nhiều module khác.Mỗi module chứa một bộ vi iều
khiển trên bo mạch ược lập trình và chấp nhận thông tin dưới dạng mã.
- Môi trường IDE chủ yếu chứa hai phần cơ bản: Trình chỉnh sửa và Trình biên
dịch, phần ầu sử dụng ể viết mã ược yêu cầu và phần sau ược sử dụng ể biên dịch
và tải mã lên module Arduino.
- Môi trường này hỗ trợ cả ngôn ngữ C và C++. lOMoAR cPSD| 58647650
1.3.2. Visual Studio Code 1.3.3. Python Flask 1.3.4. MySQL 1.3.5. Mosquitto lOMoAR cPSD| 58647650
CHƯƠNG 2. GIAO DIỆN TỔNG THỂ 2.1. Giao diện web
Hình 2-1. Giao diện Dashboard
Hình 2-2. Giao diện Data Sensor lOMoAR cPSD| 58647650
Hình 2-3. Giao diện Device History
Hình 2-4. Giao diện Profile lOMoAR cPSD| 58647650
Hình 2-5. Giao diện Dashboard 2
Hình 2-6. Giao diện Data Sensor 2
2.2. Giao diện API docs
2.3. Giao diện thiết bị lOMoAR cPSD| 58647650
CHƯƠNG 3. THIẾT KẾ CHI TIẾT
3.1. Thiết kế hệ thống
Hình 3-1. Quy trình hoạt ộng của hệ thống CHƯƠNG 4. CODE 4.1. Embedded Code
- Khai báo các thư viện cần thiết gồm: lOMoAR cPSD| 58647650
- Xác ịnh các chân cắm:
- Cài ặt mạng ể kết nối với mosquitto
- Thực hiện kết nối ến mạng
- Gọi hàm callback ể thực hiện lắng nghe lOMoAR cPSD| 58647650 4.2. Backend code
- Trong code Python Flask có cài ặt các hàm trong các route ể web thực hiện gọi tới lOMoAR cPSD| 58647650
Hình 4-1. Gọi các thư viện cần thiết và kết nối tới database
Hình 4-2. Kết nối tới mosquitto lOMoAR cPSD| 58647650
Hình 4-3. Route /data ể thực hiện lấy dữ liệu lOMoAR cPSD| 58647650
Hình 4-4. Route /update_device gửi lệnh tới Arduino ể iều khiển thiết bị và lưu lịch sử vào database
Hình 4-5. Route /device_history_data ể lấy dữ liệu lịch sử dùng thiết bị trong database
Hình 4-6. Route /get_data_sensor ể lấy dữ liệu lịch sử o cảm biến 4.3. Frontend code lOMoAR cPSD| 58647650
CHƯƠNG 5. TỔNG KẾT 5.1. Tổng quan
Trong quá trình phát triển hệ thống, em ã thực hiện thành công các chức năng o của
cảm biến theo thời gian thực, iều khiển thiết bị và lưu trữ dữ liệu cho người dùng ể có thể kiểm tra lại.
Hình 5-1. Phần cứng
5.2. Theo dõi thông tin theo thời gian thực
Hình 5-2. Giao diện theo dõi cảm biến theo thời gian thực lOMoAR cPSD| 58647650
5.3. Xem lịch sử o cảm biến và sử dụng thiết bị
- Tại giao diện xem lịch sử o cảm biến và sử dụng thiết bị, người dùng có thể sắp
xếp, tìm kiếm theo cột và chọn số bản ghi hiển thị mỗi trang.
Hình 5-3. Giao diện lịch sử o cảm biến
Hình 5-4. Giao diện lịch sử dùng thiết bị ss