آردوینو آموزش آردوینو نمایشگر Segment پروژه های آردوینو

پروژه طراحی و ساخت رطوبت ساز هوشمند با ماژول بخار سرد و برد آردوینو

نوشته شده توسط معین صابری

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

 


شناخت دستگاه رطوبت ساز هوشمند


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

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

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

 


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


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

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

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

 


برد آردوینو UNO


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

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

 

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

 


سنسور دما ورطوبت DHT11


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

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

 


ماژول رله


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

ماژول رله برای کنترل وسایل برقی - دیجی اسپارک

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

 


ماژول نمایشگر سگمنت TM1637


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

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

ماژول نمایشگر سون سگمنت TM1637 دارای ۴ نمایشگر(۴دیجیت) جهت نمایش داده هاست.این نمایشگر از پروتکل I2C جهت ارتباط با میکروکنترلرها استفاده می کند. راه اندازی و کار با این نمایشگر با بردهای آردوینو بسیار ساده است. از آنجاییکه برای این ماژول کتابخانه آردوینو توسعه یافته است، لذا شما می توانید به سادگی از این نمایشگر استفاده نمایید. در این پروژه جهت نمایش دما و رطوبت، از نمایشگر TM1637 استفاده می کنیم. در این نمایشگر، دو رقم سمت چپ دما و دو رقم سمت راست رطوبت را نمایش می دهد.

 


ماژول کاهنده ولتاژ LM2596


ماژول های کاهنده ولتاژ ابزاری مهم در طراحی سیستم های مختلف به شمار می روند. به کمک این ماژول ها می توانید ولتاژ ورودی را به مقدار مورد نظر در خروجی تبدیل کنید. ماژول کاهنده ولتاژ LM2596 یک رگولاتور سوییچینگ جهت کاهش ولتاژ است. به کمک این ماژول می توانید ولتاژ های ورودی را کاسته و به مقدار مورد نظر در خروجی تبدیل کنید.

ماژول کاهنده ولتاژ DC LM2596 - دیجی اسپارک

در این پروژه برای تغذیه ماژول بخار سرد از یک آداپتور ۲ آمپر ۲۴ ولت استفاده می کنیم. سپس به کمک ماژول کاهنده ولتاژ، ولتاژ ۲۴ ولت را به ۱۲ ولت در خروجی می رسانیم. بر روی این ماژول یک ولوم آبی رنگ قرار داشته که با چرخاندن آن می توانیم ولتاژ مورد نظر را برای خروجی تنظیم کنیم. پس از تنظیم ولتاژ، با اتصال خروجی ماژول کاهنده به پایه VIN آردوینو، می توانیم تغدیه آردوینو را تامین نماییم.

 


نصب کتابخانه های مورد نیاز


در این قسمت به نصب کتابخانه های مورد نیاز می پردازیم. جهت نصب کتابخانه ها ما از روش خودکار و به کمک نرم افزار آردوینو، اقدام به نصب کتابخانه ها می نماییم. در ابتدا کتابخانه نمایشگر سگمنت TM1637 را نصب می کنیم. برای این مورد، بر روی گزینه Tools  و سپس Manage Libraries کلیک کنید. مطابق تصویر فوق، در کادر جست و جو که با رنگ قرمز مشخص شده، عبارت tm1637 را تایپ کنید. پس از چند لحظه کتابخانه نمایشگر ظاهر شده و مطابق تصویر زیر، با کلیک بر روی گزینه install اقدام به نصب آن نمایید.

 

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

 


شماتیک و اتصالات


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

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

 

  • برای برقراری اتصلات بین قسمت مختلف این مدار، شماتیک فوق را به صورت قسمت به قسمت شرح می دهیم. به همین منظور، ابتدا  اتصالات بین سنسور DHT11 و آردوینو را به شکل زیر، برقرار سازید.
سنسور DHT11 آردوینو
VCC ۵V
GND GND
DATA ۲

 

  • پس از این مرحله، نوبت به اتصالات نمایشگر و آردوینو می رسد. این اتصالات را به شکل زیر ادامه دهید.
نمایشگر TM1637 آردوینو
VCC ۳٫۳V
GND GND
۴ CLK
۵ DIO

 

  • پس از اتصالات نمایشگر، نوبت به اتصالات رله و ماژول بخار سرد با آردوینو می رسد. برای اتصالات رله به صورت زیر عمل کنید.
ماژول رله آردوینو
VCC ۵V
GND GND
۳ IN
تغذیه مثبت آداپتور ۲۴ ولت COM
اتصال پایه مثبت ماژول بخار سرد NC

 

توجه داشته باشید پایه منفی ماژول بخار سرد را به قسمت منفی آداپتور ۲۴ ولت متصل نمایید. پس از طی این مراحل، نوبت به تغذیه آردوینو می رسد. برای تغذیه آردوینو، ابتدا به ورودی ماژول کاهنده، کابل های تغذیه را با رعایت پلاریته متصل کنید. سپس خروجی ولتاژ ماژول را با چرخاندن ولوم آبی رنگ(مولتی ترن) بر روی ۱۲ ولت تنظیم نمایید. پس از تنظیم، پایه منفی خروجی ماژول را به GND برد آردوینو متصل کرده و پایه مثبت خروجی مبدل کاهنده را به پایه VIN متصل نمایید.

 


کدهای پروژه رطوبت ساز هوشمند


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

#include "DHT.h"
#define DHTPIN 2     // تعیین پایه جهت اتصال سنسور DHT به پایه ۲ آردوینو
#define DHTTYPE DHT11   
#define relay 3  //تعیین پایه جهت اتصال رله به خروجی آردوینو 
#include "SevenSegmentTM1637.h"   //کتابخانه سون سگمنت I2C
unsigned long tm;   //متغیر جهت تعیین زمان فعال سازی و غیر فعال سازی ماژول رله و به دنبال آن خاموش و روشن شدن ماژول بخار سرد
bool chk_tm = false;   //فلگ جهت فعل/غیر فعال سازی رله
const byte PIN_CLK = 4;   // پایه کلاک
const byte PIN_DIO = 5;   // پایه دیتا
SevenSegmentTM1637    display(PIN_CLK, PIN_DIO);  //راه اندازی کتابخانه TM1637
DHT dht(DHTPIN, DHTTYPE);   
void setup() {
  Serial.begin(115200);
  dht.begin();
  display.begin();
  pinMode(relay, OUTPUT);
  digitalWrite(relay, LOW);
}
void loop() {
  String data_d = "";  //تعریف متغیر جهت ذخیره دما و رطوبت
  data_d = String(int(dht.readTemperature()));   //دریافت دما
  data_d = data_d + String(int(dht.readHumidity()));  //دریافت رطوبت 
  //توجه: در این حالت ۴ رقم در رشته خواهیم داشت. دو رقم نخست مربوط به دما و دو رقم بعدی مربوط به رطوبت است. نمایشگر از چپ به راست، داده هارا که شامل دما و رطوبت است نمایش می دهد.
  display.clear();  //پاک کردن نمایشگر از داده های قبلی
  display.home();  //قرار دادن مکان نما در ابتدای نمایشگر
  display.print(data_d);  //نمایش داده ها
  delay(500);
  if (chk_tm == false) {  //در صورتیکه فلگ CHK_TM فالس باشد، زمان فعلی خوانده شده و در متفیر tm ذخیره می شود.
    tm = millis();
    chk_tm = true;
  }
  //توجه: زمان در تابع millis بر حسب میلی ثانیه اندازه گیری می شود. در اینا ما قصد داریم تا دستگاه برای ۵ دقیقه فعال و ۵ دقیقه غیر فعال باشد. بنابراین ۵ دقیقه معادل ۳۰۰ ثانیه  و یا ۳۰۰۰۰۰ میلی ثانیه است.
  if ((millis() - tm) < 300000)   //در صورتیکه مدت زمان سپری شده از زمان ذخیره شده در متغیر tm بیش از ۵ دقیقه باشد،  رله را فعال می کنیم تا ماژول بخار سرد شروع به کار نماید
    digitalWrite(relay, HIGH);
  else if ( (millis() - tm) < 600000) {  //در صورتیکه زمان سپری شده  از زمان ذخیره شده در متغیر  tm بیش از ۵ دقیقه شد، رله را خاموش می کنیم.
    digitalWrite(relay, LOW);
  }
  else  //در صورتیکه رله برای ۵ دقیقه فعال و سپس برای ۵ دقیقه غیر فعال باشد، با فالس کردن فلگ chk_tm، زمان انادازه گیری شده و رله مجددا فعال می شود.
    chk_tm = false;
}
/*
 * توضیح برای الگوریتم فعال و غیر فعال سازی رله:
 *  در این پروژه، دستگاه برای ۵ دقیقه رله را فعال و سپس آن را غیر فعال  می کند. بدین ترتیب بخار ساز بریا ۵ دقیقه فعلا و پس از آن برای ۵ دقیقه دیگر غیر فعال است.
 *  برای این مورد، ابتدا زمان را اندازه گیری کرده و سپس ذخیره می کنیم. پس از آن، تا ۵ دقیقه رله را فعال می کنیم. پس از گذشت ۵ دقیقه، رله خاموش خواهد شد
 
 */

 


اجرای برنامه


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

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

 

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

 


تحلیل کدها


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

digitalWrite(relay, HIGH);

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

 


لوازم مورد نیاز پروژه


  1. برد آردوینو UNO
  2. ماژول رله تک کانال
  3. آداپتور ۲۴ ولت
  4. فیش آداپتور مادگی
  5. فیش آداپتور نری
  6. ماژول بخار سرد ۲۴ ولتی
  7. سنسور دما/رطوبت DHT11
  8. ماژول کاهنده ولتاژ LM2596
  9. نمایشگر سون سگمنت TM1637 با پورت I2C

 


جمع بندی


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

 

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

 

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

معین صابری

کارشناسی ارشد رشته معماری سیستم های کامپیوتری

مالي که ز تو کس نستاند، علم است
حرزي که تو را به حق رساند، علم است
جز علم طلب مکن تو اندر عالم
چيزي که تو را ز غم رهاند، علم است
(شیخ بهایی)

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

۸ دیدگاه

  • سلام مهندس
    مهندس میشه با اردوینو و شیلد نمایشگر لمسی اردوینو تلویزیون درست کرد؟
    یک تلویزیون همراه کوچک
    یا با استفاده از برد node mcu یا esp32 که به اینترنت متصل بشه و شبکه ها را نشان بده

    • سلام
      ایده جالبی هست اما نه، امکان این مورد نیست. چون حافظه و توان پردازش اردوینو بسیار پایین هست. با ESP محتمل تر هست چون به هر حال از توان بالاتری برخوردار هست. اما با رزبری پای ساده تر انجام می شود.

  • سلام مهندس اگه میشه همین پروژه را بصورت زیر منتشر کنید
    که داخل کد ها مثلاً رطوبت را تعریف کنیم که از این عدد بیشتر شد رطوبت ساز خاموش و اگر از عدد گفته شده کمتر شد رطوبت ساز روشن شده

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

  • سلام وقت بخیر
    مهندس من طبق چیزی که شما فرمودین عمل کردم ولی متاسفانه با ارور زیر مواجه شدم
    Arduino: 1.8.14 (Windows 7), Board: “Arduino Uno”

    C:\Users\Amir\Documents\Arduino\libraries\SevenSegmentTM1637\src\SevenSegmentFun.cpp:187:80: error: no ‘void SevenSegmentFun::bouncingBall(uint16_t, uint16_t, bool)’ member function declared in class ‘SevenSegmentFun’
    void SevenSegmentFun::bouncingBall(uint16_t moves, uint16_t d, bool runForever) {
    ^
    exit status 1
    Error compiling for board Arduino Uno.

    This report would have more information with
    “Show verbose output during compilation”
    option enabled in File -> Preferences.

    • سلام
      از اینکه دیر پاسخ می دهم عذرخواهی می کنم
      متاسفانه این کتابخانه جدیدا با ESP مشکل پیدا کرده است. به نظر می رسد تنها راه فعلا تغییر نمایشگر باشد.