حساس الضغط الجوي BME280
تعريف بالحساس :
يقيس هذا الحساس الضغط الجوي والحرارة والرطوبة في الجو المحيط به والارتفاع التقريبي عن سطح البحر ويتميز بالدقة العالية ويستطيع التواصل مع المتحكمات كالاردوينو عن طريق بروتوكول اتصال I2C .
يأتي هذا الحساس بتصميمين (مبين بالصورة جانباً) ب4 او 6 منافذ توصيل ولكن بسبب دعمه لاتصال I2C ففي كلا الحالتين نحتاج لمنفذي توصيل SDA , SCL فقط (اضافة للتغذية الكهربائية).
كما يمكن توصيل الحساس (نسخة 6 منافذ) مع المتحكمات عن طريق بروتوكول SPI .

تحميل المكتبات الضرورية :
يحتاج هذا الحساس لمكتبات خاصة لتشغيله وهي مكتبة Adafruit sensors و مكتبة bme280
بالإضافة الى مكتبات بروتوكول الاتصال المستخدم I2C أو SPI (هذه المكتبات مضمنة في برنامج الاردوينو بشكل تلقائي).
التوصيل والبرمجة :
سنقوم الان بعرض كيفية توصيل الحساس بالاردوينو باستخدام بروتوكولي الاتصال I2C , SPI وقراءة قيم الحساس وعرضها على السيريال مونيتور .

الكود
#include
#include
#include
#define BME_SCK 13
#define BME_MISO 12
#define BME_MOSI 11
#define BME_CS 10
#define SEALEVELPRESSURE_HPA (1013.25)
Adafruit_BME280 bme(BME_CS, BME_MOSI, BME_MISO, BME_SCK);
unsigned long delayTime;
void setup() {
Serial.begin(9600);
Serial.println(F("BME280 test"));
bool status;
status = bme.begin();
if (!status) {
Serial.println("Could not find a valid BME280 sensor, check wiring!");
while (1);}
Serial.println("-- Default Test --");
delayTime = 1000;
Serial.println();}
void loop() {
printValues();
delay(delayTime);}
void printValues() {
Serial.print("Temperature = ");
Serial.print(bme.readTemperature());
Serial.println(" *C");
Serial.print("Pressure = ");
Serial.print(bme.readPressure() / 100.0F);
Serial.println(" hPa");
Serial.print("Approx. Altitude = ");
Serial.print(bme.readAltitude(SEALEVELPRESSURE_HPA));
Serial.println(" m");
Serial.print("Humidity = ");
Serial.print(bme.readHumidity());
Serial.println(" %");
Serial.println();}

الكود
#include
#include
#include
#define SEALEVELPRESSURE_HPA (1013.25)
Adafruit_BME280 bme;
void setup() {
Serial.begin(9600);
if (!bme.begin(0x76)) {
Serial.println("Could not find a valid BME280 sensor,check wiring!");
while (1);}}
void loop() {
Serial.print("Temperature = ");
Serial.print(bme.readTemperature());
Serial.println("*C");
Serial.print("Pressure = ");
Serial.print(bme.readPressure() / 100.0F);
Serial.println("hPa");
Serial.print("Approx. Altitude = ");
Serial.print(bme.readAltitude(SEALEVELPRESSURE_HPA));
Serial.println("m");
Serial.print("Humidity = ");
Serial.print(bme.readHumidity());
Serial.println("%");
Serial.println();
delay(1000);}