آردوینو آردوینو Arduino Uno آموزش آردوینو پروژه های آردوینو

آموزش راه اندازی سنسور رطوبت HR202 با برد آردوینو Arduino

نوشته شده توسط پریسا پوربلورچیان

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

 


سنسور رطوبت HR202


سنسور مقاومتی HR202 جهت اندازه گیری رطوبت است. جهت خواندن دیتا از سنسور از پایه آنالوگ استفاده می‌کنیم. در حال حاضر این ماژول با دو مدل ۳ پایه و ۴ پایه معرفی شده است. درمدل ۳ پایه به ترتیب پایه ها VCC, GND, D0 و پایه ها در سنسور ۴ پایه VCC, GND, Analog, Digital است. بر روی ماژول یک مولتی ترن جهت تنظیم حساسیت سنسور قرار گرفته شده است. به محض اعمال ولتاژ به سنسور رطوبت اندازه گیری شده و قابل مشاهده است. مقادیر دریافتی سنسور با توجه به اینکه از ADC استفاده می‌کنیم، با توجه به نوع میکروکنترلر مورد استفاده متفاوت است و در صورتیکه از برد آردوینو UNO استفاده کنیم این عدد بین ۰ تا ۱۰۲۳ تغییر خواهد کرد. با تغییر حساسیت سنسور عدد اندازه گیری شده بین ۰ تا ۱۰۲۳ می‌باشد. ولتاژ ورودی سنسور ۳ تا ۵ ولت و رنج اندازه گیری رطوبت ۲۰ تا ۹۵ درصد است. دمای اندازه گیری شده بین ۰ تا ۶۰ درجه می‌باشد. بر روی ماژول دو ال ای دی قرار دارد که یکی برای نمایش ولتاژ اعمالی به سنسور و دیگری خروجی دیجیتال است که با رسیدن به بالاترین میزان خود سبز رنگ شده و روشن می‌شود. خروجی سنسور به صورت دیجیتال و آنالوگ توسط تراشه LM393 در دسترس است. با توجه به اینکه عملکرد سنسورهای رطوبت به صورت خطی است، جهت اندازه گیری رطوبت از فرمول زیر استفاده می‌شود.

Voltage = ((Arduino Value) / 1023) * 5

%RH = (Voltage – Zero Offset) / Slope

 در این آموزش با توجه به اینکه از برد آردوینو UNO و پایه آنالوگ استفاده می‌شود، ولتاژی که روی پایه آنالوگ می افتد برابر با ۴٫۹۹ ولت است که با تغییر پتانسیومتر قرار گرفته شده بر روی ماژول ولتاژ به صفر خواهد رسید. مقدار ولتاژ Zero offset و Slope در دیتاشیت سنسورهای رطوبت خاک نوشته شده است. جهت اعمال دقیق اعداد بایستی بتوانید اعداد دقیق را از دیتاشیت بخوانید. سپس در فرمول جایگذاری کنید.

 

سنسور رطوبت HR202 - دیجی اسپارک

 

 


برد آردوینو Arduino


برد آردوینو میکروکنترلر با قابلیت دسترسی به پورت های دیجیتال و آنالوگ و پروتکل‌های I2C و SPI است. در این آموزش از آردوینو Arduino مدل UNO استفاده شده است. برد آردوینو Arduino دارای تراشه Atmega328P است و با در اختیار داشتن پایه‌های کنترلی آنالوگ و دیجیتال I/O میتوان با سنسورهای مختلف ارتباط برقرار کرد. با در نظر گرفتن پروتکل ارتباطی، آن‌ها را راه اندازی و کدنویسی کرد. محیط برنامه نویسی IDE Arduino است که نباز به دانش برنامه نویسی C++ خواهد داشت. با انتقال کد به محیط برنامه نویسی و کامپایل کد پروژه آماده اجرا خواهد بود. مراحل نصب نرم افزار آردوینو Arduino در آموزش زیر نوشته و منتشر شده است. در صورتیکه تا به حال با برد آردوینو کار نکرده اید، ابتدا آموزش زیر را مطالعه و سپس مراحل بعدی را اجرا کنید. آموزش کار با برد آردوینو Arduino و نصب نرم افزار Arduino IDE همچنین به صورت مستقیم میتوانید نرم افزار آردوینو را از طریق لینک زیر دانلود کنید. مراحل نصب نرم افزار دقیقا مشابه دیگر نرم افزارهای کامپیوتری است.

لینک دانلود نرم افزار آردوینو

 

برد آردوینو uno - دیجی اسپارک

 

 


اتصال سنسور HR202 به آردوینو


سنسور رطوبت HR202 دارای دو مدل است. سنسور سفید رنگ در صورتیکه از مدل ۳ پایه استفاده می‌کنید اتصالات همانند زیر است.

  • پایه VCC سنسور HR202 را به پایه ۵ ولت آردوینو اتصال دهید.
  • پایه GND سنسور HR202 را به پایه GND اتصال دهید.
  • پایه D سنسور HR202 را به پایه آنالوگ A0 آردوینو اتصال دهید.

همچنین در صورتیکه از سنسور رطوبت hr202 آبی رنگ استفاده می‌کنید دارای  ۴ پایه است و تصالات به صورت زیر است.

  • پایه VCC سنسور HR202 را به پایه ۵ ولت آردوینو اتصال دهید.
  • پایه GND سنسور HR202 را به پایه GND اتصال دهید.
  • پایه A سنسور HR202 را به پایه A0 آنالوگ آردوینو اتصال دهید.
  • پایه D سنسور HR202 را به پایه ۲ آردوینو اتصال دهید.

 


خواندن ولتاژ آنالوگ Analog Voltage


در این بخش جهت یادگیری عمیق خواندن مقادیر ADC از پایه های آنالوگ آردوینو کد زیر را اجرا می‌کنیم. این کد به صورت اتوماتیک در کد اول محاسبه شده و مقدار نهایی در فرمول محاسبه رطوبت ذخیره و نمایش داده می‌شود. جهت محاسبه مقدار رطوبت خاک به صورت خطی در ابتدا به مقدار ولتاژ ADC نیاز داریم که توسط کد زیر پس از اتصال سنسور به پایه آنالوگ A0 قابل خواندن است. با اتصال پایه D سنسور رطوبت به پایه A0 آنالوگ آردوینو مقدار Voltage در سریال مانیتور نمایش داده می‌شود که این عدد بین ۰ تا ۴٫۹۹ متغیر است و با چرخاندن پتانسیومتر قرار گرفته شده بر روی ماژول مقدار قابل تغییر و مشاهده است.

void setup() {

  Serial.begin(9600);
}

void loop() {
 
  int sensorValue = analogRead(A0);
  float voltage = sensorValue * (5.0 / 1023.0);
 
  Serial.println(voltage);
}

سریال مانیتور آردوینو - دیجی اسپارک

 


کد آردوینو رطوبت سنج HR202


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

#include <LiquidCrystal.h>

#define Analog  A0  
#define Digital 2   
#define LED     13  

float adcValue = 0;
float voltage = 0;
float percentRH = 0;





LiquidCrystal lcd(12, 11, 5, 4,3, 2);  

//Global variable


void setup() {
 Serial.begin(9600);
  pinMode(LED, OUTPUT);
  pinMode(Digital, INPUT);
  pinMode(Analog, INPUT);
  digitalWrite(LED, LOW);  

  lcd.begin(20, 2);
 
  lcd.print("Light");
  lcd.setCursor(0,1);
  lcd.print("Sensor");
  delay(1000); 
  lcd.clear();
  lcd.print("Data:");
  lcd.setCursor(0,1); 
  lcd.print("Digital:");
}

void loop() {
  adcValue = analogRead(0); // Read voltage coming from sensor (adcValue will be between 0-1023)
  voltage = (adcValue/1023.0)*5.0; // Translate ADC value into a voltage value
  percentRH = (voltage-0.958)/0.0307; // Translate voltage into percent relative humidity

 // Print value
  Serial.print("%RH = ");
  Serial.println(percentRH,DEC); 
    lcd.setCursor(3, 0); 

  lcd.print(percentRH); 



  //lcd.print( adcValue); 
  lcd.print("   ");   
  
  //display digital status
  lcd.setCursor(3, 1);
  if(digitalRead(Digital) == 1) 
  {
    lcd.print("HIGH");
    digitalWrite(LED,HIGH);
  }
  else 
  {
    lcd.print("LOW "); 
    digitalWrite(LED,LOW);
  }
  delay(300);
}

 

 


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


نمایشگر ال سی دی کاراکتری جهت نمایش دیتا برای انواع میکروکنترلرها طراحی شده است. ال سی دی کاراکتری در ابعاد مختلف ارائه شده است که در این آموزش از مدل ۲۰×۲ استفاده می‌کنیم. WH2002A یک نمابشگر ال سی دی کاراکتری ۲۰X2 می‌باشد که از آی سی داخلی ST7066 در ساختار آن بهره می‌برد. رابط پیش فرض ال سی دی ۸۰۰ ۴/۸-bit موازی است. همچنین این مدل با آی سی RW1063 controller IC با پروتکل I2C و SPI در بازار موجود است و اتصالات و سیم کشی آن محدوتر خواهد شد. برعکس تمامی ال سی دی های گرافیکی در این مدل دو ردیف ۸ تایی در سمت راست ال سی دی برای لحیم کاری پایه ها در نظر گرفته شده است. آموزش استفاده از ال سی دی کاراکتری ۲۰×۲ در لینک زیر قرار گرفته شده است. قبل از شروع اتصالات را بررسی کنید.

آموزش راه اندازی ال سی دی کاراکتری ۲۰X2

 طبق جدول زیر اتصالات ال سی دی کاراکتری به برد آردوینو را انجام دهید.

 

ال سی دی 2x20 کاراکتری LCD - دیجی اسپارک

 


نصب کتابخانه LiquidCrystal


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

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

 


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


پس از انجام اتصالات و نصب کتابخانه liquidcrystal کد را Verify و سپس آپلود کنید. رطوبت بین بازه ۰ تا ۱۰۲۳ بر روی نمایشگر ال سی دی کاراکتری نمایش داده می‌شود و مقدار ولتاژ خروجی دیجیتال با حالت LOW , High نمایش داده می‌شود. در صورتیکه سنسور به بالاترین میزان خود در ولتاژ خروجی برسد، مقدار دیجیتال HIGH خواهد شد. در این برنامه با توجه به فرمولی که جهت محاسبه خطی رطوبت نوشته شده است، رطوبت اندازه گیری شده نمایش داده می‌شود. کد زیر کد نهایی پروژه است و با آپلود این کد رطوبت سنسور محاسبه شده و بر روی سریال مانیتور و ال سی دی کاراکتری نمایش داده می‌شود. تعریف مقادیر اولیه و ورودی ها به صورت زیر است.

#include <LiquidCrystal.h>

#define Analog  A0  
#define Digital 2   
#define LED     13  

float adcValue = 0;
float voltage = 0;
float percentRH = 0;





LiquidCrystal lcd(12, 11, 5, 4,3, 2);  

سپس در حلقه Loop دستور خواندن مقادیر از پایه آنالوگ و دریافت دیتا از فرمول خطی را خواهیم نوشت.

 // Print value
  Serial.print("%RH = ");
  Serial.println(percentRH,DEC); 
    lcd.setCursor(3, 0); 

  lcd.print(percentRH); 



  //lcd.print( adcValue); 
  lcd.print("   ");   
  
  //display digital status
  lcd.setCursor(3, 1);
  if(digitalRead(Digital) == 1) 
  {
    lcd.print("HIGH");
    digitalWrite(LED,HIGH);
  }
  else 
  {
    lcd.print("LOW "); 
    digitalWrite(LED,LOW);
  }
  delay(300);
}

جهت نمایش دیتا در سریال مانیتور از دستور زیر استفاده شده است.

void setup() {
 Serial.begin(9600);
{
void loop() {
 Serial.println(percentRH,DEC);
{

جهت نمایش دیتا در ال سی دی از دستور زیر استفاده شده است.

void setup() {

lcd.begin(20, 2);
 lcd.print("Light");
  lcd.setCursor(0,1);
  lcd.print("Sensor");
  delay(1000); 
  lcd.clear();
  lcd.print("Data:");
  lcd.setCursor(0,1); 
  lcd.print("Digital:");
}

void loop() {

  lcd.setCursor(3, 0); 

  lcd.print(percentRH); 



  //lcd.print( adcValue); 
  lcd.print("   ");   
   {

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

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

 

 

 


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


کیت دما و رطوبت بر پایه آردوینو Arduino

برد آردوینو Arduino Uno R3 با تراشه R3 اورجینال

سنسور اندازه گیری رطوبت HR202

ماژول LCD نمایشگر ال سی دی ۲X20 کاراکتری آبی و سبز LCD 2×20 character

کیت برد بورد رنگی و ۶۰ رشته کابل نری به نری

 

 

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

 


پروژه و دریافت بن ارسال رایگان


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

 

در پایان نظرات و پیشنهادات خود را با ما درمیان بگذارید و با اشتراک گذاری این آموزش در شبکه های اجتماعی , از وبسایت دیجی اسپارک حمایت کنید.

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

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

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

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

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

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

۱۷ دیدگاه

  • سلام خانم مهندس من کیت آردوینو دمای رطوبت دانشجوکیت خریدم و سنسورم دقیقا مانند شماست اما آب رنگه تفاوتی که در نوع برنامه نویسی و اتصاالاتش وجود نداره؟

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

    • با سلام
      در ساختار بسیاری از ماژول ها از ال ای دی برای نمایش وضعیت سنسور و تنظیم شدت حساسیت استفاده می‌شود.

  • سلام
    ممنون از آموزش خوبتون
    سنسورهایی که هم میتوانند با ۳.۳ کار کنند هم با ۵ ولت , بهتر است از کدام استفاده کنند ؟

    • با سلام
      بهترین ولتاژ مصرفی در هر دیتاشیت سنسور نوشته شده است و موردی نیست که بتوان بدون بررس دیتاشیت به آن اشاره کرد.

  • سلام وقت بخیر
    عدد نمایشی تستی خودم روی ۵ ولت چیزی حدود ۱۲۰ هست که اصلا همچین رطوبتی وجود نداره و روی ۳٫۳ ولت چیزی حدود ۷۳ درصده
    این مورد رو در کنار رطوبت سنج دقیق تری آزمایش کردید ببینید خروجی درستی میده یا نه؟