Introducción al sensor BMP388
El BMP388 es un sensor digital 2 en 1 que puede medir la temperatura y la presión atmosférica absoluta. Dado que la presión del aire varía con la altitud, la altitud se puede estimar con mucha precisión, lo que la hace muy útil para aplicaciones de navegación y drones.
parámetro | Rango de medición | precisión |
---|---|---|
temperatura | -40 a 85 ºC | +/- 0,5 ºC (0 a 65 ºC) |
presión del aire | 300 a 1250 hPa | Precisión absoluta +/- 0,5 hPa, precisión relativa +/- 0,08 hPa |
Tasa de muestreo | / | 200Hz |
Descripción de la interfaz
VIN- Fuente de alimentación positiva 3.3-5V
GND Fuente de alimentación negativa
3Vo Regulador de voltaje Salida de 3.3V
SCK Modo SPI/IIC entrada de señal de reloj
SDI Modo SPI Entrada de señal de datos MOSI, entrada y salida de señal de datos en modo IIC Modo
SDO SPI Datos MISO Salida de señal, IIC pin de configuración de la dirección del dispositivo en modo IIC, dirección del dispositivo 1110110 (0x76) cuando está conectado a GND, 1110111 (0x77) cuando está conectado a VCC
CS pin de selección de chip en modo SPI, entrada baja activa
INT Salida de interrupción de nivel alto
Cableado y programa BMP388 y Arduino UNO
BMP388 | Método de cableado SPI | Método de cableado IIC |
---|---|---|
SCK | D13 | A5 |
IDE | D11 | A4 |
SDO | D12 | / |
CS | D10 | / |
Método de cableado
IICAdministrador de la biblioteca
IDE de Arduino instalar la biblioteca Adafruit_BME680Administrador de la biblioteca IDE de Arduinoinstalar
el sensor unificado de AdafruitAbrir el código de muestra
/***************************************************************************
This is a library for the BMP3XX temperature & pressure sensor
Designed specifically to work with the Adafruit BMP388 Breakout
----> http://www.adafruit.com/products/3966
These sensors use I2C or SPI to communicate, 2 or 4 pins are required
to interface.
Adafruit invests time and resources providing this open source code,
please support Adafruit and open-source hardware by purchasing products
from Adafruit!
Written by Limor Fried & Kevin Townsend for Adafruit Industries.
BSD license, all text above must be included in any redistribution
***************************************************************************/
#include <Wire.h>
#include <SPI.h>
#include <Adafruit_Sensor.h>
#include "Adafruit_BMP3XX.h"
#define BMP_SCK 13
#define BMP_MISO 12
#define BMP_MOSI 11
#define BMP_CS 10
#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(2000);
}
Abra el monitor serie para mostrar los datos medidos por el sensor
Resumir
A través de este experimento, aprendí el uso básico del sensor BMP388 y medí los datos básicos de temperatura, presión atmosférica y altitud.