Avtomatsko namakalno vezje z uporabo Arduina

Avtomatsko namakalno vezje z uporabo Arduina

V tem prispevku bomo zgradili avtomatiziran sistem namakanja vode za majhen vrt z uporabo arduina in senzorja vlažnosti tal.



Uvod

Predlagani sistem lahko spremljati raven vlažnosti tal in ko vlaga tal pade pod prednastavljeno vrednost, se 12V DC črpalka sproži v vnaprej določenem časovnem obdobju. Stanje nivoja vlage v tleh in druge funkcije sistema lahko v realnem času spremljate prek 16 x 2 LCD zaslona.

Ocenjuje se, da je po vsem svetu 3 bilijone dreves, kar je več od števila začetkov v naši domači galaksiji Mlečna cesta, ki naj bi bilo 100 milijard. Ljudje pa posekamo nešteto dreves, da bi zadovoljili svoje osnovne potrebe po luksuznih potrebah.





Mati narava je zasnovana s sistemom povratnih informacij, ko bo vrsta povzročila velike motnje, bo narava izbrisala vrsto.

Ljudje so stoletja nevede motili naravo, vendar se tudi po velikem razvoju znanosti in tehnologije stopnja motenj ni zmanjšala.



Podnebne spremembe so eden izmed primerov, ko postanejo dovolj drastične, naše vrste ne bodo dolgo zdržale.
Ta projekt naredi dojenčkov korak naprej, da ohrani naravo, lahko pa namaka vaš ljubki majhen vrt brez človekove interakcije. Zdaj pa pojdimo na tehnične podrobnosti projekta.

Senzor vlage v tleh:

Srce projekta je senzor vlažnosti tal ki lahko zaznajo količino vlage v tleh. Senzor odda analogno vrednost, mikrokrmilnik pa jih interpretira in prikaže vsebnost vlage.

Obstajata dve elektrodi, ki se vstavita v zemljo. Elektrode so povezane na vezje, sestavljeno iz primerjalne IC, LED, vhodnega in izhodnega zatiča trimernega upora.

Prikaz senzorja vlažnosti tal:

modul senzorja vlage v tleh

Ima 4 + 2 nožice, 2 nožice za priključitev elektrode, ostali 4 nožice pa so Vcc, GND, digitalni izhod in analogni izhod. Za zaznavanje vlažnosti tal bomo uporabili samo analogni izhodni zatič.
Ker ne uporabljamo digitalnega izhodnega zatiča, za umerjanje senzorja ne bomo uporabili vgrajenega trimernega upora.

To zaključuje senzor vlažnosti tal.

Shematski diagram:

Vezje je dokaj preprosto in prijazno do začetnikov. Shema je razdeljena na dva dela istega projekta, da se zmanjša zmeda ob podvajanju projekta.

Shema ožičenja LCD za sistem samodejnega namakanja

Zgornja shema je LCD na arduino ožičenje. Za nastavitev kontrasta LCD zaslona je na voljo 10K potenciometer.

Sistem za samodejno namakanje na osnovi mikrokrmilnika

Tu je preostala shema, ki jo sestavljajo senzor vlage v tleh, 12V DC črpalka, kalibrirni gumb in 12V (1 - 2 amp) napajalnik. Prosimo, uporabite napajalnik, ki je vsaj večji od 500 mA trenutne nazivne moči 12V enosmerne črpalke.

MOSFET IRF540N (ali kateri koli enakovreden N-kanal) se uporablja namesto BJT-jev za izboljšanje splošne energetske učinkovitosti sistema.

Črpalka vam bo zalivala majhen vrt, poskrbite, da bo vedno na voljo ustrezna količina vode.

Koda programa:

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

Kako umeriti ta samodejni namakalni sistem:

• S končano strojno opremo vstavite elektrodo na tla, nekje na poti vodnega toka.
• Zdaj spremenite dve vrednosti v programu 1) Čas, potreben za zalivanje vseh rastlin (v minutah). 2) Mejna vrednost, pod katero arduino sproži črpalko. Nastavite lahko samo vrednosti odstotkov 80, 70, 60, 50, 40, 30, 20.

int Time = 5 // Nastavitev časa v minutah
int prag = 30 // prag nastavimo samo v odstotkih 80, 70, 60, 50, 40, 30, 20.

Spremenite vrednosti v programu.

• Kodo naložite v arduino in napajajte vezje. Na zaslonu se bo prikazalo 'nalijte vodo in pritisnite umerjanje'. Zdaj morate vrt ročno zalivati ​​do zadostne ravni.
• Po zalivanju vrta pritisnite gumb za umerjanje. To bo določilo prevodnost električne energije v popolnoma vlažni zemlji in posnelo referenčno vrednost.
• Zdaj je sistem pripravljen za oskrbo vašega majhnega vrta. Poskusite dodati varnostno kopijo za ta projekt. Ko napajanje ne uspe, se referenčna umerjena vrednost izbriše iz pomnilnika in sistem boste morali znova umeriti.

Avtorjev prototip:

Slika prototipa samodejnega namakanja na osnovi Arduina

Navedba ravni vlage v tleh:

Ko je črpalka vklopljena, se prikaže preostali čas za izklop (v sekundah).




Prejšnja: 3 pametna laserska zaščitna vezja Naprej: OCL ojačevalec razložen