آموزش آردوینو UNO ( سنسور فشار ، دما و رطوبت )

به آموزش آردوینو ( قسمت شانزدهم – سنسور فشار و دما و رطوبت ) خوش اومدید.

بازبینی اول : در تاریخ ۱۴۰۰/۰۵/۲۴ انجام شد!

سنسور فشار ، دما و رطوبت BME280

این سنسور دقیق می تواند رطوبت نسبی ۰ تا ۱۰۰٪ رو با دقت ۳٪، ، فشار بارومتری ۳۰۰Pa تا ۱۱۰۰ را با دقت مطلق۱hpa ± و دمای ۴۰- تا ۸۵ درجه سیلسیوس ° C رو با دقت ۱.۰ درجه اندازه گیری کند.

این ماژول از یک رابط I2C دو سیمه ساده برخوردار است.

از این پایه بعنوان تغذیه ماژول استفاده میکنیم که میتونیم به ولتاژ بین ۳.۳ تا ۵ ولت متصل کنیم

VCC : پایه تغذیه که به پایه ۵ ولت برد آردوینو متصل میکنیم.

GND : به پایه GND برد آردوینو وصل میکنیم.

SCL : پایه کلاک ارتباط I2C به پایه A5 آردوینو متصل میکنیم.

SDA : پایه انتقال دیتا ارتباط I2C به پایه A4 آردوینو متصل میکنیم.

پیاده سازی عملی پروژه

 فقط از ۴ سیم برای اتصال ماژول به برد آردوینو استفاده میکنیم . بعد از اینکه از اتصال VCC و GND ماژول به برد آردوینو مطمئن شدیم ، پایه SCL ماژول رو به پین A5 برد آردوینو و پایه SDA ماژول رو به پین A4 برد آردوینو متصل میکنیم.

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

 ابتدا باید کتابخانه bme280 را در برنامه Arduino IDE نصب کنیم.

برای نصب کتابخانه bme280 مراحل زیر رو طی میکنیم:

از منوی Sketch منوی Include library و بعدش گزینه Manage libraries رو کلیک میکنم حالا در پنجره باز شده در کادر جستجو اسم کتابخانه مورد نظرمان را وارد کنیم و آخرین ورژن آن را نصب میکنیم.

کد های دستوری

برنامه با فراخوانی ۴ تا کتابخونه wire.h (آموزش پروتکل ارتباطی I2C) و spi.h (آموزش پروتکل ارتباطی SPI) وAdafruit_Sensor وAdafruit_BME280 شروع میشود.

#include <Wire.h>
#include <Adafruit_Sensor.h>
#include <Adafruit_BME280.h>

چون سنسور BME280 مستقیما توانایی اندازه گیری ارتفاع از سطح دریا رو ندارد بنابراین از متغیر SEALEVELPRESSURE_HPA برای تبدیل مقدار فشار به ارتفاع استفاده میکنیم.

در ادامه یه شی بنام bme برای استفاده از توابع موجود در کتابخونه ماژول تعریف میکنیم.

#define SEALEVELPRESSURE_HPA (1013.25)

Adafruit_BME280 bme;

در تابع setup

ابتدا با دستور Serial.begin خروجی سریال مانیتور برد آردوینو رو برای نمایش داده های دریافتی از سنسور فعال میکنیم.

در ادامه با دستور bme.begin چک میکنیم که آیا آدرس ماژول BME280 با آدرس 0x76 مطابقت داره یا خیر.اگه آدرس سخت افزار ماژول چیزی غیر از 0x76 بود کاربر با پیغام خطا مواجه میشود.

Serial.begin(9600);

if (!bme.begin(0x76)) {
	Serial.println("Could not find a valid BME280 sensor, check wiring!");
	while (1);
}

در تابع loop توی حلقه اصلی برنامه با کمک توابع کمکی کتابخونه BME280 مقادیر فشار ، دما و رطوبت رو از ماژول دریافت میکنیم و بر روی سریال مانیتور نمایش میدیم:

-از تابع bme.readTemperature برای دریافت مقدار دما بر حسب سیلسوس

-از تابع bme.readPressure برای دریافت فشار بارومتریک

-از تابع bme.readHumidity برای دریافت رطوبت هوا

-از تابع bme.readAltitude برای محاسبه ارتفاع از سطح دریا استفاده میکنیم.

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("%");

کد کامل پروژه

#include <Wire.h>
#include <Adafruit_Sensor.h>
#include <Adafruit_BME280.h>

#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);
}

پایان آموزش آردوینو ( قسمت شانزدهم – سنسور فشار و دما و رطوبت ) 

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

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

قبلا حساب کاربری ایجاد کرده اید؟
گذرواژه خود را فراموش کرده اید؟
Loading...