Sirkuit Irigasi Otomatis menggunakan Arduino

Coba Instrumen Kami Untuk Menghilangkan Masalah





Pada postingan kali ini kita akan membuat sistem irigasi air otomatis untuk taman kecil menggunakan arduino dan sensor kelembaban tanah.

pengantar

Sistem yang diusulkan bisa pantau tingkat kelembaban tanah dan ketika kelembapan tanah berada di bawah nilai yang telah ditentukan, pompa DC 12V akan terpicu untuk jangka waktu yang telah ditentukan. Status tingkat kelembaban tanah dan fungsi lain dari sistem dapat dipantau melalui layar LCD 16 x 2 secara real time.



Diperkirakan ada 3 triliun pohon di seluruh dunia yang lebih besar dari jumlah awal di galaksi Bima Sakti kita yang diperkirakan berjumlah 100 miliar. Tapi, kita manusia menebang banyak sekali pohon untuk memenuhi kebutuhan dasar kita akan kemewahan.

Ibu Pertiwi dirancang dengan sistem umpan balik, ketika suatu spesies menimbulkan gangguan yang sangat besar, alam akan menghapus keberadaan spesies tersebut.



Manusia mengganggu alam tanpa disadari selama berabad-abad tetapi, bahkan setelah perkembangan pesat dalam ilmu pengetahuan dan teknologi, tingkat gangguan tidak berkurang.

Perubahan iklim adalah salah satu contohnya, ketika menjadi cukup drastis, spesies kita tidak akan bertahan lama.
Proyek ini mengambil langkah kecil ke depan untuk melestarikan alam, ini dapat mengairi taman kecil Anda yang indah tanpa interaksi manusia. Sekarang mari kita masuk ke detail teknis proyek.

Sensor Kelembaban Tanah:

Inti dari proyek ini adalah sensor kelembaban tanah yang bisa merasakan jumlah kadar air di tanah. Sensor memberikan nilai analog dan mikrokontroler akan menginterpretasikan nilai-nilai tersebut dan menampilkan kadar air.

Ada dua elektroda yang akan dimasukkan ke dalam tanah. Elektroda dihubungkan ke papan sirkuit yang terdiri dari IC komparator, LED, pin input dan output resistor pemangkas.

Ilustrasi sensor kelembaban tanah:

modul sensor kelembaban tanah

Ini memiliki 4 + 2 pin, 2 pin untuk koneksi elektroda dan sisanya 4 pin adalah Vcc, GND, keluaran digital dan keluaran analog. Kami hanya akan menggunakan pin keluaran analog untuk merasakan kelembapan tanah.
Karena kami tidak menggunakan pin keluaran digital, kami tidak akan menggunakan resistor pemangkas on-board untuk mengkalibrasi sensor.

Sekarang, itu menyimpulkan sensor kelembaban tanah.

Diagram skematik:

Sirkuit ini dibuat cukup sederhana dan ramah bagi pemula. Skema dibagi menjadi dua bagian dari proyek yang sama untuk mengurangi kebingungan saat menduplikasi proyek.

Diagram kabel LCD untuk Sistem Irigasi Otomatis

Skema di atas adalah LCD ke arduino kabel. Sebuah potensiometer 10K disediakan untuk mengatur kontras layar LCD.

Sistem Irigasi Otomatis berbasis mikrokontroler

Berikut adalah skema lainnya yang terdiri dari sensor kelembaban tanah, pompa DC 12V, tombol tekan kalibrasi, dan catu daya 12V (1 - 2 amp). Harap gunakan catu daya setidaknya lebih besar dari 500mA dengan arus pompa DC 12V.

MOSFET IRF540N (atau saluran N yang setara) digunakan sebagai pengganti BJT untuk meningkatkan efisiensi daya sistem secara keseluruhan.

Pompa akan menyirami taman kecil Anda, pastikan Anda selalu memiliki cukup air yang tersedia.

Kode Program:

//-------------Program Developed By R.Girish-------------//
#include
LiquidCrystal lcd(12, 11, 5, 4, 3, 2)
int Time = 5 // Set time in minutes
int threshold = 30 // set threshold in percentage 80, 70, 60, 50, 40, 30, 20 only.
int i
int x
int y
int z
int start
int calibrateValue
const int calibrateBTN = A1
const int input = A0
const int motor = 7
boolean calibration = false
boolean rescue = false
void setup()
{
Serial.begin(9600)
pinMode(input, INPUT)
pinMode(calibrateBTN, INPUT)
pinMode(motor, OUTPUT)
digitalWrite(calibrateBTN, HIGH)
lcd.begin(16,2)
lcd.setCursor(0,0)
lcd.print('Pour water and')
lcd.setCursor(0,1)
lcd.print('press calibrate')
while(!calibration)
{
if(digitalRead(calibrateBTN)==LOW)
{
calibrateValue = analogRead(input)
x = 1023 - calibrateValue
x = x/10
Serial.print('Difference = ')
Serial.println(x)
Serial.print('Calibration Value = ')
Serial.println(calibrateValue)
delay(500)
lcd.clear()
lcd.setCursor(0,0)
lcd.print('Calibration done')
lcd.setCursor(0,1)
lcd.print('successfully !!!')
calibration = true
delay(2000)
}
}
}
void loop()
{
if(analogRead(input)<= calibrateValue)
{
delay(500)
lcd.clear()
lcd.setCursor(0,0)
lcd.print('Soil Moisture')
lcd.setCursor(0,1)
lcd.print('Level: 100%')
}
if(analogRead(input) > calibrateValue && analogRead(input) <= calibrateValue+x)
{
lcd.clear()
lcd.setCursor(0,0)
lcd.print('Soil Moisture')
lcd.setCursor(0,1)
lcd.print('Level: 90 to 99%')
}
if(analogRead(input) > calibrateValue+x && analogRead(input) <= calibrateValue+2*x )
{
lcd.clear()
lcd.setCursor(0,0)
lcd.print('Soil Moisture')
lcd.setCursor(0,1)
lcd.print('Level: 80 to 90%')
start = 80
}
if(analogRead(input) > calibrateValue+2*x && analogRead(input) <= calibrateValue+3*x)
{
lcd.clear()
lcd.setCursor(0,0)
lcd.print('Soil Moisture')
lcd.setCursor(0,1)
lcd.print('Level: 70 to 80%')
start = 70
}
if(analogRead(input) > calibrateValue+3*x && analogRead(input) <= calibrateValue+4*x)
{
lcd.clear()
lcd.setCursor(0,0)
lcd.print('Soil Moisture')
lcd.setCursor(0,1)
lcd.print('Level: 60 to 70%')
start = 60
}
if(analogRead(input) > calibrateValue+4*x && analogRead(input) <= calibrateValue+5*x)
{
lcd.clear()
lcd.setCursor(0,0)
lcd.print('Soil Moisture')
lcd.setCursor(0,1)
lcd.print('Level: 50 to 60%')
start = 50
}
if(analogRead(input) > calibrateValue+5*x && analogRead(input) <= calibrateValue+6*x)
{
lcd.clear()
lcd.setCursor(0,0)
lcd.print('Soil Moisture')
lcd.setCursor(0,1)
lcd.print('Level: 40 to 50%')
start = 40
}
if(analogRead(input) > calibrateValue+6*x && analogRead(input) <= calibrateValue+7*x)
{
lcd.clear()
lcd.setCursor(0,0)
lcd.print('Soil Moisture')
lcd.setCursor(0,1)
lcd.print('Level: 30 to 40%')
start = 30
}
if(analogRead(input) > calibrateValue+7*x && analogRead(input) <= calibrateValue+8*x)
{
lcd.clear()
lcd.setCursor(0,0)
lcd.print('Soil Moisture')
lcd.setCursor(0,1)
lcd.print('Level: 20 to 30%')
start = 20
}
if(analogRead(input) > calibrateValue+8*x && analogRead(input) <= calibrateValue+9*x)
{
lcd.clear()
lcd.setCursor(0,0)
lcd.print('Soil Moisture')
lcd.setCursor(0,1)
lcd.print('Level: 10 to 20%')
start = 10
}
if(analogRead(input) > calibrateValue+9*x && analogRead(input) <= calibrateValue+10*x)
{
lcd.clear()
lcd.setCursor(0,0)
lcd.print('Soil Moisture')
lcd.setCursor(0,1)
lcd.print('Level: <10%')
rescue = true
}
if(start == threshold || rescue)
{
y = Time
digitalWrite(motor, HIGH)
Time = Time*60
z = Time
for(i=0 i

Cara mengkalibrasi sistem irigasi otomatis ini:

• Dengan perangkat keras lengkap, masukkan elektroda di atas tanah, di suatu tempat di jalur aliran air.
• Sekarang ubah dua nilai dalam program 1) Jumlah waktu yang dibutuhkan untuk menyiram semua tanaman (dalam menit). 2) Tingkat ambang di bawah tempat arduino memicu pompa. Anda dapat mengatur nilai persentase 80, 70, 60, 50, 40, 30, 20 saja.

int Time = 5 // Atur waktu dalam menit
int threshold = 30 // set threshold dalam persentase 80, 70, 60, 50, 40, 30, 20 saja.

Ubah nilai dalam program.

• Unggah kode ke arduino dan nyalakan sirkuit. Ini akan menampilkan 'tuangkan air dan tekan kalibrasi'. Sekarang Anda harus menyirami taman Anda secara manual hingga tingkat yang memadai.
• Setelah menyiram taman, tekan tombol kalibrasi. Ini akan menentukan konduksi listrik di tanah yang sepenuhnya lembab dan mengambil nilai referensi.
• Sekarang sistem siap melayani taman kecil Anda. Silakan coba menambahkan cadangan daya untuk proyek ini. Ketika daya mati, nilai kalibrasi referensi akan dihapus dari memori dan Anda harus mengkalibrasi sistem lagi.

Prototipe penulis:

Gambar Prototipe Irigasi Otomatis berbasis Arduino

Indikasi tingkat kelembaban tanah:

Setelah pompa dihidupkan, ini akan menampilkan waktu yang tersisa untuk mati (dalam detik).




Sepasang: 3 Sirkuit Perlindungan Alarm Laser Cerdas Berikutnya: Penjelasan Amplifier OCL