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

ساخت ترموستات آردوینو با امکان تنظیم حد بالا و پایین دما سنسور DS18B20

Arduino-thermostat-ds18b20-lcd-2x16-digispark
نوشته شده توسط پریسا پوربلورچیان

اندازه‌گیری دمای محیط و کنترل آن در پروژه‌های اینترنت اشیاء IoT از اهمیت ویژه‌ای برخوردار است. در گلخانه‌ها، پروژه‌های صنعتی و… کنترل دمای محیط و طراحی ترموستات بسیار مهم خواهد بود. سنجش دما توسط مدار دماسنج می‌تواند در موارد بسیار زیادی موثر باشد. از جمله مدیریت مصرف انرژی در یک ساختمان، یا کنترل فرآیند مانند دستگاه‌های جوجه کشی که بسیار به دما حساس هستند. تا به حال آموزش های متفاوتی با سنسورهای دما در دیجی اسپارک منتشر شده است. در آموزش ساخت ترموستات آردوینو به معرفی سنسور دما DS18B20 و نحوه‌ی کار یا آن خواهیم پرداخت. در ادامه با مرجع تخصصی آردوینو به زبان فارسی ، دیجی اسپارک همراه باشید.

 

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

 


۱ – سنسور و برد ترموستات


سنسور دما DS18B20

سنسور دما DS18B20 دارای کابل و کاملا ضد آب می‌باشد. زمانی که نیاز دارید، دمای محیط را به صورت تماسی اندازه‌گیری کنید، سنسور DS18B20 بسیار کاربردی خواهد بود. دمای مطلوب جهت اندازه گیری توسط سنسور DS18B20، با توجه به اینکه با کابل PVC پوشیده شده است، ۱۲۵ درجه سانتی گراد تخمین زده شده است. با این وجود پیشنهاد می‌شود آن را زیر ۱۰۰ درجه سانتی گراد نگهداری کنید. از آنجایی که انتقال سیگنال کاملا دیجیتالی است، حتی در فواصل طولانی هم خطا در دریافت دمای محیط نخواهید داشت. سنسور دما DS18B20 از ۹ تا ۱۲ بیت دمای قابل تنظیم را فراهم می‌کند. اتصال سنسور تنها توسط یک سیم با یک میکروپروسسور و ولتاژ ۳ تا ۵٫۵ ولت انجام می‌شود. همانطور که اشاره شد، ولتاژ کاری سنسور DS18B20 از ۳ تا ۵٫۵ ولت DC است. دقت اندازه‌گیری سنسور بین محدوده دمایی – ۱۰ تا + ۸۵ درجه سانتی گراد برابر ±۰٫۵ می‌باشد. محدوده اندازه‌گیری دمای سنسور DS18B20 بین – ۵۵ تا + ۱۲۵ درجه سانتی گراد و -۶۷ تا + ۲۵۷ درجه فارنهایت می‌باشد. سنسور دما DS18B20 دارای سه پایه سیگنال و VCC و GND می‌باشد. طول سیم سنسور ۹۰ سانتی متر است و پایه های آن با سه رنگ زرد، مشکی و قرمز مشخص شده است.

 

ماژول رله Relay Module

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

 

شیلد ال سی دی آردوینو Arduino LCD Shield

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

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

آموزش های پیش نیاز

آموزش راه اندازی سه مدل ال سی دی کاراکتری LCD

آموزش استفاده از رله Relay در پروژه اینترنت اشیاء IOT

 


۲ – کتابخانه ترموستات آردوینو


در آموزش ساخت ترموستات آردوینو برای راه اندازی سنسور DS18B20 و ال سی دی LCD نیاز به فراخوانی کتابخانه آن ها خواهیم داشت:

کتابخانه DallasTemperature

  • کتابخانه DallasTemperature جهت راه اندازی سنسور DS18B20 استفاده می‌شود. لینک دانلود کتابخانه در صفحه محصول سنسور DS18B20 با کابل ضد آب در فروشگاه دانشجوکیت قرار گرفته شده است. آن را دانلود و سپس فراخوانی کنید.

کتابخانه LiquidCrystal

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

کتابخانه onewire

  • کتابخانه onewire برای راه اندازی سنسور دما DS18B20 فراخوانی می‌شود. کتابخانه onewire به صورت پیش فرض در لیست کتابخانه های آردوینو قرار دارد. آن را فراخوانی کنید.

 

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

  • سیم زرد رنگ دیجیتال سنسور دما DS18B20 را به همراه یک مقاومت ۴٫۷ کیلواهم به پایه دیجیتال آردوینو Arduino Mega2560 اتصال دهید.
  • سیم قرمز رنگ سنسور دما DS18B20 به پایه VCC آردوینو Arduino Mega2560 اتصال دهید.
  • سیم مشکی رنگ سنسور دما DS18B20 را به پایه GND آردوینو Arduino Mega2560 اتصال دهید.

 


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


 

 

جهت دسترسی به این بخش از پروژه، اسپارکر پلاس شوید.

 

و یا جهت دانلود کدهای برنامه به صورت کامل کلیک کنید.

 


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


 

نحوه ی فراخوانی کتابخانه

تعریف یک پایه ثابت برای سنسور دما

فراخوانی تابع Arduino Lcd Shield

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

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

تعریف ساختار تصمیم if , else

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

ساختار تصمیم else if

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

ساختار تصمیم Switch

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

حال باید توسط تابع های گفته شده بین دو محدوده دمایی حد بالا و حد پایین شرط گذاری کنید. در ابتدا یک حد بالا و یک حد پایین تعریف کنید:

سپس بین این دو محدوده دمایی شرط گذاری کنید. به عنوان مثال در این کد پس از بالا رفتن دما و رسیدن به حد دمای بالا، رله به عنوان خروجی فعال میگردد. هنگامی که دمای سنسور کاهش یابد، مجددا رله غیر فعال شده و خروجی عمل نمیکند.

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

 

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

سنسور دما DS18B20 با کابل ضد آب

برد آردوینو Arduino UNO

شیلد ال سی دی آردوینو Arduino LCD Shield

کابل مخصوص بردبورد 

 

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

 


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


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

 

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

 

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

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

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

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

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

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

۴۶ دیدگاه

  • سلام
    خیلی آموزش جامع و کاملی بود، دستتون درد نکنه، فقط میخواستم بدونم که حتما باید از برد MEGA استفاده کرد؟

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

  • با سلام
    میشه یکم درباره سنسور توضیح بیشتری بدید آخه سنسور های ntc موجود در بازار دارای دو پایه هستند ولی این سنسورسه سیم دارد
    آیا با خود سنسور های ntc (که دارای دوپایه هستند) این ترموستات را ساخت؟

    • سلام
      سنسور DS18b20 دارای کابل و کاملا ضد آب و از ۹ تا ۱۲ بیت دمای قابل تنظیم را فراهم می‌کند. در متن آموزش توضیحات مربوط به سنسورکامل توضیح داده شده است و همچنین دیتاشیت آن را می‌توانید از لینک زیر در قسمت دانلود مطالعه نمایید.
      سنسور دما DS18B20 ضد آب با کابلبرای استفاده از سنسور دمای مورد نظر خودتان باید کتابخانه آن را فراخوانی کنید و محدودیتی در ساخت ترموستات نخواهید داشت.

  • باسلام و خسته نباشید
    آیا میشه این پروژه رو با arduino uno راه اندازی کرد چون مگا ندارم!
    به نظرتون میشه.
    باتشکر

    • سلام
      بله هیچ تفاوتی ندارد. تنها باید در کد آردوینو پایه های دیجتیال مورد استفاده را تغییر داد.

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

  • سلام وقت بخیر میشه همین پروژه رو با سون سگمنت۴تایی راه اندازی کنید و برای تغییر مقدار دمای بالا و پایین رله از دکمه set استفاده کنید یعنی فقط دکمه set,min,max داشته باشیم یا برای راه اندازیش یکم توضیح بدین ممنون میشم . من مشکلم بر روی دکمه set هست.

  • سلام
    از این طریق به خاطر تمام زحمات شما ممنونم.
    بدون شک با هزینه ای که پرداخت کردم بدون هیچ مشکلی پروژه را ران کردم و حتی با توضیحات کامل شما مطابق با نیاز پروژه تغییرات را اعمال کردم . پایدار باشید.

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

    • سلام
      بله توسط دستور شرطی switch حالت های مختلف از یک دستور را بررسی خواهیم کرد. به طور کلی برای تصمیم گیری هایی که بیش از سه انتخاب وجود داشته باشد، از ساختار Switch استفاده می‌کنیم.

  • عرض سلام و وقت بخیر
    تشکر بخاطر آموزش عالیتون
    چطور باید از طریق کلیدهای روی ال سی دی حد بالا و پایین رو تنظیم کرد؟

    • سلام
      کاربر گرامی در همین آموزش امکان تنظیم حد بالا و پایین دما با استفاده از کلیدهای شیلد lcd کامل توضیح داده شده است.
      در این خصوص در کدها به خط ۴۷ تابع switch و case رجوع کنید.

  • سلام
    من این ترموستاتو خیلی نیاز دارم وقتی این آموزشو دیدم ذوق کردم
    سوال من اینه که آموزش فقط همین توضیحات توی همین صفحس یا اینکه بعد از تهیه اشتراک با جزییات توضیح داده میشه و اینکه آموزش تصویریه یا متنی

    ممنون میشم راهنمایی کنید

    • سلام
      از توجه شما ممنونم.
      با تهیه اشتراک اسپارکر، به کدهای آموزش و توضیحات متنی دسترسی خواهید داشت. همچنین از طریق بخش نظرات می‌تولانید سوالات خود را بپرسید.

  • با سلام خدمت خانم پوربلورچیان
    کد ها نوشته شده با روش PID نوشته شده یا نه؟ امروزه کنترلر های دقیق از کنترل PID و فازی بهره می گیرند
    البته به نظر نمی رسه که استفاده شده باشه چون کتابخونه ی اون که استفاده نشده
    اگر امکان داره با PID هم مطلب بگذازید

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

  • با سلام ممنون بابت اموزش خوبتان یک سوال در مورد اینکه اگر بخواهیم یک گلخانه ۵۰۰ متری را کنترل دمایی داشته باشیم حالا از این سنسور یا dht22 استفاده نماییم سوالی که هست این سنسور ها دمای محیطی را تا چه حد و فاصله ای را می توانند اندازه گیری کنند چون واقعا توی کاتالوگ هایشان چیزی ذکر نشده است و اینکه چه تعدادی به فرض در یک گلخانه ۵۰۰ متری باید استفاده شود تا دقت کار بالا رود چون در مورد دما و قرار دادن سنسور فک کنم به تجربه بر می گردد ممنون می شوم راهنمایی کنید

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

      • بله حتما ممنون بایت آموزش خوبتان یه سوال دومی که دارم این سنسور به نظر شما گزینه ای بهتر ایست نسبت به dht ها برای دقت در کار ایا ؟؟

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

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

    • سلام
      از ال سی دی استفاده نکنید و پیشنهاد می‌شود جهت تنظیم دما از سریال مانیتور استفاده کنید تا تغییرات را مشاهده کنید.

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

    به این صورت که هر گاه عدد وارد شده با تعداد اجسام عبوری برابر شد، آنگاه یک LED روشن بشود.

    امکان داره تا چنین برنامه ای رو برام بنویسید؟
    یا این که برنامه ای که در این خصوص نوشتم را ببینید و کمک به حل مشکل اش کنید؟

    متشکرم

    • با سلام
      در حال حاضر امکان نوشتن کد برنامه نیست و می‌توانید از همین طریق در ارتباط باشید.
      در صورت برخورد به مشکل و کدنویسی از طریق کامنت یا ثبت تیکت در دانشجوکیت اقدام کنید تا راهنمایی گردد.

  • با سلام
    یه سوال میشه بجای یکی دو رله استفاده کرد؟و یا بیشتر؟
    به فرض یکی برای هیتر و یکی برای فن و یکی هم دائمان روشن باشه برای گردش هوا
    ممنون

  • سلام من یه ترموستات دارم وقتی دما ۳۷ براش تنظیم میکنم که تا به این حد نرسیده لامپ روشن بمونه و در دما مورد نظر لامپ قطع بشه ، لامپ هیچ واکنشی نشون نمیده و اصلا روشن نمیشه .ممنون میشم راهنماییم کنید
    مدل ترموستات :XH-W1219 هست.

    • با سلام
      تمامی ترموستات های سری XH دارای آموزش راه اندازی است. لذا با توجه به توضیحات ابتدا توسط P1 وارد منو تنظیمات شده و مجدد بررسی نمایید.

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

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

  • با سلام و عرض ادب؛
    ضمن تشکر از زحمات شما،
    دو سئوال دارم:
    ۱- با توجه به اشاره ای که در توضیحات داشتید ظاهراً سنسور DS18B20 برای دماهایی که مستقیماً با توسط سنسور تماس داشته باشند دقت اندازه گیری دقیق دارد:
    ؛؛(سنسور دما DS18B20 دارای کابل و کاملا ضد آب می‌باشد. زمانی که نیاز دارید، دمای محیط را به صورت تماسی اندازه‌گیری کنید)؛؛
    به همین دلیل برای اندازه گیری دمای محیطی مثل اتاق یا گلخانه، از سنسور sht10 استفاده شود بهتر است یا همان DS18 ؟
    سئوال دوم اینکه برای انتقال دیتای خوانده شده توسط برد آردوینو در همان اتاق مرکز مانیتوریگ با پروتکل RS 232 که دمای بالا را آلارم صوتی دهد یا لامپ سیگنال روشن یا رله ای در اتاق مانیتورینگ فعال شود چه نیاز هایی از سخت افزار و نرم افزار و برنامه نویسی می باشد.
    بازهم از زحماتتان بسیار متشکرم

    • با سلام
      در خصوص سوال اول طبیعتا سنسور SHT10 برای گلخانه انتخاب مناسبتری است. به این دلیل که هم سنسور محیطی است و هم اینکه سنسور دما و رطوبت میباشد.
      در خصوص سوال دومتان، هم به ماژول مبدل RS232 نیاز دارید.
      ماژول مبدل RS232 To TTL