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

پروژه تب سنج کرونا ارزان قیمت با آردوینو و سنسور DS18B20

در این پروژه آردوینو ما با استفاده از سنسور دما DS18B20 ، دمای بدن یا محیط را میتوانیم اندازه گیری کنیم. همچنین از یک نمایشگر OLED SSD1306 برای نمایش دما استفاده میکنیم. سنسور DS18B20 یک سنسور ضد آب است. این روز ها بیماری کرونا بسیار همه گیر شده است و در همین راستا دماسنج ها تقاضای بالایی دارند. در اینجا ما یک تب سنج ارزان قیمت را میسازیم که دارای دقت بالایی است.

آردوینو از سنسور DS18B20 درجه حرارت (درجه سانتیگراد) را می خواند و مقدار آن را بر روی صفحه نمایش SSD1306 OLED (پیکسل 128 × 128) چاپ می کند. میتوانید از نمایشگر های SSD1306 با سایز های دیگر استفاده کنید و نیاز به تغییر جزئی در کد دارید. در این پروژه SSD1306 OLED طوری پیکربندی شده است تا در حالت ارتباط I2C کار کند.

پروژه های دیگر در زمینه کرونا را هم مشاهده کنید : 

مدار پروژه تب سنج کرونا با سنسور DS18B20

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

پروژه تب سنج کرونا با سنسور DS18B20

سنسور DS18B20 دارای 3 پین : VCC (یا VDD) – داده و GND است.

صفحه نمایش SSD1306 OLED به صورت زیر به برد آردوینو UNO وصل می شود:

  1. پین SSD1306 GND به GND آردوینو
  2. پین SSD1306 VDD به آردوینو 5 ولت
  3. پین SSD1306 SDA (داده سریال) به پین A4
  4. پین SSD1306 SCK (ساعت سریال) به پین A5
  5. پین SSD1306 RES به آردوینو پین 4

پین DC نمایشگر SSD1306 OLED به VDD وصل شده است که یعنی آدرس I2C دستگاه 0x3D است. اگر پین DC به زمین (GND) وصل شود ، آدرس I2C 0x3C خواهد بود.

پین های نمایشگر OLED

  • VCC = ولتاژ 3.3
  • GND = GND
  • SDA = پین فیزیکی A4 (SDA)
  • SCL = پین فیزیکی A5 (SCL)

ما در این پروژه از کتابخانه گرافیکی Adafruit_SSD1306 استفاده کردیم که میتوانید آن را از این لینک دانلود کنید : دانلود کتابخانه های ماژول نمایشگر OLED SSD1306 64*128 + مشخصات

قطعات مورد نیاز

  1. برد آردوینو Uno
  2. ماژول سنسور دما DS18B20 ضد آب
  3. ماژول صفحه نمایش 128×64 OLED SSD1306
  4. مقاومت 4.7 کیلو اهم
قطعات مورد نیاز را از فروشگاه قطعات آیرنکس تهیه کنید.

توضیحات کد ساخت دماسنج کرونا با آردوینو

ما برای اتصال سنسور دما DS18B20 به آردوینو به هیچ کتابخانه ای نیاز نداریم. برای اتصال SSD1306 به آردوینو به دو کتابخانه خارجی نیاز است که در فایل دانلودی قرار گرفته است.

در کد 3 کتابخانه وجود دارد ، آنها به شرح زیر در کد قرار دارند :

#include <Wire.h>              // کتابخانه برای ارتباط I2C
#include <Adafruit_GFX.h>      // کتابخانه GFX
#include <Adafruit_SSD1306.h>  // کتابخانه SSD1306

پین تنظیم مجدد صفحه نمایش SSD1306 OLED و اتصال پین سنسور دما DS18B20 در کد مطابق شکل زیر تعریف شده اند:

#define OLED_RESET  4    // پین تنظیم مجدد نمایشگر
Adafruit_SSD1306 display(OLED_RESET);
 
#define DS18B20_PIN   A0 // پین داده سنسور دما

توابع مورد استفاده در کد:

bool ds18b20_start(): برای اینکه بدانید سنسور DS18B20 به درستی به مدار وصل شده است استفاده میشود ، اگر صحیح باشد 1 و در صورت خطا 0 میشود.

ds18b20_write_bit(bool value):  یک بیت را برای حسگر DS18B20 می نویسد (می فرستد) ، بیت ‘value‘ است که ممکن است 1 یا 0 باشد.

ds18b20_write_byte(byte value):یک بایت (8 بیت) را به حسگر DS18B20 می نویسد ، این عملکرد براساس عملکرد قبلی است. این عملکرد ابتدا LSB را می نویسد.

اگر در مورد این مطلب سوالی دارید در قسمت نظرات بپرسید

bool ds18b20_read_bit(void): یک بیت از سنسور DS18B20 را می خواند ، مقدار خوانده شده (1 یا 0) خواهد بود.

byte ds18b20_read_byte(void): یک بایت را از حسگر DS18B20 می خواند ، این عملکرد براساس عملکرد قبلی است. این تابع ابتدا LSB را می خواند.

bool ds18b20_read(int *raw_temp_value): داده خام دما را که 16 بیت طول دارد (دو رجیستر 8 بیتی) را می خواند ، داده ها در متغیر raw_temp_value ذخیره می شود ، در صورت صحیح بودن 1 و در صورت وجود خطا 0 دریافت میشود.

مقدار درجه حرارت در درجه سانتیگراد برابر است با مقدار raw تقسیم بر 16 (در صورت وضوح 12 بیتی). وضوح پیش فرض DS18B20 همین 12 بیت است.

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

4.4 (14 نفر)

برای دریافت مطالب جدید کانال تلگرام یا پیج اینستاگرام ما را دنبال کنید.

محمد رحیمی

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

26 نظر

  1. سلام امکانش هست توضیح بدید چجوری میشه این پروژه رو انجام داد به این صورت که دما اگر در محدوده خاص ۳۸.۵ تا ۳۹.۵ بود اخطار مشکوک به کرونا داده بشه؟

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

  2. سلام وقتتون بخیر
    خسته نباشید سایت خوبی دارید انشالله که موفق باشید.
    جناب در اینجا فرمودید SDA به پورت 3 باید متصل شود
    بنده امتحان کردم باید به پورت 4 متصل شود.

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

  3. با سلام من با همچین اروری برخورد کردم و مشکل از کجاست؟
    برای پروژه دانشگاه باید انجام بدم اینو ممنون میشم راهنماییم کنید
    sketch_oct23a:2:10: fatal error: Adafruit_GFX.h: No such file or directory
    #include // include Adafruit graphics library
    ^~~~~~~~~~~~~~~~
    compilation terminated.
    exit status 1
    Adafruit_GFX.h: No such file or directory

    1. سلام عزیز، کتابخانه Adafruit_GFX.h رو نصب کنید.

    2. دوتا کتابخانه تو فایل دانلودی بود و نصب کردم , اینی که گفتید از کجا باید بگیرم

  4. سلام
    من این پروژه رو میخوام در پروتئوس شبیه سازی کنم ولی این oled که اینجاست رو نمیاره. اینهایی که میاره پایه های بیشتر دارن. چه کار باید بکنم؟

    1. سلام عزیز. اگر درایورش SSD1306 مشکلی نداره فقط پایه هایی که در شماتیک مشخص شده رو متصل کنید.

  5. سلام ببخشید من اتصالات رو وصل کردم ولی چیزی رو نمایش نمیده میشه آیدی یا ادرس ایمیلی بدین براتون عکسشو بفرستم بگین ایرادم کجاست؟!

  6. سلام من امدم پروزه رو ببندم ولی این ارور رو میده
    C:\Users\aryan\OneDrive\Desktop\arduino\tab\tab.ino:40:19: warning: invalid conversion from ‘unsigned int*’ to ‘int*’ [-fpermissive]
    if(ds18b20_read(&ds18b20_temp))
    ^~~~~~~~~~~~~
    C:\Users\aryan\OneDrive\Desktop\arduino\tab\tab.ino:125:6: note: initializing argument 1 of ‘bool ds18b20_read(int*)’
    bool ds18b20_read(int *raw_temp_value)

  7. سلام وقتتون بخیر
    ببخشید موضوع پروژه من طراحی تب سنج کرونا بااستفاده از آردونیو است, بنده متن پروژه شمارو برای پروژه خودم کپی کردم؛ فقط اینکه باید توضیح هر خط رو جداگونه شرح بدم. چطور میتونم به این توضیحات دسترسی داشته باشم؟ باید چیکارکنم ؟! ممنون میشم راهنماییم کنید.

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

  8. سلام وقت بخیر من برنامه رو کامل کپی کردم و در اردینو قرار دادم اما برنامه ارور میدهد و کتابخانه wire.h را نمیشناسد و فایل این کتابخانه در پوشه دانلود نبود. ایا کتابخانه wire.h همان کتابخانه onewire.h است؟؟!

    1. سلام جناب. کتابخانه wire مربوط به پروتکل ارتباطی I2C میباشد و به صورت پیشفرض در آردوینو نصب است. جهت رفع مشکل پیشنهاد میکنم یک بار دیگر نرم افزار آردوینو را دانلود کنید.

  9. سلام من فردا پروزه دارم هرکاری میکنم این فایل دانلود باز نمیشه لطفا راهنمایی کنید

    1. سلام جناب. با نرم افزار WinRAR باز کنید.

    2. سلام.وقت بخیر شما این پروژه رو انجام دادید؟
      میتونم ای دی تون رو داشته باشم چند تا سوال بپرسم؟

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

    4. سلام من میخام برنامه رو توی اردوینو راه اندازی کنم اما دقیق نمیدونم با کدوم خط برنامه نویسی ک در متن نوشتین شروع و پایانش هست یه راهنمایی میکنید

    5. سلام عزیز، اگر اطلاعاتتون از برنامه نویسی آردوینو کم هست دوره آموزش آردوینو رو مشاهده کنید

  10. سلام آقای رحیمی
    LCD که من دارم 4 پایه داره که به ترتیب از چپ به راست دارای : GND-VCC-SCL-SDA هستش.
    طبق گفته ی سایتی که ازش این ال سی دی رو خریداری کردم این ویژگی ها رو داره:

    ماژول نمایشگر OLED با پروتکل ارتباطی I2C درایور SSD1306
    ولتاژ مورد نياز : 3.3 ولت DC
    سایر توضیحات : درایور SSD1306

    میشه لطفا راهنمایی کنید که اتصالات این پروژه با ال سی دی که من دارم چگونه میشود؟
    و همین طور کد ها چه تغییری میکند؟
    ممنون

    1. سلام جناب. SCK و SDK به ترتیب به SCL و SDA متصل کنید. دقیق نمیدونم اما به این صورت باید جواب بده.

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

    1. سلام جناب. موارد مورد نیاز در فایل دانلودی قرار داده شده.

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

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *