آردوینو آموزش آردوینو خانه هوشمند

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

running-capacitive-soil-moisture-with-arduino-and-display-digispark
نوشته شده توسط پریسا پوربلورچیان

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

راه اندازی سنسور رطوبت خاک خازنی Capacitive با آردوینو - دیجی اسپارک

 


معرفی سنسور رطوبت خاک خازنی


سنسور رطوبت خاک خازنی، رطوبت سطح خاک را اندازه گیری می‌کند. بر خلاف دیگر سنسورهای رایج برای اندازه گیری رطوبت خاک این سنسور از روکش مناسب برای جلوگیری از زنگ زدگی و آسیب پذیری در برابر خاک و آب ساخته شده است. سنسور دارای رگولاتور ولتاژ روی برد است که میتواند در ولتاژهای ۳٫۳ تا ۵ ولت کار کند و به همین دلیل با اکثریت میکروکنترلرها قابلیت تست و راه اندازی دارد.

ویژگی های سنسور رطوبت خاک خازنی

  • ولتاژ کاری از  ۳٫۳ تا ۵ ولت dc
  • ولتاژ خروجی آنالوگ: از صفر تا ۳ ولت dc
  • دارای کابل سه سیمه برای ارتباط با میکروکنترلر
  • اینترفیس: PH2.0-3P

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

معرفی سنسور رطوبت خاک خازنی Capacitive - دیجی اسپارک

 

بخش اصلی سنسور به صورت زیر طراحی شده است.

عملکرد سنسور رطوبت خاک خازنی Capacitive - دیجی اسپارک

 

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

 


اتصال سنسور رطوبت خاک به آردوینو


سنسور رطوبت خاک دارای سه پایه VCC, GND, AOUT است. ورودی سنسور آنالوگ است و از پایه های آنالوگ بردهای آردوینو برای ارتباط استفاده می‌شود.

اتصال سنسور رطوبت خاک خازنی Capacitive - دیجی اسپارک

 

اتصالات سنسور رطوبت خاک خازنی capacitive - دیجی اسپارک

 


کد آردوینو نمایش درصد رطوبت خاک


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

void setup()
 { 
  Serial.begin(9600);
 }
 
 void loop()
 {
  Serial.println(analogRead(A0));
   delay(100);
 }

 

دیتای دریافتی از سنسور در محیط خشک به صورت زیر است:

دریافت اطلاعات سنسور رطوبت خاک خازنی در محیط خشک - دیجی اسپارک

 

دیتای دریافتی از سنسور در محیط دارای رطوبت به عنوان مثال در خاک مرطوب به صورت زیر است:

دریافت دیتای سنسور رطوبت خاک خازنی در محیط مرطوب - دیجی اسپارک

 

در قدم بعدی کد را بهینه می‌کنیم. با استفاده از یک فرمول ریاضی و به کمک تابع map در ریاضی مقدار دریافتی از سنسور را به درصد رطوبت تبدیل می‌کنیم. در خط ۱ و خط ۲ برنامه مقدار دریافتی از سنسورها را مطایق با تصویر بالا جایگذاری کنید. سپس در حلقه Loop توسط تابع map برای دریافت رطوبت خاک یک نگاشت انجام میدهیم.

 

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

 

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

 

محاسبه درصد رطوبت خاک با سنسور Capacitive - دیجی اسپارک

 


اتصال سنسور رطوبت خاک به پمپ آب


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

  • در برد آردوینو UNO, Meg2560 از پایه های دیجیتال برای اتصال به IN رله میتوان استفاده کرد.
  • در برد Nodemcu و Wemos از GPIO ها مانند D1, D2 میتوان استفاده کرد.

استفاده از رله برای کنترل هوشمند رطوبت خاک - دیجی اسپارک

 به همین ترتیب می‌توانید اتصالات ورودی را انجام داده و تغذیه ۵ ولت و GND را از برد میکروکنترلر از جمله آردوینو، Nodemcu, Wemos تامین کنید. هر رله دارای سه پایه NO, COM و NC است.

  • پایه COM: پایه مشترک Common است.
  • پایه NC به معنای نرمالی کلوز یا همان پیش فرض بسته است و زمانی استفاده می‌شود که بخواهید رله به صورت پیش فرض بسته باشد. به این صورت که جریان در مدار وجود دارد و در صورت ارسال سیگنال از آردوینو مدار باز شده و جریان را متوقف می‌کند.
  • پایه NO به معنای نرمالی اوپن یا همان پیش فرض باز است و به این معنی که رله همیشه باز است و مدار باز بوده و پس از ارسال سیگنال از آردوینو مدار بسته خواهد شد.

اتصال سنسور رطوبت خاک به پمپ و رله کنترل هوشمند - دیجی اسپارک

 


کد آردوینو اتصال پمپ به سنسور رطوبت خاک


 

 const int dry = 538; // مقدار سنسور در محیط خشک
 const int wet = 282; // مقدار سنسور در محیط مرطوب
 const int Relay = 13;
  void setup()
 { 
   Serial.begin(9600);
   pinMode(Relay, OUTPUT);
 }

 void loop()
 {
   int sensorVal = analogRead(A0);
 
   int percentageHumidity = map(sensorVal, wet, dry, 100, 0); 
   Serial.print(percentageHumidity);
   Serial.println("%");

    if(percentageHumidity < 30){
    digitalWrite(Relay, LOW);}
    else if (percentageHumidity > 70){
    digitalWrite(Relay, HIGH);
   }
 
  
   delay(100);
 }


 


تحلیل کد آردوینو


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

تشخیص خشکی خاک با سنسور رطوبت خاک خازنی - دیجی اسپارک

 

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

 

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

 


نحوه ی نمایش رطوبت خاک بر روی LCD کاراکتری


برای نمایش رطوبت خاک بر روی ال سی دی کاراکتری نیاز به یک ال سی دی و استفاده از کتابخانه های Liquidcrystal داریم. کتابخانه مورد استفاده برای ال سی همان Liquidcrystal است که در بخش اول آموزش روش نصب آن نوشته و آموزش داده شده است. با توجه به اینکه آخرین آپدیت این آموزش در مهرماه ۹۹ انجام شده است، آخرین ورژن معرفی شده برای کتابخانه liquidCrystal ورژن ۱٫۰٫۷ است.

نحوه ی نمایش رطوبت خاک بر روی LCD کاراکتری - دیجی اسپارک

 

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

اتصال LCD کاراکتری به برد آردوینو - دیجی اسپارک

 

نکات اتصال

  • جهت تنظیم شدت نور صفحه یا همان کنتراست از پایه V0 در ال سی دی استفاده می‌شود. برای اتصال پایه V0 به برد آردوینو به یک مقاومت ۱۰ کیلو نیاز داریم. یک سر مقاومت را به پایه V0 وصل کرده و به GND برد آردوینو اتصال دهید. سر دیگر مقاومت ۱۰ کیلو بدون اتصال باشد.
  • پیشنهاد می‌شود پایه شماره ۱۵ یا همان A آند را به از یک سر به مقاومت ۲۲۰ اهم اتصال داده و سپس به ۵ ولت آردوینو متصل کنید.
  • انتخاب پایه های دیتا بین D0 تا D7 آزادنه است و فقط به ساختار آن در کدنویسی دقت کنید:
LiquidCrystal(rs,en,d4,d5,d6,d7)
LiquidCrystal(rs,rw,en,,d4,d5,d6,d7)
LiquidCrystal(rs,en,d0,d1,d2,d3,d4,d5,d6,d7)
LiquidCrystal(rs,rw,en,d0,d1,d2,d3,d4,d5,d6,d7)

 


کد آردوینو نمایش رطوبت خاک بر روی ال سی دی کاراکتری


 

 #include <LiquidCrystal.h>
 const int rs = 12, en = 11, d4 = 5, d5 = 4, d6 = 3, d7 = 2;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);
 
 
 const int dry = 538; // مقدار سنسور در محیط خشک
 const int wet = 282; // مقدار سنسور در محیط مرطوب
 const int Relay = 13;
  void setup()
 { 
   Serial.begin(9600);
   pinMode(Relay, OUTPUT);
    lcd.begin(16, 2);
 }

 void loop()
 {
   int sensorVal = analogRead(A0);
 
   int percentageHumididy = map(sensorVal, wet, dry, 100, 0); 
   Serial.print(percentageHumididy);
   Serial.println("%");
    lcd.setCursor(0, 0);
    lcd.print(percentageHumididy);
    lcd.setCursor(3, 0);
    lcd.print("%");
    

    if(percentageHumididy < 30){
    digitalWrite(Relay, LOW);
    Serial.println("Pump On");
     lcd.setCursor(0, 30);
    lcd.print("Pump On");
    
    }
    else if (percentageHumididy > 70){
    digitalWrite(Relay, HIGH);
       Serial.println("Pump Off");
        lcd.setCursor(0, 10);
    lcd.print("Pump Off");
   }
 
  
   delay(100);
 }


 

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

کد آردوینو نمایش رطوبت خاک خازنی بر روی ال سی دی کاراکتری - دیجی اسپارک

 


نحوه ی نمایش رطوبت خاک بر روی نمایشگر OLED


برای نمایش رطوبت خاک بر روی نمایشگر OLED به یک نمایشگر OLED با تراشه SSD1306 و فراخوانی کتابخانه ها نیاز داریم. در اکثر ماژول OLED ها ماژول به صورت ۴ پایه و نهایتا ۶ پایه هستند. برای اتصال به میکروکنترلر فقط به ۴ پایه SDA, SCL, VCC, GND نیاز داریم. با توجه به نوع برد مورد استفاده همانند جدول زیر اتصالات را انجام دهید:

نحوه ی نمایش رطوبت خاک بر روی نمایشگر OLED - دیجی اسپارک

 

جهت استفاده از ماژول‌های OLED با درایور SSD1306 به کتابخانه Adafruit_SSD1306 نیاز داریم. لینک دانلود کتابخانه در ادامه در بخش دانلود قرار گرفته شده است. در مرحله اول کتابخانه را از لینک زیر دانلود کرده و پس از دانلود به مسیر گفته شده انتقال دهید: ماژول نمایشگر OLED با پروتکل ارتباطی I2C درایور SSD13

پس از دانلود کتابخانه را کپی کرده و همانند زیر عمل کنید:

  • وارد پوشه Document شده و سپس فایل آردوینو Arduino را باز کنید.
  • وارد پوشه Library شده و فایل دانلود شده را کپی کنید.
  • سپس از حالت زیپ خارج کرده و در صورت داشتن اسم master در انتهای اسم فایل آن را پاک کنید.

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

کتابخانه مورد نیاز در آردوینو - دیجی اسپارک

 

در ادامه به کتابخانه Adafruit_gfx نیاز داریم. همانند تصویر زیر کتابخانه را فیلتر و نصب کنید:

نصب کتابخانه Adafruit_gfx در آردوینو - دیجی اسپارک

 

حال پس از این بخش کتابخانه های مورد نیاز نصب شده است.

 


کد آردوینو نمایش رطوبت بر روی OLED


 

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

 

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

 

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

آموزش کامل سنسور رطوبت خاک خازنی با آردوینو - دیجی اسپارک

 


وسایل مورد نیاز


سنسور رطوبت خاک خازنی 

برد آردوینو 

رله 

پمپ آب

کابل

 

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

 

درباره نویسنده

پریسا پوربلورچیان

تولید کننده محتوا / کارشناس IOT

زندگی یعنی پژوهش و فهمیدن چیزی جدید

تلاشم بر این است تجربیاتم در زمینه IOT‌ را به بهترین شکل با شما در میان بگذارم.

تبادل نظر و رفع عیب با ثبت دیدگاه

۱۲ دیدگاه

    • با سلام
      سپاس از همراهی شما کاربر گرامی
      امیدوارم مفید واقع شده باشد.

  • از سنسورهای خوبی که برای گلخانه هوشمند استفاده کردم ممنون بابت این کد که هر دو نمایشگر رو گفتید.

  • درود تیم دیجی اسپارکِ.
    منظورتان از خاص و یکتا بودن این آموزش را متوجه نمیشم.
    بنده چند وقت پیش با یک گوگل کردن ساده در چندین سایت خارجی آموزش راه‌اندازی این پروژه را بهمراه کدها و توضیح کدها مشاهده کردم.
    در چند ورژن با آردوینو و Esp و همچنین پنل‌های OLed و LCD آموزش داده بود.
    منظورم این نیست که شما از آن سایت‌ها کپی کرده‌اید. از عکسها و کدها مشخص است کار خودتان است.
    اما این پروژه خاص و یونیک نیست.
    بیش از ده‌ها یوتیوبر و وبسایت‌های تخصصی این سبک پروژه را حتی با قابلیتهای بیشتر برای اکثر میکروکنترلرها و نمایشگرها آنهم رایگان آموزش داده‌اند.

    • با سلام
      ضمن تشکر از همراهی شما، بخش اصلی این آموزش مخصوص اعضا است که شما به آن دسترسی ندارید. این پروژه توسط تیم ما توسعه داده شده است و سورس آنرا در هیچ کجایی نمیتوانید یافت کنید.
      شاد و پیروز باشید