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

پروژه تب سنج کرونا ارزان قیمت با آردوینو و سنسور 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 = پین فیزیکی 3 (SDA)
  • SCL = پین فیزیکی 5 (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 بیت است.

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

پروژه ها رایگان هستند. برای دانلود فایل های پروژه باید در سایت عضو باشید. ثبت نام / ورود

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

محمد رحیمی

محمد رحیمی هستم. سعی میکنم در آیرنکس مطالب مفید را قرار دهم. مالکیتی بر مطالب ارائه شده ندارم. اکثر فعالیت بنده در زمینه ترجمه است. (در خصوص سوال در مورد این مطلب از قسمت نظرات همین مطلب اقدام کنید)

8 نظر

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

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

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

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

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

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

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

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

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

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

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