Mạch tưới tự động sử dụng Arduino

Mạch tưới tự động sử dụng Arduino

Trong bài đăng này, chúng tôi sẽ xây dựng một hệ thống tưới nước tự động cho khu vườn nhỏ sử dụng arduino và cảm biến độ ẩm của đất.

Giới thiệu

Hệ thống đề xuất có thể theo dõi độ ẩm của đất và khi độ ẩm của đất xuống dưới giá trị đặt trước, máy bơm DC 12V sẽ được kích hoạt trong khoảng thời gian xác định trước. Trạng thái độ ẩm của đất và các chức năng khác của hệ thống có thể được theo dõi thông qua màn hình LCD 16 x 2 trong thời gian thực.



Người ta ước tính rằng có 3 nghìn tỷ cây trên toàn cầu, nhiều hơn số lượng bắt đầu trong thiên hà Milky Way quê hương của chúng ta, ước tính là 100 tỷ. Nhưng, con người chúng ta chặt vô số cây để đáp ứng nhu cầu cơ bản cho đến nhu cầu xa xỉ.



Mẹ thiên nhiên được thiết kế với một hệ thống phản hồi, khi một loài gây ra những xáo trộn lớn, thiên nhiên sẽ xóa sổ loài đó khỏi sự tồn tại.

Con người đã vô tình làm xáo trộn thiên nhiên trong nhiều thế kỷ, nhưng ngay cả sau khi khoa học và công nghệ phát triển vượt bậc, tỷ lệ xáo trộn vẫn không giảm.



Biến đổi khí hậu là một trong những ví dụ, khi nó đủ mạnh thì loài người của chúng ta sẽ không tồn tại được lâu.
Dự án này là một bước tiến mới trong việc bảo tồn thiên nhiên, nó có thể tưới tiêu cho khu vườn nhỏ xinh xắn của bạn mà không cần bất kỳ sự tương tác nào của con người. Bây giờ chúng ta hãy đi vào chi tiết kỹ thuật của dự án.

Cảm biến độ ẩm của đất:

Trung tâm của dự án là cảm biến độ ẩm đất mà có thể cảm nhận lượng độ ẩm trong đất. Cảm biến đưa ra giá trị tương tự và bộ vi điều khiển sẽ giải thích các giá trị đó và hiển thị độ ẩm.

Có hai điện cực, sẽ được cắm vào đất. Các điện cực được kết nối với một bảng mạch gồm IC so sánh, đèn LED, các chân đầu vào và đầu ra của điện trở tông đơ.



Hình minh họa cảm biến độ ẩm của đất:

mô-đun cảm biến độ ẩm đất

Nó có 4 + 2 chân, 2 chân để kết nối điện cực và phần còn lại của 4 chân là Vcc, GND, đầu ra kỹ thuật số và đầu ra tương tự. Chúng tôi sẽ chỉ sử dụng chân đầu ra tương tự để cảm nhận độ ẩm của đất.
Vì chúng tôi không sử dụng chân đầu ra kỹ thuật số, chúng tôi sẽ không sử dụng điện trở của tông đơ trên bo mạch để hiệu chỉnh cảm biến.

Bây giờ, điều đó kết thúc cảm biến độ ẩm của đất.

Sơ đồ:

Mạch được giữ khá đơn giản và thân thiện với người mới bắt đầu. Sơ đồ được chia thành hai phần của cùng một dự án để giảm sự nhầm lẫn trong khi sao chép dự án.

Sơ đồ đi dây LCD cho Hệ thống tưới tiêu tự động

Sơ đồ trên là LCD sang arduino hệ thống dây điện. Một chiết áp 10K được cung cấp để điều chỉnh độ tương phản của màn hình LCD.

Hệ thống tưới tự động dựa trên vi điều khiển

Đây là phần còn lại của sơ đồ bao gồm cảm biến độ ẩm của đất, máy bơm DC 12V, nút nhấn hiệu chỉnh và nguồn điện 12V (1 - 2 amp). Vui lòng sử dụng nguồn điện ít nhất lớn hơn 500mA so với định mức hiện tại của máy bơm DC 12V.

MOSFET IRF540N (hoặc bất kỳ kênh N nào tương đương) được sử dụng thay cho BJT để cải thiện hiệu suất điện năng tổng thể của hệ thống.

Máy bơm sẽ tưới cho khu vườn nhỏ của bạn, đảm bảo bạn luôn có đủ lượng nước cần thiết.

Mã chương trình:

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

Cách hiệu chỉnh hệ thống tưới tự động này:

• Với phần cứng đã hoàn thiện, hãy cắm điện cực vào đất, ở nơi nào đó trên đường đi của dòng nước.
• Bây giờ thay đổi hai giá trị trong chương trình 1) Khoảng thời gian cần thiết để tưới tất cả các cây (tính bằng phút). 2) Mức ngưỡng dưới ngưỡng mà arduino kích hoạt máy bơm. Bạn chỉ có thể đặt các giá trị phần trăm 80, 70, 60, 50, 40, 30, 20.

int Time = 5 // Đặt thời gian tính bằng phút
int ngưỡng = 30 // chỉ đặt ngưỡng theo phần trăm 80, 70, 60, 50, 40, 30, 20.

Thay đổi các giá trị trong chương trình.

• Tải mã lên arduino và cấp nguồn cho mạch. Nó sẽ hiển thị “đổ nước và nhấn hiệu chỉnh”. Bây giờ bạn phải tưới nước thủ công cho khu vườn của bạn đến mức đủ.
• Sau khi tưới vườn, nhấn nút hiệu chỉnh. Điều này sẽ xác định sự dẫn điện trong đất ẩm hoàn toàn và chụp nhanh giá trị tham chiếu.
• Bây giờ hệ thống đã sẵn sàng phục vụ khu vườn nhỏ của bạn. Vui lòng thử thêm một nguồn dự phòng cho dự án này. Khi mất điện, giá trị đã hiệu chuẩn tham chiếu sẽ bị xóa khỏi bộ nhớ và bạn sẽ phải hiệu chỉnh lại hệ thống.

Nguyên mẫu của tác giả:

Hình ảnh nguyên mẫu tưới tự động dựa trên Arduino

Chỉ ra độ ẩm của đất:

Khi máy bơm được BẬT, nó sẽ hiển thị thời gian còn lại để tắt (tính bằng giây).




Một cặp: 3 mạch bảo vệ cảnh báo bằng laser thông minh Tiếp theo: Giải thích về Bộ khuếch đại OCL