مجله اینترنتی تحلیلک

جمعه/ 10 فروردین / 1403
Search
Close this search box.
سیستم آبیاری اتوماتیک گل و گیاه

آموزش ساخت دستگاه آبیاری اتوماتیک به کمک آردوینو

در این مقاله روش ساخت یک سیستم آبیاری اتوماتیک به وسیله برد آردوینو آموزش داده شده است تا مصرف کننده بتواند با استفاده از آن در زمان مناسب به گیاهان آپارتمانی آب دهد.

آموزش ساخت دستگاه آبیاری اتوماتیک به کمک آردوینو

زندگی ماشینی امروز خیلی هم بد نیست. هر شخصی یک‌ گوشه از خانه خود را به گل و گیاه اختصاص داده است. البته این موضوع هم خیلی مهم است که گل و گیاه باید با توجه به رطوبت خاک آبیاری شوند.

امکان دارد زمانی که به مسافرت می ­رویم از شخص و یا اشخاصی درخواست کنیم تا در نبود ما به گیاهان ما آب دهند. شاید بعضی از ما این دسترسی و اطمینان را به کسی نداشته باشیم و ترجیح دهیم، از روش‌هایی مثل آبیاری با بطری قطره‌چکان و یا انتقال رطوبت به‌ وسیله دستمال آبیاری استفاده کنیم.

در سال‌های اخیر گلدان‌های هوشمند و یا لوازم آبیاری به کمک اینترنت اشیا معرفی‌ شده‌اند. این دستگاه‌ها کالای لوکسی بوده اند و قیمت بالایی دارند.

در این مقاله سعی داریم روش ساخت یک دستگاه آبیاری مکانیزه را به شما دوستان آموزش دهیم. دستگاه آبیاری به‌ وسیله یک میکرو کنترلر آردوینو و سنسور رطوبت نسبی خاک کار می‌کند. این سیستم کاملا متن‌باز است و می‌تواند به سنسور دما و رطوبت هوا و دیگر اقلام مجهز شود. همچنین می‌توان با پروتکل خاص بی‌نهایت گلدان را در زمان‌بندی مناسب مدیریت نمود.

 

تجهیزات لازم جهت ساخت

برد آردوینو یونو یک عدد

سنسور دوشاخه رطوبت خاک یک عدد

سنسور اندازه‌گیری سطح آب یک عدد

برد آمپلی‌فایر خطی LM 393 دو عدد

نمایشگر  LCD 2*16 با پروتکل I2C

تایمر مستقل RTC با پروتکل I2C

مدار رله تک و یا بیشتر ۲۵۰ ولت ۱۰ آمپر (با توجه به پمپ)

پمپ آب مستغرق و یا غیر مستغرق

لوله‌های انتقال آب

پیزو الکتریک بازر

۲ عدد ال ای دی سبز ۱۰ میلی‌متری

۱ عدد ال ای دی قرمز ۱۰ میلی‌متری

۱ عدد ال ای دی زرد ۱۰ میلی‌متری

۴ عدد مقاومت ۱۵۰ اهم یک‌چهارم واتی

مخزن آب

منبع تغذیه ۱۲ ولتی

سیم

لهیم و دیگر ملزومات نصب

 

اصول کارکرد

اساس کارکرد سیسم آبیاری اتوماتیک موردنظر بر طبق سنسورهای ورودی، مانیتورینگ‌ها و عملگرها طرح‌ ریزی‌ شده است. اطلاعات اصلی و لازم ورودی این سیستم مقدار رطوبت خاک گلدان مورد نظر است. این مقدار توسط سنسورهای آنالوگ دو شاخه دریافت می‌شود و بعد از تقویت سیگنال به پایه‌های آنالوگ میکرو کنترلر اطلاعات می‌دهد.

 

سنسور رطوبت خاک - آموزش ساخت دستگاه آبیاری اتوماتیک
سنسور رطوبت خاک

 

در سیستم کنترل این آبیاری یک الگوریتم لوپ تشکیل خواهد شد و بازه سیگنال آنالوگ به بازه عددی و دیجیتال تبدیل می‌شود. این عدد ورودی مبنای سیستم کنترل است و کنترلر مقدار را با مقدار تعیین‌ شده اولیه مقایسه می‌کند. اگر کمتر باشد به سیستم موردنظر دستور می‌دهد تا رسیدن به حد مطلوب آبیاری نماید. این دستور آبیاری با روشن شدن پمپ انجام می‌شود. برای قطع و وصل برق و خروج از برنامه یک تایمر مستقل در نظر گرفته‌ شده است تا در زمان‌بندی خللی ایجاد نشود.

پمپ آب آبیاری
پمپ آب آبیاری

برای اندازه‌گیری سطح مخزن از یک سنسور اندازه‌گیری سطح نیز استفاده‌ شده است، تا در صورت خالی بودن مخزن فرمان اخطار به مصرف‌ کننده صادر شود. فرمان نیز به‌ صورت سیگنال دیجیتال میکرو کنترلر به یک برد رله و سپس روشن و یا خاموش شدن پمپ خواهد بود.

سنسور مقاومتی اندازه گیری جریان
سنسور مقاومتی اندازه گیری جریان
برد رله فرمان - آموزش ساخت دستگاه آبیاری اتوماتیک
برد رله فرمان

آشنایی با تجهیزات

برد آردوینو یک میکرو کنترلر جامع است. این برد وظیفه اصلی دریافت، محاسبه، انتقال اطلاعات و فرمان‌ها و محل ذخیره داده‌هاست. این برد دارای ۸ پایه آنالوگ و ۱۶ پایه دیجیتال است.

سنسور اندازه‌گیر رطوبت خاک شامل دو صفحه رسانا است که با اختلاف ولتاژ حاصل از دو پایه مقدار رطوبت خاک را اندازه می‌گیرد. البته این مقدار اندک است و به یک برد تقویت آمپلی‌فایر نیازمند است. سنسور اندازه‌گیری سطح آب هم به یک برد مستقل نصب می‌شود.

برای اندازه‌گیری زمان و محاسبه آن می‌توان از یک برد RTC استفاده نمود. مزیت استفاده از این برد این است که در زمان قطع و وصل برق می‌تواند زمان محاسبه را بدون تغییر محاسبه نماید. البته این سیستم بر اساس زمان‌بندی و رطوبت خاک برنامه‌ریزی‌ شده است.

آموزش ساخت دستگاه آبیاری اتوماتیک - تایمر RTC
تایمر RTC

دسته‌بندی اطلاعات ورودی

در این سیستم آبیاری ورودی اصلی، خروجی سنسور رطوبت خاک است. وقتی خاک خشک شود، امپدانس زیاد خواهد بود و ۳۹۳LM مقدار زیادی را در خروجی نشان می­ دهد. هنگامی‌ که خاک مرطوب باشد، مقدار کمی در خروجی نشان داده خواهد شد.

سه محدوده برای سطح رطوبت در نظر گرفته‌ شده است.

برای محدوده خاک خیس: سنسور بین ۰ الی ۵۰۰ است.

برای محدوده خاک مرطوب: سنسور بین ۵۰۰ الی ۸۰۰ است.

برای محدوده خاک خشک: سنسور بین ۸۰۰ الی ۱۲۰۰ است.

روش انجام

پایه‌های مثبت و منفی سنسور رطوبت خاک را به برد آمپلی‌فایر وصل می‌کنیم. از برد آمپلی‌فایر خروجی آنالوگ را به پایه ۱ آنالوگ متصل می‌کنیم. آمپلی‌فایرها با ولتاژ ۳.۳ تا ۵ ولت کار خواهند نمود. سنسور اندازه‌گیر سطح آب را هم مانند سنسور رطوبت خاک به برد آردوینو وصل می‌کنیم. نمایشگر را به برد RTC و سپس به پایه‌های ۵ و ۶ آنالوگ متصل می‌نمایم. این نوع اتصال با توجه به پروتکل I2C آن امکان‌پذیر خواهد بود.

از پایه شماره ۶ دیجیتال را به پایه ورودی سیگنال برد رله متصل می‌نماییم. پایه شماره دیجیتال را به ورودی بازر متصل می‌کنیم. پایه‌های شماره ۳ تا ۵ را نیز بعد از اتصال به مقاومت به ال ای دی های موردنظر متصل می‌نماییم. برنامه موجود در انتها را نیز در آردوینو آپلود می‌نماییم.

سیستم آبیاری اتوماتیک گل و گیاه
سیستم آبیاری اتوماتیک گل و گیاه

 در انتها لوله‌های اتصال را به پمپ و گلدان متصل می‌نماییم.

/*
############################################################
# File: Arduino_Watering_sustem.ino
# Processor: Arduino UNO, MEGA ou Teensy++ 2.0
# Language: Wiring / C /Processing /Fritzing / Arduino IDE
#
# Objectives: Watering System – Irrigation
#
# Behavior: When the soil is dry,
#
#
#
# Author: Marcelo Moraes
# Date: 12/10/12
# place: Brazil, Sorocaba City
#
###############################################################

This project contains public domain code.
The modification is allowed without notice.

*/

// libraries definition
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include “RTClib.h”

// frequency musical notes
#define NOTE_C6 1047
#define NOTE_C3 131
#define NOTE_G3 196

// pins definition
int levelSensorPin = 0;
int moistureSensorPin = 1;
int audioPin = 2;
int soggyLEDPin = 3;
int moistsoilLEDPin = 4;
int drysoilLEDPin = 5;
int pumpLEDPin = 6;
int pumpPin = 7;

// variables
int levelSensorValue; // stores the level sensor values
int moistureSensorValue; // stores the moisture sensor values
int j = 0;

// system messages
const char *string_table[] =
{
” Welcome! =)”,
” Tank LOW level”,
” Dry soil”,
” Moist soil”,
” Soggy soil”,
“The water pump is on”,
” ArduinoByMyself”,
” Watering System”,
” Please wait!”
};

// objects definition
RTC_DS1307 RTC;
LiquidCrystal_I2C lcd(0x27,20,4);

void setup(){
// serial initialization
Serial.begin(9600);

// LCD initialization
lcd.init();
lcd.backlight(); // with Backlight
lcd.clear(); // clearscreen

// Wire initialization
Wire.begin();

// RTC initialization
RTC.begin();
if (!RTC.isrunning()){
// date and time adjust as the PC computer date and time
RTC.adjust(DateTime(__DATE__, __TIME__));
}

// Arduino pins initalization
pinMode(audioPin, OUTPUT);
pinMode(soggyLEDPin, OUTPUT);
pinMode(moistsoilLEDPin,OUTPUT);
pinMode(drysoilLEDPin,OUTPUT);
pinMode(pumpLEDPin,OUTPUT);
pinMode(pumpPin,OUTPUT);

// LCD initial messages
lcd.clear();
lcd.setCursor(0,0);
lcd.print(string_table[6]);
lcd.setCursor(0,1);
lcd.print(string_table[7]);
lcd.setCursor(0,3);
lcd.print(string_table[0]);
// initialization delay
delay(5000);
}

void loop(){

// RTC parameters definition
DateTime myRTC = RTC.now();
int H = myRTC.hour();
int M = myRTC.minute();
int S = myRTC.second();

// call Clock Function
//RightHour();

// reads the sensors
levelSensorValue = analogRead(levelSensorPin);
moistureSensorValue = analogRead(moistureSensorPin);

// if low water level: plays the low level alarm
if(levelSensorValue > 600){
// system messages
lcd.clear();
RightHour();
lcd.setCursor(0,3);
lcd.print(string_table[1]);
// plays the alarm sound
for(int i=0;i<2;i++){
tone(audioPin, NOTE_G3, 200);
delay(200);
tone(audioPin, NOTE_C3, 200);
delay(200);
noTone(audioPin);
}
}

// check the moisture range
if(moistureSensorValue >= 700){
// in case of dry soil:
// system messages
lcd.clear();
RightHour();
lcd.setCursor(0,3);
lcd.print(string_table[2]);
// lights up the correct LED
digitalWrite(drysoilLEDPin,HIGH);
digitalWrite(moistsoilLEDPin,LOW);
digitalWrite(soggyLEDPin,LOW);
// plays the alarm sound
tone(audioPin, NOTE_C6, 100);
delay(250);
noTone(audioPin);
}
if((moistureSensorValue < 700) && (moistureSensorValue >= 300)){
// in case of moist soil:
// system messages
lcd.clear();
RightHour();
lcd.setCursor(0,3);
lcd.print(string_table[3]);
// lights up the correct LED
digitalWrite(drysoilLEDPin,LOW);
digitalWrite(moistsoilLEDPin,HIGH);
digitalWrite(soggyLEDPin,LOW);
delay(250);
}
if(moistureSensorValue < 300){
// in case of soggy soil:
// system messages
lcd.clear();
RightHour();
lcd.setCursor(0,3);
lcd.print(string_table[4]);
// lights up the correct LED
digitalWrite(drysoilLEDPin,LOW);
digitalWrite(moistsoilLEDPin,LOW);
digitalWrite(soggyLEDPin,HIGH);
delay(100);
}

// if the soil is dry and if it is the right time: turn on the pump for 1 minute
if((H == 16) && (M == 50) && (S == 00)){
while(moistureSensorValue >= 700){
// system messages
lcd.clear();
RightHour();
lcd.setCursor(0,1);
lcd.print(string_table[8]);
lcd.setCursor(0,3);
lcd.print(string_table[5]);
// turn the pump on
digitalWrite(pumpPin,HIGH);
digitalWrite(pumpLEDPin,HIGH);
delay(10000);
// if the soil is not moist so far
// reads the moisture sensor once more
moistureSensorValue = analogRead(moistureSensorPin);
}
// turn the pump off
digitalWrite(pumpPin,LOW);
digitalWrite(pumpLEDPin,LOW);
}

}

// Real Time Clock Function
void RightHour()
{
DateTime Now = RTC.now();
String clock_date = ” Date: “;
String clock_hour = ” Time: “;

int _day = Now.day();
int _month = Now.month();
int _year = Now.year();

clock_date += fixZero(_day);
clock_date += “/”;
clock_date += fixZero(_month);
clock_date += “/”;
clock_date += _year;

int _hour = Now.hour();
int _minute = Now.minute();
int _second = Now.second();

clock_hour += fixZero(_hour);
clock_hour += “:”;
clock_hour += fixZero(_minute);
clock_hour += “:”;
clock_hour += fixZero(_second);

lcd.clear();
lcd.setCursor(0, 0);
lcd.print(clock_date);
lcd.setCursor(0, 1);
lcd.print(clock_hour);

delay(500);
}

String fixZero(int i)
{
String ret;
if (i < 10) ret += “0”;
ret += i;
return ret;
}

 

در این مقاله به آموزش ساخت دستگاه آبیاری اتوماتیک به کمک آردوینو پرداختیم. با آموزش های مختلف و متنوع با ما همراه باشید.

 

مجله اینترنتی تحلیلک

1 1 رای
امتیازدهی به مقاله
اشتراک در
اطلاع از
6 نظرات
قدیمی‌ترین
تازه‌ترین بیشترین رأی
بازخورد (Feedback) های اینلاین
مشاهده همه دیدگاه ها
فاطمه
3 سال قبل

سلام وقت بخیر
ببخشید در مورد این پروژه چند تا سوال داشتم از چه کسی باید راهنمایی بگیرم ممنون میشم کمکم کنید؟؟؟

فاطمه
2 سال قبل
پاسخ به  رسول لطفی

سلام
چرا وقتی سنسور خشکی خاک را تشخیص میدهد پمپ فعال نمیشود؟
کلا پمپ فعال هست
مشکل از چی هست؟
ممنون میشم راهنمایی کنید.

امین
3 سال قبل

سلام وقت بخیر. من چند تا سوال داشتم. میخواستم کدتون رو مستقیم بگیرم چون این جا ارور میده. ایمیل بنده
[email protected] هست

مهدی برجسته
2 سال قبل

سلام دوست عزیز من این دستگاه اتومات آبدهی به گلدان رو می خواستم سفارش بدهم برای ساخت کجا باید تماس بگیرم من از مشهد تماس می گیرم

6
0
افکار شما را دوست داریم، لطفا نظر دهید.x