GIỚI THIỆU
MÔ TẢ BÀI TOÁN
Việt Nam, với dân số hơn 95 triệu người, đang đối mặt với thách thức từ sự gia tăng đô thị hóa và nguy cơ ô nhiễm môi trường Tình trạng này dẫn đến sự gia tăng không kiểm soát của rác thải đô thị, gây lo ngại cho các nhà chức trách Để ứng phó hiệu quả, việc theo dõi các biến đổi môi trường tại các nhà máy xử lý rác thải là cần thiết Hiện tại, dữ liệu về ô nhiễm như Carbon monoxide (CO), Sulfur dioxide (SO2), Nitrogen dioxide (NO2) và nhiệt độ chủ yếu được ghi chép thủ công, gây khó khăn trong việc phân tích và đưa ra giải pháp nâng cao năng suất.
Hình 1.1 Nhà máy xử lý rác thải
Đề tài "Xây dựng hệ thống quản lý và giám sát chất lượng không khí tại các nhà máy xử lý rác" nhằm giải quyết vấn đề quản lý chất lượng không khí bằng cách cung cấp một hệ thống giám sát thời gian thực trên nền tảng Website Hệ thống này giúp người quản lý dễ dàng và nhanh chóng dự đoán biến đổi chất lượng không khí, từ đó tiết kiệm thời gian và công sức trong việc đo đạt, kiểm tra, lấy mẫu và phân tích.
MỤC TIÊU CỦA ĐỀ TÀI
1.2.1 Mục tiêu tổng quát Ứng dụng công nghệ IoT vào giám sát môi trường công nghệ cao, giúp đảm bảo sức khỏe con người trong thời đại công nghiệp, góp phần xây dựng một quốc gia xanh, sạch và nói không với ô nhiễm môi trường
Nghiên cứu và lắp đặt mạch điện tử cho trạm xử lý rác thải nhằm thu thập liên tục các thông số môi trường như nhiệt độ, độ ẩm và chất lượng không khí Hệ thống này sẽ truyền dữ liệu thu thập được về một trung tâm xử lý để phân tích và quản lý hiệu quả hơn.
Xây dựng hệ thống website trung tâm tiếp nhận dữ liệu từ các trạm xử lý rác thải, nhằm biểu diễn, phân tích, giám sát và báo cáo lượng dữ liệu lớn theo thời gian thực.
ĐỐI TƯỢNG & PHẠM VI NGIÊN CỨU
• Các thiết bị cảm biến
• Ngôn ngữ lập trình Arduino IDE cho Arduino
• Cấu hình và lập trình WebServer , PHP, MySQL
• Giao tiếp giữa ESP32 và các thiết bị cảm biến
• Đọc và hiển thị giá trị đo của cảm biến bằng ESP32
• Lập trình cho ESP32 kết nối và đưa dữ liệu vào database của webserver
• Lập trình webserver để lưu trữ và hiển thị dữ liệu theo thời gian thực.
NỘI DUNG NGHIÊN CỨU
• Xây dựng lắp đặt và lập trình mạch điện tử
• Nghiên cứu cấu trúc và ngôn ngữ lập trình cho ESP32
• Lập trình C++ cho ESP32 sử dụng thư viện đọc các giá trị cảm biến
• Xây dựng hệ thống giám sát các thiết bị cảm biến theo thời gian thực
• Nghiên cứu xây dựng WebServer nhận dữ liệu từ cảm biến thông qua ESP32 để lưu vào database và hiển thị theo thời gian thực.
MÔI TRƯỜNG VẬN HÀNH
• Hệ điều hành cho máy tính từ Windows 10
• Môi trường lập trình cho Arduino: Arduino IDE
• WebBrowser: Chrome, Firefox, IE, Edge,…
HƯỚNG GIẢI QUYẾT VÀ KẾ HOẠCH THỰC HIỆN
Tập trung phân tích hệ thống, chia hệ thống thành 3 tầng để dễ thiết kế, xây dựng:
• Tầng Server: Kết nối, xử lý và lưu trữ dữ liệu từ tầng Client
• Tầng Client: Gửi dữ liệu từ tầng Application đến tầng Server; Hiển thị dữ liệu cho người dùng
• Tầng Application: Thu thập và xử lí dữ liệu từ cảm biến, truyền dữ liệu đến tầng Client
• Nghiên cứu các dịch vụ, nền tảng và giao thức sử dụng trong IoT cần để xây dựng hệ thống
• Phân tích thiết kế hệ thống
• Ứng dụng hệ thống vào thực tế
• Nghiệm thu và đưa ra phương hướng phát triển.
CƠ SỞ LÝ THUYẾT
GIỚI THIỆU VỀ CÔNG NGHỆ INTERNET OF THINGS
2.1.1 Internet of Things (IoT) là gì?
Internet of Things (IoT), hay còn gọi là internet vạn vật, đề cập đến hàng tỷ thiết bị vật lý trên toàn cầu kết nối với internet để thu thập và chia sẻ dữ liệu Nhờ vào sự phát triển của bộ xử lý giá rẻ và mạng không dây, mọi thứ từ viên thuốc đến máy bay đều có thể trở thành một phần của IoT Điều này giúp các thiết bị trở nên "thông minh kỹ thuật số", cho phép chúng giao tiếp mà không cần sự can thiệp của con người, từ đó hợp nhất thế giới kỹ thuật số và vật lý.
Hình 2.1 Internet of things
Internet of Things (IoT) là khái niệm chỉ các đối tượng có thể nhận diện và thể hiện sự tồn tại của chúng trong một hệ thống kết nối toàn diện Nó thường được gọi là mạng lưới vạn vật kết nối Internet, hay đơn giản là "Things".
Bóng đèn có thể điều khiển qua ứng dụng điện thoại thông minh là một ví dụ điển hình của thiết bị IoT, bên cạnh các thiết bị như cảm biến chuyển động và bộ điều chỉnh nhiệt thông minh trong văn phòng IoT có thể hiện diện trong những đồ vật đơn giản như đồ chơi trẻ em, hoặc phức tạp như xe tải không người lái và động cơ phản jet với hàng ngàn cảm biến thu thập dữ liệu để tối ưu hóa hiệu suất Ở quy mô lớn, các dự án thành phố thông minh đang tích hợp cảm biến để giúp chúng ta hiểu và quản lý môi trường sống hiệu quả hơn.
Cụm từ "Internet of Things" (IoT) được Kevin Ashton giới thiệu vào năm 1999 và nhanh chóng được sử dụng rộng rãi trong các ấn phẩm của nhiều hãng và nhà phân tích Ban đầu, IoT không mang tính tự động và thông minh, nhưng sau này đã kết hợp với khái niệm điều khiển tự động IoT có khả năng quan sát và phản hồi với môi trường xung quanh, tự điều khiển mà không cần kết nối mạng Việc tích hợp trí thông minh vào IoT giúp thiết bị thu thập và phân tích dữ liệu từ người dùng Trong tương lai, con người sẽ có thể giao tiếp với máy móc qua mạng internet không dây mà không cần trung gian.
Theo phân tích của Gartner, năm 2017 có khoảng 8.4 tỷ thiết bị IoT được sử dụng, tăng 31% so với năm 2016, và dự kiến con số này sẽ đạt 20,4 tỷ vào năm 2020 Tổng chi tiêu cho các thiết bị IoT sẽ gần 2 ngàn tỷ đô la trong năm 2017, với hai phần ba số thiết bị tập trung tại Trung Quốc, Bắc Mỹ và Tây Âu.
Trong số 8.4 tỷ thiết bị IoT, hơn một nửa sẽ là các sản phẩm tiêu dùng như TV và loa thông minh Theo Gartner, các thiết bị IoT doanh nghiệp phổ biến nhất sẽ bao gồm đồng hồ điện thông minh và camera an ninh thương mại.
Hình 2.2 Thống kê các danh mục đã cài đặt các thiết bị IOT từ 2016 – 2020 theo Gartner
IoT được xem là chìa khóa cho thành công và cơ hội lớn trong tương lai Để không bị tụt lại phía sau, các chính phủ và doanh nghiệp cần đầu tư mạnh mẽ và đổi mới trong việc phát triển các sản phẩm ứng dụng công nghệ Internet of Things.
2.1.2 Hệ thống Internet of Things (IoT System)
Hệ thống IoT mang lại khả năng tự động hóa và phân tích sâu sắc, giúp cải thiện tầm nhìn và độ chính xác Nó nâng cao hiệu suất của các công nghệ cảm biến, kết nối và robot, từ đó đạt được hiệu quả tối ưu trong các ứng dụng.
Các hệ thống IoT đang phát triển mạnh mẽ nhờ vào những tiến bộ trong phần mềm và giảm chi phí xây dựng phần cứng Việc áp dụng công nghệ hiện đại không chỉ cải thiện quy trình sản xuất sản phẩm và dịch vụ mà còn tác động đến các lĩnh vực xã hội, kinh tế và chính trị.
2.1.1.1 Đặc điểm chung của IoT
Mỗi thiết bị IoT có những đặc điểm riêng biệt tùy thuộc vào thiết kế và nhu cầu người dùng, nhưng nhìn chung, các vấn đề quan trọng của hệ thống IoT thường bao gồm những yếu tố sau đây.
Hình 2.3 Những đặc điểm chung của IoT
Kết nối là một đặc điểm quan trọng của IoT, với sự phát triển mạnh mẽ của các mạng thiết bị hiện nay Các mạng này ngày càng trở nên nhỏ gọn, tiết kiệm chi phí và được thiết kế phù hợp với nhu cầu thực tế của người dùng.
Các "Things" trong IoT là bất kỳ thiết bị nào có khả năng kết nối và giao tiếp qua internet, chủ yếu là các cảm biến và thiết bị gắn cảm biến không dây Nếu không có những "Things" này, IoT sẽ mất đi vai trò quan trọng của mình Các cảm biến và thiết bị này không chỉ giúp IoT chuyển từ mạng lưới thiết bị thụ động sang mạng lưới thiết bị chủ động, mà còn cho phép tương tác với thế giới thực.
Data - Dữ liệu là chất kết dính của Internet of Things, là bước đầu tiên hướng tới hành động và trí tuệ
Giao tiếp giữa các thiết bị ngày nay chủ yếu thông qua kết nối không dây với internet, cho phép chúng trao đổi và phân tích dữ liệu hiệu quả Việc này có thể diễn ra trong khoảng cách gần hoặc xa, mở ra khả năng giao tiếp rộng rãi và linh hoạt.
IoT mang lại sự thông minh cho cuộc sống bằng cách sử dụng dữ liệu, mạng và thuật toán một cách hiệu quả Ví dụ, bạn có thể nâng cấp tủ lạnh của mình với cảm biến tự động, giúp phát hiện khi sữa và trứng sắp hết và tự động đặt hàng từ cửa hàng tạp hóa ưa thích.
Hành động trong bối cảnh tự động hóa là việc thực thi các tác vụ một cách tự động dựa trên trí thông minh của thiết bị IoT Những thiết bị này có khả năng tự cân nhắc và tính toán để thực hiện các nhiệm vụ mà không cần sự can thiệp của con người.
DỊCH VỤ, NỀN TẢNG SỬ DỤNG TRONG ĐỀ TÀI
ESP32-WROOM-32 là một mô đun MCU mạnh mẽ và đa dụng, phổ biến trong thiết kế mạch PCB cho Wifi, Bluetooth và BLE Nó được ứng dụng rộng rãi trong các giải pháp IoT, từ mạng cảm biến tiết kiệm năng lượng đến các tác vụ phức tạp như mã hóa âm thanh và phát nhạc trực tuyến, cũng như giải mã MP3.
Hình 2.4 Hình ảnh thực tế ESP32-Dev Kit
Lõi của module ESP32-D0WDQ6 là một chip nhúng với khả năng mở rộng và tùy biến cao, bao gồm 2 lõi CPU độc lập có tần số clock điều chỉnh từ 80MHz đến 240MHz Người lập trình có thể tắt CPU để sử dụng bộ đồng xử lý công suất thấp nhằm theo dõi sự thay đổi hoặc vượt ngưỡng của các ngoại vi ESP32 còn tích hợp nhiều bộ ngoại vi đa dạng như cảm biến điện dung, cảm biến Hall, SD card, Ethernet, SPI tốc độ cao, UART, I2S và I2C.
Việc tích hợp Bluetooth, BLE và Wi-Fi trong module ESP32 mang lại khả năng ứng dụng đa dạng, cho phép kết nối rộng rãi qua Wi-Fi router và dễ dàng kết nối với smartphone hoặc thiết bị beacon tiết kiệm điện Chip ESP32 tiêu thụ dòng dưới 5A ở chế độ ngủ, lý tưởng cho các thiết kế mạch dùng pin và thiết bị đeo Với tốc độ truyền thông lên đến 150 Mbps và công suất tín hiệu khoảng 20 dBm, module này đảm bảo phạm vi tín hiệu xa Nhờ vào thông số kỹ thuật hàng đầu, ESP32 cung cấp hiệu suất và độ tin cậy cao, phù hợp cho các ứng dụng điện tử, tự động hóa yêu cầu tiết kiệm năng lượng và khả năng kết nối đa dạng.
Hệ điều hành FreeRTOS với LwIP và TLS 1.2 có thể chạy trên ESP32, cho phép cập nhật firmware qua OTA với mã hóa Tính năng này giúp các nhà phát triển nâng cấp phần mềm sản phẩm một cách tiết kiệm chi phí và nhân lực, ngay cả khi thiết bị đang hoạt động.
Vi điều khiển Dual-Core 32-bit (ESP-WROOM-32) Điện áp logic 3.3V
Wi-Fi 802.11b/g/n Wi-Fi transceiver
Nguồn điện (khuyên dùng) 5V (cổng USB hoặc chân VIN)
Bảng 2.1 Thông số kỹ thuật ESP32 Dev Kit
Hình 2.5 Sơ đồ chân của ESP32 DEVKIT V1 2.2.1.3 Vi điều khiển
Bảng phát triển ESP32 sử dụng vi điều khiển ESP32-WROOM-32, một module vượt trội so với các dòng ESP8266 nhờ vào việc hỗ trợ thêm Bluetooth và Bluetooth Low Energy (BLE) bên cạnh tính năng WiFi Sản phẩm này được trang bị chip ESP32-D0WDQ6 với hai CPU có khả năng hoạt động độc lập, đạt tần số xung clock lên đến 240 MHz.
Module hỗ trợ giao tiếp SPI, UART, I2C và I2S, cho phép kết nối với nhiều ngoại vi như cảm biến, bộ khuếch đại và thẻ nhớ SD Với chế độ ngủ tiêu thụ điện năng chỉ 5 µA, module này rất phù hợp cho các ứng dụng sử dụng pin, đặc biệt là thiết bị điện tử đeo tay Hơn nữa, module còn cho phép cập nhật firmware từ xa (OTA), giúp người dùng luôn có được bản cập nhật mới nhất cho sản phẩm.
Hình 2.6 Vi điều khiển ESP32 WROOM 32 2.2.1.4 Năng lượng
ESP32 có thể được cấp nguồn 5V qua cổng USB hoặc nguồn ngoài, với giới hạn điện áp đầu vào tối đa là 15V Khi cấp nguồn ở mức tối đa, ESP32 sẽ tỏa nhiệt cao do không có bộ tản nhiệt tích hợp Điện áp khuyên dùng để cấp nguồn là 7-12V DC, và sử dụng adapter 5V là lựa chọn hợp lý nếu không có nguồn từ cổng USB Việc cấp nguồn vượt quá giới hạn này có thể làm hỏng ESP32 Dev kit.
Chip ESP32 nổi bật với khả năng kết nối WiFi, cho phép kết nối đến các Router và Access Point tiêu chuẩn 2.4GHz ở chế độ STA Ngoài ra, ESP32 hỗ trợ chế độ AP, cho phép khởi động một hoặc nhiều Access Point để các client kết nối, hoặc chạy đồng thời cả hai chế độ STA và AP.
Chế độ STA thường được sử dụng trong hầu hết các ứng dụng, cho phép thiết bị kết nối với mạng WiFi cục bộ có internet để gửi dữ liệu đến Server Trong một số trường hợp, chế độ AP được áp dụng để trao đổi dữ liệu giữa ESP32 và máy tính.
(hoặc thiết bị có hỗ trợ trình duyệt) Ví dụ như điều khiển đóng tắt đèn thông qua Web Server chạy trên ESP32
WiFi Access Point là thiết bị trung tâm chịu trách nhiệm xử lý và phân phối dữ liệu, bao gồm việc xử lý các gói tin IP để xác định địa chỉ mạng LAN và định tuyến các gói tin từ Internet đến các máy trạm.
Devices that connect to an Access Point are referred to as Stations This includes laptops and computers equipped with WiFi cards that connect to the Access Point, all of which are categorized as Stations.
Khi các Station muốn kết nối với Access Point, chúng cần xác định thông qua BSSID, thường được gọi là SSID hay mạng WiFi Bạn có thể dễ dàng xem danh sách SSID xung quanh bằng cách quét wifi trên máy tính để kết nối Internet.
2.2.2 Sơ lược các thiết bị cảm biến
2.2.2.1 Cảm biến nhiệt độ, độ ẩm DHT-11
Cảm biến DHT11 là một trong những cảm biến độ ẩm và nhiệt độ phổ biến nhất hiện nay nhờ vào chi phí thấp và khả năng thu thập dữ liệu dễ dàng qua giao tiếp 1 wire Tích hợp bộ tiền xử lý tín hiệu, DHT11 cung cấp dữ liệu chính xác mà không cần tính toán phức tạp.
Hình 2.7 Cảm biến DHT-11
Thông số Chi tiết Điện áp đầu vào 3 ± 5 VDC
Dòng sử dụng 2.5mA max (khi truyền dữ liệu)
Phạm vi đo Độ ẩm 20 - 70% RH với sai số 5% - nhiệt độ 0 - 50°C sai số ±2°C
Tần số lấy mẫu tối đa 1Hz (1 giây 1 lần)
Kích thước 15mm x 12mm x 5.5mm
Số chân 4 chân, khoảng cách chân 0.1
Bảng 2.2 Thông số kỹ thuật của cảm biến nhiệt độ, độ ẩm DHT-11
ESP32 Vin GND Analog Pin
Bảng 2.3 Giao tiếp DHT-11 với ESP32
2.2.2.2 Cảm biến không khí MQ-2
Cảm biến khí MQ-2 được thiết kế để phát hiện các khí có khả năng gây cháy, sử dụng chất bán dẫn SnO2 Chất này có độ nhạy thấp trong không khí sạch, nhưng khi có mặt các chất gây cháy, độ dẫn điện của nó sẽ thay đổi đáng kể Để chuyển đổi sự thay đổi này thành tín hiệu điện, người ta đã tích hợp vào mạch đơn giản Khi môi trường không có chất gây cháy, điện áp đầu ra của cảm biến sẽ thấp, và điện áp này sẽ tăng lên tương ứng với nồng độ khí gây cháy xung quanh.
Hình 2.8 Cảm biến MQ-2
Cảm biến MQ-2 hoạt động hiệu quả trong môi trường khí hóa lỏng như LPG, H2 và các khí dễ cháy khác Với mạch thiết kế đơn giản và chi phí thấp, thiết bị này được sử dụng phổ biến trong cả ngành công nghiệp và trong sinh hoạt hàng ngày.
Thông số Chi tiết Điện áp đầu 5V ± 0.1 AC/DC
Phạm vi phát hiện 300 - 10000 ppm
Thời gian đáp ứng vào ≤10s
Dòng tiêu thụ khi nóng ≤ 180mA Điện áp khi nóng 5.0V ± 0.2V
Năng lượng khi nóng ≤ 900mW Điện áp đo ≤ 24V
Thời gian đốt nóng cần thiết Ít nhất 24 giờ
Bảng 2.4 Thông số kỹ thuật MQ-2
ESP32 Vin GND Analog Pin
Bảng 2.5 Giao tiếp MQ-2 với ESP32
2.2.2.3 Cảm biến chất lượng không khí MQ-135
THIẾT KẾ VÀ CÀI ĐẶT HỆ THỐNG
GIỚI THIỆU TỔNG QUAN
Hệ thống IoT được áp dụng để quản lý và giám sát chất lượng không khí tại các nhà máy xử lý rác tự động, bao gồm sự kết hợp giữa phần cứng và phần mềm.
Hình 3.1 Sơ đồ khối của toàn hệ thống
Phần cứng là một hệ thống được thiết kế tinh vi, bao gồm các kết nối vật lý giữa các module mạch điện chuyên dụng Hệ thống này hoạt động như một thiết bị lắp đặt trong các nhà máy xử lý rác thải, có nhiệm vụ thu thập dữ liệu về khí thải trong không khí, phân tích và cung cấp thông tin đó cho Server (Phần mềm).
Phần mềm theo dõi cảm biến từ xa là một hệ thống web cho phép thu thập và lưu trữ dữ liệu từ các thiết bị lắp đặt tại nhiều nhà máy khác nhau Nó cung cấp thông tin theo thời gian thực cho người quản lý, đồng thời cho phép xem thống kê chi tiết theo mốc thời gian mong muốn Người dùng có thể xuất dữ liệu ra định dạng Excel, quản lý thông tin trạm xử lý và người quản lý, cũng như phân quyền truy cập trong hệ thống.
Hệ thống này đại diện cho IoT (Internet of Things), cho phép giám sát mọi thứ qua internet mà không cần kiểm tra giá trị cảm biến bằng phương pháp thủ công.
THIẾT KẾ HỆ THỐNG – PHẦN CỨNG
3.2.1 Thi công và lắp đặt
Hệ thống phần cứng và tần vật lý khá đơn giản, với các kết nối và đi dây giữa các cảm biến và ESP32 được thể hiện qua sơ đồ nguyên lý dưới đây.
Hình 3.2 Sơ đồ nguyên lý của phần cứng hệ thống
ESP32 và các cảm biến hoạt động với điện áp đầu vào 5V, vì vậy để đảm bảo an toàn và cung cấp đầy đủ năng lượng, hệ thống sử dụng adapter 5V 3A cho toàn bộ mạch.
Nguồn điện đầu vào: 100-240V Nguồn điện đầu ra 5V-3A Độ dài dây sạc 1.5 mét Trọng lượng 100g
Bảng 3.1 Thông số kỹ thuật của nguồn adapter 5V-3A 0530
Adapter 0530 VCC GND Không Không Không
DHT-11 VCC GND Không Không Out
MQ-2 VCC GND Aout Không Không
MQ-135 VCC GND Không Aout Không
Bảng 3.2 Mô tả giao tiếp phần cứng
Một số hình ảnh của mạch
Hình 3.4 Mạch - phần cứng (1)
Hình 3.5 Mạch - phần cứng (2)
Arduino IDE, viết tắt của Arduino Integrated Development Environment, là phần mềm giúp nạp mã code vào board mạch Arduino và thực thi ứng dụng Phần mềm này bao gồm các thành phần chính như Editor để viết code, Debugger để tìm và sửa lỗi trong quá trình xây dựng chương trình, và Compiler hoặc interpreter để biên dịch mã code thành ngôn ngữ mà vi điều khiển có thể hiểu và thực hiện.
Hiện nay, ngoài các board thuộc họ Arduino, thì Arduino IDE còn hỗ trợ lập trình với nhiều dòng vi điều khiển khác như ESP, ARM, PIC, …
Cấu trúc một chương trình Arduino bao gồm 2 phần chính :
{ Thực hiện việc thiết lập ban đầu cho các ứng dụng } void loop()
Hàm setup() trong Arduino khởi tạo giá trị biến, thiết lập chế độ chân và bắt đầu sử dụng các thư viện, chỉ thực hiện một lần khi cấp nguồn hoặc reset Ngược lại, hàm loop() là chương trình chính, thực hiện các chức năng đã lập trình và lặp lại liên tục.
Bước 1: Cài đặt bộ công cụ, trình biên dịch, SDK hỗ trợ chip ESP32 trong Arudino
Với bộ công cụ này, người dùng có thể lập trình, biên dịch và sử dụng các thư viện cho ESP32 ngay trên Arduino IDE một cách dễ dàng Để bắt đầu, hãy mở Arduino IDE và chọn từ thanh Menu.
File → Preferecens, trong tab settings chọn các tùy chọn như hình dưới:
Sketchbook location là đường dẫn mà bạn muốn lưu Sketch (file chương trình), trên các hệ điều hành Unix liked đường dẫn mặc định là:
“/home/name_your_computer/Arduino” Đây cũng sẽ là vị trí lưu những thư viện mà chúng ta sẽ thêm vào sau này
Mục Additional Board Manager URLs field nhập đường dẫn
Hình 3.6 Thêm file thông tin board ESP32
“ https://dl.espressif.com/dl/package_esp32_index.json ”
Mở Boards Manager ở mục Tools trên thanh menu-bar → tìm board cần sử dụng với keyword ESP32 → chọn board cần cài đặt như hình và nhấn vào install
Hình 3.7 Cài đặt board ESP32
Hình 3.8 Lưu đồ thuật toán phần cứng
Sau khi cấp nguồn cho mạch, hệ thống nhúng tự động thực thi các lệnh khai báo thư viện cảm biến và chân GPIO Thiết bị sau đó chạy hàm setup() để khởi tạo các thư viện, cài đặt và cấu hình chân GPIO cho cảm biến, đồng thời đặt chế độ Wi-Fi Station để kết nối vào mạng Wi-Fi đã lưu Chương trình sẽ chờ cho đến khi kết nối Wi-Fi thành công; nếu kết nối thành công, chương trình sẽ khởi tạo các đối tượng cảm biến từ các thư viện đã khai báo và thực thi hàm loop.
Hàm loop thực hiện một vòng lặp vô tận để kiểm tra trạng thái kết nối Wi-Fi Nếu kết nối thành công, chương trình sẽ đọc và tính toán các giá trị, sau đó gửi chúng lên Web Server thông qua giao thức HTTP GET qua mạng Wi-Fi Quá trình này lặp lại sau mỗi 2 giây.
Trong phần tính toán giá trị đề tài, chúng tôi sẽ áp dụng hai bộ thư viện đã được phát triển và kiểm thử kỹ lưỡng, hiện đang được sử dụng rộng rãi Cụ thể, thư viện DHT do Adafruit phát triển dành cho cảm biến DHT-11 và thư viện OpenSensor của tác giả Trần Trí Tân từ ĐH Cần Thơ, được sử dụng cho hai cảm biến MQ.
Liên kết của hai bộ thư viện :
• DHT sensor library : https://github.com/adafruit/DHT-sensor-library
• OpenSensor : https://github.com/tantt2810/Opensensor
Gửi giá trị lên Web server thông qua giao thức HTTP là một phần quan trọng trong việc phân tích và thiết kế hệ thống cơ sở dữ liệu cho Web server, như sẽ được trình bày ở phần 3.3.2 Dựa trên đó, chúng ta có thể xây dựng một HTTP Request với phương thức GET, cấu trúc URL sẽ được định hình rõ ràng.
Sử dụng chuỗi URL đã xây dựng, chúng ta sẽ gửi yêu cầu qua kết nối không dây của ESP32 để truyền dữ liệu đến server (hostname) Nhiệm vụ của server là lưu trữ các "giá trị thu thập được" vào bảng cảm biến trong cơ sở dữ liệu, theo mã cảm biến tương ứng trên URL Số lượng tham số và giá trị phụ thuộc vào phương thức, tên miền hoặc IP của web server và action của controller.
Port mã cảm biến giá trị thu thập được
GET /hostname:port/giatri/thuthap&10&2p thuộc theo số cảm biến được lắp đặt tại một trạm (nhà máy rác) nào đó và cách nhau giữa ký tự ‘&’
Vd: trạm số 01 có lắp 3 cảm biến lần lượt với mã như sau :
Mã cảm biến Tên cảm biến
Bảng 3.3 Bảng ví dụ minh họa cảm biến tại một trạm
Trong mã nguồn cài đặt cho vi điều khiển trung tâm của hệ thống phần cứng, sẽ có đoạn mã gửi một chuỗi yêu cầu.
GET /iotimprove/giatri/thuthap&1={giá trị nhiệt độ}&2={giá trị độ ẩm}&5={nồng độ CO2}
THIẾT KẾ HỆ THỐNG – PHẦN MỀM
Phần mềm là một ứng dụng Web:
• Back-end: Được lập trình bằng PHP và kết nối, lưu dữ liệu cảm biến vào CSDL trong MySQL
• Fornt-end: Được lập trình bằng HTML View, CSS, JS, AngularJs
• Có chức năng cơ bản như sau:
- Hiển thị dữ liệu được gửi từ thiết bị IoT theo thời gian thực
- Hiển thị, thống kê, báo cáo dữ liệu theo dạng biểu đồ đường
- Giám sát tổng quan theo hướng theo dõi, thống kê
- Xem thông tin các trạm, nhà máy, thông tin địa chỉ sử dụng bản đồ sử dụng công nghệ leaflet
- Xem thông tin, lắp , sửa và tháo cảm biến
Cơ sở dữ liệu (Database) là tập hợp thông tin được tổ chức theo cấu trúc nhất định, giúp dễ dàng đọc, chỉnh sửa, thêm hoặc xóa dữ liệu Trong phần mềm, cơ sở dữ liệu đóng vai trò quan trọng và không thể thiếu, được ví như "trái tim" của hệ thống.
Dựa trên các chức năng phân tích đã được nghiên cứu, tôi đã xây dựng một hệ thống cơ sở dữ liệu cho phần mềm của mình.
Hình 3.9.Mô hình quan niệm cơ sở dữ liệu của hệ thống phần mềm
3.3.2 Phân tích cơ sở dữ liệu
Bảng taikhoan dùng để lưu trữ thông tin người sử dụng và quản lý ứng dụng
Một số trường đặt biệt:
- tendangnhap tên đăng nhập của người dùng hệ thống, tendangnhap là khóa chính và bắt buộc không cho phép trùng và null
- matkhau_hash là mật khẩu của người dùng đã được thuật toán mã hóa một chiều mã hóa, trường này cũng không cho phép null
- ma_vaitro là một khóa phụ trỏ đến trường ma_vaitro của bảng vaitro, mục đích là để phân quyền hệ thống
Bảng 3.5 Dữ liệu mẫu cho bảng taikhoan
Bảng trạm quan trắc dùng để lưu trữ thông tin các nhà máy rác thải
Một số trường đặt biệt :
- ma_tram là mã dùng để phân biệt giữa các trạm với nhau, ma_tram là khóa chính và bắt buộc, không cho phép null
- taikhoan_quanly là khóa phụ trỏ đến trường tendangnhap của bảng taikhoan nhằm mục đích định danh người được phân công quản lý trạm này là ai
Bảng 3.7 Dữ liệu mẫu bảng tramquantrac
Bảng đơn vị đo dùng để lưu trữ thông tin đơn vị của các cảm biến
Một số trương đặt biệt :
- ma_donvi là mã dùng để phân biệt giữa các đơn vị với nhau, ma_donvi là khóa chính và bắt buộc, không cho phép null
Bảng 3.9 Dữ liệu mẫu cho bảng donvido
Bảng cảm biến là thiết bị lưu trữ thông tin về độ ẩm, nhiệt độ và các chỉ số khác, đóng vai trò quan trọng trong việc quản lý dữ liệu từ các cảm biến được lắp đặt tại các trạm.
Một số trường đặt biệt:
- ma_cambien là mã dùng để phân biệt các cảm biến với nhau, ma_cambien là khóa chính, bắt buộc và không cho phép null
- ma_donvi là khóa phụ trỏ đến trường ma_donvi trong bảng donvido, mục đích là để xác định xem cảm biến, nòng độ này có đơn vị gì
Ma_tram là khóa phụ liên kết với trường ma_tram trong bảng tramquantrac, nhằm xác định vị trí lắp đặt của cảm biến tại các trạm (nhà máy) cụ thể.
Bảng 3.11 Dữ liệu mẫu cho bảng cảm biến
Bảng giá trị là một công cụ đặc biệt được thiết kế để lưu trữ dữ liệu từ các cảm biến tại các trạm, cho phép theo dõi giá trị theo thời gian thực.
Một số trường đặt biệt :
Ma_cambien là một khóa chính liên kết với trường ma_cambien trong bảng cambien, giúp xác định giá trị cảm biến được gửi lên theo thời gian thực tại thời điểm cụ thể.
Bảng 3.13 Dữ liệu mẫu cho bảng cambien
Bảng vai trò dùng để lưu trữ thông tin liên quan tới việc phân quyền hệ thống, bảng này là từ điển các vai trò có trong hệ thống
Một số trường đặt biệt :
- ma_vaitro là một khóa chính của bảng vaitro, trường này dùng để phân biệt các vai trò với nhau
Bảng 3.15 Dữ liệu mẫu cho bảng vaitro
Bảng chức năng là một bảng lưu trữ thông tin quan trọng về phân quyền hệ thống, đồng thời cũng là từ điển chứa đựng các chức năng có trong hệ thống.
Một số trường đặt biệt :
- ma_chucnang là khóa chính của bảng, trường này dùng để phân biết các chức năng với nhau
Bảng 3.17 Dữ liệu mẫu cho bảng chucnang
• Mối quan hệ vai trò và chức năng
Bảng 3.18 Bảng quan hệ vai trò với chức năng
Mối quan hệ 1,n – 1,n giữa hai bảng vai trò và chức năng cho thấy rằng mỗi vai trò có thể sử dụng một hoặc nhiều chức năng, trong khi mỗi chức năng cũng có thể được áp dụng cho một hoặc nhiều vai trò khác nhau.
Một số trường đặt biệt :
- ma_phancong là khóa chính của bảng, dùng để phân biệt các phân công khác nhau
- ma_vaitro là khóa phụ trỏ đến trường ma_vaitro của bảng vaitro Mục đích là để xác định vai trò nào được phân công
- ma_chucnang là khóa phụ trỏ đến trường ma_chucnang của bảng chucnang
Mục đích là để xác định chức năng nào được phân công cho vai trò nào
Bảng 3.19 Dữ liệu mẫu phân công vai trò và chức năng
3.3.3.1 Cài đặt chức năng và giao diện
• Chức năng đăng nhập, đăng xuất
- Mục đích : Đăng nhập vào hệ thống để sử dụng các chức năng ,Đăng xuất khỏi hệ thống để thoát
Hình 3.10 Lưu đồ thuật toán chức năng đăng nhập
Hình 3.11 Lưu đồ thuật toán chức năng đăng xuất
Hình 3.12 Giao diện chức năng đăng nhập
Hình 3.13 Giao diện chức năng đăng xuất
• Chức năng đăng ký tài khoản
- Mục đích : Đăng ký tài khoản thành viên để sử dụng hệ thống
Hình 3.14 Lưu đồ thuật toán chức năng đăng kí
Hình 3.15 Giao diện chức năng đăng kí
• Chức năng xem tổng quan
- Mục đích : Cung cấp một giao diện thống kê dữ liệu một cách nhanh và trực quan nhất
- Chức năng và giao diện :
Hình 3.16 Điều hướng qua chức năng xem tổng quan
Người dùng sẽ nhanh chóng nắm bắt các số liệu thống kê quan trọng như số lượng trạm và cảm biến, cũng như vị trí của các trạm quan trắc trên bản đồ Họ có thể dễ dàng nhấp vào các điểm đánh dấu trên bản đồ để xem thông tin chi tiết về từng trạm quan trắc.
Hình 3.17 Giao diện đầu trang Tổng Quan
Khi cuộn xuống, người dùng sẽ thấy biểu đồ thống kê trung bình hàng ngày của các cảm biến tại một trạm cụ thể, với khả năng tùy chỉnh mốc thời gian và khoảng thời gian hiển thị.
Hình 3.18 Giao diện giữa trang Tổng Quan
Cuối trang sẽ có các bảng thống kê số liệu trung bình theo ngày của các cảm biến tại một trạm cụ thể, cho phép người dùng xem chi tiết thống kê theo giờ, phút hoặc thậm chí theo giây.
Hình 3.19 Các bảng thống kê số liệu của một trạm theo ngày
Hình 3.20 Giao diện thống kê chi tiết giá trị cảm biến trong một ngày
Khi bạn nhấn vào nút “Hẹn giờ gửi mail tổng hợp”, một cửa sổ nhỏ sẽ xuất hiện, cho phép bạn đặt thời gian để hệ thống gửi file Excel tổng hợp đến email của người quản lý.
Hình 3.21 Giao diện cửa sổ hẹn giờ gửi mail tổng hợp
Về phương thức gửi mail đề tài sử dụng thư viện hỗ trợ cho việc gửi mail khá tiện lợi trong PHP có tên là PHPMailer
Hình 3.22 Sử dụng PHPMailer để thực hiện chức năng gửi mail trích xuất
Các tính năng của PHPMailer :
• Gửi mail thông qua giao thức SMTP
• Có thể dễ dàng dùng địa chỉ email cá nhân hoặc email công ty của bạn để gửi đi làm tăng độ uy tín cho mail
• Gửi mail nhanh ít lỗi mail được chuyển vào thằng vào inbox
• Có thể thêm cc,bcc, đính kèm file
Hình 3.23 Test chức năng gửi mail tổng hợp của hệ thống(1)
Hình 3.24 Tập tin tổng hợp đính kèm
Hình 3.25 Kiểm tra chức năng xuất File Excel(1)
Hình 3.26 Kiểm tra chức năng xuất File Excel(2)
• Chức năng quản lý trạm quan trắc
- Mục đích : Cung cấp một giao diện quản lý trạm quan trắc một cách trực quan và chuyên nghiệp
- Chức năng và giao diện:
Hình 3.27 Điều hướng đến trang quản lý trạm quan trắc
Giao diện trang quản lý trạm quan trắc rất trực quan, cho phép người dùng dễ dàng xác định số lượng và vị trí các trạm trên bản đồ thế giới Người dùng có thể nhấp vào các điểm đánh dấu để xem thông tin nhanh chóng hoặc chọn nút xem chi tiết để thực hiện các thao tác khác Tài khoản có quyền "Quản trị viên" có khả năng xem tất cả các trạm trong hệ thống và thực hiện các thao tác đặc biệt như lắp thêm trạm và phân công người quản lý, điều mà các tài khoản bình thường không được phép.
Hình 3.28 Giao diện trang quản lý trạm quan trắc
Khi người dùng nhấp vào nút "Xem chi tiết" hoặc tên trạm trong danh sách, một cửa sổ sẽ xuất hiện, hiển thị thông tin chi tiết về trạm cùng với số liệu môi trường được cập nhật theo thời gian thực từ các trạm.
Hình 3.29 Cửa sổ giao diện chi tiết trạm và biểu diễn dữ liệu theo thời gian thực
Khi người dùng nhấn vào nút bổ sung cảm biến trong cửa sổ hiện tại, một cửa sổ nhỏ sẽ mở ra, cho phép xem danh sách các cảm biến đã được lắp đặt trong trạm Người dùng có thể thêm cảm biến mới hoặc tháo cảm biến không còn sử dụng Ngoài ra, trong quá trình chỉnh sửa thông tin cảm biến, người dùng cũng có thể bổ sung đơn vị đo cho cảm biến của mình.
Hình 3.30 Chỉ có quản trị viên mới có quyền phân công người quản lý
Hình 3.32 Cửa sổ chức năng bổ sung cảm biến
Hình 3.33 Cửa sổ xem chi tiết và chỉnh sửa cảm biến
Hình 3.34 Cửa sổ chỉnh sửa thông tin đơn vị
Hình 3.35 Bổ sung thêm đơn vị mới nếu cần
• Chức năng quản lý thông tin cá nhân