ویژگیهای سنسور فشار هوای دیجیتال BMP388
ماژول سنسور فشار هوای دیجیتال BMP388 از فناوری هوشمند برای اندازهگیری دقیق تغییرات فشار هوا و ارتفاع استفاده میکند. جزئیات فوقالعادهای دارد و انرژی زیادی مصرف نمیکند. BMP388 در سنجش آب و هوا و ارتفاع، و پهپادها کاربرد دارد. این ماژول، کوچک، کاربرپسند، دقیق و پرکاربرد است بنابراین هم برای تازهکارها و هم برای باتجربهها جذابیت دارد.
پیناوت سنسور فشار هوای دیجیتال BMP388
سنسور فشار هوای دیجیتال BMP388 هشت پین دارد:
- VIN: ورودی منبع تغذیه برای ماژول BMP388 (5 ولت).
- V3.3: ورودی منبع تغذیه، سازگار با سیستمهای 3.3 ولت.
- GND: زمین.
- MOSI (SDA): پین مشترک برای I2C (خط داده سریال) و SPI (Master Out Slave In ).
- MISO: برای SPI (Master In Slave Out).
- CS: Chip Select برای فعال کردن ارتباط با BMP388.
- SCK (SCL): خط کلاک سریال برای همگامسازی انتقال داده.
- IRQ/INT: وقفه در خروجی برای نشان دادن رویدادهای خاص.
میتوانید پیناوت این ماژول را در تصویر زیر مشاهده کنید.
لوازمی که به آن احتیاج دارید
قطعات مورد نیاز
راهاندازی سنسور فشار هوای دیجیتال BMP388 با آردوینو
گام اول: مدار
مدار را مطابق با تصویر زیر ببندید. (صفحه نمایش را در صورت نیاز استفاده کنید.)
گام دوم: نصب کتابخانه
گام سوم: کد
برای راهاندازی برد بدون نمایشگر، کد زیر را در آردوینو آپلود کنید.
/*
Create on January 24, 2024
Create by MohammedDamirchi base of https://github.com/adafruit/Adafruit_BMP3XX
<blockquote class="wp-embedded-content" data-secret="xwBVriQGGv"><a href="https://electropeak.com/learn/">Home</a></blockquote><iframe loading="lazy" class="wp-embedded-content" sandbox="allow-scripts" security="restricted" style="position: absolute; clip: rect(1px, 1px, 1px, 1px);" title="“Home” — Electropeak" src="about:blank" data-secret="xwBVriQGGv" width="600" height="338" frameborder="0" marginwidth="0" marginheight="0" scrolling="no" data-rocket-lazyload="fitvidscompatible" data-lazy-src="https://electropeak.com/learn/embed/#?secret=nPkM9o6k3k#?secret=xwBVriQGGv"></iframe><noscript><iframe class="wp-embedded-content" sandbox="allow-scripts" security="restricted" style="position: absolute; clip: rect(1px, 1px, 1px, 1px);" title="“Home” — Electropeak" src="https://electropeak.com/learn/embed/#?secret=nPkM9o6k3k#?secret=xwBVriQGGv" data-secret="xwBVriQGGv" width="600" height="338" frameborder="0" marginwidth="0" marginheight="0" scrolling="no"></iframe></noscript>
*/
#include <Arduino.h>
#include <Wire.h>
#include <SPI.h>
#include <Adafruit_Sensor.h>
#include "Adafruit_BMP3XX.h"
#define SEALEVELPRESSURE_HPA (1013.25)
Adafruit_BMP3XX bmp;
void setup()
{
Serial.begin(115200);
while (!Serial)
;
Serial.println("Adafruit BMP388 / BMP390 test");
if (!bmp.begin_I2C())
{ // hardware I2C mode, can pass in address & alt Wire
// if (! bmp.begin_SPI(BMP_CS)) { // hardware SPI mode
// if (! bmp.begin_SPI(BMP_CS, BMP_SCK, BMP_MISO, BMP_MOSI)) { // software SPI mode
Serial.println("Could not find a valid BMP3 sensor, check wiring!");
while (1)
;
} // Set up oversampling and filter initialization
bmp.setTemperatureOversampling(BMP3_OVERSAMPLING_8X);
bmp.setPressureOversampling(BMP3_OVERSAMPLING_4X);
bmp.setIIRFilterCoeff(BMP3_IIR_FILTER_COEFF_3);
bmp.setOutputDataRate(BMP3_ODR_50_HZ);
}
void loop()
{
if (!bmp.performReading())
{
Serial.println("Failed to perform reading :(");
return;
}
Serial.print("Temperature = ");
Serial.print(bmp.temperature);
Serial.println(" *C");
Serial.print("Pressure = ");
Serial.print(bmp.pressure / 100.0);
Serial.println(" hPa");
Serial.print("Approx. Altitude = ");
Serial.print(bmp.readAltitude(SEALEVELPRESSURE_HPA));
Serial.println(" m");
Serial.println();
delay(200);
}
پس از آپلود کد، سریال مانیتور را باز کنید تا اطلاعات دریافتی را مشاهده کنید.
در صورت نیاز به راهنمایی برای راهاندازی نمایشگر، به لینک مراجعه کنید.
برای راهاندازی برد با نمایشگر، کد زیر را در آردوینو آپلود کنید.
همچنین فایل myLCD را دانلود کرده و در پوشه پروژه خود قرار دهید
/*
Create on January 24, 2024
Create by MohammedDamirchi base of https://github.com/adafruit/Adafruit_BMP3XX
<blockquote class="wp-embedded-content" data-secret="xwBVriQGGv"><a href="https://electropeak.com/learn/">Home</a></blockquote><iframe loading="lazy" class="wp-embedded-content" sandbox="allow-scripts" security="restricted" style="position: absolute; clip: rect(1px, 1px, 1px, 1px);" title="“Home” — Electropeak" src="about:blank" data-secret="xwBVriQGGv" width="600" height="338" frameborder="0" marginwidth="0" marginheight="0" scrolling="no" data-rocket-lazyload="fitvidscompatible" data-lazy-src="https://electropeak.com/learn/embed/#?secret=nPkM9o6k3k#?secret=xwBVriQGGv"></iframe><noscript><iframe class="wp-embedded-content" sandbox="allow-scripts" security="restricted" style="position: absolute; clip: rect(1px, 1px, 1px, 1px);" title="“Home” — Electropeak" src="https://electropeak.com/learn/embed/#?secret=nPkM9o6k3k#?secret=xwBVriQGGv" data-secret="xwBVriQGGv" width="600" height="338" frameborder="0" marginwidth="0" marginheight="0" scrolling="no"></iframe></noscript>
*/
#include <Arduino.h>
#include <Wire.h>
#include <SPI.h>
#include <Adafruit_Sensor.h>
#include "Adafruit_BMP3XX.h"
#include <myLCD.h>
#define SEALEVELPRESSURE_HPA (1013.25)
Adafruit_BMP3XX bmp;
void setup()
{
Serial.begin(115200);
beginLCD("Adafruit BMP388");
while (!Serial)
;
Serial.println("Adafruit BMP388 / BMP390 test");
if (!bmp.begin_I2C())
{ // hardware I2C mode, can pass in address & alt Wire
// if (! bmp.begin_SPI(BMP_CS)) { // hardware SPI mode
// if (! bmp.begin_SPI(BMP_CS, BMP_SCK, BMP_MISO, BMP_MOSI)) { // software SPI mode
Serial.println("Could not find a valid BMP3 sensor, check wiring!");
fail();
while (1)
;
} // Set up oversampling and filter initialization
bmp.setTemperatureOversampling(BMP3_OVERSAMPLING_8X);
bmp.setPressureOversampling(BMP3_OVERSAMPLING_4X);
bmp.setIIRFilterCoeff(BMP3_IIR_FILTER_COEFF_3);
bmp.setOutputDataRate(BMP3_ODR_50_HZ);
success();
printLCD("BMP388 Example", 0, true);
}
void loop()
{
if (!bmp.performReading())
{
Serial.println("Failed to perform reading :(");
return;
}
printLCD("Temp:" + (String)(bmp.temperature) + " *C", 1);
printLCD("Pres:" + (String)(bmp.pressure / 100.0) + " *C", 2);
printLCD("Alt :" + (String)(bmp.readAltitude(SEALEVELPRESSURE_HPA)) + " *C", 3);
Serial.print("Temperature = ");
Serial.print(bmp.temperature);
Serial.println(" *C");
Serial.print("Pressure = ");
Serial.print(bmp.pressure / 100.0);
Serial.println(" hPa");
Serial.print("Approx. Altitude = ");
Serial.print(bmp.readAltitude(SEALEVELPRESSURE_HPA));
Serial.println(" m");
Serial.println();
delay(200);
}
پس از آپلود کد، میتوانید خروجی سنسور را بر روی صفحه نمایش، همانطور که در فیلم زیر نشان داده شده است، مشاهده کنید.