Automaatne niisutusahel, kasutades Arduino

Proovige Meie Instrumenti Probleemide Kõrvaldamiseks





Selles postituses kavatseme arduino ja pinnase niiskuse anduri abil ehitada väikeaia jaoks automaatse vee niisutussüsteemi.

Sissejuhatus

Kavandatud süsteem võib jälgida mulla niiskustaset ja kui mulla niiskus langeb alla etteantud väärtuse, käivitatakse 12 V alalisvoolupump ettemääratud aja jooksul. Pinnase niiskustaseme olekut ja süsteemi muid funktsioone saab reaalajas jälgida 16 x 2 LCD-ekraaniga.



Hinnanguliselt on kogu maailmas 3 triljonit puud, mis on suurem kui meie koduse Linnutee galaktika algusarv, mis on hinnanguliselt 100 miljardit. Kuid meie, inimesed, lõikame loendamatul hulgal puid, et rahuldada oma põhivajadusi luksusvajaduste rahuldamiseks.

Emake loodus on loodud tagasiside süsteemiga, kui liik toob sisse tohutuid häireid, pühib loodus liigi olemasolust.



Inimesed häirisid loodust sajandeid teadmatult, kuid isegi pärast suurt teaduse ja tehnoloogia arengut pole häirete sagedus vähenenud.

Kliimamuutused on üks näide, kui see muutub piisavalt drastiliseks, ei pea meie liigid kaua vastu.
See projekt astub beebi looduse säilitamiseks sammu edasi, see võib niisutada teie armsat väikest aeda ilma inimeste suhtlemiseta. Nüüd tutvume projekti tehniliste üksikasjadega.

Pinnase niiskuse andur:

Projekti süda on mulla niiskuse andur mis tunneb niiskuse sisaldust mullas. Andur annab välja analoogväärtuse ja mikrokontroller tõlgendab neid väärtusi ja kuvab niiskusesisalduse.

Seal on kaks elektroodi, mis sisestatakse mulda. Elektroodid on ühendatud trükkplaadiga, mis koosneb komparaatori IC-st, LED-ist, trimmeri takisti sisend- ja väljundtappidest.

Pinnase niiskuse anduri illustratsioon:

mulla niiskuse anduri moodul

Sellel on 4 + 2 kontakti, 2 kontakti elektroodide ühendamiseks ja ülejäänud 4 kontakti on Vcc, GND, digitaalväljund ja analoogväljund. Mulla niiskuse tuvastamiseks kasutame ainult analoogväljundi tihvti.
Kuna me ei kasuta digitaalset väljundnõela, ei kasuta me anduri kalibreerimiseks rongisisest trimmeritakisti.

Nüüd järeldub see mullaniiskuse andurist.

Skemaatiline diagramm:

Ringrada hoitakse üsna lihtsana ja algajale sõbralikuna. Skeem on jagatud sama projekti kaheks osaks, et vähendada segadust projekti dubleerimise ajal.

LCD juhtmestiku skeem automaatse niisutussüsteemi jaoks

Ülaltoodud skeem on LCD arduinole juhtmestik. LCD-ekraani kontrastsuse reguleerimiseks on saadaval 10K potentsiomeeter.

Mikrokontrolleril põhinev automaatne niisutussüsteem

Siin on ülejäänud skeem, mis koosneb mulla niiskuse andurist, 12 V alalisvoolupumbast, kalibreerimisnupust ja 12 V (1 - 2 amp) toiteallikast. Palun kasutage toiteallikat, mis on vähemalt 500mA 12V DC pumba praegusest nimiväärtusest.

BJT-de asemel kasutatakse süsteemi üldise energiatõhususe parandamiseks MOSFET IRF540N (või mis tahes samaväärset N-kanalit).

Pump kastab teid väikesesse aeda, veenduge, et teil oleks alati piisavalt vett.

Programmi kood:

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

Selle automaatse niisutussüsteemi kalibreerimine:

• Pange elektrood koos komplekteeritud pinnaga mulda, kusagil veevoolu rajal.
• Nüüd muutke programmi kahte väärtust. 1) Kõigi taimede jootmiseks kuluv aeg (minutites). 2) Künnise tase, millest madalamal arduino pumba käivitab. Saate määrata protsendiväärtused ainult 80, 70, 60, 50, 40, 30, 20.

int Aeg = 5 // Määra aeg minutites
int künnis = 30 // määra künnis protsentides 80, 70, 60, 50, 40, 30, 20.

Muutke programmi väärtusi.

• Laadige kood üles arduinosse ja lülitage voolu. Sellel kuvatakse teade „valage vett ja vajutage kalibreerimist”. Nüüd peate aia käsitsi piisava tasemeni kastma.
• Pärast aia kastmist vajutage kalibreerimisnuppu. See määrab elektri juhtivuse täielikult niiskes pinnases ja viivitamatult kontrollväärtuse.
• Nüüd on süsteem teie väikese aia teenindamiseks valmis. Proovige selle projekti jaoks varukoopia lisada. Kui toide katkeb, pühitakse kalibreeritud võrdlusväärtus mälust välja ja peate süsteemi uuesti kalibreerima.

Autori prototüüp:

Arduino põhine automaatse niisutamise prototüübi pilt

Pinnase niiskustaseme näit:

Kui pump on sisse lülitatud, kuvatakse väljalülitamiseks järelejäänud aeg (sekundites).




Eelmine: 3 nutikat laseri alarmi kaitselülitust Järgmine: OCL-võimendi selgitatud