Sistem Hidroponik Cerdas Menggunakan Arduino Mega 2560 & Sensor
Komponen dan Perlengkapan
- Arduino Mega 2560 – 1 unit
- Sensor Suhu DHT22 – 1 unit
- Relay (generik) – 1 unit
- Sensor Cahaya RobotGeek – 1 unit
- Sensor Suhu – 1 unit
Aplikasi dan Layanan Online
Tentang Proyek Ini
Hidroponik adalah jenis pertanian tanpa tanah. Tanah kehilangan nutrisi dan kesuburannya seiring waktu, sehingga hidroponik dapat digunakan untuk menghindari hal tersebut. Pertumbuhan dan nutrisi tanaman dapat ditingkatkan serta dikontrol. Tanaman yang biasanya hanya tumbuh pada waktu tertentu dalam setahun dapat dibudidayakan sepanjang tahun. Kita juga dapat memantau pertumbuhan tanaman, tingkat nutrisi tanah, kelembaban tanah, dan jumlah cahaya yang diterima.
Pendahuluan
Proyek ini adalah model dari sistem nyata. Di sini kita mengganti tanah dengan bubuk cokelat. Kita dapat mengontrol kelembaban dan kandungan nutrisi bubuk cokelat dengan mudah dibandingkan tanah normal. Dalam proyek ini kita mengontrol tiga kriteria pertumbuhan tanaman yaitu kelembaban, cahaya, dan suhu. Untuk model kami kita menggunakan spesifikasi tanaman selada.
- Suhu: 25 hingga 30 derajat Celsius.
- Kelembaban: 50% hingga 80%.
- Intensitas cahaya: 250 foton per detik.
Kontrol Cahaya
Untuk model kami kita menggunakan rangkaian LED 3mm yang disusun secara seri dan paralel. Kami menggunakan 16 LED, yaitu 8 LED merah dan 8 LED biru. Rangkaian 4 LED secara seri membutuhkan sumber daya 12V. Jadi kami menggunakan sumber daya eksternal 12V. Untuk mengontrol LED dengan bantuan Arduino kami menggunakan optokopling IC 4N35. Untuk informasi intensitas cahaya kami menggunakan sensor cahaya dengan LDR. Untuk performa yang lebih baik kita dapat memasang sensor fotodioda. Kami mengonversi bacaan dari sensor cahaya menjadi foton per detik menggunakan kode di Arduino.
Kontrol Suhu
Tanaman membutuhkan suhu yang sesuai untuk pertumbuhannya. Jadi kami mengontrol suhu model dengan bantuan dua kipas dan satu pijar pijar.
Untuk merasakan suhu lingkungan sekitar kita menggunakan IC LM35. Suhu dirasakan dan data diberikan ke Arduino. Ketika suhu di atas nilai yang diperlukan kita perlu mendinginkan lingkungan, jadi kipas pendingin dinyalakan. Ketika suhu di bawah nilai yang diperlukan kita perlu meningkatkan suhu lingkungan, jadi kipas pemanas ditambah pijar pijar dinyalakan. Pijar pijar diletakkan di luar dalam kotak terpisah sehingga intensitas cahayanya tidak mempengaruhi sensor cahaya kita. Pijar pijar memanaskan kotak dan kipas pemanas menghembuskan udara panas ke dalam.
Keduanya kipas dikontrol menggunakan motor drive dan pijar pijar dikontrol dengan bantuan relay.
Kontrol Kelembaban
Bubuk cokelat harus mengandung partikel air yang cukup agar tanaman dapat melakukan fotosintesis. Untuk merasakan kelembaban tanah kita menggunakan sensor DHT11. Sensor ini dapat merasakan suhu dan kelembaban, tetapi kami menggunakannya hanya untuk sensasi kelembaban.
Untuk meningkatkan kandungan air dalam bubuk cokelat, kami menghubungkan pompa air dengan pipa dan membuat beberapa lubang di pipa. (konsep irigasi titik).
Poin yang Perlu Diperhatikan
- Sensor DHT11 memiliki waktu respons 1 Hz jadi jeda waktu antara setiap bacaan harus paling sedikit 1 detik.
- Baris LED yang disusun secara seri 4 membutuhkan pasokan 12V.
- Jaga keamanan saat menghubungkan 230V ke PCB atau papan roti, isolasi kabel telanjang dengan isolir listrik.
- Jangan memberikan sinyal langsung ke optokopling, hubungkan resistor di antara mereka.
- Kipas DC tanpa brush yang digunakan adalah arah satu, jadi pasangnya sesuai.
Kode
#include <SimpleDHT.h> int pinDHT11 = 41; int coolingFan=50; int heatingFan=48; int heater=3; int LEDrow1=25; int LEDrow2=27; int LEDrow3=29; int LEDrow4=31; int pump=31; SimpleDHT11 dht11; void setup(){ Serial.begin(115200); pinMode(coolingFan,OUTPUT); pinMode(heatingFan,OUTPUT); pinMode(heater,OUTPUT); pinMode(LEDrow1,OUTPUT); pinMode(LEDrow2,OUTPUT); pinMode(LEDrow3,OUTPUT); pinMode(LEDrow4,OUTPUT); pinMode(pump,OUTPUT); } void loop(){ temperature(); light(); humidity(); } void temperature(){ int value= analogRead(A10); float volts=(value/1024.0)*5.0; float temp= volts*100.0; Serial.print("temp="); Serial.println(temp); delay(1000); if(temp<25){ digitalWrite(heater,LOW); digitalWrite(heatingFan,HIGH); } else{ digitalWrite(heater,HIGH); digitalWrite(heatingFan,LOW); } if(temp>30){ digitalWrite(coolingFan,HIGH); } else{ digitalWrite(coolingFan,LOW); } } void light(){ float ldrdata=analogRead(A8); float resistorVolt=(1024-ldrdata)/1024.0*5.0; float ldrVolt=5.0-resistorVolt; float ldrResistance= ldrVolt/resistorVolt*5000.0; float lux = (12518931)*(pow(ldrResistance,-1.405)); float photons= lux*0.019; delay(1000); if(photons<50){ digitalWrite(LEDrow1,HIGH); digitalWrite(LEDrow2,HIGH); digitalWrite(LEDrow3,HIGH); digitalWrite(LEDrow1,HIGH); } if(photons>100){ digitalWrite(LEDrow1,LOW); digitalWrite(LEDrow2,LOW); digitalWrite(LEDrow3,LOW); digitalWrite(LEDrow4,LOW); } } void humidity() { byte temperature = 0; byte humidity = 0; int err = SimpleDHTErrSuccess; if ((err = dht11.read(pinDHT11, &temperature, &humidity, NULL)) != SimpleDHTErrSuccess) { Serial.println(err);delay(1000); return; } int humid=(int)humidity; Serial.println(" H"); delay(2000); if(humid<85){ digitalWrite(pump,HIGH); digitalWrite(coolingFan,LOW); } if(humid>94){ digitalWrite(coolingFan,HIGH); digitalWrite(pump,LOW); } } Skematik
Gambar skematik tersedia dalam dokumen proyek.