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

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

آشنایی با حسگر سنجش رطوبت یا Soil Moisture Sensor

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

و اما نگاشت یا رابطه‌ی بین سطح رطوبت خاک و آنچه حسگر اندازه گرفته چگونه است؟

حسگرهای سنجش رطوبت معمولاً عددی بین ۰ تا ۱۰۲۳ به عنوان خروجی اندازه‌گیری ارایه می‌کنند و این عدد به صورت زیر به رطوبت تبدیل می‌شود:

  • اگر عدد بیش از ۱۰۰۰ باشد، احتمالاً حسگر آزاد است و در خاک قرار نگرفته یا ارتباط با سنسور قطع شده است.
  • اگر عدد بیش از ۶۰۰ و کمتر از ۱۰۰۰ واحد باشد، خاک از نوع خشک و کم‌رطوبت است.
  • اگر عدد بین ۳۷۰ الی ۶۰۰ باشد، خاک مرطوب است.
  • اعداد کوچک‌تر از ۳۷۰ به معنی بسیار مرطوب بودن خاک هستند و در حقیقت ممکن است پروب‌ها درون آب فرو رفته باشند.

مشخصات حسگر و میکروکنترلر رطوبت خاک

در تصویر زیر دو بخش اصلی حسگر رطوبت‌سنجی را مشاهده می‌کنید. بخش اول Probes‌ یا پروب‌های حسگر است که عمل حس کردن رطوبت را انجام می‌دهند و بخش دوم برد میکروکنترلر MH Sensor Series است.

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

در واقع برد MH Sensor Series مثل یک مبدل آنالوگ به دیجیتال است، جریان الکتریکی را خوانده و به یک عدد تبدیل می‌کند. در صورت نیاز مقاومت قابل‌تنظیم برای تنظیم کردن مقدار مرجع حسگر پیش‌بینی شده است.

و اما کاربرد پین‌های برد:

  • A0 خروجی آنالوگ است.
  • D0 خروجی دیجیتال است.
  • GND یا گراند، به زمین یا ولتاژ صفر مدار متصل می‌شود.
  • VCC نیز به منبع تغذیه متصل می‌شود.

بنابراین هم می‌توانید از خروجی آنالوگ برای کنترل کردن ارزان و ساده استفاده کنید و هم می‌توانید از خروجی دیجیتال برای امور دقیق‌تر و پیچیده‌تر استفاده کنید. در حالت آنالوگ، حسگر عدد ۰ الی ۱۰۲۳ به برد می‌دهد و میکروکنترلر عدد را به صورت درصد یا به بیان دیگری عددی بین ۰ تا ۱۰۰ تبدیل می‌کند.

حالت آنالوگ رطوبت‌سنج

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

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

کد زیر بر اساس توضیحاتی است که در ابتدا ارایه کردیم، به عنوان مثال اگر عدد بیش از ۱۰۰۰ باشد، عبارت Sensor is not in the Soil or DISCONNECTED چاپ می‌شود که به معنی متصل نبودن حسگر یا در خاک نبودن آن است. به همین ترتیب برای حالت‌های مختلف عبارت‌های مختلف چاپ می‌شود.

void setup()
{
  Serial.begin(9600);
  pinMode(A0, INPUT);
}

void loop()
{
  int mois =
analogRead(A0);
  Serial.print(mois);
  Serial.print(" -
");

  if(mois >= 1000) {
Serial.println("Sensor is not in the Soil or DISCONNECTED");
  }

  if(mois < 1000
&& mois >= 600) { 
Serial.println("Soil is DRY");
  }

  if(mois < 600
&& mois >= 370) {
Serial.println("Soil is HUMID"); 
  }

  if(mois < 370) {
Serial.println("Sensor in WATER");
  }                                          
  delay(2000);
}

حالت دیجیتال رطوبت‌سنج

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

زمانی که عدد حسگر بیش از مقدار مرجع باشد، پین خروجی دیجیتال ولتاژ ۵ ولت دارد و LED روی برد روشن می‌شود و اگر مقدار کمتر باشد، خروجی دیجیتال ۰ ولتی است و لامپ LED روشن نمی‌شود.

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

int led_pin =13;
int sensor_pin =8;
void setup() {
  pinMode(led_pin, OUTPUT);
  pinMode(sensor_pin, INPUT);
}

void loop() {
  if(digitalRead(sensor_pin) == HIGH){
    digitalWrite(led_pin,
HIGH);
  }

 else {
    digitalWrite(led_pin, LOW);
    delay(1000);
  }
}