Аутоматско коло за наводњавање помоћу Ардуина

Испробајте Наш Инструмент За Елиминисање Проблема





У овом посту ћемо изградити аутоматизовани систем за наводњавање водом за малу башту користећи ардуино и сензор влажности тла.

Увод

Предложени систем може надгледати ниво влаге у тлу а када влага у тлу падне испод унапред задате вредности, 12В једносмерна пумпа ће се активирати у унапред одређеном временском периоду. Статус нивоа влаге у тлу и друге функције система могу се пратити путем ЛЦД екрана од 16 к 2 у реалном времену.



Процењује се да широм света постоји 3 билиона стабала, што је више од броја стартова у нашој матичној галаксији Млечни пут који се процењује на 100 милијарди. Али, ми људи посечемо безброј дрвећа како бисмо испунили своје основне потребе према луксузним потребама.

Мајка природа је дизајнирана са системом повратних информација, када врста уведе огромне поремећаје, природа ће је избрисати из постојања.



Људска бића су вековима несвесно узнемиравала природу, али, чак и након великог развоја науке и технологије, стопа узнемиравања се није смањила.

Климатске промене су један од примера, када постане довољно драстично, наша врста неће дуго трајати.
Овај пројекат чини бебин корак напред да би сачувао природу, он може да наводњава вашу дивну малу башту без икакве људске интеракције. Сада ћемо ући у техничке детаље пројекта.

Сензор влаге у земљишту:

Срце пројекта је сензор влажности тла која може осетити количину влаге у земљишту. Сензор даје аналогну вредност и микроконтролер ће их интерпретирати и приказати садржај влаге.

Постоје две електроде, које ће се уметнути у тло. Електроде су повезане на плочицу која се састоји од упоредне ИЦ, ЛЕД, улазног и излазног пина отпорника тримера.

Илустрација сензора влажности тла:

модул сензора влажности тла

Има 4 + 2 пина, 2 пина за повезивање електрода, а остатак од 4 пина су Вцц, ГНД, дигитални излаз и аналогни излаз. Користићемо само аналогни излазни пин за детекцију влаге у тлу.
Будући да не користимо дигитални излазни пин, нећемо користити уграђени отпорник тримера за калибрацију сензора.

То је закључило сензор влажности тла.

Шематски приказ:

Круг је прилично једноставан и прилагођен почетницима. Шема је подељена на два дела истог пројекта како би се смањила забуна док се пројекат дуплира.

ЛЦД шема ожичења за систем аутоматског наводњавања

Горња шема је ЛЦД на ардуино ожичење. Поседује 10К потенциометар за подешавање контраста ЛЦД екрана.

Систем за аутоматско наводњавање заснован на микроконтролеру

Ево остатка шеме која се састоји од сензора влаге у тлу, 12В једносмерне пумпе, калибрираног дугмета и напајања од 12В (1 - 2 амп). Молимо користите напајање најмање веће од 500мА тренутне номиналне снаге 12В једносмерне пумпе.

МОСФЕТ ИРФ540Н (или било који еквивалентни Н-канал) користи се уместо БЈТ-ова за побољшање укупне ефикасности напајања система.

Пумпа ће вам заливати малу башту, побрините се да увек имате на располагању довољну количину воде.

Програмски код:

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

Како се калибрише овај систем за аутоматско наводњавање:

• Са завршеним хардвером, уметните електроду на тло, негде на путу протока воде.
• Сада промените две вредности у програму 1) Количина времена која ће бити потребна за заливање свих биљака (у минутама). 2) Ниво прага испод којег ардуино покреће пумпу. Можете да подесите само проценат вредности 80, 70, 60, 50, 40, 30, 20.

инт Тиме = 5 // Подесите време у минутима
инт праг = 30 // праг поставити само у процентима 80, 70, 60, 50, 40, 30, 20.

Промените вредности у програму.

• Пошаљите код на ардуино и напајајте коло. Приказаће се „сипајте воду и притисните калибрирај“. Сада морате ручно залијевати врт до довољног нивоа.
• Након заливања врта, притисните дугме за калибрацију. Ово ће одредити проводљивост електричне енергије у земљишту са потпуно влагом и снимити референтну вредност.
• Сад је систем спреман за опслуживање ваше мале баште. Покушајте да додате резервну енергију за овај пројекат. Када напајање престане, референтна калибрисана вредност биће избрисана из меморије и мораћете поново да калибришете систем.

Ауторски прототип:

Слика прототипа аутоматског наводњавања заснована на Ардуину

Индикација нивоа влаге у тлу:

Једном када је пумпа УКЉУЧЕНА, приказаће се преостало време за искључивање (у секундама).




Претходно: 3 паметна ласерска заштитна круга Следеће: Објашњено ОЦЛ појачало