سنسور فشار BMP180 پارامترهای محیطی از جمله دما و فشار هوا را سنجش میکند. سنسور فشار سنج BMP180 در پروژههای مختلفی کاربر دارد. در این آموزش به کمک سنسور دما و فشار سنج BMP180 و همچنین برد ESP8266 مقادیر دما را بدست آورده و در نمایشگر Oled، نمایش خواهیم داد. در انتهای پروژه شما قادر به ساخت یک دماسنج دقیق با چند ماژول ساده خواهید بود که بدلیل استفاده از برد ESP8266 می توانیم در آموزش های بعدی اطلاعات سنسور را در وبسرور نیز نمایش دهیم. در ادامه این آموزش با مرجع تخصصی آردوینو به زبان فارسی، دیجی اسپارک همراه باشید.
سنسور دما و فشار BMP180
سنسور فشار سنج BMP180 برای مواردی که نیاز به دقت بالایی در اندازه گیری دارند استفاده میشود، این سنسور با دقت ۰٫۰۳ هکتوپاسکال قابلیت اندازهگیری فشار هوا و همچنین دما را دارد که این پروسه ابتدا با اندازه گیری دما محیط و سپس فشار صورت میگیرد، در واقع BMP180 فشار و دما را اندازه گیری می کند زیرا دما، چگالی گازها مانند هوا را تغییر می دهد. در دمای بالاتر هوا متراکم و سنگین نیست، بنابراین فشار کمتری به سنسور وارد می کند. در دمای پایین هوا چگال تر و وزن بیشتری دارد، بنابراین فشار بیشتری به سنسور وارد می کند. این سنسور از اندازه گیری دما در زمان واقعی برای جبران قرائت فشار برای تغییر در چگالی هوا استفاده می کند.
برد ESP8266
تراشه های ESP8266 از موارد محبوب در زمینه اینترنت اشیا هستند که نسبت به دیگر نمونه ها کیفیت بهتر و همچنین قیمت پایین تری نیز دارند، هسته مرکزی این ماژول ESP8266 EX می باشد که در واقع زیر این شیلد فلزی قرار گرفته است، در ضمن این شیلد فلزی به منظور کاهش نویز و همچنین محافظت از قطعات SMD حساس این ماژول قرار داده شده است. این ماژول ها در سری های مختلفی تولید میشوند از جمله esp01 و esp12، در واقع تفاوتی که مدل ها با یکدیگر دارند تعداد GPIO ها و همچنین حافظه آن ها است البته معمولا از نظر ظاهری نیز تفاوت هایی که با یکدیگر دارند که قابل تشخیص است. این ماژول ها از شبکه WIFI داخلی پشتیبانی میکنند، این میکرو کنترلر ها اولین بار در سال ۲۰۱۴ به بازار عرضه شدند. ESP8266 دارای ۱۳ GPIO و همچنین یک ورودی آنالوگ (A0) است.
ماژول نمایشگر Oled 1306
معمولا در پروژه های اینترنت اشیا و دیگر پروژه های امبدد از برای نمایش متن و مقادیر مختلف از نمایشگر های Oled استفاده می شود، این ماژول ها بدر انواع مختلق بسته به نوع ذرایور اندازه یافت می شوند که یکی از پرطرفدار ترین آن ها SSD1306 می باشد، این نوع از Oled ها معمولا در اندازه های ۰٫۹۶ و ۱٫۳ اینچ ساخته می شوند همچنین پروتکل ارتباطی Oled ها I2C می باشد.
شرح آموزش
در این آموزش ابتدا دمای محیط را با استفاده از سنسور BMP180 بدست آورده و در سریال مانیتور در نرمافزار Arduino IDE و همچنین ماژول Oled 0.96 نمایش خواهیم داد. در ادامه با استفاده از مقادیر بدست آمده فشار هوای محیط را نیز مشخص خواهیم کرد.
وسایل موردنیاز
نصب کتابخانه مورد نیاز
ابتدا در نرم افزار Arduino IDE اقدام به نصب کتابخانه مورد نیاز خواهیمکرد. مراحل زیر را دنبال کنید.
- این مسیر را دنبال کنید Sketch > Include Library > Manage Libraries
- کلمه Adafruit SSD1306 را جستجو کنید.
- کتابخانه را نصب کنید.
- سپس کلمه “GFX” را جستجو کنید و آن را نصب کنید.
در ادامه با استفاده از این لینک کتابخانه مورد نیاز برای راهاندازی سنسور BMP180 را دانلود و به نرم افزار Arduino IDE اضافه کنید.
تست و راهاندازی
در اولین مرحله اتصالات را مطابق جدول و شماتیک زیر برقرار کنید، به این دلیل که هر دو ماژول یعنی نمایشگر Oled و BMP180 از پروتکل I2C استفاده می کنند، پس تنها با موازی کردن پین های SDA, SCL میتوانیم هردو ماژول را راهاندازی کنیم.
در ادامه کد های استفاده شده در این پروژه را بررسی خواهیم کرد. ابتدا کتابخانه های مورد نیاز را فراخوانی می کنیم.
include <SFE_BMP180.h> #include <SPI.h> #include <Wire.h> #include <Adafruit_GFX.h> #include <Adafruit_SSD1306.h>
در این قسمت طول و عرض نمایشگر Oled را وارد میکنیم.
#define SCREEN_WIDTH 128 #define SCREEN_HEIGHT 64
در این قسمت محاسبات مورد نیاز برای بدست آوردن دمای هوا به سانتیگراد را انجام میدهیم، همچنین آن هارا در سریال مانیتور نمایش می دهیم به همراه فشار هوا.
Serial.print("temperature: "); Serial.print(T,2); Serial.print(" deg C, "); Serial.print((9.0/5.0)*T+32.0,2); Serial.println(" deg F");
در ادامه تنظیمات متن در Oled را مشخص و همچنین اقدام به چاپ دما در نماشگر Oled خواهیم کرد.
display.setCursor(0,0); display.setTextSize(2); display.setTextColor(WHITE); display.println("Temp: "); display.print(T,2); display.print(" C"); display.display();
در آخرین خط از کد یک دیلی ۵۰ میلی ثانیه ای استفاده می کنیم که در واقع نرخ refresh rate ماژول oled به حساب می آید.
delay(50);
کد کامل سنسور فشار سنج BMP180 آماده برای آپلود
#include <SFE_BMP180.h> #include <SPI.h> #include <Wire.h> #include <Adafruit_GFX.h> #include <Adafruit_SSD1306.h> SFE_BMP180 pressure; #define SCREEN_WIDTH 128 #define SCREEN_HEIGHT 64 #define OLED_RESET -1 Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET); #define ALTITUDE 80.0 void setup() { Serial.begin(115200); display.begin(SSD1306_SWITCHCAPVCC, 0x3C); display.clearDisplay(); Serial.println("REBOOT"); if (pressure.begin()) { Serial.println("BMP180 init success"); display.clearDisplay(); display.setCursor(0,0); display.setTextSize(1); display.setTextColor(WHITE); display.println("BMP180 init success"); display.display(); delay(5000); display.clearDisplay(); } else { Serial.println("BMP180 init fail\n\n"); display.clearDisplay(); display.setCursor(0,0); //oled display display.setTextSize(1); display.setTextColor(WHITE); display.println("BMP180 init fail"); display.display(); delay(5000); display.clearDisplay(); while(1); // Pause forever. } } void loop() { char status; double T,P,p0,a; Serial.println(); Serial.print("provided altitude: "); Serial.print(ALTITUDE,0); Serial.print(" meters, "); Serial.print(ALTITUDE*3.28084,0); Serial.println(" feet"); display.clearDisplay(); status = pressure.startTemperature(); if (status != 0) { delay(status); status = pressure.getTemperature(T); if (status != 0) { Serial.print("temperature: "); Serial.print(T,2); Serial.print(" deg C, "); Serial.print((9.0/5.0)*T+32.0,2); Serial.println(" deg F"); display.setCursor(0,0); display.setTextSize(2); display.setTextColor(WHITE); display.println("Temp: "); display.print(T,2); display.print(" C"); display.display(); } } delay(50); }
جمع بندی
در این آموزش با استفاده از قطعات BMP180, Oled 0.96 و همچنین برد ESP8266 توانستیم دمای محیط را در نمایشگر oled و سریال مانیتور نرمافزار Arduino چاپ کنیم. در آموزش های بعدی بدلیل استفاده از برد ESP8266 اقدام به ارسال اطلاعات به وب سرور خواهیم کرد.
- تنظیمات منوی tools در نرم افزار آردوینو نیز مانند تصویر زیر است.
چنانچه در مراحل راه اندازی و انجام این پروژه با مشکل مواجه شدید، بدون هیچ نگرانی در انتهای همین پست، به صورت ثبت نظر سوالتان را مطرح کنید. من در سریعترین زمان ممکن پاسخ رفع مشکل شما را خواهم داد. همچنین اگر ایرادی در کدها و یا مراحل اجرایی وجود دارند میتوانید از همین طریق اطلاع رسانی کنید.
در پایان نظرات و پیشنهادات خود را با ما درمیان بگذارید و با اشتراک گذاری این آموزش در شبکه های اجتماعی , از وبسایت دیجی اسپارک حمایت کنید.