Automātiska apūdeņošanas shēma, izmantojot Arduino

Izmēģiniet Mūsu Instrumentu Problēmu Novēršanai





Šajā amatā mēs izveidosim automatizētu ūdens apūdeņošanas sistēmu mazdārziņam, izmantojot arduino un augsnes mitruma sensoru.

Ievads

Piedāvātā sistēma var uzraudzīt augsnes mitruma līmeni un, kad augsnes mitrums nokrītas zem iestatītās vērtības, 12 V līdzstrāvas sūknis tiks iedarbināts uz iepriekš noteiktu laika periodu. Augsnes mitruma līmeņa stāvokli un citas sistēmas funkcijas reāllaikā var kontrolēt, izmantojot 16 x 2 LCD displeju.



Tiek lēsts, ka visā pasaulē ir 3 triljoni koku, kas ir vairāk nekā mūsu Piena Ceļa galaktikas sākuma skaits, kas tiek lēsts 100 miljardu apmērā. Bet mēs, cilvēki, nozāģējam neskaitāmu koku skaitu, lai apmierinātu mūsu pamatvajadzības līdz luksusa vajadzībām.

Dabas māte ir veidota ar atgriezeniskās saites sistēmu, kad suga ievieš milzīgus traucējumus, daba iznīcinās sugu no eksistences.



Cilvēki gadsimtiem ilgi neapzināti traucēja dabai, taču pat pēc lielas zinātnes un tehnoloģijas attīstības traucējumu līmenis nav samazinājies.

Klimata pārmaiņas ir viens no piemēriem, kad tās kļūst pietiekami krasas, un mūsu suga nebūs ilga.
Šis projekts sper mazuļa soli uz priekšu, lai saglabātu dabu, tas var apūdeņot jūsu jauko mazdārziņu bez cilvēka mijiedarbības. Tagad pievērsīsimies projekta tehniskajai informācijai.

Augsnes mitruma sensors:

Projekta sirds ir augsnes mitruma sensors kas var nojaust mitruma satura daudzumu augsnē. Sensors izsniedz analogo vērtību, un mikrokontrolleris interpretēs šīs vērtības un parādīs mitruma saturu.

Ir divi elektrodi, kas tiks ievietoti augsnē. Elektrodi ir savienoti ar shēmu, kas sastāv no salīdzinājuma IC, LED, trimmera rezistora ieejas un izejas tapām.

Augsnes mitruma sensora ilustrācija:

augsnes mitruma sensora modulis

Tam ir 4 + 2 tapas, 2 tapas elektrodu savienošanai un pārējās 4 tapas ir Vcc, GND, digitālā izeja un analogā izeja. Augsnes mitruma noteikšanai mēs izmantosim tikai analogo izejas tapu.
Tā kā mēs neizmantojam digitālo izejas tapu, sensora kalibrēšanai neizmantosim iebūvēto trimmera rezistoru.

Tagad ar to tiek secināts augsnes mitruma sensors.

Shematiska diagramma:

Ķēde tiek turēta diezgan vienkārša un draudzīga iesācējiem. Shēma ir sadalīta divās tā paša projekta daļās, lai mazinātu neskaidrības, vienlaikus dublējot projektu.

LCD elektroinstalācijas shēma automātiskai apūdeņošanas sistēmai

Iepriekš minētā shēma ir LCD arduino elektroinstalācija. LCD displeja kontrasta pielāgošanai ir paredzēts 10K potenciometrs.

Uz mikrokontrolleru balstīta automātiskā apūdeņošanas sistēma

Šeit ir pārējā shēma, kas sastāv no augsnes mitruma sensora, 12 V līdzstrāvas sūkņa, kalibrēšanas spiedpogas un 12 V (1-2 ampēru) barošanas avota. Lūdzu, izmantojiet strāvas padevi, kas ir vismaz lielāka par 500 mA 12 V līdzstrāvas sūkņa pašreizējā nominālā.

BJT vietā MOSFET IRF540N (vai jebkuru citu līdzvērtīgu N kanālu) izmanto, lai uzlabotu sistēmas vispārējo enerģijas efektivitāti.

Sūknis apūdeņos jūsu mazdārziņu, pārliecinieties, ka jums vienmēr ir pieejams pietiekams ūdens daudzums.

Programmas kods:

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

Kā kalibrēt šo automātisko apūdeņošanas sistēmu:

• Ar pabeigtu aparatūru ievietojiet elektrodu augsnē, kaut kur ūdens plūsmas ceļā.
• Tagad mainiet abas programmas vērtības: 1) Laiks, kas vajadzīgs visu augu laistīšanai (minūtēs). 2) Sliekšņa līmenis, zem kura arduino iedarbina sūkni. Procentuālās vērtības var iestatīt tikai 80, 70, 60, 50, 40, 30, 20.

int Laiks = 5 // Iestatiet laiku minūtēs
int slieksnis = 30 // iestatiet slieksni tikai procentos 80, 70, 60, 50, 40, 30, 20.

Mainiet programmas vērtības.

• Augšupielādējiet kodu arduino un ieslēdziet ķēdi. Tas parādīs “ielej ūdeni un nospiediet kalibrēt”. Tagad jums ir manuāli jālaista dārzs līdz pietiekamam līmenim.
• Pēc dārza laistīšanas nospiediet kalibrēšanas pogu. Tas noteiks elektroenerģijas vadīšanu pilnībā mitrās augsnēs un sānsiena atsauces vērtību.
• Tagad sistēma ir gatava kalpot jūsu mazdārziņam. Lūdzu, mēģiniet pievienot enerģijas rezerves šim projektam. Kad strāva nedarbosies, kalibrētā atsauces vērtība tiks izdzēsta no atmiņas, un jums būs jākalibrē sistēma vēlreiz.

Autora prototips:

Arduino bāzes automātiskās apūdeņošanas prototipa attēls

Augsnes mitruma līmeņa norāde:

Kad sūknis ir ieslēgts, tas parādīs atlikušo izslēgšanās laiku (sekundēs).




Pāri: 3 viedās lāzera trauksmes aizsardzības ķēdes Nākamais: izskaidrots OCL pastiprinātājs