Phiên bản này có giá thành hợp lý, dễ dàng kết nối với máy tính qua cổng USB, và được sử dụng phổ biến trong các dự án IoT và tự động hóa.. DHT11 Cảm biến DHT11 là một loại cảm biến được
Trang 1HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG
KHOA CƠ BẢN I
BỘ MÔN IOT VÀ ỨNG DỤNG
Báo cáo bài tập lớn
Giảng viên hướng dẫn : Nguyễn Quốc Uy
Họ và tên sinh viên : Nguyễn Khắc Hưng
Hà Nội – 2024
Trang 3I Lý thuyết
1 Đặt vấn đề
Một hệ thống thời gian thực cho phép truyền dữ liệu từ cảm
biến để hiển thị cho người dùng Người dùng có thể tương tác
ngược lại cho thiết bị Một hệ thống IoT đơn giản.
thể xem thông tin nhiệt độ và độ ẩm trực tiếp ở thời gian thực
và có thể điều khiển led.
3 Các thiết bị được sử dụng
3.1 ESP32 CH340
ESP32 CH340 là một phiên bản của dòng ESP32 được trang bị
chip nạp (USB-to-Serial) CH340 Phiên bản này có giá thành hợp lý,
dễ dàng kết nối với máy tính qua cổng USB, và được sử dụng phổ biến trong các dự án IoT và tự động hóa Dưới đây là một số thông tin chi tiết về ESP32 CH340.
● ESP32 là một vi điều khiển mạnh mẽ do Espressif Systems
phát triển, tích hợp cả Wi-Fi và Bluetooth, giúp bạn dễ dàng xây dựng các dự án IoT với khả năng kết nối không dây.
● CH340 là chip chuyển đổi USB-to-Serial phổ biến, giúp dễ
dàng kết nối ESP32 với máy tính và nạp code từ các IDE như Arduino IDE hoặc PlatformIO.
● Với chip CH340, bạn cần cài đặt driver tương ứng cho máy
tính để có thể nhận dạng thiết bị Driver này có thể tải về từ trang web của nhà sản xuất.
Trang 4Hiệu suất: Lên đến 600 DMIPS
3.2 DHT11
Cảm biến DHT11 là một loại cảm biến được sử dụng phổ biến
trong các dự án IoT, nhà thông minh, và hệ thống tự động hóa Đây là
một cảm biến tích hợp dùng để đo nhiệt độ và độ ẩm với thiết kế nhỏ
gọn, giá thành hợp lý và dễ dàng sử dụng.
Thông số kỹ thuật :
Điện áp hoạt động: 5VDC.
Chuẩn giao tiếp: TTL, 1 wire.
Khoảng đo độ ẩm: 20%-80%RH sai số ± 5%RH.
Khoảng đo nhiệt độ: 0-50°C sai số ± 2°C.
Tần số lấy mẫu tối đa 1Hz (1 giây / lần).
Kích thước: 28mm x 12mm x10m.
DHT11 có 4 chân: VCC, DATA, NC, GND
Module DHT11 đã được gắn sẵn điện trở và led báo
nguồn, nên có 3 chân.
VCC: Nguồn 3.3 - 5.5VDC
DATA: Chân dữ liệu
GND: Nối đất, cực âm
3.3 Cảm biến ánh sáng
Trang 5Cảm biến ánh sáng quang trở CDS có tích hợp sẵn Op-amp và biến trở so sánh mức tín hiệu giúp cho việc nhận biết tín hiệu trở nên
dễ dàng, Cảm biến ánh sáng này thường dùng để nhận biết, bật tắt thiết bị theo cường độ ánh sáng môi trường.
Node.js được xây dựng dựa trên JavaScript Engine V8 của Google
Chrome, cho phép thực thi mã JavaScript với tốc độ cực nhanh Điều này
đã giúp Node.js trở thành lựa chọn hàng đầu cho các ứng dụng web thờigian thực (real-time), hệ thống máy chủ có lưu lượng truy cập lớn, và cácứng dụng cần hiệu năng cao
Đặc điểm nổi bật của Node.js
Trang 6- Node.js sử dụng mô hình non-blocking I/O, giúp tối ưu hóa hiệusuất khi xử lý nhiều yêu cầu cùng lúc mà không làm chậm hệ
thống
- Thích hợp cho các ứng dụng cần khả năng phản hồi nhanh nhưchat, truyền phát video trực tiếp, hoặc các hệ thống thông tin
liên lạc
Hiệu năng cao:
- Được xây dựng trên nền tảng V8 Engine của Google, Node.js cókhả năng biên dịch và thực thi JavaScript rất nhanh
- Node.js sử dụng single-threaded event loop, cho phép xử lý
đồng thời hàng nghìn kết nối mà không cần sử dụng nhiều
luồng xử lý
Khả năng mở rộng (Scalability):
- Hỗ trợ kiến trúc Microservices và API-first, giúp dễ dàng mở
rộng và bảo trì hệ thống
- Node.js có khả năng mở rộng cả theo chiều dọc (vertical
scaling) và theo chiều ngang (horizontal scaling)
Cộng đồng và hệ sinh thái phong phú:
- NPM (Node Package Manager), kho thư viện mã nguồn mở lớnnhất thế giới, cung cấp hàng triệu gói thư viện (packages) giúpcác nhà phát triển tiết kiệm thời gian và công sức
- Cộng đồng Node.js lớn mạnh với nhiều tài liệu và hỗ trợ từ cácnhà phát triển trên toàn cầu
Ứng dụng của Node.js
-Ứng dụng web thời gian thực: Chat trực tuyến, truyền phát
video, và hệ thống thông báo tức thời
-API server: Xây dựng các dịch vụ web dựa trên API RESTful
Trang 7Đặc điểm của giao thức MQTT
Nhẹ và hiệu quả:
- MQTT sử dụng rất ít tài nguyên và băng thông, thích hợp cho
các thiết bị có phần cứng hạn chế như cảm biến, thiết bị IoT, và
hệ thống nhúng
- Kích thước gói tin nhỏ giúp giảm thiểu độ trễ khi truyền tải dữliệu
Kiến trúc hướng chủ đề (Topic-based):
- MQTT sử dụng mô hình publish/subscribe (xuất bản/đăng ký)thay vì mô hình truyền thống client-server
- Dữ liệu được gửi đến các topic (chủ đề) và các thiết bị có thể
subscribe (đăng ký) các topic để nhận dữ liệu liên quan
Tính linh hoạt và khả năng mở rộng cao:
- MQTT phù hợp cho các hệ thống phân tán với số lượng lớn
thiết bị kết nối, ví dụ như nhà thông minh, hệ thống giám sát từxa,
hoặc các ứng dụng IoT quy mô lớn
- Hỗ trợ các cấu hình bảo mật như SSL/TLS, giúp đảm bảo an
toàn cho dữ liệu truyền tải
Trang 8Hình 1: Mạch đẵ được thiết kếMạch bao gồm:
+4 LED trong đó có 3 LED dùng điều khiển và 1 LED cảnh báo:
- LED1 : DPIN 18
- LED2 : DPIN19
- LED3 : DPIN21
- LED4 : DPIN22+ 2 cảm biến DHT11 và cảm biến ánh sáng CDS
- DHT11 : DPIN4
- Cảm biến ánh sáng CDSCách thức hoạt động của mô hình :
Trang 9Hình 2: Biểu đồ hoạt động của web
2 DATAbase :
+Bao gồm có 4 bảng :
Hình 3: Bảng Database
- Bảng Bai_5 : Lưu lại giá trị của bài thực hành 5
- Bảng Devices : Lưu lại các thiết bị
- Bảng esp32_data : Lưu lại giá trị cảm biến
- Bảng switch_states: Lưu lại khi bật tắt thiết bị
3 Giao diện web :
DashBoard: Bao gồm 3 tag để hiển thị các thông tin , bảng điều khiểnthiết bị, biểu đồ:
Trang 10Hình 4: Giao diện DashboardDevice History : Bao gồm bảng hiển thị bật tắt thiết bị , tìm kiếmtheo ngày tháng
Hình 5: Giao diện Device HistoryData Sensor :Bao gồm bảng hiển thị thông tin từ các cảm biến , cóthể tìm kiếm theo các giá trị được lựa chọn như nhiệt độ , độ ẩm , ánh sáng, ngày tháng
Trang 11Hình 6: Giao diện DataSensorUser Profile: Bao gồm các thông tin cá nhân của sinh viên:
Hình 7: Giao diện User ProfileBài 5 : Bao gồm các tag để hiển thị tốc độ gió , biểu đồ tốc dộ
gió và cảnh báo nếu tốc độ gió vượt quá 60m/s
Trang 12Hình 8: Giao diện bài báo cáo
4 Code BE
4.1 file back_end.js
- Bao gồm các kết nối liên quan đến phần gửi data về database và lấy trạng
thái bật tắt thiết bị bật tắt
Trang 13Hình 10: file back_end.js4.2 file server.js
- Bao gồm các API giúp lấy data từ database và gửi thông tin bật tắt từ FE về
esp32 để thực hiện bật bắt thiết bị
Trang 144.2 file Server.js
- import các thư viện và kết nối với cơ sở dữ liệu mysql
Trang 15- Hàm kết nối với mqtt qua cổng mặc định
Trang 16- Api giúp tìm kiếm data và lấy data từ cơ sở dữ liệu
Hình 13: Api search sensor data
Trang 17Hình 13: Api search sensor data
Trang 18Hình 14: Api search switch state
Trang 19Hình 15: API search switch state
Trang 20Hình 16: API search switch state
Trang 21Hình 16: API search switch state
Trang 22Hình 17: API switch state
5 API doc và test các api với POSTMAN
5.1 Thử nghiệm với api/switch-state
Thử post 2 request yêu cầu bật tắt điều hoà :
Trang 23Hình 18 : Test api với bật tắt điều hoà
5.2 Thử nghiệm với /api/search-switch-state
Sử dụng để hiển thị mà không tìm kiếm theo thông tin nào
Trang 24Hình 19: Mặc định hiển thịTìm kiếm theo thời gian từ ngày 01/01/2024 đến ngày 31/10/2024
Hình 20: Tìm kiếm theo ngày tháng
5.3 Thử nghiệm với /api/search-sensor-data
Không tìm kiếm theo giá trị nào hiển thị (mặc định)
Trang 25Hình 21: Hiển thị mặc định
Tìm kiếm theo ngày tháng năm
Hình 22: Tìm kiếm theo ngày tháng
Tìm kiếm theo nhiệt độ
Trang 26Hình 23: Tìm kiếm theo nhiệt độ