به پروژه بعدی آردوینو خود این قابلیت را اضافه کنید تا به کمک سنسور BME280 دنیای اطراف خود را حس کند و اطلاعات مفید و کاربردی از هر نقطهای که مد نظر شما باشد را به شما ارائه دهد. استفاده از این سنسورها نسبتاً ساده است چرا که از قبل کالیبره شدهاند و به اجزای اضافی نیاز ندارد، بنابراین میتوانید در کوتاهترین زمان ممکن رطوبت نسبی، دما و فشار هوا را اندازهگیری کنید. برای راه اندازی سنسور BME208 بااستفاده از آردوینو و یادگیری کار با این سنسور کاربردی در این مقاله همراه ما باشید.
سنسور دما، رطوبت و فشار BME280
در قلب ماژول BME280، سنسور BME280 ساخت شرکت Bosch قرار دارد که نسل جدیدی از سنسورهای دما، رطوبت و فشار است. این سنسور جایگزین بهبودیافتهی سنسورهایی مانند BMP180 ،BMP085 یا BMP183 به شمار میرود.
این سنسور دقیق میتواند رطوبت نسبی را از 0 تا 100 درصد با دقت 3± درصد، فشار هوا را از 300 پاسکال تا 1100 هکتوپاسکال با دقت 1± هکتوپاسکال و دما را از 40- تا 85 درجه سانتیگراد با دقت 1.0± درجه سانتیگراد اندازهگیری کند. ولتاژ کاری ماژول BME280، از 3.3 تا 5 ولت است که برای کار با میکروکنترلرهایی مانند آردوینو ایدهآل است. ارتباط با این ماژول از طریق پروتکل ساده دو سیمه I2C انجام میگیرد. آدرس I2C ماژول BME280 به صورت پیشفرض برابر 0x76 است که البته این آدرس قابل تغییر است.
تغذیه مورد نیاز برای راه اندازی سنسور BME280
بر روی برد این ماژول یک رگولاتور 3.3 ولت LM6206 قرار دارد، بنابراین میتوانید آن را به یک میکروکنترلر 3.3 ولت یا 5 ولت مانند آردوینو متصل کنید.
جریان مصرفی BME280 در حین اندازهگیری کمتر از 1 میلیآمپر و درغیراینصورت 5 میکروآمپر است. این مصرف توان کم، امکان پیادهسازی آن را در دستگاههای باتریدار مانند گوشیها، ماژولهای GPS یا ساعتها میدهد.
ارتباط I2C سنسور BME280
برای راه اندازی سنسور BME280 نیاز به ارتباط دو سیمه I2C دارید. آدرس I2C ماژول BME280 به صورت پیشفرض برابر 0x76 است که البته این آدرس قابل تغییر است.
آدرس پیشفرض I2C ماژول BME280، 0x76HEX است و میتوان آن را به راحتی با لحیم کردن جامپر کنار تراشه به 0x77HEX تغییر داد.
مراحل تغییر آدرس I2C
- جامپر قرار گرفته کنار تراشه را پیدا کنید. به طور پیشفرض پد مسی میانی به پد سمت چپ متصل است (0x76HEX).
- اتصال بین پد مسی میانی و پد سمت چپ را قطع کنید.
- پد مسی میانی را به پد سمت راست لحیم کنید. با این کار میتوانید آدرس I2C را روی 0x77HEX تنظیم کنید.
پایههای سنسور BME280
همانطور که برای استفاده از هر ماژول و سنسور الکترونیکی نیاز به آشنایی با پایههای آن دارید، برای راه اندازی سنسور BME280 نیز آشنایی با پایهها نیاز است. ماژول BME280 تنها 4 پایه دارد که آن را به دنیای بیرون وصل میکند. این پایهها به شرح ذیلاند:
VIN: از طریق این پایه تغذیه ماژول تأمین میشود که میتواند بین 3.3 تا 5 ولت باشد.
GND: این پایه هم مربوط به تغذیه ماژول است و به زمین متصل شود.
SCL: پایه کلاک سریال در ارتباط I2C است.
SDA: پایه داده سریال در ارتباط I2C است.
راه اندازی و اتصال سنسور BME280 به آردوینو UNO
بیایید ماژول BME280 را به آردوینو متصل کنیم. اتصالات نسبتا ساده هستند. پایه VIN ماژول را به خروجی 5 ولت آردوینو و پایه GND را به زمین وصل کنید. اکنون پایههای ارتباط I2C باقی میمانند. توجه داشته باشید که در هر برد آردوینو، شماره پایههای I2C متفاوت است که باید متناسب با همان برد متصل شوند. در بردهای آردوینو مدل R3، SDA (خط داده) و SCL (خط کلاک) روی پینهدرهای نزدیک به پایه AREF قرار دارند که به ترتیب با نامهای A5 و A4 نیز شناخته میشوند. اگر آردوینو مگا دارید، پینها متفاوت خواهند بود! شما میبایست از پینهای دیجیتال 21 (SCL) و 20 (SDA) استفاده کنید. برای درک بهتر به جدول زیر نگاه کنید.
SDA | SCL | |
A4 | A5 | Arduino Uno |
A4 | A5 | Arduino Nano |
20 | 21 | Arduino Mega |
2 | 3 | Leonardo/Micro |
شکل زیر نحوه اتصال ماژول BME280 به آردوینو UNO را نشن میدهد.
نصب کتابخانهها
- برقراری ارتباط با ماژول BME280 کار پیچیدهای است. خوشبختانه کتابخانه Adafruit BME280 برای رهایی از این پیچیدگیها نوشته شدهاست تا بتوانیم دستورات سادهای برای خواندن دادههای دما، رطوبت نسبی و فشار هوا ارسال کنیم.
برای نصب کتابخانه به مسیر Sketch > Include Library > Manage Libraries پیش بروید و منتظر بمانید تا Library Manager فهرست کتابخانهها را دانلود و لیست کتابخانههای نصبشده را بهروز کند.
سپس جستجوی خود را با تایپ عبارت ’ bme280’ فیلتر کنید. از بین چند گزینهای که میبینید، کتابخانه Adafruit BME280 از Adafruit را پیدا کرده و آن را نصب کنید.
کتابخانه سنسور BME280 از کتابخانه Adafruit Unified Sensor استفاده میکند. بنابراین این کتابخانه را نیز جستجو و نصب کنید.
کد آردوینو – خواندن دما، رطوبت نسبی و فشار هوا
برنامه زیر درک کاملی از چگونگی خواندن دما، رطوبت نسبی و فشار هوا از ماژول BME280 به شما میدهد و میتواند به عنوان یک برنامهی پایه برای آزمایشها و پروژههای کاربردیتر استفاده شود.
#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);
}
تصویر زیر خروجی سنسور در مانیتور سریال را نشان میدهد.
توضیحات کد:
این برنامه با اضافه کردن 3 کتابخانهی Wire.h، Adafruit_Sensor.h و Adafruit_BME280.h شروع میشود.
- : Wire.h این کتابخانه با هر دستگاهی که از پروتکل I2C پشتیبانی کند مانند BME280 ارتباط برقرار میکند.
- Adafruit_BME280.h و Adafruit_Sensor.h : این کتابخانههای سختافزاری، مدیریت توابع سطح پایین را برعهده دارند.
#include <Wire.h>
#include <Adafruit_Sensor.h>
#include <Adafruit_BME280.h>
سپس، متغیر SEALEVELPRESSURE_HPA را برای محاسبه ارتفاع تعریف میکنیم، همچنین یک شی تحت عنوان bme از کتابخانه Adafruit_BME280 ایجاد میکنیم تا بتوانیم به توابع مربوط به آن دسترسی داشته باشیم.
#define SEALEVELPRESSURE_HPA (1013.25)
Adafruit_BME280 bme;
در تابع setup، ارتباط سریال با کامپیوتر را راهاندازی و نیز شی bme را با استفاده از تابع begin() راهاندازی میکنیم. این تابع ارتباط I2C را با آدرس داده شده (0x76) فعال کرده و بررسی میکند که ID تراشه صحیح باشد. در ادامه، تراشه را به صورت نرمافزاری ریست میکند و منتظر میماند تا سنسور خود را کالیبره کند.
Serial.begin(9600);
if (!bme.begin(0x76)) {
Serial.println("Could not find a valid BME280 sensor, check wiring!");
while (1);
}
در تابع loop، از توابع زیر برای خواندن مقادیر دما، رطوبت نسبی و فشار هوا از ماژول BME280 استفاده میکنیم:
- تابع readTemperature() : خواندن مقدار دما از سنسور بر حسب درجه سانتیگراد
- تابع readPressure() : خواندن مقدار فشار هوا از سنسور بر حسب هکتوپاسکال
- تابع readAltitude(SEALEVELPRESSURE_HPA) : خواندن مقدار ارتفاع از سطح آزاد دریا بر حسب متر
- تابع readHumidity() : خواندن درصد رطوبت نسبی از سنسور
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("%");
اگر دوست دارید از سنسور BME280 برای ساخت پروژه هواشناسی با استفاده از ESP8266 استفاده کنید، این مقاله را به شما پیشنهاد میکنیم:
امیدواریم از از این مقاله لذت برده باشید، بهخاطر داشته باشید بهترین راه کسب اطلاعات و یادگیری بیشتر، شروع به کار و تجربه کردن است، پس با استفاده از راه اندازی سنسور BME280 با آردوینو یا کنترلرهای دیگر مثل ESP8266 پروژههای جذاب خودتونو بسازید و تجربه کسب کنید.
مثل همیشه مشتاقانه منتظر سوالات، نظرات و پیشنهادات شما هستیم، آنها را در بخش دیدگاه با ما در میان بگذارید.