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

راه اندازی سنسور BMP280 اندازه گیری فشار، دما و تشخیص ارتفاع

نوشته شده توسط پریسا پوربلورچیان

برای اندازه گیری فشار و ارتفاع سنسور BMP280 یکی از دقیق ترین سنسورها با قیمت به صرفه است. سنسور BMP280 قابلیت اندازه گیری دما، فشار و ارتفاع دارد. با توجه به اینکه تولید کننده های مختلفی این سنسور را تولید کرده اند، در این آموزش از سنسور BMP280 با رابط خروجی I2C و SPI استفاده می‌کنیم که کاملترین ماژول در این دسته بندی می‌باشد. راه اندازی این سنسور با برد آردوینو و برد های سری ESP8266 است و در این آموزش هر دو روش آموزش داده می‌شود. در ادامه با مرجع تخصصی آردوینو به زبان فارسی دیجی اسپارک همراه باشید.

 


سنسور BMP280


سنسور BMP280 قابلیت اندازه گیری دما، فشار و ارتفاع دارد. ماژول BMP280 از جمله ماژول های حسگر الکترونیکی numerous electronic است که همزمان میتواند چندین پارامتر را تشخیص داده و نمایش دهد. بر روی ماژول سنسور نقره ای رنگ  GY-BM E/P 280 قرار گرفته شده است که پارامترهای محیطی را همانند نسخه اصلی آن اندازه گیری کرده و دیتا را ارسال می‌کند. این سنسور فشار را در بازه ۳۰۰ تا ۱۱۰۰ اندازه گیری کرده و رنج دمای اندازه گیری بین  – ۴۰ تا + ۸۵ درجه سانتی گراد است. دقت اندازه گیری فشار  ±۱ hPa است. متوسط جریان مصرفی ۲٫۷۴ µA و در حالت Sleep mode برابر با ۰٫۱ µA است. رزولوشن برای اندازه گیری فشار  ۰٫۰۱ hPa و برای دما ۰٫۰۱ درجه سانتی گراد است. ولتاژ کاری ماژول ۳٫۳ تا ۵ ولت DC است. این ماژول توان مصرفی کم، قیمت بسیار مناسب و سنسور آن مناسب استفاده در ساخت گجت های مختلف جهت اندازه گیری فشار و دما است. این سنسور در دو مدل BMP280 و BME280 تولید شده است:

  • مدل P فقط برای نمایش دما و فشار است.
  • مدل E فقط برای نمایش فشار، دما و رطوبت است.

پروتکل ارتباطی این سنسور با توجه به اینکه بر روی ماژول فقط پایه های I2C چاپ شده است، به صورت SPI و I2C است. جهت سهولت در روند اجرا هم از نظر اتصالات و هم کدنویسی پروتکل I2C در این آموزش اجرا خواهد شد. ماژول BMP280 از شش پایه تشکیل شده است:

سنسور BMP280 با رابط I2C - دیجی اسپارک

ارتباط I2C

 

  • پایه VCC به پایه ۳٫۳ ولت برد آردوینو / ESP متصل می‌شود.
  • پایه GND به پایه GND آردوینو / ESP متصل می‌شود.
  • پایه SCL به پایه A5 آناولوگ آردوینو / ESP متصل می‌شود.
  • پایه SDA به پایه A4 آنالوگ آردوینو / ESP متصل می‌شود.

اتصالات سنسور BMP280 به بردهای میکروکنترلر - دیجی اسپارک

ارتباط SPI

از پایه های CSB و SDO فقط در هنگام استفاده از رابط SPI در ارتباط ۴ سیمه استفاده می‌شود. در ارتباط SPI برای اتصالات پایه ها به صورت زیر است:

اتصالات سنسور BMP280 با SPI به بردهای میکرو - دیجی اسپارک

 

سنسور BMP280 تشخیص فشار و دما - دیجی اسپارک

 


تشخیص ارتفاع بر اساس فشار


سنسور BMP280 یک قابلیت منحصر به فرد دارد و آن فشار و ارتفاع است که توسط این تراشه اندازه گیری می‌شود. پاسکال Pa واحد اندازه گیری فشار است که در فیزیک به تعریف اصولی نیروی وارد بر سطح با آن آشنا شدیم. واحد اندازه گیری فشار هوا در هواشناسی و سطح آب هکتوپاسکال و یا میلی بار است که به صورت hPa نوشته می‎‌شود و معادل ۱۰۰ پاسکال است. فشار اتمسفری که در هوا وجود دارد برابر با ۱۰۱۳۲۵ Pa و یا معادل ۷۶ سانتی متر جیوه است. در نظر داشته باشید چگالی هوا با افزایش ارتفاع کاهش می‌یابد که مشخصه ای از فشار هوا است. با تغییر دما و رطویت چگالی هوا هم تغییر می‌کند. hpa نرمال در سطح دریا بر واحد MSL برابر با ۱۰۱۳٫۲۵ hPa یا ۲۹٫۹۲ اینچ جیوه است. برای تبدیل فشار به ارتفاع از فرمول زیر استفاده می‌شود:

۱ hectopascal (hPa) = 67.20 poundal-feet (ft pdl)
Altitude = (10^(log(P/P_0)/5.2558797)-1/(-6.8755856*10^-6)

فرمول تشخیص ارتفاع با فشار هوا - دیجی اسپارک

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

 

 


اتصال به انواع بردهای آردوینو


سنسور BMP280 به دلیل پشتیبانی از پروتکل I2C با اکثر بردهای میکروکنترلر قابلیت تست، راه اندازی و اجرای پروژه دارد. در لیست زیر چند مدل از محبوب ترین بردهای میکروکنترلر قرار گرفته شده است و کافیست با توجه به برد مورد استفاده پایه های I2C را پیدا و انتخاب کنید. در صورتیکه از سری بردهای ESP8266 استفاده می‌کنید، با توجه به آخرین آپدیت های انجام شده در کدها از D1 و D2 استفاده کنید.

اتصالات بردهای آردوینو به سنسور BMP280 - دیجی اسپارک

 

برد آردوینو نانو arduino Nano -  دیجی اسپارک

 


راه اندازی و نصب کتابخانه


برای راه اندازی این سنسور کتابخانه ی کاملی توسط Adafruit برای آن توسعه یافته است. در این کتابخانه توابع مربوط به BMP280 / BME280 نوشته شده است. همچنین در نمونه برنامه های کتابخانه نمونه کد برنامه برای پروتکل ارتباطی SPI / I2C نوشته شده است. ما در این آموزش از مدل BMP280 استفاده می‌کنیم. نرم افزار آردوینو را باز کرده و سپس مراحل زیر را انجام دهید. در صورتیکه با راه اندازی نرم افزار آردوینو Arduino آشنایی ندارید، در ابتدا آموزش کار با نرم افزار آردوینو Arduino را مطالعه کرده و سپس مراحل را پیش روید. برای نصب کتابخانه BMP280 از مسیر زیر کتابخانه را دریافت و نصب کنید.

Arduino / Tools / Libraries

 سپس کتابخانه Adafruit BMP280 Library را نصب کنید. با نصب کتابخانه، کتابخانه Adafruit bmp280 در مسیر Document / Arduino / Library ذخیره می‌شود.

نصب کتابخانه آردوینو سنسور BMP280 - دیجی اسپارک

 


یافتن آدرس I2C سنسور BMP280


ایرادی که اکثر کاربران پس از نصب کتابخانه و اجرای اولین برنامه دارند، قابل توجه است! چرا؟ زیرا هیج دیتایی از سنسور دریافت نمی‌کنند و با پیغام Could not find a valid BMP280 sensor, check wiring در آردوینو رو به رو می‌شوند. در این مرحله بایستی آدرس I2C سنسور را دریافت کنید. برای اینکار یک تب جدید در نرم افزار آردوینو باز کرده و سپس کد I2C را دریافت کنید.

#include <Wire.h>

void setup()
{
Wire.begin();
Serial.begin(9600);
while (!Serial);             
Serial.println("\nI2C Scanner");
}
 
 
void loop()
{
  byte error, address;
  int nDevices;
 
  Serial.println("Scanning...");
 
  nDevices = 0;
  for(address = 1; address < 127; address++ )
  {
   
    Wire.beginTransmission(address);
    error = Wire.endTransmission();
 
    if (error == 0)
    {
      Serial.print("I2C device found at address 0x");
      if (address<16)
        Serial.print("0");
      Serial.print(address,HEX);
      Serial.println("  !");
 
      nDevices++;
    }
    else if (error==4)
    {
      Serial.print("Unknown error at address 0x");
      if (address<16)
        Serial.print("0");
      Serial.println(address,HEX);
    }    
  }
  if (nDevices == 0)
    Serial.println("No I2C devices found\n");
  else
    Serial.println("done\n");
 
  delay(5000);         
}

کد را آپلود و سپس در سریال مانیتور کد I2C را دریافت کنید.

یافتن آدرس I2C سنسور BMP280 - دیجی اسپارک

کد I2C سنسور من به صورت ۰X76 است و بایستی در کتابخانه سنسور در فایل C++ جایگذاری شود. راه حل این مشکل بسیار ساده است. در توابع آماده ای که برای کتابخانه Adafruit BMP280 نوشته شده است در فایل C++ برنامه کد I2C نوشته نشده است. بایستی فایل را انتخاب و سپس در یکی از خط های برنامه تغییراتی انجام دهید. برای اینکار در ابتدا وارد محل نصب نرم افزار شده و سپس مراحل زیر را انجام دهید.

جایگزینی آدرس I2C در فایل کتابخانه - دیجی اسپارک

 سپس فایل را باز کرده و کد i2C که به صورت ۰X76 است را قرار دهید.

آدرس I2C در کتابخانه سنسور BMP280 - دیجی اسپارک

تمامی مراحل اجرا شده است و می‌توانید کد آردوینو برنامه را اجرا کنید.

 


نمایش فشار و دما روی LCD


در بخش اول برای نمایش پارامترهای فشار و دما از نمایشگر LCD با توجه به کاربردی بودن و هزینه بسیار کم استفاده می‌کنیم. LCD کاراکتری ۱۶X۲ یکی از پایه‌ای ترین نمایشگرهای الکترونیکی می‌باشد. ال سی دی کارکتری در بسیاری از مدارها کاربرد دارد. یکی از دلایل پر مصرف بودن این مدل ال سی دی در مقابل نمایشگرهایی همچون سون سگمنت، عدم محدودیت در نمایش کاراکترها می‌باشد. همچنین توانایی ساختن کارکترهای دلخواه را دارند.

آموزش کار با ال سی دی کاراکتری در قبلا در سایت منتشر شده است و کافیست طبق آموزش مراحل نصب کتابخانه LiquidCrystal را انجام داده و طبق جدول زیر اتصالات مربوط به ال سی دی را انجام دهید.

 آموزش راه اندازی LCD 16X2

 کتابخانه LiquidCrystal به صورت زیر است. از همان مسیر Arduino / Tools / Library آن را نصب کنید:

نصب کتابخانه LCD آردوینو - دیجی اسپارک

روش اتصال ال سی دی به آردینو به صورت زیر است. نوع آردوینو مورد استفاده مهم نیست و تنها بایستی طبق جدول پیش روید.

اتصالات LCD کاراکتری به برد آردوینو - دیجی اسپارک

راه اندازی سنسور BMP280 با LCD کاراکتری - دیجی اسپارک

 


کد آردوینو BMP280 با LCD


برای نمایش دما و فشار توسط سنسور BMP280 در بخش اول از LCD کاراکتری استفاده می‌کنیم. نمایشگر ال سی دی کاراکتری در مدل های مختلف تولید شده است و از لحاظ پایه ها و نحوه ی اتصالات و کدنویسی کاملا مشابه یکدیگر هستند. در این آموزش از LCD 16X2 استفاده شده است. دو دیتای دما و فشار به ترتیب بر روی نمایشگر ال سی دی LCD نمایش داده می‌شود و همچنین از طریق سریال مانیتور هم می‌توانید دیتا را رصد کنید. کد زیر را کپی و به نرم افزار آردوینو Arduino انتقال دهید. جهت آپلود برنامه در ابتدا بر روی Verify کلیک کنید تا از نصب کتابخانه و انتقال صحیح کدها اطمینان کسب کنید. سپس برنامه را آپلود کنید.

#include <LiquidCrystal.h>
#include <Wire.h>
#include <SPI.h>
#include <Adafruit_BMP280.h>

Adafruit_BMP280 bmp; // use I2C interface
Adafruit_Sensor *bmp_temp = bmp.getTemperatureSensor();
Adafruit_Sensor *bmp_pressure = bmp.getPressureSensor();
LiquidCrystal lcd(12, 11, 5, 4, 3, 2); // پایه آردینو متصل به ال سی دی

void setup() {
  Serial.begin(9600);
   lcd.begin(16, 2); // نوع ال سی دی ۱۶ در ۲ است.


  Serial.println(F("BMP280 Sensor event test"));

  if (!bmp.begin()) {
    Serial.println(F("Could not find a valid BMP280 sensor, check wiring!"));
    while (1) delay(10);
  }

  /* Default settings from datasheet. */
  bmp.setSampling(Adafruit_BMP280::MODE_NORMAL,     /* Operating Mode. */
                  Adafruit_BMP280::SAMPLING_X2,     /* Temp. oversampling */
                  Adafruit_BMP280::SAMPLING_X16,    /* Pressure oversampling */
                  Adafruit_BMP280::FILTER_X16,      /* Filtering. */
                  Adafruit_BMP280::STANDBY_MS_500); /* Standby time. */

  bmp_temp->printSensorDetails();
}

void loop() {
  sensors_event_t temp_event, pressure_event;
  bmp_temp->getEvent(&temp_event);
  bmp_pressure->getEvent(&pressure_event);
  
  Serial.print(F("Temperature = "));
  Serial.print(temp_event.temperature);
  Serial.println(" *C");
     lcd.clear();    
    lcd.setCursor(0,0);
    lcd.print(temp_event.temperature);
    
   lcd.print(" *C");
   

  

  Serial.print(F("Pressure = "));
  Serial.print(pressure_event.pressure);
  Serial.println(" hPa");

   lcd.setCursor(9,0);
    lcd.print(pressure_event.pressure);
      lcd.setCursor(0,15);
      lcd.print(" hPa");

  Serial.println();
  delay(2000);
}

کد را کپی و در نرم افزار آردوینو Arduino اجرا کنید. با نوجه به نوع برد مورد استفاده آن را از منو tools / Board انتخاب کرده و سپس پورت را مشخص کنید. در این کد از آردوینو نانو استفاده شده است و در تنطیمات نرم افزار نوع برد Arduino NANO انتخاب شده است.


تحلیل کد آردوینو


همانطور که در بخش قبل گفته شد در این برنامه از دو کتابخانه Adafruit_BMP280 و کتابخانه LiquidCrystal استفاده شده است. همانند زیر کتابخانه ها را فراخوانی کنید:

#include <LiquidCrystal.h>
#include <Wire.h>
#include <SPI.h>
#include <Adafruit_BMP280.h>

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

دریافت پارامتر دما:

Adafruit_Sensor *bmp_temp = bmp.getTemperatureSensor();

دریافت پارامتر فشار:

Adafruit_Sensor *bmp_pressure = bmp.getPressureSensor();

فعال شدن رابط I2C:

Adafruit_BMP280 bmp; // use I2C interface

فعال شدن ال سی دی کاراکتری و مشخص شدن پایه های مورد نیاز:

LiquidCrystal lcd(12, 11, 5, 4, 3, 2); // پایه آردینو متصل به ال سی دی

در مرحله بعد توایع ثابت در Void Setup نوشته می‌شود. در این بخش نوع ال سی دی مورد استفاده و نمایش پیغام فعال شدن سنسور BMP280 و یا در صورت عدم شناخت I2C پیغام خطا را نمایش میدهد:

void setup() {
  Serial.begin(9600);
   lcd.begin(16, 2); // نوع ال سی دی ۱۶ در ۲ است.


  Serial.println(F("BMP280 Sensor event test"));

  if (!bmp.begin()) {
    Serial.println(F("Could not find a valid BMP280 sensor, check wiring!"));
    while (1) delay(10);
  }

در بخش بعدی توابع تنظیم سنسور BMP280 از کتابخانه Adafruit-BMP280 دریافت شده و در کد برنامه اضافه می‌شود:

  /* Default settings from datasheet. */
  bmp.setSampling(Adafruit_BMP280::MODE_NORMAL,     /* Operating Mode. */
                  Adafruit_BMP280::SAMPLING_X2,     /* Temp. oversampling */
                  Adafruit_BMP280::SAMPLING_X16,    /* Pressure oversampling */
                  Adafruit_BMP280::FILTER_X16,      /* Filtering. */
                  Adafruit_BMP280::STANDBY_MS_500); /* Standby time. */

  bmp_temp->printSensorDetails();
}

در مرحله بعد نوبت به حلقه برنامه LOOP است. در این بخش دیتا توسط توابع دما و فشار طبق کتابخانه Adafruit bmp280 خوانده شده و سپس نمایش داده می‌شود.

انتخاب متغیر برای دما و فشار به صورت زیر است:

sensors_event_t temp_event, pressure_event;

دریافت دیتای دما از سنسور BMP280 به صورت زیر است:

  bmp_temp->getEvent(&temp_event);

دریافت دیتای فشار از سنسور BMP280 به صورت زیر است:

  bmp_pressure->getEvent(&pressure_event);

تا این مرحله تمامی توایع لازم جهت دریافت پارامترهای دما و فشار از سنسور گرفته شده است و آخرین و مهم ترین بخش نمایش دیتا است. برای این کار به دو روش قابل انجام است. دیتا توسط سریال مانیتور در بادریت ۹۶۰۰ تنظیم شده و نمایش داده می‌شود. در Void Setup در ابتدا بادریت مشخص شده و سپس برای هر پارامتر به صورت جداگانه توسط تابع serial print دیتا را نمایش میدهیم:

void setup() {
  Serial.begin(9600); 
{


 Serial.print(F("Temperature = "));
  Serial.print(temp_event.temperature);
  Serial.println(" *C");


 Serial.print(F("Pressure = "));
  Serial.print(pressure_event.pressure);
  Serial.println(" hPa");


Serial.println();
{

روش دوم استفاده از توابع ال سی دی است که در بخش اول کدها پایه های انتخابی برای ال سی دی و نوع ال سی دی را در Void setup مشخص کردیم. در بخش Void loop کافیست توابع مربوط به نمایش دیتا در ال سی دی LCD کاراکتری نمایش داده شود. برای اینکار طبق کد زیر عمل می‌کنیم:

LiquidCrystal lcd(12, 11, 5, 4, 3, 2); // پایه آردینو متصل به ال سی دی

void setup() {
 lcd.begin(16, 2); // نوع ال سی دی ۱۶ در ۲ است.

{

void loop() {

 lcd.clear();    
    lcd.setCursor(0,0);
    lcd.print(temp_event.temperature);
    
   lcd.print(" *C");




lcd.setCursor(9,0);
    lcd.print(pressure_event.pressure);
      lcd.setCursor(0,15);
      lcd.print(" hPa");

{

به همین ترتیب پس از آپلود برنامه با انتخاب مکان نمای مناسب در کدها برای نمایش دیتا در ال سی دی LCD، دیتا به صورت زیر نمایش داده می‌شود.

نمایش وضعیت سنسور BMP280 در سریال مانیتور آردوینو - دیجی اسپارک

 

 


بخش دوم OLED


در بخش دوم آموزش میخواهیم دیتای دما و فشار سنسور BMP280 بر روی نمایشگر OLED نمایش داده شود. برای اینکار روند کدنویسی و کتابخانه ها تغییر خواهد کرد. برای اینکار به کتابخانه ADAFRUIT SSD1306 نیاز داریم.

 

نمایشگر OLED برای سنجش فشار هوا با سنسور BMP280 - دیجی اسپارک

 

 


نمایشگر OLED SSD1306


یکی از پرکاربردترین ماژول OLED که در حال حاضر در صنعت الکترونیک و بردهای توسعه میکروکنترلر استفاده می‌شود، نمایشگر OLED با درایور قدرتمند SSD1306 است که در اشکال مختلف به بازار ارائه شده است. چیپ SSD1306 یک کنترل کننده درایور قدرتمند CMOS است. این درایور از پروتکل های ارتباطی I2C و SPI پشتیبانی میکند و با توجه به اینکه در پروتکل I2C تنها با دو پایه برای اتصال نیاز دارد، برای اتصال OLED به میکروکنترلرها از این پروتکل بیشتر استفاده خواهیم کرد. ولتاژ کاری نمایشگر ۳٫۳ و ۵ ولت است و از هر دو پایه های تعذیه میکروکنترلر میتوانید استفاده کنید. زاویه دید نمایشگر ۱۶۰ درجه است و ابعاد آن ۰٫۹۶ اینچ است. نمایشگر دارای ۸ سطر و ۱۲۸ ستون است. این OLED در ردو رنگ سفید و زرد موجود است. دقیق ترین کتابخانه ای که برای OLED وجود دارد توسط Adafruit  توسعه یافته است و پیشنهاد می‌شود فقط از این کتابخانه استفاده کنید. با توجه به اینکه پروتکل ارتباطی نمایشگر ماژول OLED به صورت I2C است، با تمامی میکروکنترلرهایی که از پروتکل I2C پشتیبانی می‌کنند قابل تست و راه اندازی است و بدون نگرانی با نصب کتابخانه های مرتبط میتوانید ماژول نمایشگر را راه اندازی و استفاده کنید.

 

ماژول OLED 0.96 با رابط I2C - دیجی اسپارک

کتابخانه Adafruit SSD1306

جهت استفاده از ماژول‌های OLED با درایور SSD1306 به کتابخانه Adafruit_SSD1306 نیاز داریم. لینک دانلود کتابخانه در ادامه در بخش دانلود قرار گرفته شده است. در مرحله اول کتابخانه را از لینک زیر دانلود کرده و پس از دانلود به مسیر گفته شده انتقال دهید:

Arduino / Tools / Manage labiraries

سپس عبارت Adafruit SSD1306 را جست و جو کنید:

نصب کتابخانه OLED SSD1306 آردوینو - دیجی اسپارک

در ادامه به کتابخانه Adafruit_gfx نیاز داریم. همانند تصویر زیر کتابخانه را فیلتر و نصب کنید:

نصب کتابخانه GFX نمایشگر OLED - آردوینو - دیجی اسپارک

نمایش متن 

 جهت نمایش متن از دستور display استفاده می‌کنیم. در کد زیر تمامی خط های برنامه معرفی شده است. آن را کپی و به نرم افزار آردوینو انتقال دهید.

 

محدودیت در دسترسی کامل به این مجموعه آموزش

 

دسترسی کامل به آموزش برای اعضای دیجی اسپارک امکان پذیر است. بخش اصلی آموزش شامل سورس کدهای توسعه داده شده توسط مهندس‌های دیجی اسپارک است. به همین دلیل این آموزش خاص و یکتاست. برای استفاده از آن بایستی عضویت تهیه کنید. تبادل نظر با کاربران و پرسش سوال رایگان است و میتوانید از بخش نظرات همین آموزش اقدام کنید.

 

 


کد آردوینو با OLED


همانطور که گفته شد بخش دوم آموزش با نمایشگر OLED است. به این ترتیب که پس از دریافت دیتا از سنسور پارامترها بر روی OLED نمایش داده می‌شود. کد را توسط کلیدهای میانبری که در سمت راست قرار دارد، در یک تب جدید کپی کرده و سپس اجرا کنید.

 

محدودیت در دسترسی کامل به این مجموعه آموزش

 

دسترسی کامل به آموزش برای اعضای دیجی اسپارک امکان پذیر است. بخش اصلی آموزش شامل سورس کدهای توسعه داده شده توسط مهندس‌های دیجی اسپارک است. به همین دلیل این آموزش خاص و یکتاست. برای استفاده از آن بایستی عضویت تهیه کنید. تبادل نظر با کاربران و پرسش سوال رایگان است و میتوانید از بخش نظرات همین آموزش اقدام کنید.

 


اتصالات OLED


برای اتصال سنسور BMP280 و OLED از جدول زیر استفاده کنید. در نظر داشته باشید پروتکل ارتباطی هر دو ماژول به صورت I2C است و برد آردینو فقط از رابط I2C برخوردار است. برای اتصال همزمان دو ماژول با رابط I2C به آردوینو کافیست از پایه ها اشتراک بگیرید. هر دیوایس I2C یک کد دارد و در برنامه به صورت مجزا تعریف می‌شود و از تداخل پایه هاِ I2C جلوگیری می‌کند. به عنوان مثال تصویر زیر اتصال چندین دیوایس با پروتکل I2C با آدرس دهی متفاوت را نمایش میدهد. در این آموزش هم آدرس دهی به صورت زیر است.

  •  آدرس I2C OLED = به صورت ۰X3C
  • آدرس I2C BMP20 = به صورت ۰X76

که هر دو آدرس در کدهای برنامه فراخوانده شده است و کافیست در اتصال به آردوینو اشتراک بگیرید. برای اینکار میتوانید از یک برد برد استفاده کنید.

اتصال چندین سنسور با رابط I2C به بردهای میکروکنترل - دیجی اسپارک

اتصالات به صورت زیر است:

اتصالات دو ماژول با رابط I2c - دیجی اسپارک

 

راه اندازی سنسور BMP280 با آردوینو نانو oled - دیجی اسپارک

 

 


تحلیل کد آردوینو BMP280


 

محدودیت در دسترسی کامل به این مجموعه آموزش

 

دسترسی کامل به آموزش برای اعضای دیجی اسپارک امکان پذیر است. بخش اصلی آموزش شامل سورس کدهای توسعه داده شده توسط مهندس‌های دیجی اسپارک است. به همین دلیل این آموزش خاص و یکتاست. برای استفاده از آن بایستی عضویت تهیه کنید. تبادل نظر با کاربران و پرسش سوال رایگان است و میتوانید از بخش نظرات همین آموزش اقدام کنید.

 

 

سنجش فشار و ارتفاع هوا با سنسور BMP280 و نمایشگر oled - دیجی اسپارک

 


جمع بندی لیدی پای


سنسور BMP280 از جمله سنسورهای کاربردی جهت دریافت پارامترهای محیطی است. به واسطه پارامتر فشار میتوانیم ارتفاع را اندازه گیری کرده و در نهایت تشخیص ارتفاع بر اساس فشار را اندازه گیری کنیم. این سنسور به واسطه پشتیبانی از دو پروتکل I2C و SPI استفاده از بردهای میکروکنترلر را برای ما راحت تر کرده است. آدرس دهی سنسور بسیار مهم است و قبل از شروع آموزش بایستی کد I2C سنسور مورد استفاده را دریافت و سپس در فایل کتابخانه وارد کنید. نمایش دیتا در دو نمایشگر مختلف به شما آموزش داده شده است و کافیست بر اساس نیاز خود از هر یک از کدها استفاده کنید. همچنین امکان نمایش همزمان دیتا بر روی LCD و OLED وجود دارد و کافیست پس از تحلیل کدها، آن را توسعه داده و یک کد کامل بنویسید. در خصوص انتخاب برد این مورد تاثیری در عملکرد پروژه ندارد و تنها بایستی در صورت استفاده از بردهای ESP8266 پایه ها را عبارت D در برنامه مشخص کنید.

 


وسایل مورد نیاز


برد آردوینو

سنسور فشار BMP280

نمایشگر LCD

نمایشگر OLED

برد بورد Breadboard

کابل فلت 

 

چنانچه در مراحل راه اندازی و انجام این پروژه با مشکل مواجه شدید، بدون هیچ نگرانی در انتهای همین پست، به صورت ثبت نظر سوالتان را مطرح کنید. من در سریع‌ترین زمان ممکن پاسخ رفع مشکل شما را خواهم داد. همچنین اگر ایرادی در کدها و یا مراحل اجرایی وجود دارند می‌توانید از همین طریق اطلاع رسانی کنید.

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

پریسا پوربلورچیان

تولید کننده محتوا / کارشناس IOT

زندگی یعنی پژوهش و فهمیدن چیزی جدید

تلاشم بر این است تجربیاتم در زمینه IOT‌ را به بهترین شکل با شما در میان بگذارم.

تبادل نظر و رفع عیب با ثبت دیدگاه

۱۷ دیدگاه

    • با سلام
      کاربر گرامی ضمن تشکر از شما، این مورد بررسی و در صورت امکان آموزش داده خواهد شد.

      • سلام ممنون بابت توضیح خوبتون…
        به نظر شما ماژول BMP180 دقتش بیشتره یا BMP280 ؟؟؟ من فقط تونستم تفاوتش توی داشتن رگولاتور بفهمم…اما نمیدونم دقتش کدوم بهتره

        • با سلام
          bmp20 , bme280 هر دو از پروتکل های spi , i2c استفاده می‌کنند و اما bmp180 فقط از پروتکل i2c استفاده می‌کند.

  • وقتی کد اول را اجرا میکنم مینویسه:
    No I2C devices found

    از آردوینو مگا استفاده می‌کنم. روی پین‌ها A4&A5 و ۲۰&21 هر دو حالت را تست کردم.
    مشکل چی میتونه باشه؟ ممنون میشم راهمنایی کنید.

    • با سلام
      سنسور را به صورت جداگانه به آردوینو متصل کرده و سپس برنامه ی I2C Scanner را اجرا کنید تا مطمئن شوید سنسور مورد استفاده کد i2c را نمایش میدهد یا خیر.
      با سرچ i2c scanner arduino c میتوانید برنامه را پیدا کنید.

  • سلام دیگه خواهر کپی پیست کردن کد سایتهای خارجی نیازی به صرف هزینه و عضو شدن نیست…نکنید این کار رو ..بخصوص کاری که زحمت زیادی واسش کشیده نشده…ذکات علم نشر اون هست… والا اغلب سایتهای آموزشی خارجی مطالب پایه رو بدون چشم داشت در اختیار دیگران قرار میدن…سایتهای داخلی فقط قبل از شناخته شدن دست به انجام اینکار میزنند و بعدش…دنبال کسب درآمد به هر قیمتی…البته هنوز چند سایت داخلی هست که رسالت خوبی رو که درپیش گرفته بودند رو همچنان ادامه می دهند…

    • با سلام و تشکر از شما جناب طافی
      دقت داشته باشید که ما در دیجی اسپارک با اشتراکی کردن کدها، قصد توهین به شعور مخاطب را نداریم. کدهایی که شما از آن ها صحبت میکنید، همگی مشکلاتی به همراه دارند ولی ما در دیجی اسپارک، تمامی موارد را خودمون تست میکنیم و کدها را توسعه میدهیم. در چنین شرایطی اون آموزش اشتراکی خواهد بود. در حال حاضر هم بیش از ۶۰ درصد آموزش های دیجی اسپارک رایگان هستند. چندتا آمار میدم بهتون صرفا بابت اینکه روی حرفهاایی که زدید بیشتر تامل کنید.
      ۱- ما به بیش از ۳۰ هزار کاربر خدمات داده‌ایم و کمکشان کرده‌ایم تا مشکلاتشان رفع شود.
      ۲- ما بیش از ۲ هزار آموزش تخصصی منتشر کرده‌ایم.
      ۳- ما هر هفته بیش از ۱۰ پست جدید منتشر میکنیم.

      برای همین چند مورد کوچک، پرداخت مبلغ اشتراک، فقط نقش حمایتی را دارد. تازه مثل خیلی از سایتهای دیگه نیومدیم التماس کنیم که بیاین به ما کمک کنین و هرکی هرچی دوست داره، پرداخت کنه، اگر شما مهندس هستید، پس دنیا را با دید مهندسی و عمیق تر ببینید و از ارایه چنین صحبت ها و تحلیل های سطحی خودداری کنید.

      با تقدیم احترام

    • با سلام
      کاربر گرامی در این خصوص برد آردوینو در تمامی دنیا و جوامع کاربران الکترونیک و برنامه نویس فراگیر است و هر روز یک برد جدید از یک کمپانی معرفی می‌شود. هدف ما در دیجی اسپارک به روز بودن و هم راستا بودن با تکنولوژی روز الکترونیک است و بتوانیم به تمامی کاربران خدمات و آموزش های مناسبی ارائه دهیم.

  • درود ،من خلبان پاراگلایدر هستم .میخواستم راهنماییم کنید که این سنسور فشار هوا هنگام بالا وپایین شدن فشار هوا امکان نصب الارم هم میتونه داشته باشه تا لیفت و سینک رو متوجه بشم