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

پروژه کیت ترموستات دما رطوبت با آردوینو سنسور DHT11 و نمایشگر OLED

create-digital-thermostat-with-dht11-arduino-and-oled-display-digispark
نوشته شده توسط پریسا پوربلورچیان

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

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

 


معرفی سنسور دما رطوبت DHT11


ماژول دما و رطوبت DHT11 از سنسورهای پرکاربرد جهت تشخیص دما می‌باشد. سنسور DHT11 کالیبره شده و دارای خروجی دیجیتال است. محدوده اندازه گیری رطوبت بین ۲۰ تا ۹۰% RH و محدوده‌ی دما از ۰ تا ۵۰ درجه سانتی گراد می‌باشد. ولتاژ کاری ماژول DHT بین ۳٫۳ تا ۵ ولت DC است. فاصله انتقال سیگنال در ماژول DHT11 تا ۲۰ متر می‌باشد. ماژول دما و رطوبت DHT11 بسیار مقرون به صرفه، دارای کیفیت‌ عالی و واکنش سریع نسبت به تغییر دمای محیط است. این سنسور دما رطوبت به ترتیب دارای ۳ پایه GND, VCC, Signal می‌باشد. سنسور dht قابلیت نمایش دما و روطوبت را دارد که میتوانید با هر میکروکنترلی به راحتی توسط کتابخانه ی توسعه یافته برای آن راه اندازی کرد. در این آموزش نیاز به اندازه گیری دمای منفی نداریم. همچنین این سنسور از رده سنسورهای بسیار باکیفیت و ارزان قیمت است که در پروژه ها بسیار کاربردی است.

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

 


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


در روند ساخت کیت ترموستات دما رطوبت کتابخانه ی DHT sensor Library برای سنسورهای زیر طراحی و توسعه داده شده است.

  • DHT11
  • DHT22
  • AM2301
  • AM2302

برای نصب نرم افزار از منو آردوینو بر روی Sketch / Include libraries  کلیک کرده و سپس Manage libraries را انتخاب کنید. در صفحه ی باز شده برای یافتن کتابخانه عبارت dht را فیلتر کنید.

مراحل نصب کتابخانه DHT.h در آردوینو - دیجی اسپارک

 

مطابق عکس بالا شماره ی یک، کتابخانه ی DHT sensor library از Adafruit جدیدترین ورژن را نصب کنید. جهت وارد کردن کتابخانه به برنامه دو روش وجود دارد.

  1. تایپ کتابخانه و رعایت حروف بزرگ و کوچک
  2. وارد کردن از طریق منو نرم افزار Arduino IDE از مسیر Sketch / Include Library

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

 

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

  • پین انتخاب شده برای اتصال سنسور به میکرو
  • نوع سنسور

انتخاب پایه دیجیتال سنسور

انتخاب نوع سنسور

DHT dht(DHTPIN, DHTTYPE);

 

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

تحلیل و بررسی کتابخانه DHT.h

 


معرفی نمایشگر OLED SSD1306


یکی از پرکاربردترین ماژول OLED که در حال حاضر در صنعت الکترونیک و بردهای توسعه میکروکنترلر استفاده می‌شود، نمایشگر OLED با درایور قدرتمند SSD1306 است که در اشکال مختلف به بازار ارائه شده است. چیپ SSD1306 یک کنترل کننده درایور قدرتمند CMOS است. این درایور از پروتکل های ارتباطی I2C و SPI پشتیبانی میکند و با توجه به اینکه در پروتکل I2C تنها با دو پایه برای اتصال نیاز دارد، برای اتصال OLED به میکروکنترلرها از این پروتکل بیشتر استفاده خواهیم کرد. ولتاژ کاری نمایشگر ۳٫۳ و ۵ ولت است و از هر دو پایه های تعذیه میکروکنترلر میتوانید استفاده کنید. زاویه دید نمایشگر ۱۶۰ درجه است و ابعاد آن ۰٫۹۶ اینچ است. نمایشگر دارای ۸ سطر و ۱۲۸ ستون است. این OLED در ردو رنگ سفید و زرد موجود است. دقیق ترین کتابخانه ای که برای OLED وجود دارد توسط Adafruit  توسعه یافته است و پیشنهاد می‌شود فقط از این کتابخانه استفاده کنید. با توجه به اینکه پروتکل ارتباطی نمایشگر ماژول OLED به صورت I2C است، با تمامی میکروکنترلرهایی که از پروتکل I2C پشتیبانی می‌کنند قابل تست و راه اندازی است و بدون نگرانی با نصب کتابخانه های مرتبط میتوانید ماژول نمایشگر را راه اندازی و استفاده کنید.

معرفی نمایشگر OLED SSD1306 در ساخت ترموستات دیجیتال - دیجی اسپارک

 


نصب کتابخانه OLED SSD1306


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

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

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

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

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

 

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

نصب Adafruit gfx library دیجی اسپارک

 

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

تحلیل و بررسی کتابخانه Adafruit_SSD1306.h

 


رله و روش استفاده


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

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

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

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

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

در این آموزش دو رله استفاده شده است. یکی از رله ها برای کنترل دما و رله ی دوم برای کنترل رطوبت است. هر رله به صورت مجزا به برد آردوینو متصل می‌شود. در کد برنامه تعریف شده و هرکدام تحت شراط تعریف شده در برنامه فعال HIGH و غیرفعال LOW می‌شود. بدین منظور جهت سهولت در اتصالات از یک رله دو کاناله با دو خروجی استفاده می‌کنیم.

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

 

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

 


اتصالات ترموستات آردوینو


در پروژه کیت ترموستات دما رطوبت از سنسور دما رطوبت DHT11, نمایشگر OLED SSD1306 و رله دو کانال استفاده شده است. طبق جدول اتصالات را انجام دهید. پروتکل ارتباطی نمایشگر OLED به صورت I2C است، لذا در این صورت فقط از پایه های I2C یعنی A4,A5 استفاده می‌کنیم. برای ارتباط بین آردوینو با سنسور دما رطوبت DHT11 و ماژول رله هم فقط به پایه های دیجیتال DIGITAL برد آردوینو  ARDUINO نیاز داریم.

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

 

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

 


کد آردوینو ترموستات


برای کدنویسی کیت ترموستات با آردوینو از نرم افزار آردوینو ARDUINO IDE استفاده می‌کنیم. نرم افزار آردوینو را باز کرده و سپس طبق مراحل کتابخاته SSD1306 و کتابخانه DHT را نصب کنید. سپس کد را کپی و به نرم افزار آردوینو انتقال دهید. کد را آپلود کنید.

 

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

 

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

 


تحلیل کد ترموستات آردوینو


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

#include <SPI.h>
#include <Wire.h>
#include <Adafruit_GFX.h> // کتابخانه گرافیکی برای OLED
#include <Adafruit_SSD1306.h> // کتابخانه OLED

#include "DHT.h"  //کتابخانه سنسور دما رطوبت

 

قدم بعدی معرفی ورودی و خروجی ها و توابع و کلاس های مورد نیاز برای فراخوانی کتابخانه ها است.

 

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

 

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

 


روش کار ترموستات دیجیتال


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

  • در ابتدا دما و رطوبت توسط سنسور دما رطوبت DHT11 خوانده می‌شود. دما و رطوبت به صورت دو پارامتر جداگانه بر روی نمایشگر OLED نمایش داده می‌شود.

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

 

  • سپس برای اطلاع از وضعیت رله دو پارامتر دیگر تعریف می‌کنیم. بکب تحت عنوان TRELAY برای اطلاع از رله ای که به دما متصل است. دیگر تحت عنوان HRELAY که برای اطلاع از رله رطوبت است.
  • در کد برنامه شرط گذاری برای فعال شدن رله دما به اینصورت است که اگر دمای محیط بیشتر از ۲۵ درجه باشد، رله مربوط به دما با عنوان TRELAY فعال می‌شود.
  • در کد برنامه شرط گذاری برای فعال شدن رله رطوبت به اینصورت است که اگر رطوبت محیط بیشتر از ۵۰ باشد، رله مربوط به رطوبت با عنوان HRELAY فعال می‌شود.

نمایش وضعیت دما رطوبت در نمایشگر OLED - دیجی اسپارک

 


وسایل مورد نیاز برای ساخت ترموستات


برد آردوینو ARDUINO

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

نمایشگر OLED SSD1306

رله دو کانال ۵ ولت 

برد بورد

سیم جامپر 

 

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

 


جمع بندی لیدی پای


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

 

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

 

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

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

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

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

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

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

۳ دیدگاه

  • سلام
    من برای تست به جای رله از ال ای دی استفاده کردم و کاملا درست اجرا شد
    کد نمایش oled هم خیلی منظم روی صفحه نمایش داده میشه

    • با سلام
      کاربر گرامی از اینکه تجربه ی خود را با دیگر کاربران به اشتراک گذاشته اید، صمیمانه سپاسگزاریم.

    • با سلام
      همانند همین پروژه یک شرط هم برای وضعیت دما با یک متغیر جدا بنوسید. از if else استفاده کنید.