Hệ thống giám sát chất lượng nước
Trung cấp20/6/2026

Hệ thống giám sát chất lượng nước

Xây dựng hệ thống giám sát chất lượng nước với các tính năng: đo độ đục của nước, đo nhiệt độ, TDS, pH, độ đục của nước, hiển thị trạng thái cảnh báo và mở rộng gửi dữ liệu realtime qua MQTT. Phù hợp cho theo dõi chất lượng nước hồ cá, thủy canh, bể chứa nước hoặc mô hình giám sát nước tham khảo. Lưu ý: Kết quả đo từ cảm biến phổ thông không thay thế thiết bị kiểm định chuyên dụng hoặc xét nghiệm phòng lab.

ESP32IoTWater QualityMQTTArduino IDETDSpHDS18B20
0 lượt thích2 người đã làm1 giờ7 bước9 linh kiện
← Quay lại dự án
Hướng dẫn chi tiết

Phần 3: Cài đặt Arduino IDE và kiểm tra cảm biến

Hướng dẫn cài ESP32 board, thư viện cần thiết và kiểm tra raw ADC/DS18B20 trước khi ghép hệ thống.

Cập nhật 20/06/2026

Phần 3: Cài đặt Arduino IDE và kiểm tra cảm biến

Trước khi viết chương trình hoàn chỉnh, nên kiểm tra từng cảm biến riêng lẻ. Cách này giúp phát hiện sớm lỗi dây, lỗi nguồn, sai chân hoặc cảm biến không hoạt động.

3.1. Cài ESP32 board trong Arduino IDE

  1. Mở File > Preferences.
  2. Thêm URL sau vào Additional Boards Manager URLs:
https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json
  1. Vào Tools > Board > Boards Manager.
  2. Tìm esp32 và cài package esp32 by Espressif Systems.
  3. Chọn board ESP32 Dev Module.

3.2. Cài thư viện

Cài các thư viện sau trong Library Manager:

  • OneWire
  • DallasTemperature
  • PubSubClient cho phần MQTT
  • ArduinoJson cho phần MQTT

3.3. Kiểm tra raw ADC

Upload chương trình kiểm tra ADC để xem tín hiệu analog từ TDS, pH và turbidity có thay đổi hay không.

#define PIN_TDS        34
#define PIN_PH         35
#define PIN_TURBIDITY  32

void setup() {
  Serial.begin(115200);
  delay(1000);

  analogReadResolution(12);
  analogSetAttenuation(ADC_11db);

  Serial.println("ESP32 ADC Raw Test");
}

void loop() {
  int rawTds = analogRead(PIN_TDS);
  int rawPh = analogRead(PIN_PH);
  int rawTurbidity = analogRead(PIN_TURBIDITY);

  Serial.print("TDS Raw: ");
  Serial.print(rawTds);

  Serial.print(" | pH Raw: ");
  Serial.print(rawPh);

  Serial.print(" | Turbidity Raw: ");
  Serial.println(rawTurbidity);

  delay(1000);
}

Kết quả mong đợi:

TDS Raw: 1230 | pH Raw: 2045 | Turbidity Raw: 2870

3.4. Kiểm tra DS18B20

#include <OneWire.h>
#include <DallasTemperature.h>

#define PIN_ONE_WIRE 4

OneWire oneWire(PIN_ONE_WIRE);
DallasTemperature sensors(&oneWire);

void setup() {
  Serial.begin(115200);
  delay(1000);

  sensors.begin();
  Serial.println("DS18B20 Temperature Test");
}

void loop() {
  sensors.requestTemperatures();

  float temperatureC = sensors.getTempCByIndex(0);

  Serial.print("Temperature: ");
  Serial.print(temperatureC);
  Serial.println(" °C");

  delay(1000);
}

Nếu nhận giá trị -127.00 °C, thường là thiếu điện trở kéo lên, sai chân DATA hoặc dây bị lỏng.