Apakah Anda sering lupa menyiram tanaman kesayangan Anda? Atau khawatir tanaman Anda akan layu saat Anda bepergian? Solusinya ada pada teknologi! Dengan sedikit sentuhan pemrograman dan elektronika, kita bisa menciptakan Sistem Penyiram Tanaman Otomatis Cerdas menggunakan mikrokontroler ESP8266 (NodeMCU).
Artikel ini akan memandu Anda secara tuntas, mulai dari pengenalan komponen hingga pengujian.
1. Komponen Utama yang Anda Butuhkan
Projek ini menggabungkan kontrol logika berdaya rendah (mikrokontroler) dengan aktuator berdaya tinggi (pompa). Berikut adalah daftar lengkap komponen yang diperlukan:
| No. | Nama Komponen | Fungsi Utama |
|---|---|---|
| 1. | Mikrokontroler | ESP8266 (NodeMCU v1.0) – Otak sistem. |
| 2. | Sensor Kelembaban | Sensor Kapasitif (Analog Output) – Mengukur kelembaban tanah. |
| 3. | Transistor | TIP41C (NPN Power Transistor) – Bertindak sebagai saklar elektronik. |
| 4. | Pompa Air | DC 3.7V – Aktuator yang menyiram tanaman. |
| 5. | Resistor | 1 kΩ – Melindungi Basis transistor. |
| 6. | Diode | 1N4001 (Flyback Diode) – Melindungi transistor dari induksi pompa. |
| 7. | Daya Tambahan | Sumber Daya 3.7V – 5V untuk Pompa. |
2. Mengenal Cara Kerja Sistem
Sistem ini bekerja melalui tiga langkah utama yang berulang:
A. Pembacaan Sensor (Input)
Kita menggunakan sensor kelembaban kapasitif yang terhubung ke pin A0 ESP8266. Penting untuk diingat:
- Tanah Kering: Memberikan nilai analog Tinggi (sekitar 700 – 1023).
- Tanah Basah: Memberikan nilai analog Rendah (sekitar 300 – 500).
B. Logika Kontrol (Pemrosesan)
ESP8266 akan membaca nilai dari sensor. Jika nilai tersebut melebihi nilai DRY_THRESHOLD (misalnya 700), ini berarti tanah kering dan pompa harus diaktifkan.
C. Kontrol Pompa (Aktuator)
Karena ESP8266 hanya dapat memberikan arus kecil (beberapa mA) dari pin D7 (GPIO 13), kita tidak bisa langsung menyambungkan pompa. Di sinilah Transistor TIP41C berperan sebagai saklar:
- Pin D7 dari ESP8266 memberikan sinyal kecil ke Basis TIP41C.
- Sinyal kecil ini “membuka” jalur Kolektor-Emitor, memungkinkan arus besar mengalir dari sumber daya eksternal 3.7V ke Pompa, sehingga Pompa hidup.
3. Skema Perakitan Rangkaian (Wiring)
Berikut adalah panduan langkah demi langkah untuk menghubungkan semua komponen. Perhatian: Keselamatan kerja, terutama penggunaan Diode Flyback, sangat penting untuk melindungi Transistor TIP41C dari kerusakan akibat lonjakan arus balik dari pompa.
Koneksi Sensor ke ESP8266:
- Sensor VCC ESP8266 3V3
- Sensor GND ESP8266 GND
- Sensor Analog Out ESP8266 A0
Koneksi Transistor dan Pompa:
- Basis (B) TIP41C: Hubungkan ke ESP8266 D7 (GPIO 13) melalui Resistor 1 kΩ.
- Emitor (E) TIP41C: Hubungkan ke GND (ESP8266 GND dan GND sumber daya Pompa).
- Kolektor (C) TIP41C: Hubungkan ke terminal negatif (-) Pompa DC 3.7V.
- Diode Flyback (1N4001): Pasang secara paralel melintasi pompa. Anoda diode ke terminal positif (+) pompa, dan Katoda diode ke terminal negatif (-) pompa (Kolektor TIP41C).
- Daya Pompa: Terminal positif (+) Pompa Terminal positif (+) sumber daya 3.7V/5V eksternal.
4. Kode Program Arduino IDE
Salin kode di bawah ini ke Arduino IDE Anda. Pastikan Anda telah menginstal Board ESP8266 dan memilih board yang benar (NodeMCU 1.0 (ESP-12E Module)).
/**
* ESP8266 Soil Moisture Monitor
* ----------------------------------------------------
* Reads a Capacitive Soil Moisture Sensor (Analog Output) on A0.
* Sets digital pin D7 (GPIO 13) HIGH if the soil is detected as dry.
* * NOTE: Capacitive sensors typically give a HIGHER reading when dry
* and a LOWER reading when wet. This code is set up for that behavior.
*/
#define D0 16 // WAKE
#define D1 5 // SDA
#define D2 4 // SCL
#define D3 0 // FLASH
#define D4 2 // BUILTIN_LED
#define D5 14 // SCLK
#define D6 12 // MISO
#define D7 13 // MOSI
#define D8 15 // CS
#define TX 15 // CS
// Define the input and output pins
const int MOISTURE_PIN = A0; // The ESP8266 only has one analog pin (A0)
const int OUTPUT_PIN = D7; // D7 corresponds to GPIO 13 on NodeMCU boards
// --- CALIBRATION THRESHOLD ---
// You MUST adjust this value based on calibration.
// If the reading is ABOVE this threshold, the soil is considered DRY.
//
// Typical Range:
// ~300-500: Submerged/Very Wet
// ~700-800: Dry Soil (needs water)
// ~900-1023: Fully dry (in air)
const int DRY_THRESHOLD = 700;
void setup() {
// Initialize serial communication for debugging and calibration
Serial.begin(115200);
Serial.println("\n--- ESP8266 Soil Moisture Monitor Initialized ---");
// Set the digital output pin mode
pinMode(OUTPUT_PIN, OUTPUT);
digitalWrite(OUTPUT_PIN, LOW); // Start with the pin off
}
void loop() {
// Read the raw analog value from the sensor (0-1023)
int moistureValue = analogRead(MOISTURE_PIN);
// Print the value to the Serial Monitor for calibration
Serial.print("Moisture Sensor Reading: ");
Serial.println(moistureValue);
// Check the "dry" condition
if (moistureValue > DRY_THRESHOLD) {
// Soil is Dry: Set D7 HIGH
digitalWrite(OUTPUT_PIN, HIGH);
Serial.println("STATUS: DRY! D7 is HIGH.");
} else {
// Soil is Wet/Moist: Set D7 LOW
digitalWrite(OUTPUT_PIN, LOW);
Serial.println("STATUS: Moist. D7 is LOW.");
}
// Wait for 2 seconds before the next reading
delay(2000);
}