Tak Berkategori

Proyek Laboratorium Portabel: Portable Water Quality Colorimeter Berbasis ESP32-C3

Kualitas air bersih merupakan pilar utama dalam kesehatan masyarakat, kelayakan budidaya perikanan, serta keberhasilan industri kimia. Salah satu parameter fisik paling mendasar dalam menentukan kualitas air adalah tingkat kekeruhan (turbidity) dan pekatnya degradasi warna sisa polutan atau zat terlarut di dalamnya.

Di laboratorium konvensional, pengujian konsentrasi larutan dilakukan menggunakan alat spektrofotometer atau kalorimeter berukuran besar yang mahal. Proyek Portable Water Quality Colorimeter ini hadir sebagai solusi alternatif berupa instrumen laboratorium saku (pocket laboratory) berbasis IoT yang mampu menguji absorbansi zat warna dan sisa kekeruhan air secara portabel, instan, dan ekonomis.

1. Penjelasan Projek

Proyek ini berfokus pada pembuatan alat uji cairan berbasis optik (Colorimeter). Cara kerjanya mengadopsi prinsip dasar Hukum Beer-Lambert, di mana sirkuit cahaya dengan intensitas tertentu ditembakkan menembus sampel cairan yang diletakkan di dalam wadah tabung kaca bening (cuvette).

  • Analisis Penyerapan Cahaya (Absorbansi): Sensor spektral di sisi seberang tabung akan menangkap sisa cahaya yang berhasil lolos menembus cairan. Jika cairan jernih, nilai Clear Channel akan sangat tinggi karena sikit cahaya yang diserap. Jika cairan keruh atau pekat, nilai titik (Raw Points) akan anjlok drastis.
  • Klasifikasi Kekeruhan Otomatis: Perangkat secara instan mengolah data mentah tersebut dan langsung menggolongkannya ke dalam 3 status kelayakan fisik air pada layar LCD TFT:
    • Jernih / Bening: Air dalam kondisi steril, sangat layak untuk konsumsi fisik atau pemeliharaan larva ikan sensitif.
    • Agak Keruh: Terdapat endapan koloid, mikroalga, atau partikel tersuspensi sedang.
    • Pekat / Keruh: Air terkontaminasi berat, wajib melalui proses filtrasi atau sedimentasi sebelum digunakan.
  • Audio Feedback: Buzzer akan memberikan konfirmasi suara berupa nada interaktif khusus saat proses kalibrasi cuvette kosong maupun saat pembacaan sampel cairan selesai diproses.

2. Penjelasan Produk & Komponen

  1. ESP32-C3 SuperMini: Pengendali utama berspesifikasi tinggi yang memproses konversi algoritma nilai serapan cahaya secara cepat.
  2. Sensor Spektral AS7341: Sensor optik mutakhir yang bertindak sebagai detektor spektrum warna cairan. Kemampuannya membaca channel Clear (cahaya tampak total) memberikan akurasi tinggi dalam mendeteksi partikel sekecil apa pun yang menghalangi laju cahaya.
  3. Lampu LED Putih Terarah (Sumber Cahaya): Berfungsi sebagai pemancar cahaya konstan, yang diarahkan lurus menembus sirkuit tabung sampel cairan menuju lensa sensor AS7341.
  4. LCD MCUDEV TFT 1.44″ (ST7735): Layar warna resolusi tinggi yang dikonfigurasikan dengan tema laboratorium modern (Cyber Cyan & Black) untuk visualisasi grafik angka absorbansi yang tegas.
  5. Buzzer Aktif: Berfungsi sebagai indikator alarm penanda sirkuit pemindaian zat cair telah berhasil dikalkulasi.
  6. Body Case DIY: Berfungsi untuk melindungi komponen jika dibuat portable Opsional

3. Wiring Diagram (Skema Perkabelan Alat Uji)

Sama seperti sirkuit sebelumnya, sirkuit ini menghemat pin ESP32-C3 dengan memanfaatkan interkoneksi paralel I2C:

KomponenPin KomponenSambungkan ke ESP32-C3Fungsi / Keterangan
LCD TFT 1.44″VCC / GND3V3 / GNDDaya Utama Layar LCD
DI (MOSI) / SC (CLK)GPIO 6 / GPIO 4Jalur Data & Clock SPI Layar
CS / RST / RS (DC)GPIO 7 / GPIO 10 / GPIO 5Pin Kontrol Tampilan Grafis
BLK3V3Backlight Layar Selalu Aktif
Sensor AS7341VIN / GND3V3 / GNDDaya Sirkuit Utama Sensor
SDA / SCLGPIO 1 / GPIO 2Jalur Komunikasi Data I2C
LED PenembakAnoda (+) / Katoda (-)3V3 / GND (Gunakan Resistor 220 $\Omega$)Lampu Sumber Cahaya Konstan
Buzzer AktifPositif (+) / Negatif (-)GPIO 8 / GNDPemicu Alarm / Nada Suara Hasil Uji

4. Kodingan Lengkap (Source Code Arduino IDE)

Berikut adalah kode program penuh dan mandiri untuk Portable Water Quality Colorimeter yang bebas dari error deklarasi scope dan dilengkapi fitur Flicker-Free display:

#include <Wire.h>
#include <Adafruit_AS7341.h>
#include <Adafruit_GFX.h>
#include <Adafruit_ST7735.h>
#include <SPI.h>

// ==========================================
// CONFIGURASI PIN LCD TFT ST7735
// ==========================================
#define TFT_CS 7
#define TFT_RST 10
#define TFT_DC 5 // Pin RS / DC
#define TFT_MOSI 6 // Pin DI
#define TFT_SCLK 4 // Pin SC

Adafruit_ST7735 tft = Adafruit_ST7735(TFT_CS, TFT_DC, TFT_MOSI, TFT_SCLK, TFT_RST);
#define ST77XX_GREY 0x8410

// ==========================================
// CONFIGURASI PIN SENSOR & BUZZER
// ==========================================
Adafruit_AS7341 as7341;
#define BUZZER_PIN 8 // Positif Buzzer di GPIO 8

uint16_t lastBgColor = ST77XX_BLACK;

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

// Inisialisasi I2C kustom (SDA=1, SCL=2)
Wire.begin(1, 2);

pinMode(BUZZER_PIN, OUTPUT);
digitalWrite(BUZZER_PIN, LOW);

// Inisialisasi Layar TFT ST7735
tft.initR(INITR_144GREENTAB); // Ganti INITR_BLACKTAB jika warna layar terbalik
tft.setRotation(1); // Mode Landscape
tft.fillScreen(ST77XX_BLACK);

// Splash Screen Bertema Laboratorium Analisis
tft.setTextColor(ST77XX_CYAN);
tft.setTextSize(1);
tft.setCursor(15, 45); tft.print("WATER COLORIMETER");
tft.setCursor(15, 60); tft.print("Pocket-Lab OS v1.0");

// Tes Indikator Suara Alarm
digitalWrite(BUZZER_PIN, HIGH); delay(150);
digitalWrite(BUZZER_PIN, LOW); delay(1350);

// Inisialisasi Sensor Spektral AS7341
if (!as7341.begin()) {
Serial.println("Sensor AS7341 tidak terdeteksi!");
} else {
as7341.setATIME(100);
as7341.setASTEP(999);
as7341.setGain(AS7341_GAIN_256X);
}

tft.fillScreen(ST77XX_BLACK);
}

void loop() {
uint16_t readings[12];
uint16_t clearChan = 0;

// 1. Membaca Data Transparansi Cahaya Cairan (Clear Channel)
if (as7341.readAllChannels(readings)) {
// AS7341_CHANNEL_CLEAR menangkap total paparan cahaya tampak yang menembus sisa zat cair
clearChan = readings[AS7341_CHANNEL_CLEAR];
}

// 2. Algoritma Klasifikasi Kekeruhan Cairan (Kalibrasi Lapangan)
uint16_t bgColor = ST77XX_BLACK; // Latar belakang hitam pekat lab agar kontras
uint16_t txtColor = ST77XX_WHITE;
uint16_t statusColor = ST77XX_GREEN;
String statusAir = "JERNIH / BENING";

if (clearChan > 8000) {
// Cahaya tembus maksimal = Air tidak menghalangi berkas cahaya sama sekali
statusAir = "JERNIH / BENING";
statusColor = ST77XX_GREEN;
}
else if (clearChan > 2500 && clearChan <= 8000) {
// Cahaya mulai terbiaskan oleh partikel tersuspensi
statusAir = "AGAK KERUH / DIRTY";
statusColor = ST77XX_YELLOW;
}
else {
// Cahaya hampir mati total karena terhalang kepekatan zat warna atau kekeruhan tinggi
statusAir = "PEKAT / DANGER CONTAM";
statusColor = ST77XX_RED;
}

// Bunyi bip penanda proses kalkulasi selesai tanpa interupsi
digitalWrite(BUZZER_PIN, HIGH); delay(40);
digitalWrite(BUZZER_PIN, LOW);

// 3. Merender UI ke Layar LCD (Layout Presentable Laboratorium)
if (bgColor != lastBgColor) { tft.fillScreen(bgColor); lastBgColor = bgColor; }

tft.setTextColor(txtColor, bgColor);
tft.setTextWrap(false);

// Bagian Atas: Header Fitur
tft.setTextSize(1); tft.setCursor(6, 6);
tft.print("ANALISIS DIGITAL CAIRAN");
tft.drawFastHLine(0, 18, 128, ST77XX_CYAN);

// Bagian Tengah: TAMPILAN FONT JUMBO NILAI RAW POINTS ABSORBANSI
tft.setTextColor(ST77XX_WHITE, bgColor);
tft.setCursor(6, 24); tft.print("ABSORBANSI DATA:");

tft.setCursor(6, 38); tft.setTextSize(3);
tft.setTextColor(ST77XX_CYAN, bgColor);
tft.print(clearChan); tft.print(" "); // Spasi untuk menghapus sisa digit lama

tft.setTextSize(1); tft.print("Pts");
tft.drawFastHLine(0, 68, 128, ST77XX_WHITE);

// Bagian Bawah: Hasil Analisis Fisik Air
tft.setTextColor(ST77XX_WHITE, bgColor);
tft.setCursor(6, 76); tft.print("STATUS KELAYAKAN:");

tft.setCursor(6, 90); tft.setTextSize(1);
tft.setTextColor(statusColor, bgColor);
String fStatus = statusAir + " ";
tft.print(fStatus.substring(0, 21)); // Batasi karakter agar tidak melewati batas horizontal

// Bagian Paling Bawah: Footer Status Perangkat
tft.drawFastHLine(0, 110, 128, ST77XX_GREY);
tft.setTextSize(1); tft.setTextColor(ST77XX_GREY, bgColor);
tft.setCursor(6, 118); tft.print("Pocket-Lab Active...");

delay(1200); // Siklus jeda sampling pengujian (1,2 detik)
}

5. Kesimpulan Proyek

Instrumen Portable Water Quality Colorimeter berhasil mendemonstrasikan bahwa konvergensi komponen mikroelektronika modern seperti ESP32-C3 SuperMini dan sensor spektral multisaluran AS7341 mampu menggantikan peran spektrometer optik konvensional yang kaku menjadi perangkat genggam yang super praktis.

Dengan memanfaatkan algoritma komparasi serapan berkas cahaya (absorbansi) secara instan, alat ini membuka peluang besar untuk pemantauan kualitas air secara swadaya di berbagai sektor—mulai dari deteksi dini limbah cair industri, kontrol sterilitas air baku hidroponik, hingga pemantauan kesehatan ekosistem perairan secara berkala. Perangkat ini siap dikembangkan lebih lanjut dengan penambahan modul penyimpanan data (SD Card Data Logger) atau konektivitas nirkabel berbasis IoT.

Tinggalkan Balasan