در این آموزش قصد داریم نحوه ساخت یک دماسنج OLED بدون تماس در 5 دقیقه با استفاده از Arduino UNO و سنسور دما مادون قرمز MLX90614 را به شما نشان دهیم.
تجهیزات لازم
- Arduino UNO
- ماژول OLED
- مقاومت 4.75 کیلو اهم
- خازن 100 نانو فاراد
- سنسور مادون قرمز غیر تماسی MLX90614 5V
- برد بورد
- سیم جامپر
درباره این پروژه
در این آموزش بر آن شدیم تا نحوه ساخت یک دماسنج OLED بدون تماس با استفاده از Arduino UNO و سنسور دما مادون قرمز MLX90614 را به شما آموزش دهیم. این پروژه بسیار ساده است، برای ساخت آن به برنامه نویسی و مهارت های الکترونیکی در حد پایه نیاز است.
گام به گام مراحل اجرای پروژه را توضیح می دهیم.
با ما همراه باشید:
گام 1: تجهیزات لازم
برای ساخت ترمومتر مادون قرمز خود شما به سنسور ترمومتر غیرتماسی مادون قرمز MLX90614، آردوینو UNO، مقاومت 4.7 کیلو اهم، خازن 0.1 میکرو فاراد، یک عدد برد بورد و 9 عدد جامپر نیاز دارید.
گام 2: توضیحات مربوط به سنسور MLX90614
توصیف کلی سنسور
MLX90614ESF-AAA یک دماسنج مادون قرمز است که برای سنجش دما بدون تماس طراحی شده است. یک ADC داخلی 17 بیتی و یک DSP قدرتمند به دقت و وضوح بالای MLX90614 کمک می کنند. این سنسور کاربردهای زیادی از جمله اندازه گیری درجه حرارت بدن و تشخیص حرکت دارد.
MLX9061 به دو روش خروجی تولید می کند: روش PWM و روش SMBus (یعنی TWI و I2C) که خروجی PWM ده بیتی دارای وضوح 0.14 درجه سانتی گراد است درحالیکه، رابط TWI دارای وضوح 0.02 درجه سانتی گراد است. MLX90614 در دامنه وسیع دمایی درجه بندی شده است: -40 تا 85 درجه سانتیگراد برای دمای محیط و -70 تا 382.2 درجه سانتیگراد برای دمای جسم. مقدار اندازه گیری شده توسط این سنسور درواقع همان میانگین دمای تمام اجسام موجود در میدان دید سنسور است. MLX90614 دقت استاندارد 0.5 درجه سانتی گراد را حول دمای اتاق ارائه می دهد.
خصوصیات سنسور
- اندازه کوچک، هزینه کم
- کالیبره شده در محدوده وسیع دمایی
- دارای رابط دیجیتال سازگار با SMBus
- خروجی PWM قابل تنظیم برای خواندن مداوم
- دارای دقت بالای 0.5 درجه سانتیگراد در دامنه وسیع دمایی (0 تا 50+ درجه سانتیگراد هم برای Ta و هم برای To)
- وضوح اندازه گیری 0.02 درجه سانتی گراد
- سازگاری ساده برای کاربردهای 8 تا 16 ولت
گام 3: اطلاعات مربوط به نمایشگر OLED
اندازه این نمایشگر 1.3 اینچ است، از ویژگی های آن رزولوشن 128 × 64 پیکسلی و استفاده از Serial Peripheral Interface Bus چهار سیمه است. همچنین 0.04 وات انرژی مصرف می کند که یک دهم مورد نیاز برای اجرای صفحه نمایش LCD 16×2 معمولی است. نمایشگر OLED میتواند جهت برقرای ارتباط با باس های مختلف از قبیل I2C و SPI سه سیمه تنظیم شود که این کار با با حرکت دادن یکی از دو مقاومتی که در پشت صفحه نمایش وجود دارد صورت می پذیرد.
تغییر باس از SPI چهار سیمه به I2C یا SPI سه سیمه
I2C – مقاومت BS1 را روی 1 قرار دهید اما BS0 را همانطور که هست روی 0 نگه دارید.
SPI سه سیمه – BS1 باید روی 0 باشد و BS0 روی 1.
گام 4: ساخت دماسنج
اگر سنسور شما روی breakout board نباشد، نیاز است که SDA و SCL را pull-up کنید، سپس یک خازن بین GND و پین 3.3 ولت قرار دهید. اگر سنسور روی breakout board قرار دارد فقط SDA را به پایه A5 آردوینو، SCL را به پایه A4 آردوینو، پایه GND به GND آردوینو و پایه 3.3 ولت به پایه 3.3 ولت آردوینو وصل گردد. سپس OLED را روی bread board وصل کنید و پایه های زیر را به هم متصل کنید. پایه DIN نمایشگر را به پایه 13 آردوینو، پایه CLK به پایه 11، CS به پایه 10، پایه D/C به پایه 9 و پایه RES به پایه 8 متصل کنید. پایه های 13، 11، 10، 9 و 8 باس SPI آردوینو UNO هستند و همچنین اتصال ICSP میکروکنترلر هستند.
گام 5: برنامه نویسی آردوینو
این مرحله ساده است، تنها کافیست یکی از دو کد به نام های IR_OLED_Celsius (اندازه گیری شده در مقیاس درجه سلسیوس) یا IR_OLED_Fahrenheit (اندازه گیری شده در مقیاس درجه فارنهایت) را از بخش زیر کپی کنید و در محیط ARDUINO IDE پیست کنید و با اسم مناسب آنرا ذخیره کرده، سپس کد را روی برد آردوینو بارگذاری کنید.
کد IR_OLED_Celsius
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
#include "U8glib.h" // U8glib library for the OLED #include <Wire.h> // Wire library for I2C communication #include <Adafruit_MLX90614.h> // MLX90614 library from Adafruit Adafruit_MLX90614 mlx = Adafruit_MLX90614(); U8GLIB_SH1106_128X64 u8g(13, 11, 10, 9, 8); // D0=13, D1=11, CS=10, DC=9, Reset=8 void draw(void) { u8g.setFont(u8g_font_profont15r); // select font u8g.drawStr(1, 12, "Object Temperature");// u8g.setFont(u8g_font_profont29r); // select font for temperature readings u8g.println("C"); // prints C for Celsius u8g.setPrintPos(35, 45); // set position u8g.println(mlx.readObjectTempC(), 0); // display temperature from MLX90614 u8g.drawRFrame(15, 20, 100, 30, 10); // draws frame with rounded edges } void setup(void) { mlx.begin(); //Receive data from the sensor } void loop(void) { u8g.firstPage(); do { draw(); } while( u8g.nextPage() ); delay(1000); // Delay of 1sec } /*END OF FILE*/ |
کد IR_OLED_Fahrenheit
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
#include "U8glib.h" // U8glib library for the OLED #include <Wire.h> // Wire library for I2C communication #include <Adafruit_MLX90614.h> // MLX90614 library from Adafruit Adafruit_MLX90614 mlx = Adafruit_MLX90614(); U8GLIB_SH1106_128X64 u8g(13, 11, 10, 9, 8); // D0=13, D1=11, CS=10, DC=9, Reset=8 void draw(void) { u8g.setFont(u8g_font_profont15r); // select font u8g.drawStr(1, 12, "Object Temperature");// u8g.setFont(u8g_font_profont29r); // select font for temperature readings u8g.println("F"); // prints F for Fahrenheit u8g.setPrintPos(35, 45); // set position u8g.println(mlx.readObjectTempF(), 0); // display temperature from MLX90614 u8g.drawRFrame(15, 20, 100, 30, 10); // draws frame with rounded edges } void setup(void) { mlx.begin(); //Receive data from the sensor } void loop(void) { u8g.firstPage(); do { draw(); } while( u8g.nextPage() ); delay(1000); // Delay of 1sec } /*END OF FILE*/ |
اگر فونت فعلی را دوست ندارید می توانید آن را به سادگی با ویرایش کد تغییر دهید. همه فونت های پشتیبانی شده را می توانید در اینجا پیدا کنید.
اگر Arduino IDE ندارید برای دانلود آن اینجا کلیک کنید. سپس آن را نصب کنید.
کتابخانه های که نیاز دارید Adafruit-MLX90614-Library-master و u8glib_arduino_v1.17 می باشد. کتابخانه ها را دانلود کنید، سپس آنها را در مسیر /Program Files(x86)/Arduino/Libraries از حالت فشرده در آورید.
گام 6:
کار شما به اتمام رسید و اکنون دماسنج بدون تماس خود را آماده در اختیار دارید.