الاثنين، 4 فبراير 2019

قياس درجة الحرارة والضغط والارتفاع بواسطة اردوينو



المواد المستخدمة
اردوينو اونو او جينون
Adafruit BMP280
Adafruit OLED 128x32 i2c


مرحبًا بك ومرحبا بكم في هذا البرنامج التعليمي حيث أستخدم BMP280 لقياس درجة الحرارة والضغط والإرتفاع أيضًا ، بمساعدة لوحة Arduino UNO وشاشة OLED ، وهنا بعض من المعلمات الرئيسية BMP280 من ورقة البيانات:





لذا بالنسبة لهذا المشروع ، سنستخدم الوحدة لقياس كل هذه الأشياء في النظامين المتري والإمبراطوري كالمعتاد ، لست متأكدًا من الوحدات ولكن يمكنك دائمًا تحويلها من خلال الشفرة ، وهنا المكونات التي سنقوم بها استعمال:






الاختبار واستكشاف الأخطاء وإصلاحها:
       بعد توصيل الوحدة ، من الأفضل اختبار الشفرة من مثال المكتبة ، واسمها هو "BMP280test" ، إذا لم يتم اكتشاف وحدتك كما في الصورة أدناه:



يمكنك تشغيل شفرة i²c للماسح الضوئي (ولكن قم بإلغاء توصيل أي جهاز آخر i²c مثل LCD أو OLED) ، وإذا لم يتم كسر الوحدة ، أو إذا لم يكن لديك مشكلة في اللحام ، فسترى أن الجهاز قد تم اكتشافه بواسطة الماسح الضوئي :


الآن لاحظ هذا العنوان وانتقل إلى ملف مكتبة c ++ الخاص بك ، يتم تثبيت المكتبة عادة في 
“Documents/Arduino/Libraries”:


وفتحه باستخدام محرر مناسب ، فأنا أستخدم 
Dev ++c





ثم انتقل إلى السطر "41" و "_i2caddr" تغيير "a" باستخدام العنوان الموجود على جهاز العرض التسلسلي:



حفظ الكل وإغلاقه ، يُقصد بالمكتبة العمل مع الوحدات التي تحتوي على 0x77 كعنوان i²c ، لكن العنوان الذي أستخدمه له 0x76.

قم بتشغيل رمز الاختبار مرة أخرى:




كود البرمجة


#include <Adafruit_BMP280.h>

Adafruit_BMP280 bmp; // I2C Interface

void setup() {
  Serial.begin(9600);
  Serial.println(F("BMP280 test"));

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

  /* 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. */
}

void loop() {
    Serial.print(F("Temperature = "));
    Serial.print(bmp.readTemperature());
    Serial.println(" *C");

    Serial.print(F("Pressure = "));
    Serial.print(bmp.readPressure()/100); //displaying the Pressure in hPa, you can change the unit
    Serial.println(" hPa");

    Serial.print(F("Approx altitude = "));
    Serial.print(bmp.readAltitude(1019.66)); //The "1019.66" is the pressure(hPa) at sea level in day in your region
    Serial.println(" m");                    //If you don't know it, modify it until you get your current altitude

    Serial.println();
    delay(2000);
}
Adafruit SSD1306
Adafruit GFX library
BMP280_Adafruit_library

ليست هناك تعليقات:

إرسال تعليق