آردوینو آموزش آردوینو پروژه های آردوینو کیت آردوینو

آموزش ساخت دماسنج با سنسور دما DS18B20 ضد آب و برد آردوینو

Arduino-mega2560-ds18b20-temprature-digispark
نوشته شده توسط پریسا پوربلورچیان

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

 

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

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

هدف آموزش دماسنج DS18B20

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

 

شیلد نمایشگر Arduino LCD Shield

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

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

فراخوانی کتابخانه آردوینو

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

  • کتابخانه DallasTemperature

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

  • کتابخانه LiquidCrystal

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

  • کتابخانه onewire

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

 

اتصالات آردوینو Mega2560

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

 

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

برد آردوینو مگا Arduino Mega2560

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

بردبورد 

۶۰ رشته کابل مخصوص بردبورد

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

 

 

کد برنامه سنسور دما DS18B20

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

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

 

تعریف منو توسط شیلد LCD

همانطور که گفته شد، در این آموزش از شیلد ال سی دی آردوینو استفاده می‌کنیم. از دو کلید برای تعریف منو استفاده خواهیم کرد. در ابتدا پس از کامپایل برنامه عبارت Temperature در ال سی دی نمایش داده می‌شود:

کلید UP

نحوه ی فراخوانی کلید در برنامه در آموزش کار با ال سی دی کاراکتری کامل توضیح داده شده است. در صورت نداشتن اطلاعات کافی به آموزش مربوطه مراجعه کنید. با فشردن کلید UP عبارت Start در ال سی دی LCD لاین دوم نمایش داده خواهد شد:

آموزش کار با سنسور دماسنج DS18B20 و آردوینو Mega2560 - دیجی اسپارک

کلید Select

با فشردن کلید Select دمای محیط توسط سنسور دما DS18B20 بر حسب درجه سیلسیوس و فارنهایت خوانده شده و سپس در ال سی دی نمایش داده می‌شود:

تعریف دما بر حسب درجه سیلسیوس

تعریف دما بر حسب درجه فارنهایت

 

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

 

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

پروژه:

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

 

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

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

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

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

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

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

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

۴۵ دیدگاه

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

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

      case 1 :
      // Process for test = 1

      break;

      case 5 :
      // Process for test = 5

      break;
      به عنوان مثال دو کلید در این حلقه تعریف شده است. طبق الگو پیش بروید.

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

  • سلام ممنون بابت توضیحات کامل شما یه سوال داشتم ممنون میشم سریع بهم جواب بدین.
    دکمه های روی شیلد ال سی دی آردوینو Arduino LCD Shield
    (PULLUP هستن یا PULLDOWN) وقتی تو کد تعرف میکنیم که از کلید ها استفاد کنیم کلید میشه براشون حالت (PULLUP بودن یا PULLDOWN بودن) رو توی کد تنظیم کنیم.

    • سلام
      با توجه به اینکه شماتیک های متفاوتی از شیلد ال سی دی در دسترس می‌باشد، ولی مدلی که بنده کار می‌کنم به صورت مقاومت PullUP می‌باشد. در این موزد حتما دیتاشیت کالا را بررسی کنید.

      • سلام مجدد
        ممنون بابت جواب سوال قبل الان برام سوال جدیدی پیش اومده(الان یعنی وقتی شما کلید UP رو فشار مدید تا مدت زمانی که دست شما روی کلید هست متن start رو نشون میده) بر اساس اینکه گفتیدPullUP هست شیلد ال سی دی شما.

            • سلام ببخشید یه سوال دیگه هم داشتم؟
              اگه الان من بخواهم ترموستات برای پروژه درست کنم به دلیل اینکه گفتیدPullUP هست کلید ها وقتی من از یک متغیر میخواهم کم کنم تعدادش رو یا زیاد کنم که ترموستات تنظیم بشه نمیشه اینکار رو انجام داد.
              چون خودش شروع به کم شدن میکنه و نمیشه اصلا از کلید استفاده کرد چه کد مناسبی برای این کار شما پیشنهاد میکنید ممنون میشم یه راهنمایی بکنید!

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

                • سلام
                  منظورم اینه که میخواهم پروژه ای رو که تعریف کرده اید رو انجام بدم و مینیموم و ماکسیموم دما رو با دکمه های روی شیلد تنظیم کنم با ۴ تاشون (بالا و پایین)وظیفه کم و زیاد کردن مقدار مینیموم دما و (چیپ و راست)وظیفه کم و زیاد کردن مقدار ماکیموم دما ولی به دلیل اینکه دکمه های موجود روی شیلد ال سی دیPullUP هستند نمیشه کدی که نوشتم رو روش پیداه کنم یعنی کار نمیکنه وقتی پروژه رو روشن میکنم خودش از مقدار min دما من کم میکنه نمیشه با دکمه هایی که کد براشون نوشتم کم زیاد کرد مینیموم و ماکسیموم رو و کدم هم درست کار میکنه من با ۴ دکمه جدا که به اردینو وصل کردم و کد براشون نوشتم که هر دکمه که دارم یکی از اونها وظیفه کم و یکی وظیفه زیاد کردن مقدار مینیموم دما و یکی از اونها وظیفه کم و یکی وظیفه زیاد کردن مقدار ماکسیموم دما رو داره کدم کار میکنه و میتونم مقدار ماکسیموم و مینیموم رو روی عدد دلخواهم مثلا مینیموم دما رو روی ۲۰ و ماکسیموم رو روی ۲۴ بزارم و وقتی دما زیاد تر شد از ۲۴ یک رله فعال بشه و وقتی از ۲۰ کم تر شد یک رله فعال بشه و با این ۴ دکمه جدا کدم کار میکنه مشکلم از روی دکمه های شیلد هست… حالا دنبال کدیم که بهم پیشنهاد بدین استفاده کنم تا مشکلم حل بشه. ممنون بابت توجه شما

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

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

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

  • سلام چطوری میتونم دما و رطوبت را با استفاده از بلوتوث روی گوشیه اندرویدی نمایش بدم؟
    آیا سورس آردوینو و اندروید ان را از جایی میتونم تهیه کنم؟