Panduan DIY Membuat Sistem Hidroponik NFT Otomatis Berbasis ESP32 dan IoT untuk Urban Farming

Pertanian kota (urban farming) menggunakan metode Hidroponik telah menjadi solusi populer bagi masyarakat perkotaan yang ingin memproduksi sayuran segar mandiri di tengah keterbatasan lahan pekarangan rumah yang sempit. Di antara berbagai macam metode hidroponik, sistem NFT (Nutrient Film Technique) adalah salah satu yang paling efisien. Sistem ini bekerja dengan mengalirkan air nutrisi tipis (menyerupai film) secara terus-menerus melewati akar-akar sayuran tanaman di dalam pipa instalasi guna menjaga kecukupan asupan nutrisi, air, dan oksigen tanaman secara bersamaan.

Namun, mengelola kebun hidroponik secara manual membutuhkan ketelitian dan disiplin waktu yang sangat tinggi. Anda harus rutin mengukur kadar keasaman (pH) air dan kepekatan konsentrasi pupuk cair (EC / TDS) setiap harinya menggunakan alat ukur manual. Kelalaian kecil (seperti telat menambahkan air baku saat penguapan tinggi atau telat mengoreksi kadar pH yang melonjak) dapat menyebabkan tanaman layu, kerdil, hingga mati massal dalam waktu singkat.

Solusi modern untuk mengotomatiskan seluruh tugas pengawasan ini adalah dengan merakit sendiri sebuah sistem DIY Smart Hidroponik NFT berbasis chip mikrokontroler murah ESP32 dan teknologi IoT.

Bagaimana Sistem Hidroponik NFT Otomatis Bekerja?

Sistem pintar ini bekerja secara tertutup (closed-loop control system) dengan memantau tiga variabel penting pada air kolam nutrisi Anda secara terus-menerus:

[ Pipa NFT Tanaman ] ◄────────────────── ( Pompa Air Utama ) ───────────────────┐
         │                                                                       │
         ▼                                                                       │
[ Bak Nutrisi Utama ] ◄─── ( Pompa Dosing Kimia ) ─── [ Cairan pH Down / Pupuk ] │
   - Sensor pH       │                                                           │
   - Sensor EC       ├──────────────► [ Mikrokontroler ESP32 ] ──────────────────┘
   - Sensor Suhu Air │                        │
                                  ( Kirim Data via Wi-Fi )
                                              ▼
                                 [ Home Assistant / Cloud ]
  1. Sensor pH (pH-4502C): Berfungsi memantau kadar keasaman air nutrisi secara instan.
  2. Sensor EC (Electrical Conductivity): Berfungsi mengukur kepekatan kandungan pupuk kimia di dalam air.
  3. Sensor Suhu Air (DS18B20): Berfungsi memantau temperatur air kolam karena suhu air yang terlampau panas akan menurunkan kadar oksigen terlarut (dissolved oxygen) yang membahayakan akar tanaman.

Jika data dari sensor pH terdeteksi melebihi batas aman (misalnya pH naik di atas $6.5$), ESP32 akan mengirimkan sinyal untuk menyalakan pompa peristaltik mikro guna meneteskan cairan pengoreksi asam (pH Down) ke dalam kolam air secara otomatis hingga pH kembali ke titik aman ideal ($5.5 – 6.0$).

Rumus Kalibrasi Sensor pH dengan Kompensasi Suhu Nernst

Akurasi sensor elektroda gelas pH sangat sensitif terhadap perubahan temperatur air kolam. Untuk mendapatkan nilai pembacaan tingkat pH yang presisi di dalam program ESP32, kita harus menerapkan rumus kompensasi suhu matematis berdasarkan persamaan Nernst berikut:

$$E = E_0 – \frac{R \cdot T}{F} \cdot \ln(10) \cdot \text{pH}$$

Di mana:

  • $E$ = Tegangan analog yang terbaca oleh pin ADC ESP32 dari modul sensor pH (Volt).
  • $E_0$ = Tegangan potensial titik referensi standar sensor pada kondisi netral pH 7.
  • $R$ = Konstanta gas ideal ($8.314\text{ J/mol}\cdot\text{K}$).
  • $T$ = Temperatur absolut suhu air kolam yang terbaca oleh sensor DS18B20 (Kelvin, $T = \text{Suhu } ^\circ\text{C} + 273.15$).
  • $F$ = Konstanta Faraday ($96.485\text{ C/mol}$).
  • $\ln(10) \approx 2.3026$ adalah konstanta logaritma natural.

Dampak Teknis: Dengan mengintegrasikan pembacaan sensor suhu air DS18B20 langsung ke dalam baris rumus perhitungan pH di kode C++ Anda, sistem akan secara otomatis menyesuaikan kemiringan kurva (slope) nilai kalibrasi secara dinamis saat suhu kolam berubah panas di siang hari, memastikan data pembacaan pH tetap presisi $100\%$ tanpa kesalahan deviasi.

Skema Sambungan Elektronik Sensor Hidroponik

Berikut adalah diagram perkabelan untuk menghubungkan seluruh sensor dan pompa dosing peristaltik ke pin GPIO pada mikrokontroler ESP32:

[ Sensor pH (Analog) ] ──────────────► [ Pin GPIO 32 (ADC1_CH4) ] on ESP32
[ Sensor EC (Analog) ] ──────────────► [ Pin GPIO 33 (ADC1_CH5) ] on ESP32
[ Sensor Suhu DS18B20 (One-Wire) ] ──► [ Pin GPIO 4 (Input Sinyal) ] on ESP32

[ Modul Relay 4 Channel ] ◄─────────── [ Pin GPIO 18, 19, 21, 22 (Output) ] on ESP32
         │
         ├───► Pompa Peristaltik 1 (Cairan pH Down)
         ├───► Pompa Peristaltik 2 (Pupuk Nutrisi A)
         ├───► Pompa Peristaltik 3 (Pupuk Nutrisi B)
         └───► Pompa Air Utama 220V (Aliran Pipa NFT)

Kode Program Arduino (C++) untuk ESP32 Smart Hidroponik

Berikut adalah skrip kode pemrograman lengkap yang siap Anda unggah ke papan ESP32 Anda untuk membaca ketiga sensor dan mengontrol pompa dosing secara asinkron berbasis timer:

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

// Konfigurasi Jaringan Wi-Fi dan MQTT
const char* ssid = "NamaWiFiRumahAnda";
const char* password = "KataSandiWiFiRumah";
const char* mqtt_server = "192.168.1.100"; // IP Home Assistant Server Anda

// Definisikan Pin GPIO ESP32
const int PIN_PH = 32;
const int PIN_EC = 33;
const int PIN_SUHU_ONE_WIRE = 4;
const int PIN_RELAY_PH_DOWN = 18;
const int PIN_RELAY_NUTRISI = 19;

OneWire oneWire(PIN_SUHU_ONE_WIRE);
DallasTemperature sensors(&oneWire);
WiFiClient espClient;
PubSubClient client(espClient);

unsigned long waktu_sebelumnya = 0;

void setup_wifi() {
  delay(10);
  WiFi.begin(ssid, password);
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
  }
}

void reconnect() {
  while (!client.connected()) {
    if (client.connect("ESP32_Smart_Hydroponic")) {
      Serial.println("Koneksi MQTT Sukses!");
    } else {
      delay(5000);
    }
  }
}

void setup() {
  Serial.begin(115200);
  setup_wifi();
  client.setServer(mqtt_server, 1883);
  
  sensors.begin();
  
  pinMode(PIN_RELAY_PH_DOWN, OUTPUT);
  pinMode(PIN_RELAY_NUTRISI, OUTPUT);
  digitalWrite(PIN_RELAY_PH_DOWN, HIGH); // Logika relay active-low (matikan pompa)
  digitalWrite(PIN_RELAY_NUTRISI, HIGH);
  
  waktu_sebelumnya = millis();
}

void loop() {
  if (!client.connected()) {
    reconnect();
  }
  client.loop();

  unsigned long waktu_sekarang = millis();
  // Jalankan kalkulasi pembacaan dan aksi kran setiap 10 detik sekali
  if (waktu_sekarang - waktu_sebelumnya >= 10000) {
    // 1. Membaca Sensor Suhu Air DS18B20
    sensors.requestTemperatures();
    float suhu_air = sensors.getTempCByIndex(0);
    
    // 2. Membaca Sensor pH dengan kompensasi suhu sederhana
    int adc_ph = analogRead(PIN_PH);
    float voltase_ph = (float)adc_ph * 3.3 / 4095.0;
    // Persamaan linear kalibrasi sensor pH Anda (Sesuaikan setelah uji kalibrasi fisik)
    float nilai_ph = 7.0 + ((1.65 - voltase_ph) * 3.5); 
    
    // 3. Membaca Sensor EC
    int adc_ec = analogRead(PIN_EC);
    float voltase_ec = (float)adc_ec * 3.3 / 4095.0;
    float nilai_ec = voltase_ec * 1.5; // Estimasi EC dalam satuan dS/m (Decisiemens per meter)
    
    Serial.print("pH: "); Serial.print(nilai_ph);
    Serial.print(" | EC: "); Serial.print(nilai_ec);
    Serial.print(" | Suhu: "); Serial.println(suhu_air);

    // Kirim data ke broker MQTT Home Assistant
    client.publish("home/garden/hydro/ph", String(nilai_ph).c_str());
    client.publish("home/garden/hydro/ec", String(nilai_ec).c_str());
    client.publish("home/garden/hydro/temp", String(suhu_air).c_str());

    // 4. Logika Otomatisasi Kontrol Dosing Pompa
    if (nilai_ph > 6.5) {
      Serial.println("pH Terlalu Tinggi! Menyalakan Pompa pH Down selama 2 detik...");
      digitalWrite(PIN_RELAY_PH_DOWN, LOW); // Nyalakan pompa dosing asam
      delay(2000);
      digitalWrite(PIN_RELAY_PH_DOWN, HIGH); // Matikan kembali
    }
    
    if (nilai_ec < 1.0) {
      Serial.println("Nutrisi Terlalu Encer! Menyalakan Pompa Nutrisi selama 3 detik...");
      digitalWrite(PIN_RELAY_NUTRISI, LOW); // Nyalakan pompa dosing pupuk cair
      delay(3000);
      digitalWrite(PIN_RELAY_NUTRISI, HIGH); // Matikan kembali
    }

    waktu_sebelumnya = waktu_sekarang;
  }
}

FAQ: Tanya Jawab Seputar Smart Hidroponik NFT

Mengapa sensor elektroda pH saya selalu meleset dan tidak akurat setelah satu bulan dipasang? Sirkuit elektroda sensor pH kaca sangat rentan terhadap pengendapan mineral sisa pupuk hidroponik (ion fouling) dan pertumbuhan kerak lumut tipis jika dibiarkan terendam terus-menerus di dalam air kolam nutrisi. Untuk mengatasinya, Anda wajib membersihkan ujung elektroda gelas sensor minimal 2 minggu sekali menggunakan sikat bulu sangat halus yang dibasahi larutan pembersih khusus (atau air cuka ringan), serta rutin melakukan kalibrasi ulang (re-calibration) menggunakan cairan buffer standar pH 4.01 dan pH 6.86 yang tersedia di paket penjualan.

Apakah sensor EC yang digunakan pada proyek ini aman dan tidak mengalirkan listrik berbahaya ke air tanaman? Sangat aman karena sensor EC berbasis IoT bekerja menggunakan arus AC bolak-balik bertegangan ultra-rendah dan frekuensi tinggi mikro, yang tidak memiliki kapasitas daya untuk menyengat kulit manusia atau merusak sistem perakaran tanaman. Namun, pastikan sirkuit pemroses analog sensor tidak basah terkena cipratan air dengan melindunginya di dalam wadah box sirkuit kedap air IP65.

Bagaimana jika sistem mengalami kegagalan Wi-Fi? Apakah otomatisasi dosing akan kacau? Logika otomatisasi dosing pompa peristaltik pada kode program di atas ditulis langsung di dalam memori internal mikrokontroler ESP32 (local loop execution). Artinya, meskipun server Home Assistant Anda mati atau jaringan koneksi Wi-Fi rumah terputus, ESP32 akan tetap dapat menjalankan pembacaan sensor dan mengontrol hidup-mati pompa dosing secara mandiri di lapangan tanpa hambatan.

Tinggalkan Balasan

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *