راه اندازی حسگر رطوبت خاک | وقتی اصطلاح “باغ هوشمند” را میشنوید، یکی از اولین چیزهایی که به ذهنتان میآید، سیستمی است که سطح رطوبت خاک را کنترل میکند و بهطور خودکار مقدار لازم آب را به گیاهان تأمین میکند.
با این سیستم، گیاهان تنها در زمانی که نیاز دارند آبیاری میشوند و از آبیاری بیش از حد یا کم نیز جلوگیری میشود.
اگر میخواهید چنین سیستمی را بسازید، بدون شک به یک حسگر رطوبت خاک نیاز خواهید داشت. در ادامه با آموزشگاه خانه رباتیک ایران همراه باشید.
راه اندازی حسگر رطوبت خاک با آردوینو
حسگر رطوبت خاک چگونه کار میکند؟
حسگر رطوبت خاک به روشی ساده عمل میکند.
پروب شکلدار مانند چنگال با دو هادی در معرض، به عنوان یک مقاومت متغیر عمل میکند (مشابه با پتانسیومتر) که مقاومت آن با محتوای رطوبت خاک تغییر میکند.
این مقاومت بهطور معکوس با رطوبت خاک تغییر میکند:
- هرچه آب بیشتری در خاک باشد، رسانایی بهتر و مقاومت کمتری داریم.
- هرچه آب کمتری در خاک باشد، رسانایی کمتر و در نتیجه مقاومت بیشتری خواهیم داشت.
- حسگر بر اساس مقاومت یک ولتاژ خروجی تولید میکند که با اندازهگیری آن میتوانیم سطح رطوبت خاک را تعیین کنیم.
بررسی سختافزار حسگر روطوبت خاک
یک حسگر رطوبت خاک معمولاً شامل دو قسمت است.
پروب
حسگر شامل یک پروب شکلدار مانند چنگال با دو هادی در معرض است که در خاک یا هر مکانی که قرار است محتوای رطوبت اندازهگیری شود، وارد میشود.
همانطور که قبلاً گفته شد، این پروب بهعنوان یک مقاومت متغیر عمل میکند که مقاومت آن بر اساس رطوبت خاک تغییر میکند.
ماژول حسگر رطوبت خاک با آردوینو
علاوه بر این، حسگر شامل یک ماژول الکترونیکی است که پروب را به آردوینو متصل میکند.
این ماژول بر اساس مقاومت پروب یک ولتاژ خروجی تولید میکند که در پین خروجی آنالوگ (AO) موجود است.
همین سیگنال با یک مقایسهگر دقت بالا (LM393) تغذیه میشود که آن را دیجیتال کرده و در پین خروجی دیجیتال (DO) در دسترس قرار میدهد.
این ماژول شامل یک پتانسیومتر برای تنظیم حساسیت خروجی دیجیتال (DO) است.
شما میتوانید از آن برای تنظیم یک آستانه استفاده کنید، بهطوری که وقتی سطح رطوبت خاک از آستانه تجاوز کند، ماژول خروجی ۰ و در غیر این صورت خروجی ۱ داشته باشد.
این تنظیمات برای فعال کردن یک اقدام هنگام رسیدن به یک آستانه خاص بسیار مفید است. به عنوان مثال، اگر سطح رطوبت در خاک از یک آستانه خاص تجاوز کند، میتوانید یک رله را برای شروع آبیاری گیاه فعال کنید.
دکمه را در جهت ساعتگرد بچرخانید تا حساسیت افزایش یابد و در جهت خلاف حرکت ساعت بچرخانید تا کاهش یابد.
این ماژول همچنین شامل دو LED است. LED قدرت زمانی روشن میشود که ماژول روشن باشد و LED وضعیت زمانی روشن میشود که سطح رطوبت خاک از مقدار آستانه عبور کند.
پینهای حسگر رطوبت خاک
حسگر رطوبت خاک استفاده بسیار سادهای دارد و تنها به چهار پین برای اتصال نیاز دارد.
– AO (خروجی آنالوگ) ولتاژ خروجی آنالوگ را متناسب با سطح رطوبت خاک تولید میکند، بنابراین سطح بالاتر منجر به ولتاژ بالاتر و سطح پایینتر منجر به ولتاژ پایینتر خواهد شد.
– DO (خروجی دیجیتال) نشان میدهد که آیا سطح رطوبت خاک در حد مجاز است یا خیر. D0 زمانی LOW میشود که سطح رطوبت از مقدار آستانه عبور کند (همانطور که با پتانسیومتر تنظیم شده است) و در غیر این صورت HIGH خواهد بود.
– VCC قدرت را به حسگر تأمین میکند. توصیه میشود که حسگر با ولتاژی بین ۳.۳V تا ۵V تأمین شود. لطفاً به خاطر داشته باشید که خروجی آنالوگ با توجه به ولتاژ تأمینشده به حسگر تغییر میکند.
– GND پین زمین است.
آزمایش ۱ – اندازهگیری رطوبت خاک با استفاده از خروجی آنالوگ (A0)
در آزمایش اول ما، خروجی آنالوگ را میخوانیم تا سطح رطوبت خاک را تخمین بزنیم.
اتصالات حسگر رطوبت خاک
بیایید حسگر رطوبت خاک را به آردوینو متصل کنیم.
ابتدا با تأمین برق حسگر شروع میکنیم. برای این کار میتوانید پین VCC ماژول را به پین ۵V آردوینو متصل کنید.
با این حال، یکی از معضلات شناختهشده با این حسگرها این است که عمر کوتاهتری دارند زیرا به طور مداوم در معرض رطوبت هستند. علاوه بر این، تأمین پیوسته قدرت به حسگر هنگام دفن شدن در خاک سرعت خوردگی را بهطور قابلملاحظهای افزایش میدهد.
برای جلوگیری از این امر، توصیه میشود که حسگر فقط هنگام گرفتن خوانش روشن شود.
یک راه ساده برای انجام این کار این است که پین تغذیه حسگر را به یک پین دیجیتال در آردوینو متصل کرده و بهدلخواه آن را به HIGH یا LOW تنظیم کنید. همچنین، قدرت کل مصرفی توسط ماژول (با روشن بودن هر دو LED) حدود ۸ میلیآمپر است، بنابراین تأمین برق ماژول از یک پین دیجیتال مشکل ندارد. بنابراین، ما پین VCC را به پین دیجیتال #۷ آردوینو متصل خواهیم کرد.
در نهایت، پین A0 را به پین ADC A0 آردوینو متصل کنید.
اتصالات در تصویر زیر نشان داده شده است.
یافتن مقادیر آستانه
برای تخمین سطح رطوبت خاک، مقادیر خروجی حسگر خود را زمانی که خاک تا حد امکان خشک است و زمانی که کاملاً اشباع شده است، ثبت کنید.
به خاطر داشته باشید که حسگر شما بسته به نوع خاکی که استفاده میکنید ممکن است حساسیت بیشتری یا کمتری داشته باشد. همچنین، مواد معدنی حل شده در آب ناشی از کودها و منابع دیگر میتوانند بر خروجی حسگر تأثیر بگذارند.
فقط کافیست که کد زیر را اجرا کرده و خوانشهای خود را بگیرید.
۱ ۲ ۳ ۴ ۵ ۶ ۷ ۸ ۹ ۱۰ ۱۱ ۱۲ ۱۳ ۱۴ ۱۵ ۱۶ ۱۷ ۱۸ ۱۹ ۲۰ ۲۱ ۲۲ ۲۳ ۲۴ ۲۵ ۲۶ ۲۷ ۲۸ ۲۹ ۳۰ ۳۱ ۳۲ ۳۳ ۳۴ ۳۵ ۳۶ ۳۷ ۳۸ ۳۹ ۴۰ ۴۱ ۴۲ ۴۳ |
/* Change these values based on your calibration values */ #define soilWet 500 // Define max value we consider soil 'wet' #define soilDry 750 // Define min value we consider soil 'dry' // Sensor pins #define sensorPower 7 #define sensorPin A0 void setup() { pinMode(sensorPower, OUTPUT); // Initially keep the sensor OFF digitalWrite(sensorPower, LOW); Serial.begin(۹۶۰۰); } void loop() { //get the reading from the function below and print it int moisture = readSensor(); Serial.print("Analog Output: "); Serial.println(moisture); // Determine status of our soil if (moisture < soilWet) { Serial.println("Status: Soil is too wet"); } else if (moisture >= soilWet && moisture < soilDry) { Serial.println("Status: Soil moisture is perfect"); } else { Serial.println("Status: Soil is too dry - time to water!"); } delay(۱۰۰۰); // Take a reading every second for testing // Normally you should take reading perhaps once or twice a day Serial.println(); } // This function returns the analog soil moisture measurement int readSensor() { digitalWrite(sensorPower, HIGH); // Turn the sensor ON delay(۱۰); // Allow power to settle int val = analogRead(sensorPin); // Read the analog value form sensor digitalWrite(sensorPower, LOW); // Turn the sensor OFF return val; // Return analog moisture value } |
زمانی که کد را اجرا میکنید، باید خوانشهایی مشابه مقادیر زیر مشاهده کنید:
- هنگامی که خاک خشک است. (حدود ۸۵۰)
- زمانی که خاک کاملاً اشباع شده است. (حدود ۴۰۰)
این آزمایش ممکن است نیاز به کمی آزمایش و خطا داشته باشد. پس از دریافت خوانشها، میتوانید از آنها به عنوان آستانهای برای راهاندازی یک عمل استفاده کنید.
راه اندازی حسگر رطوبت خاک
کد زیر سطح رطوبت خاک را با استفاده از مقادیر آستانه زیر تخمین میزند:
۱ ۲ ۳ ۴ ۵ ۶ ۷ ۸ ۹ ۱۰ ۱۱ ۱۲ ۱۳ ۱۴ ۱۵ ۱۶ ۱۷ ۱۸ ۱۹ ۲۰ ۲۱ ۲۲ ۲۳ ۲۴ ۲۵ ۲۶ ۲۷ ۲۸ ۲۹ ۳۰ ۳۱ ۳۲ ۳۳ ۳۴ ۳۵ ۳۶ ۳۷ ۳۸ ۳۹ ۴۰ ۴۱ ۴۲ ۴۳ |
/* Change these values based on your calibration values */ #define soilWet 500 // Define max value we consider soil 'wet' #define soilDry 750 // Define min value we consider soil 'dry' // Sensor pins #define sensorPower 7 #define sensorPin A0 void setup() { pinMode(sensorPower, OUTPUT); // Initially keep the sensor OFF digitalWrite(sensorPower, LOW); Serial.begin(۹۶۰۰); } void loop() { //get the reading from the function below and print it int moisture = readSensor(); Serial.print("Analog Output: "); Serial.println(moisture); // Determine status of our soil if (moisture < soilWet) { Serial.println("Status: Soil is too wet"); } else if (moisture >= soilWet && moisture < soilDry) { Serial.println("Status: Soil moisture is perfect"); } else { Serial.println("Status: Soil is too dry - time to water!"); } delay(۱۰۰۰); // Take a reading every second for testing // Normally you should take reading perhaps once or twice a day Serial.println(); } // This function returns the analog soil moisture measurement int readSensor() { digitalWrite(sensorPower, HIGH); // Turn the sensor ON delay(۱۰); // Allow power to settle int val = analogRead(sensorPin); // Read the analog value form sensor digitalWrite(sensorPower, LOW); // Turn the sensor OFF return val; // Return analog moisture value } |
- کمتر از ۵۰۰: خیلی مرطوب است
- ۵۰۰ تا ۷۵۰: محدوده هدف است
- بیشتر از ۷۵۰: به اندازه کافی خشک است که نیاز به آبیاری دارد
راه اندازی حسگر رطوبت خاک آزمایش دوم – اندازهگیری رطوبت خاک با استفاده از خروجی دیجیتال (D0)*
در آزمایش دوم، از خروجی دیجیتال استفاده خواهیم کرد تا تعیین کنیم آیا سطح رطوبت خاک در محدوده قابل قبول قرار دارد یا خیر.
اتصالات حسگر رطوبت خاک
ما از مدار آزمایش قبل استفاده مجدد خواهیم کرد. به سادگی اتصال به پین ADC را قطع کرده و پین D0 ماژول را به پین دیجیتال ۸ آردوینو متصل کنید.
تصویر زیر اتصالات را نشان میدهد.
تنظیم آستانه
ماژول دارای یک پتانسیومتر داخلی برای تنظیم آستانه سطح رطوبت است که بالاتر از آن ماژول خروجی LOW میدهد و LED وضعیت روشن میشود.
برای تنظیم آستانه، پروب را در خاک قرار دهید زمانی که گیاه شما به آبیاری نیاز دارد و پتانسیومتر را به سمت عقربههای ساعت بچرخانید تا LED وضعیت روشن شود. سپس، پتانسیومتر را به حالت معکوس بچرخانید تا زمانی که LED خاموش شود.
این همه چیزی است که باید انجام دهید؛ ماژول شما اکنون آماده استفاده است.
کد آردوینو راه اندازی حسگر رطوبت خاک
اکنون، کد زیر را به آردوینو خود بارگذاری کنید.
۱ ۲ ۳ ۴ ۵ ۶ ۷ ۸ ۹ ۱۰ ۱۱ ۱۲ ۱۳ ۱۴ ۱۵ ۱۶ ۱۷ ۱۸ ۱۹ ۲۰ ۲۱ ۲۲ ۲۳ ۲۴ ۲۵ ۲۶ ۲۷ ۲۸ ۲۹ ۳۰ ۳۱ ۳۲ ۳۳ ۳۴ ۳۵ ۳۶ ۳۷ ۳۸ ۳۹ |
// Sensor pins #define sensorPower 7 #define sensorPin 8 void setup() { pinMode(sensorPower, OUTPUT); // Initially keep the sensor OFF digitalWrite(sensorPower, LOW); Serial.begin(۹۶۰۰); } void loop() { //get the reading from the function below and print it int val = readSensor(); Serial.print("Digital Output: "); Serial.println(val); // Determine status of our soil moisture situation if (val) { Serial.println("Status: Soil is too dry - time to water!"); } else { Serial.println("Status: Soil moisture is perfect"); } delay(۱۰۰۰); // Take a reading every second for testing // Normally you shoul take reading perhaps every 12 hours Serial.println(); } // This function returns the analog soil moisture measurement int readSensor() { digitalWrite(sensorPower, HIGH); // Turn the sensor ON delay(۱۰); // Allow power to settle int val = digitalRead(sensorPin); // Read the analog value form sensor digitalWrite(sensorPower, LOW); // Turn the sensor OFF return val; // Return analog moisture value } |
شما باید خروجی مشابهی را در مانیتور سری مشاهده کنید.
[/fusion_text][/fusion_builder_column][/fusion_builder_row][/fusion_builder_container]
شعبه بابل: پل کارگر به سمت کشوری، روبروی ماکروویو، جنب فروشگاه جانبو
شعبه ساری: خیابان مهدیه، نبش بهمن شرقی