Automatinė drėkinimo grandinė naudojant „Arduino“

Išbandykite Mūsų Instrumentą, Kaip Pašalinti Problemas





Šiame įraše mes sukursime automatizuotą vandens drėkinimo sistemą mažam sodui, naudodami arduino ir dirvožemio drėgmės jutiklį.

Įvadas

Siūloma sistema gali stebėti dirvožemio drėgmės lygį o kai dirvožemio drėgmė nesiekia nustatytos vertės, 12 V nuolatinės srovės siurblys suveiks iš anksto nustatytą laiką. Dirvožemio drėgmės būklę ir kitas sistemos funkcijas galima stebėti 16 x 2 skystųjų kristalų ekranu realiuoju laiku.



Apskaičiuota, kad visame pasaulyje yra 3 trilijonai medžių, o tai yra daugiau nei starto skaičius mūsų namų Paukščių Tako galaktikoje, kuris, kaip manoma, siekia 100 mlrd. Bet mes, žmonės, nupjauname begalę medžių, kad patenkintume savo pagrindinius poreikius iki prabangos.

Motina Gamta sukurta naudojant grįžtamojo ryšio sistemą, kai rūšis įneš didžiulius trikdžius, gamta išnaikins rūšį iš egzistencijos.



Žmonės šimtmečius nesąmoningai trikdė gamtą, tačiau net ir labai išsivysčius mokslo ir technologijų srityje, sutrikimų dažnis nesumažėjo.

Klimato kaita yra vienas iš pavyzdžių, kai ji tampa pakankamai drastiška, mūsų rūšys ilgai neišlaikys.
Šis projektas žengia kūdikį į priekį, kad išsaugotų gamtą, jis gali drėkinti jūsų mielą mažą sodą be jokios žmonių sąveikos. Dabar pereikime prie techninių projekto detalių.

Dirvožemio drėgmės jutiklis:

Projekto esmė yra dirvožemio drėgmės jutiklis kuris gali nujausti drėgmės kiekį dirvožemyje. Jutiklis pateikia analoginę vertę, o mikrovaldiklis interpretuos tas vertes ir parodys drėgmės kiekį.

Yra du elektrodai, kurie bus įterpti į dirvą. Elektrodai yra prijungti prie grandinės plokštės, susidedančios iš palyginamojo IC, LED, trimerio rezistoriaus įvesties ir išvesties kaiščių.

Dirvožemio drėgmės jutiklio iliustracija:

dirvožemio drėgmės jutiklio modulis

Jame yra 4 + 2 kaiščiai, 2 kontaktai elektrodui prijungti, o likusieji 4 kaiščiai yra Vcc, GND, skaitmeninis išėjimas ir analoginis išėjimas. Dirvožemio drėgmei pajusti naudosime tik analoginį išvesties kaištį.
Kadangi nenaudojame skaitmeninio išvesties kaiščio, jutikliui kalibruoti nenaudosime borto žoliapjovės rezistoriaus.

Tai daro išvadą apie dirvožemio drėgmės jutiklį.

Schema:

Trasa yra gana paprasta ir draugiška pradedantiesiems. Schema yra padalinta į dvi to paties projekto dalis, kad būtų sumažinta painiava ir kopijuojant projektą.

Skystųjų kristalų ekranų schema automatinei drėkinimo sistemai

Pirmiau pateikta schema yra Skystųjų kristalų ekranas į „Arduino“ laidų. Skystųjų kristalų ekrano kontrastui reguliuoti yra 10K potenciometras.

Mikrokontrolerio pagrindu sukurta automatinė drėkinimo sistema

Čia yra likusi schema, sudaryta iš dirvožemio drėgmės jutiklio, 12 V nuolatinės srovės siurblio, kalibravimo mygtuko ir 12 V (1-2 amperų) maitinimo šaltinio. Prašome naudoti maitinimo šaltinį, kurio srovė ne mažesnė kaip 500mA, esant dabartinei 12 V nuolatinės srovės siurblio nominaliai.

MOSFET IRF540N (arba bet koks lygiavertis N kanalas) naudojamas vietoj BJT, siekiant pagerinti bendrą sistemos energijos vartojimo efektyvumą.

Siurblys palaistys jūsų mažą sodą, įsitikinkite, kad visada turite pakankamai vandens.

Programos kodas:

//-------------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

Kaip sukalibruoti šią automatinę drėkinimo sistemą:

• Užbaigus elektrinę įrangą, įkiškite elektrodą į gruntą, kažkur vandens tekėjimo kelyje.
• Dabar pakeiskite dvi programos vertes. 1) Laikas užtruks visų augalų laistymą (minutėmis). 2) Slenkstinis lygis, žemiau kurio arduino suveikia siurblį. Procentines vertes galite nustatyti tik 80, 70, 60, 50, 40, 30, 20.

int Laikas = 5 // Nustatykite laiką minutėmis
int slenkstis = 30 // nustatykite ribą tik procentais 80, 70, 60, 50, 40, 30, 20.

Pakeiskite programos vertes.

• Įkelkite kodą į „arduino“ ir įjunkite grandinę. Jame bus rodoma „užpilkite vandenį ir paspauskite kalibruoti“. Dabar jūs turite rankiniu būdu palaistyti savo sodą iki pakankamo lygio.
• Laistę sodą, paspauskite kalibravimo mygtuką. Tai nustatys elektros laidumą visiškai drėgname dirvožemyje ir užfiksuos pamatinę vertę.
• Dabar sistema yra pasirengusi aptarnauti jūsų mažą sodą. Pabandykite pridėti šio projekto atsarginę kopiją. Kai nutrūksta maitinimas, kalibruota etaloninė vertė bus ištrinta iš atminties, ir jūs turėsite dar kartą kalibruoti sistemą.

Autoriaus prototipas:

„Arduino“ pagrįstas automatinio drėkinimo prototipo vaizdas

Dirvožemio drėgmės rodiklis:

Įjungus siurblį, jis parodys likusį išjungimo laiką (sekundėmis).




Pora: 3 išmaniosios lazerinės signalizacijos apsaugos grandinės Kitas: paaiškinta OCL stiprintuvas