Automaattinen kastelupiiri Arduinoa käyttämällä

Automaattinen kastelupiiri Arduinoa käyttämällä

Tässä viestissä aiomme rakentaa automaattisen veden kastelujärjestelmän pieneen puutarhaan käyttämällä arduinoa ja maaperän kosteusanturia.

Johdanto

Ehdotettu järjestelmä voi seurata maaperän kosteustasoa ja kun maaperän kosteus laskee alle asetetun arvon, 12 V DC-pumppu laukaisee ennalta määrätyn ajan. Maaperän kosteustason tilaa ja järjestelmän muita toimintoja voidaan seurata reaaliajassa 16 x 2 LCD-näytöllä.



Maapallolla on arvioitu olevan 3 biljoonaa puuta, mikä on enemmän kuin Linnunradan koti galaksissamme alkamismäärä, jonka arvioidaan olevan 100 miljardia. Mutta me ihmiset leikkaamme lukemattomia puita täyttääkseen perustarpeemme ylellisyystarpeisiin.



Äiti Luonto on suunniteltu palautejärjestelmällä, kun laji aiheuttaa valtavia häiriöitä, luonto pyyhkii lajin pois olemassaolosta.

Ihmiset häiritsivät luontoa tietämättään vuosisatojen ajan, mutta huolimatta tieteen ja tekniikan suuresta kehityksestä häiriöt eivät ole laskeneet.



Ilmastonmuutos on yksi esimerkkejä, kun se muuttuu tarpeeksi dramaattiseksi, lajimme ei kestä kauan.
Tämä projekti ottaa vauvan askeleen eteenpäin luonnon säilyttämiseksi, se voi kastella ihastuttavan pienen puutarhasi ilman ihmisen vuorovaikutusta. Mennään nyt projektin teknisiin yksityiskohtiin.

Maaperän kosteusanturi:

Projektin ydin on maaperän kosteusanturi joka tunnistaa maaperän kosteuspitoisuuden. Anturi antaa analogisen arvon ja mikro-ohjain tulkitsee nämä arvot ja näyttää kosteuspitoisuuden.

On kaksi elektrodia, jotka työnnetään maaperään. Elektrodit on kytketty piirilevyyn, joka koostuu vertailupiiristä, LEDistä, trimmerivastuksen tulo- ja lähtöpinnoista.



Kuva maaperän kosteusanturista:

maaperän kosteusanturimoduuli

Siinä on 4 + 2 nastaa, 2 nastaa elektrodiliitäntää varten ja loput 4 nastaa ovat Vcc, GND, digitaalilähtö ja analogilähtö. Aiomme käyttää vain analogista lähtöliitintä maaperän kosteuden tunnistamiseen.
Koska emme käytä digitaalista ulostulotappia, emme käytä sisäistä trimmerivastusta anturin kalibrointiin.

Nyt maaperän kosteusanturi päättelee.

Kaaviokuva:

Piiri pidetään melko yksinkertaisena ja aloittelijaystävällisenä. Kaavio on jaettu saman projektin kahteen osaan sekaannusten vähentämiseksi samalla, kun kopioidaan projektia.

LCD-kytkentäkaavio automaattiselle kastelujärjestelmälle

Yllä oleva kaavio on LCD-näyttö Arduinoon johdotus. Mukana on 10K-potentiometri nestekidenäytön kontrastin säätämiseksi.

Mikrokontrolleripohjainen automaattinen kastelujärjestelmä

Tässä on muu kaavio, joka koostuu maaperän kosteusanturista, 12 V DC-pumpusta, kalibrointipainikkeesta ja 12 V (1-2 A) virtalähteestä. Käytä virtalähdettä, joka on vähintään yli 500 mA 12 V DC-pumpun nykyisestä nimellisarvosta.

MOSFET IRF540N: ää (tai mitä tahansa vastaavaa N-kanavaa) käytetään BJT: n sijaan järjestelmän yleisen energiatehokkuuden parantamiseksi.

Pumppu kastelee sinua pienessä puutarhassa, varmista, että sinulla on aina riittävästi vettä.

Ohjelmakoodi:

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

Kuinka kalibroida tämä automaattinen kastelujärjestelmä:

• Aseta elektrodi valmiilla laitteistolla maahan, jonnekin veden virtauksen tielle.
• Muuta nyt kahta arvoa ohjelmassa. 1) Kaikkien kasvien kasteluun kuluva aika (minuutteina). 2) Kynnystaso, jonka alapuolella arduino laukaisee pumpun. Voit asettaa prosenttiosuudet vain 80, 70, 60, 50, 40, 30, 20.

int Aika = 5 // Aseta aika minuutteina
int kynnys = 30 // aseta kynnys vain prosentteina 80, 70, 60, 50, 40, 30, 20.

Muuta ohjelman arvoja.

• Lataa koodi arduinoon ja virtaa piiri. Se näyttää 'kaada vettä ja paina kalibroi'. Nyt sinun on kasteltava puutarhasi manuaalisesti riittävälle tasolle.
• Puutarhan kastelun jälkeen paina kalibrointipainiketta. Tämä määrittää sähkön johtumisen täysin kosteessa maaperässä ja napsauttaa vertailuarvoa.
• Nyt järjestelmä on valmis palvelemaan pientä puutarhaa. Yritä lisätä virransyöttö tälle projektille. Kun virta katkeaa, kalibroitu vertailuarvo pyyhitään muistista ja järjestelmä on kalibroitava uudelleen.

Kirjoittajan prototyyppi:

Arduino-pohjainen automaattisen kastelun prototyyppikuva

Maaperän kosteustaso:

Kun pumppu on kytketty päälle, se näyttää jäljellä olevan sammutusajan (sekunteina).




Edellinen: 3 älykästä laserhälytyssuojapiiriä Seuraava: OCL-vahvistin selitetty