วงจรชลประทานอัตโนมัติโดยใช้ Arduino

ลองใช้เครื่องมือของเราเพื่อกำจัดปัญหา





ในโพสต์นี้เราจะสร้างระบบให้น้ำอัตโนมัติสำหรับสวนขนาดเล็กโดยใช้ Arduino และเซ็นเซอร์ความชื้นในดิน

บทนำ

ระบบที่นำเสนอสามารถ ตรวจสอบระดับความชื้นในดิน และเมื่อความชื้นในดินต่ำกว่าค่าที่ตั้งไว้ปั๊ม 12V DC จะทำงานตามระยะเวลาที่กำหนดไว้ล่วงหน้า สามารถตรวจสอบสถานะของระดับความชื้นในดินและฟังก์ชันอื่น ๆ ของระบบได้ผ่านจอ LCD 16 x 2 แบบเรียลไทม์



คาดว่ามีต้นไม้ 3 ล้านล้านต้นทั่วโลกซึ่งมากกว่าจำนวนต้นในกาแลคซีทางช้างเผือกในบ้านเราซึ่งคาดว่าจะมีถึง 1 แสนล้านต้น แต่มนุษย์เราตัดต้นไม้จำนวนนับไม่ถ้วนเพื่อตอบสนองความต้องการขั้นพื้นฐานสำหรับความต้องการที่หรูหรา

แม่ธรรมชาติได้รับการออกแบบด้วยระบบตอบรับเมื่อสิ่งมีชีวิตหนึ่งเกิดการรบกวนครั้งใหญ่ธรรมชาติจะกำจัดสิ่งมีชีวิตออกไป



มนุษย์รบกวนธรรมชาติโดยไม่รู้ตัวมานานหลายศตวรรษ แต่ถึงแม้จะมีการพัฒนาทางวิทยาศาสตร์และเทคโนโลยีอย่างมาก แต่อัตราการรบกวนก็ยังไม่ลดลง

การเปลี่ยนแปลงสภาพภูมิอากาศเป็นหนึ่งในตัวอย่างเมื่อการเปลี่ยนแปลงอย่างรุนแรงพอสายพันธุ์ของเราจะอยู่ได้ไม่นาน
โครงการนี้จะนำลูกน้อยไปข้างหน้าเพื่อรักษาธรรมชาติสามารถล้างสวนเล็ก ๆ ที่สวยงามของคุณได้โดยไม่ต้องมีปฏิสัมพันธ์กับมนุษย์ ตอนนี้มาดูรายละเอียดทางเทคนิคของโครงการกัน

เซ็นเซอร์ความชื้นในดิน:

หัวใจสำคัญของโครงการคือ เซ็นเซอร์ความชื้นในดิน ซึ่งสามารถตรวจจับปริมาณความชื้นในดินได้ เซ็นเซอร์จะให้ค่าอนาล็อกและไมโครคอนโทรลเลอร์จะแปลค่าเหล่านั้นและแสดงปริมาณความชื้น

มีขั้วไฟฟ้าสองขั้วซึ่งจะถูกแทรกลงในดิน อิเล็กโทรดเชื่อมต่อกับแผงวงจรซึ่งประกอบด้วย IC เปรียบเทียบ, LED, ขาอินพุตและเอาต์พุตตัวต้านทานทริมเมอร์

ภาพประกอบเซ็นเซอร์ความชื้นในดิน:

โมดูลเซ็นเซอร์ความชื้นในดิน

มีพิน 4 + 2 พิน 2 พินสำหรับการเชื่อมต่ออิเล็กโทรดและส่วนที่เหลือของ 4 พินคือ Vcc, GND, เอาต์พุตดิจิตอลและเอาต์พุตอนาล็อก เราจะใช้พินเอาต์พุตอนาล็อกเพื่อตรวจจับความชื้นในดินเท่านั้น
เนื่องจากเราไม่ได้ใช้พินเอาต์พุตดิจิตอลเราจะไม่ใช้ตัวต้านทานทริมเมอร์ออนบอร์ดเพื่อปรับเทียบเซ็นเซอร์

ตอนนี้สรุปได้ว่าเซ็นเซอร์ความชื้นในดิน

แผนภาพ:

วงจรนี้ค่อนข้างเรียบง่ายและเป็นมิตรกับผู้เริ่มต้น แผนผังแบ่งออกเป็นสองส่วนของโครงการเดียวกันเพื่อลดความสับสนในขณะที่ทำซ้ำโครงการ

แผนผังสายไฟ LCD สำหรับระบบชลประทานอัตโนมัติ

แผนผังข้างต้นคือไฟล์ LCD เป็น arduino เดินสาย โพเทนชิออมิเตอร์ 10K มีไว้เพื่อปรับความคมชัดของจอ LCD

ไมโครคอนโทรลเลอร์ที่ใช้ระบบชลประทานอัตโนมัติ

ส่วนที่เหลือของแผนผังประกอบด้วยเซ็นเซอร์ความชื้นในดินปั๊ม 12V DC ปุ่มปรับเทียบและแหล่งจ่ายไฟ 12V (1-2 แอมป์) โปรดใช้แหล่งจ่ายไฟอย่างน้อยมากกว่า 500mA ของพิกัดกระแสของปั๊ม 12V DC

MOSFET IRF540N (หรือ N-channel ที่เทียบเท่า) ใช้แทน BJT เพื่อปรับปรุงประสิทธิภาพการใช้พลังงานโดยรวมของระบบ

ปั๊มจะรดน้ำสวนขนาดเล็กให้แน่ใจว่าคุณมีน้ำเพียงพอเสมอ

รหัสโปรแกรม:

//-------------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) ระดับธรณีประตูด้านล่างซึ่ง arduino เรียกปั๊ม คุณสามารถตั้งค่าเปอร์เซ็นต์ 80, 70, 60, 50, 40, 30, 20 เท่านั้น

int Time = 5 // ตั้งเวลาเป็นนาที
int threshold = 30 // กำหนด threshold เป็นเปอร์เซ็นต์ 80, 70, 60, 50, 40, 30, 20 เท่านั้น

เปลี่ยนค่าในโปรแกรม

•อัปโหลดรหัสไปยัง arduino และเปิดวงจร จะแสดงข้อความ 'เทน้ำและกดปรับเทียบ' ตอนนี้คุณต้องรดน้ำสวนด้วยตนเองให้อยู่ในระดับที่เพียงพอ
•หลังจากรดน้ำสวนแล้วให้กดปุ่มปรับเทียบ สิ่งนี้จะกำหนดการนำไฟฟ้าในดินที่มีความชื้นเต็มที่และถ่ายภาพค่าอ้างอิง
•ตอนนี้ระบบพร้อมให้บริการสวนขนาดเล็กของคุณแล้ว โปรดลองเพิ่มการสำรองไฟสำหรับโครงการนี้ เมื่อไฟฟ้าล้มเหลวค่าที่ปรับเทียบอ้างอิงจะถูกลบออกจากหน่วยความจำและคุณจะต้องปรับเทียบระบบอีกครั้ง

ต้นแบบของผู้แต่ง:

ภาพต้นแบบชลประทานอัตโนมัติที่ใช้ Arduino

การบ่งชี้ระดับความชื้นในดิน:

เมื่อปั๊มเปิดเครื่องจะแสดงเวลาที่เหลือในการปิดเครื่อง (เป็นวินาที)




คู่ของ: 3 วงจรป้องกันสัญญาณเตือนด้วยเลเซอร์อัจฉริยะ ถัดไป: อธิบาย OCL Amplifier