Proyek sistem penyaring air cerdas berbasis ESP32 yang dapat memantau kualitas air secara real-time, mengontrol pompa, dan memberikan notifikasi alarm melalui dashboard Python dan aplikasi Blynk.
- Monitoring Kualitas Air Real-Time: Mengukur TDS (Total Dissolved Solids), EC (Electrical Conductivity), dan suhu air input/output
- Deteksi Level Air: Menggunakan sensor ultrasonik untuk memantau tinggi air dalam tangki
- Kontrol Pompa Otomatis: Mengaktifkan/mematikan pompa berdasarkan kondisi air dan batas penggunaan filter
- Sistem Alarm: Notifikasi ketika air penuh, filter perlu diganti, atau TDS tinggi
- Dashboard Python: Antarmuka grafis untuk visualisasi data real-time dengan MQTT
- Integrasi Blynk: Kontrol dan monitoring melalui aplikasi mobile Blynk
- Komunikasi MQTT: Publikasi data sensor dan kontrol perangkat melalui protokol MQTT
- ESP32 Development Board (misalnya ESP32-WROOM-32)
- Sensor TDS/EC (2 buah - untuk input dan output)
- Sensor Suhu DS18B20 (2 buah - untuk input dan output)
- Sensor Ultrasonik HC-SR04 (untuk pengukuran level air)
- Relay Module (untuk kontrol pompa)
- Buzzer (untuk alarm)
- LED (indikator status)
- Power Supply (5V/3.3V sesuai kebutuhan)
- TRIG_PIN (Ultrasonik): GPIO 13
- ECHO_PIN (Ultrasonik): GPIO 12
- RELAY_PIN (Pompa): GPIO 25
- BUZZER_PIN (Alarm): GPIO 5
- LED_PIN (Indikator): GPIO 2
- SUHU_INPUT_PIN (DS18B20): GPIO 32
- TDS_INPUT_PIN (ADC): GPIO 34
- SUHU_OUTPUT_PIN (DS18B20): GPIO 33
- TDS_OUTPUT_PIN (ADC): GPIO 35
- PlatformIO (IDE untuk development ESP32)
- Arduino Framework
- Library Dependencies:
- PubSubClient@^2.8
- ArduinoJson@^6.21.3
- DallasTemperature@^3.11.0
- OneWire@^2.3.7
- Blynk
- Python 3.7+
- Required Libraries:
- customtkinter
- matplotlib
- scipy
- paho-mqtt
- numpy
- Blynk App (Android/iOS) untuk kontrol mobile
# Install PlatformIO (jika belum terinstall)
# Via VSCode Extension atau CLI
# Clone atau download project ini
cd /path/to/project
# Install dependencies
pio pkg installEdit file src/main.cpp:
const char* ssid = "YOUR_WIFI_SSID";
const char* password = "YOUR_WIFI_PASSWORD";
// Blynk Configuration
#define BLYNK_TEMPLATE_ID "YOUR_TEMPLATE_ID"
#define BLYNK_TEMPLATE_NAME "Smart Water Filter"
#define BLYNK_AUTH_TOKEN "YOUR_AUTH_TOKEN"
// MQTT Broker (default: broker.emqx.io)
const char* mqtt_server = "broker.emqx.io";
const int mqtt_port = 1883;# Install Python dependencies
pip install customtkinter matplotlib scipy paho-mqtt numpy
# Jalankan dashboard
python src/dashboard_ui.py- Download aplikasi Blynk dari Play Store/App Store
- Buat akun baru atau login
- Buat template baru dengan ID yang sesuai
- Tambahkan widget untuk kontrol pompa (Button V1)
- Tambahkan display untuk TDS (Value Display V0) dan Suhu (Value Display V1)
// Kalibrasi TDS
const float TDS_KVALUE = 0.25; // Sesuaikan dengan sensor Anda
// Batas Level Air
const int JARAK_PENUH_CM = 5; // Jarak ketika tangki penuh
const int JARAK_RENDAH_CM = 10; // Jarak ketika level rendah
// Batas TDS
const int TDS_AMBANG_BATAS = 1000; // PPM
const int MAX_USE_COUNT = 50; // Maksimal penggunaan filter- Data:
smartwater/data- Publikasi data sensor - Control:
smartwater/control- Kontrol perintah - Status:
smartwater/status- Status sistem
# Via PlatformIO
pio run -t upload- Jalankan
python src/dashboard_ui.py - Dashboard akan otomatis connect ke MQTT broker
- Pantau data real-time: TDS, EC, Suhu, Level Air
- Kontrol pompa melalui tombol di dashboard
Kirim perintah JSON ke topic smartwater/control:
{
"command": "START_PUMP",
"timestamp": "2024-01-01T00:00:00"
}Perintah yang tersedia:
START_PUMP: Menyalakan pompaSTOP_PUMP: Mematikan pompaALARM_OFF: Mematikan alarmRESET_USE_COUNT: Reset counter penggunaan filter
- Gunakan widget Button untuk kontrol pompa
- Monitor data melalui Value Display widgets
- TDS Input (PPM)
- EC Input (Β΅S/cm)
- Suhu Input (Β°C)
- TDS Output (PPM)
- EC Output (Β΅S/cm)
- Suhu Output (Β°C)
- Level Air (cm)
- Efisiensi Filter (%)
- Status Pompa (ON/OFF)
- Status Alarm (Active/Inactive)
- Counter Penggunaan Filter
-
ESP32 tidak connect ke WiFi
- Periksa SSID dan password
- Pastikan jangkauan WiFi cukup
- Restart ESP32
-
Sensor TDS tidak akurat
- Kalibrasi ulang nilai TDS_KVALUE
- Pastikan probe terendam air dengan benar
- Bersihkan elektroda sensor
-
Dashboard tidak menerima data
- Periksa koneksi MQTT broker
- Pastikan topic MQTT sesuai
- Restart dashboard Python
-
Pompa tidak berfungsi
- Periksa koneksi relay
- Pastikan power supply cukup
- Periksa batas penggunaan filter
-
Blynk tidak connect
- Periksa AUTH_TOKEN
- Pastikan template ID benar
- Restart aplikasi Blynk
Aktifkan Serial Monitor di PlatformIO untuk melihat log sistem:
pio device monitorSmart-Water-Filter-ESP32/
βββ src/
β βββ main.cpp # Kode utama ESP32
β βββ dashboard_ui.py # Dashboard Python
βββ include/ # Header files
βββ lib/ # Library tambahan
βββ test/ # Unit tests
βββ platformio.ini # Konfigurasi PlatformIO
βββ README.md # Dokumentasi ini
- Tambahkan fungsi di
main.cpp - Update dashboard jika diperlukan
- Test pada hardware
- Update dokumentasi
Proyek ini menggunakan lisensi MIT. Lihat file LICENSE untuk detail lebih lanjut.
Kontribusi sangat diterima! Silakan buat Issue atau Pull Request untuk perbaikan dan peningkatan.
Jika ada pertanyaan atau masalah:
- Periksa bagian Troubleshooting di atas
- Buat Issue di repository GitHub
- Pastikan menyertakan log error dan konfigurasi sistem
Catatan: Pastikan semua sensor terhubung dengan benar dan dikalibrasi sebelum digunakan dalam produksi. Sistem ini dirancang untuk monitoring dan kontrol, namun keamanan air minum tetap menjadi prioritas utama.