در این آموزش قصد دارم یکی دیگر از ویژگی های این تراشه پر کاربرد و جذاب را به شما معرفی کنم. در آموزش قبلی به قابلیت تشخیص اثر هال با استفاده از سنسور هال داخلی این تراشه پرداختیم و این بار قصد داریم با استفاده از این تراشه دما را اندازه گیری کنیم. بدون هیچی ماژول خارجی فقط با استفاده از خود تراشه، سنسور دمای داخلی تراشه ESP32 همچنین این مقادیر را داخل سریال مانیتور آردوینو IDE و یک نمایشگر Oled نمایش خواهیم داد. در ادامه این آموزش با مرجع تخصصی آردوینو به زبان فارسی، دیجی اسپارک همراه باشید.
برد Nodemcu برپایه ESP32
وقتی از بردهای ESP32 صحبت میکنیم، از مصرف انرژی کمتر، قدرت پردازش بهتر، تکنولوژی بروز صحبت میکنیم، یعنی نسل جدیدی از تراشه های WIFI که در ادامه نسل قبل یعنی ESP8266 به بازار معرفی شدند، که علاوه بر WIFI از بلوتوث نیز پشتیبانی میکنند. از برد های کمکی که برای این تراشه عرضه شده میتوان به NodeMCU و ESP32-CAM اشاره کرد. این تراشه در سه نوع wroom , wrover و solo تولید میشود.
نمایشگر Oled 1306
معمولا در پروژه های اینترنت اشیا و دیگر پروژه های امبدد از برای نمایش متن و مقادیر مختلف از نمایشگر های Oled استفاده می شود، این ماژول ها بدر انواع مختلق بسته به نوع درایور اندازه یافت می شوند که یکی از پرطرفدار ترین آن ها SSD1306 می باشد، این نوع از Oled ها معمولا در اندازه های ۰٫۹۶ و ۱٫۳ اینچ ساخته می شوند همچنین پروتکل ارتباطی Oled ها I2C می باشد.
توضیحات تکمیلی
ESP32-S2 دارای یک سنسور دما است. ماژول سنسور دما شامل یک سیگما دلتا ADC 8 بیتی و یک DAC جبران کننده دما است. روابط تبدیل را در اولین ستون جدول زیر مشاهده میکنید. در میان آنها گزینه offset = 0 گزینه اصلی اندازه گیری است و سایر مقادیر گزینه های اندازه گیری گسترده هستند.
انحراف |
دامنه اندازه گیری بر اساس سلسیوس
|
اندازه گیری خطا
|
---|---|---|
-۲ | ۵۰ ~ ۱۲۵ | < 3 |
-۱ | ۲۰ ~ ۱۰۰ | < 2 |
۰ | -۱۰ ~ ۸۰ | < 1 |
۱ | -۳۰ ~ ۵۰ | < 2 |
۲ | -۴۰ ~ ۲۰ | < 3 |
سنسور دما دستگاهی است که معمولاً یک ترموکوپل یا یک آشکارساز دمای مقاومت، که اندازه گیری دما را به صورت قابل خواندن از طریق سیگنال الکتریکی فراهم می کند است. بطور کلی سنسور دما وسیله ای است که برای اندازه گیری درجه گرما یا خنکی یک جسم طراحی شده است. انواع مختلفی از سنسورهای دما وجود دارد، اما متداول ترین روش برای دسته بندی آنها مبتنی بر نحوه اتصال است که شامل سنسورهای دمایی تماسی و غیر تماسی است.
وسایل موردنیاز
نصب افزونه ESP32
بارها روش نصب برد ESP32 را در نرم افزار آردوینو IDE آموزش دادهایم. با این حال اگر هنوز روش نصب را نمیدانید، مطابق توضیحات ادامه دهید. ابتدا در نرم افزار Arduino IDE به مسیر File> Preferences بروید. لینک زیر را در بخش مشخص شده قرار دهید.
https://dl.espressif.com/dl/package_esp32_index.json, http://arduino.esp8266.com/stable/package_esp8266com_index.json
- سپس به مسیر Tools > Board > Boards Manager بروید.
- در بخش board manager کلمه ESP32 را سرچ کنید و بر روی install کلیک کنید.
نصب کتابخانه مورد نیاز
ابتدا در نرم افزار Arduino IDE اقدام به نصب کتابخانه مورد نیاز خواهیمکرد. مراحل زیر را دنبال کنید:
- این مسیر را دنبال کنید Sketch > Include Library > Manage Libraries
- کلمه Adafruit SSD1306 را جستجو کنید.
- کتابخانه را نصب کنید.
- سپس کلمه “GFX” را جستجو کنید و آن را نصب کنید.
اتصالات و شماتیک
در این مرحله اتصالات برد ESP32 و نمایشگر Oled را برقرار میکنیم، نمایشگر Oled از پروتکل I2C استفاده میکند پس باید به پین های SCl , SDA در برد ESP32 متصل شوند، در برد nodemcu این پین ها با نام D21 , D22 مشخص شدهاند. با توجه به شماتیک و جدول زیر اتصالات را برقرار کنید.
- شماتیک مربوط به اتصالات پروژه راهاندازی سنسور دمای داخلی تراشه ESP32
کد های پروژه با زبان ++C
ابتدا بخش هایی از کد را باهم بررسی خواهیم کرد، در اول قسمت کتابخانه هایی که استفاده کردهایم را بررسی میکنیم.
#include <SPI.h> #include <Wire.h> #include <Adafruit_GFX.h> #include <Adafruit_SSD1306.h>
در این قسمت آدرس دهی لازم برای راهاندازی I2C را اجام خواهیم داد و فانکشن مربوط Oled را فراخوانی خواهیم کرد.
display.begin(SSD1306_SWITCHCAPVCC, 0x3C); display.display();
در ادامه محاسبات مورد نیاز برای اندازه گیری دما را انجام خواهیم داد و تابع مورد نیاز را فراخوانی خواهیم کرد.
Serial.print((temprature_sens_read() - 32) / 1.8); Serial.println(" C");
و برای پرینت کردن مقادیر در نمایشگر Oled از چند خط زیر استفاده خواهیم کرد. مقادیر مورد نیاز را برای نمایش مشخص خواهیم کرد، برای مثال سایز نمایش متن و محا نمایش مقادیر.
display.setTextSize(2); display.setTextColor(SSD1306_WHITE); display.setCursor(25,10); display.print((temprature_sens_read() - 32) / 1.8 ); display.println(" C"); display.display();
کد کامل پروژه راهاندازی سنسور دمای داخلی تراشه ESP32
#include <SPI.h> #include <Wire.h> #include <Adafruit_GFX.h> #include <Adafruit_SSD1306.h> Adafruit_SSD1306 display = Adafruit_SSD1306(128, 32, &Wire); #ifdef __cplusplus extern "C" { #endif uint8_t temprature_sens_read(); #ifdef __cplusplus } #endif uint8_t temprature_sens_read(); void setup() { Serial.begin(115200); display.begin(SSD1306_SWITCHCAPVCC, 0x3C); display.display(); delay(1000); display.clearDisplay(); display.display(); } void loop() { Serial.print("Temperature: "); // Convert raw temperature in F to Celsius degrees Serial.print((temprature_sens_read() - 32) / 1.8); Serial.println(" C"); display.setTextSize(2); display.setTextColor(SSD1306_WHITE); display.setCursor(25,10); display.print((temprature_sens_read() - 32) / 1.8 ); display.println(" C"); display.display(); delay(1000); }
کد های پروژه با زبان MicroPython
ابتدا با استفاده از import، کتابخانه را فراخوانی مورد یا برد ESP32 را فراخوانی خواهیم کرد.
محدودیت در دسترسی کامل به این مجموعه آموزش
دسترسی کامل به آموزش برای اعضای دیجی اسپارک امکان پذیر است. بخش اصلی آموزش شامل سورس کدهای توسعه داده شده توسط مهندسهای دیجی اسپارک است. به همین دلیل این آموزش خاص و یکتاست. برای استفاده از آن بایستی عضویت تهیه کنید. تبادل نظر با کاربران و پرسش سوال رایگان است و میتوانید از بخش نظرات همین آموزش اقدام کنید. |
جمع بندی
در این پروژه با استفاده از برد NodeMCU با تراشه ESP32 و همچنین نمایشگر Oled با درایور SS1306، توانستیم یک از قابلیت های دیگر از تراشه ESP32 را بررسی و استفاده کنیم، در این پروژه تنها با استفاده از خود تراشه ESP32 توانستیم دما را اندازه گیری کنیم و نمایش دهیم. وجود سنسور دمای داخلی در بسیاری از تراشهها کمک میکند که هم دمای داخل برد و هم دمای محیط را سنجش کنیم. در این حالت نیازی به استفاده از سنسور مجزا برای سنجش مقادیر عمومی نخواهد بود.
چنانچه در مراحل راه اندازی و انجام این پروژه با مشکل مواجه شدید، بدون هیچ نگرانی در انتهای همین پست، به صورت ثبت نظر سوالتان را مطرح کنید. من در سریعترین زمان ممکن پاسخ رفع مشکل شما را خواهم داد. همچنین اگر ایرادی در کدها و یا مراحل اجرایی وجود دارند میتوانید از همین طریق اطلاع رسانی کنید.
در پایان نظرات و پیشنهادات خود را با ما درمیان بگذارید و با اشتراک گذاری این آموزش در شبکه های اجتماعی , از وبسایت دیجی اسپارک حمایت کنید.
با تشکر خیلی مفید بود .برم فندکو بیارم
خواهش میکنم (:
سلام خسته نباشید خیلی مطالب مفید و ارزنده ای بود وفقط یک سوال داشتم توی سری wrover همچین امکانی هست و لطفان اگر امکانش هست در باره تفاوت های این سه سری esp 32 که گفتید متن بزارید
با سلام؛ در اکثر تراشه های ESP32 این قابلیت وجود دارد، بجز مواردی که در دیتاشیت آنها ذکر شده.
ممنون از توجه شما حتما یک بلاگ در این مورد مینویسم.
سلام .. اقا اینکه همش ۵۳٫۳۳ درجه رو نشون میده نه میره بالا نه میاد پایین! اشکال از کجاست؟؟؟
با سلام، این سنسور دما برای مانیتورینگ دمای داخلی ESP استفاده میشود، البته در ورژن های مختلف تراشه متفاوت میباشد. اگر این کد را همزمان با کد های دیگر اجرا کنید شاهد تغییرات خواهید بود.