Đặt vấn đề Chất lượng nước là một trong những yếu tố quan trọng của cuộc sống, đóng vai trò quan trọng trong sự phát triển và duy trì sự sống, đồng thời, chất lượng nước cũng là một yếu tố then chốt trong việc nuôi trồng thủy hải sản. Tuy nhiên các hồ, sông, suối và các tài nguyên nước khác, nhất là ở các vùng nông thôn và hẻo lánh thường không được giám sát đầy đủ và hiệu quả. Hiện nay, công nghệ Internet of Things (IoT) đang phát triển mạnh mẽ và được áp dụng rộng rãi trong nhiều lĩnh vực khác nhau, bao gồm giám sát môi trường và chất lượng nước. Việc áp dụng cong nghệ IoT để giám sát chất lượng nước là một biện pháp hiệu quả và tiên tiến giúp giải quyết các thách thức về giám sát chất lượng nước.
Tuy nhiên, việc xây dựng hệ thống giám sát chất lượng nước ứng dụng IoT cũng đặt ra nhiều thách thức. Đầu tiên, cần thiết phải thiết kế, triển khai các cảm biến độc lập và đáng tin cậy để thu nhập dữ liệu, hệ thống phải theo dõi liên tục để đảm bảo chất lượng nước luôn được giám sát và đánh giá chính xác. Đồng thời, phải có một hệ thống truyền thông gọn nhẹ và đáng tin cậy để truyền dữ liệu về trung tâm để xử lý và đưa ra các chỉ số đánh giá chất lượng nước. Ngoài ra việc lưu trữ và quản lý dữ liệu cũng là một nhiệm vụ quan trọng trong việc xây dựng hệ thống.
Do đó, đề tài được đặt ra để giải quyết các vấn đề nêu trên, bằng cách sử dụng công nghệ IoT để xây dựng hệ thống giám sát chất lượng nước. Hệ thống này sẽ cho phép giám sát từ xa, cập nhật dữ liệu nhanh chóng, hiển thị dữ liệu theo thời gian thực. Hơn nữa việc ứng dụng IoT sẽ giúp tiết kiệm chi chí và thời gian hơn so với các phương pháp truyền thống. Mục đích nghiên cứu Đề tài được thực hiện với mục đích áp dụng các kiến thức đã học để nghiên cứu, xây dựng một mô hình “Hệ thống giám sát chất lượng nước ứng dụng IoT”.
Sau khi thực hiện, hệ thống cần có những chức năng sau: • Giám sát, theo dõi chất lượng nước theo thời gian thực thông qua Internet bằng trình duyệt, có thể tải dữ liệu về để đánh giá thêm • Có thể điều khiển hệ thống từ xa bằng dashboard • Phần cứng có thể dễ triển khai, gọn gàng, giảm thiểu chi phí phát sinh • Hệ thống chạy ổn định, ít lỗi vặt 1 1. Phương pháp nghiên cứu Trong đề tài này, chúng tôi sử dụng các phương pháp nghiên cứu sau: • Phương pháp tham khảo tài liệu: bằng cách thu thập thông tin từ sách, tạp chí, kênh truyền thông về điện từ, viễn thông, truy cập từ mạng Internet. • Phương pháp quan sát: khảo sát, đánh giá một số ứng dụng có sử dụng công nghệ IoT, các hệ thống giám sát chất lượng nước đã có. • Phương pháp thực nghiệm: Xem xét một số công nghệ đã được áp dụng trước đó để rút ra kinh nghiệm cũng như những yêu cầu đặt ra cho mô hình “Hệ thống giám sát chất lượng nước ứng dụng IoT”.
Nội dung nghiên cứu Đề tài “Nghiên cứu, xây dựng hệ thống giám sát chất lượng nước ứng dụng IoT” có các nôi dung nghiên cứu sau: • Tìm hiểu công nghệ IoT, các chỉ số về chất lượng nước • Các giải pháp thiết kế hệ thống • Tìm hiểu, đánh giá, lựa chọn thiết bị: cảm biến, vi điều khiển, màn hình… • Tìm hiểu các giao thức truyền thông I2C, MQTT, WiFi. • Lắp ráp các linh kiện điện lên bảng mạch, lập trình cho vi điều khiển • Thiết kế, gia công phần vỏ hộp chứa các bảng mạch và linh kiện • Xây dựng giao diện hiển thị và điều khiển, xử lý dữ liệu trên server • Sửa lỗi và tối ưu hệ thống • Đánh giá các kết quả thực hiện • Viết báo cáo. Bố cục Nội dung đề tài gồm các phần sau: Chương 1. Tổng quan về đề tài • Đặt vấn đề.
• Mục đích đề tài. • Phương pháp nghiên cứu. • Nội dung nghiên cứu của. Cơ sở lý thuyết: • Các lý thuyết về IoT.
• Các vấn đề trong giám sát chất lượng nước. Mạch điện hoàn chỉnh 3. Thiết kế và gia công vỏ bảo vệ Sau khi thực hiện lắp ráp bảng mạch, cần phải đo đạc các thông số chiều dài, rộng cao của mạch đặc biệt là vị trí các lỗ bắt bulong để thiết kế chuẩn xác nhất Chúng tôi sử dụng phần mềm SolidWork để thiết kế mô hình 3D với các yêu cầu: • Vị trí đặt bảng mạch cần được thiết kế dạng rãnh trượt để tháo lắp dễ dàng • Các vị trí lắp LCD, công tắc, đèn báo phải được thiết kế chính xác về kích thước và vị trí • Phải để sẵn lỗ của luồn dây các cảm biến • Các bộ phận được lắp ráp với nhau bằng bulong hoặc bằng các rãnh cài vào nhau Hình 3. Bản thiết kế 3D vỏ bảo vệ mạch điện Sau khi thực hiện thiết kế, chúng tôi gia công vỏ bảo vệ bằng phương pháp in 3D, chất liệu nhựa ABS.
Phương pháp gia công này có ưu điểm là độ chính xác cao, chi phí phải chăng 20 Hình 3. Sản phẩm vỏ bảo vệ Sau khi có vỏ bảo vệ và mạch điện, tiến hành lắp ráp chúng vào với nhau, bao gồm lắp công tắc, đèn báo và màn hình LCD lên nắp của vỏ bảo vệ Hình 3. Sản phẩm phần cứng hoàn chỉnh 3. Cài đặt Node-red và MQTT broker Sau khi cài đặt hệ điều hành Raspberry OS cần cài đặt và tinh chỉnh Node-red và MQTT broker, cụ thể như sau: • Cài đặt Node-red: o Cài đặt Node.js bằng terminal o Cài đặt Node-red bằng câu lệnh “npm install -g node-red” o Cài đặt để Node-red tự động khởi chạy mỗi khi Raspberry Pi khởi động • Cài đặt MQTT broker: o Cài đặt Mosquitto (MQTT mã nguồn mở, xử lý các thông điệp MQTT) bằng câu lệnh: “sudo apt install mosquitto” o Cài đặt để Mosquitto tự động khởi chạy mỗi khi Raspberry Pi khởi động o Chỉnh sửa file config của Moquitto cho phép các kết nối MQTT từ Internet.
Giao diện sử dụng của Node-red 3. Thiết lập kết nối DDNS, PortForwarding Port Forwarding là một kỹ thuật được sử dụng trong mạng máy tính để chuyển tiếp lưu lượng mạng từ một cổng đến một thiết bị để có thể được được truy cập từ Internet, Port Forwarding cho phép chuyển tiếp các kết nối từ cổng của địa chỉ IP công cộng đến cổng của địa chỉ IP nội bộ. Cụ thể trong hệ thống này là cho mở cổng mạng để các thiết bị có thể truy cập vào Raspberry Pi để truy xuất và ghi dữ liệu, đồng thời có thể thực hiện giao tiếp MQTT từ Internet thay vì chỉ có thể sử dụng mạng nôi bộ. Để thực hiện mở cổng mạng, chúng tôi truy cập vào trang quản lý moderm, mạng và thực hiện cấu hình như hình 3.
Trong đó, cổng 1883 phục vụ giao thức MQTT, cổng 1880 để truy cập vào server Node-red, cổng 2244 để thực hiện điều khiển Raspberry Pi qua giao thức SSH. Địa chỉ IP 192.65 là địa chỉ IP của Raspberry Pi. Giao diện thực hiện Port Forwarding Sau các khi mở cổng mạng, hệ thống đã có thể truy cập từ internet nhưng phải thông qua địa chỉ IP mạng. Tuy nhiên dãy số này thường rất khó nhớ và mạng gia đình thường chỉ có IP động (địa chỉ IP công cộng bị thay đổi sau một thời gian), do đó chúng tôi sử dụng dịch vụ DDNS (Dynamic Domain Name System - Hệ thống giúp tự động cập nhật địa chỉ IP của một thiết bị mạng đến một tên miền phân giải DNS cụ thể) để có thể truy cập vào hệ thống bằng tên miền.
Các bước thực hiện cụ thể: • Đăng ký dịch vụ DDNS với tên miền, hiện nay có nhiều dịch vụ cho phép đăng ký DDNS miễn phí như: NoIP, Duck DDNS, Dynu… Trong hệ thống này chúng tôi sử dụng dịch vụ NoIP • Truy cập vào trang quản lý moderm mạng, chọn mục DDNS Configuration • Thực hiện cài đặt như hình 3. Cài đặt dịch vụ DDNS 3. Lập trình vi điều khiển Trong đề tài này chúng tôi sử dụng vi điều khiển ESP32, việc lập trình được thực hiện trên PlatformIO – một môi trường phát triển tích hợp IDE dùng cho việc phát triển phần mềm và quản lý mã nguồn cho các ứng dụng IoT. Giao diện platformIO 23 Mã nguồn được viết bằng ngôn ngữ C++ trên nền tảng Arduino cho vi điều khiển ESP32 Hình 3.
Sơ đồ khối tổng quan quy trình hoạt động của hệ thống Giải thích lưu đồ: • Kết nối Wifi: kết nối vi điều khiển ESP32 với Internet, để có thể giao tiếp với server • Khai báo MQTT broker và hàm Callback: Cần khai báo MQTT broker cụ thể với các tham số địa chỉ IP (tên miền), cổng mạng của MQTT broker để vi xử lý có thể thực hiện các thao tác Publish và Subscribe dữ liệu. Hàm Callback để xử lý các dữ liệu nhận được từ server thành các lệnh điều khiển. • Lắng nghe dữ liệu từ server: Liên tục lắng nghe các dữ liệu gửi về từ server do người dùng điều khiển. • Thực hiện hàm callback: Xử lý các dữ liệu lắng nghe được để điều chỉnh các tham số của hệ thống: chu kì cập nhật dữ liệu, bật tắt cảm biến… • Đọc dữ liệu cảm biến và gửi lên server: ESP32 lần lượt đọc giá trị các cảm biến, tổng hợp thành 1 đoạn JSON và tiến hành gửi lên server sau mỗi thời gian được cài đặt.
Kết nối Wifi Hình 3. Sơ đồ khối hàm kết nối Wifi 3. Hàm callback Hình 3. Sơ đồ khối hàm Callback 25 3.
Đọc dữ liệu cảm biến và gửi lên server Các dữ liệu từ cảm biến mực nước, độ đục, độ pH được đọc qua ADC ADS1115 bằng giao thức I2C, sau đó đọc cảm biến nhiệt độ bằng giao thức OneWire. Tất cả dữ liệu đọc được sẽ được đóng gói thành 1 chuỗi JSON và được gửi lên server bằng phương thức Publish. Tại mặc định, biến TimetoUpdate sẽ có giá trị là 3000ms, khi người dùng thay đổi giá trị này bằng cách nhập lệnh trên dashboard, hệ thống sẽ tự động cập nhật giá trị mới và đưa vào so sánh. Sơ đồ khối hàm đọc dữ liệu cảm biến và gửi lên server 3.
Thiết kế và xây dựng Dashboard Trong hệ thống giám sát chất lượng nước ứng dụng IoT, dashboard đóng vai trò là bảng điều khiển hệ thống, là nơi dữ liệu được hiển thị dưới dạng biểu đồ theo thời gian thực. Dashboard được xây dựng bằng các công cụ của Node-Red trên nền tảng Node. Lấy dữ liệu về server Để lấy dữ liệu từ MQTT broker, server cần phải subscribe vào topic mà ESP32 vừa publish dữ liệu lên.