Sensor de altímetro BMP388 (pressão, altitude, temperatura)

O BMP388 é um sensor de pressão barométrica absoluta preciso, de baixo consumo de energia e baixo ruído que mede a pressão e a temperatura absolutas. Como a pressão muda com a altitude, também podemos estimar a altitude com grande precisão. Por esse motivo, esse sensor é útil para navegação de drones e outros aplicativos, como cálculo de velocidade vertical; Internet das coisas; previsão do tempo e estações meteorológicas; aplicativos de saúde; aplicativos de condicionamento físico e muito mais.

ESP8266 NodeMCU com sensor barométrico/altímetro BMP388 com o Arduino IDE

Apresentando o sensor barométrico BMP388

O BMP388 é um sensor de pressão barométrica absoluta preciso, de baixa potência e baixo ruído que mede a pressão e a temperatura absolutas. Como a pressão muda com a altitude, também podemos estimar a altitude com grande precisão. Por esse motivo, esse sensor é útil para aplicativos de drones e de navegação. Você também pode usá-lo para outras aplicações:

  • cálculo de velocidade vertical;
  • internet das coisas;
  • previsão do tempo e estações meteorológicas;
  • aplicações de cuidados com a saúde;
  • aplicações de condicionamento físico;
  • outras…

Estamos usando o sensor BMP388 como um módulo, conforme mostrado na figura abaixo. Ele também está disponível em outros formatos diferentes.

A imagem a seguir mostra o outro lado do sensor.

Dados técnicos do BMP388
A tabela a seguir mostra os principais recursos do sensor BMP388. Para obter mais informações, consulte a folha de dados.

Pinagem do BMP388
Aqui está a pinagem do módulo BMP388 que estamos usando – ela pode ser ligeiramente diferente para outros módulos.

Interface BMP388
Como mencionado anteriormente, o sensor BMP388 é compatível com as interfaces I2C e SPI.

BMP388 I2C

Para usar o protocolo de comunicação I2C, use os seguintes pinos:

BMP388 SPI

Para usar o protocolo de comunicação SPI, use os seguintes pinos:

Peças necessárias

Para concluir este tutorial, você precisa dos seguintes componentes:

  • Módulo de sensor BMP388
  • ESP8266 (Qualquer versão, preferencialmente as mais novas)
  • ProtoBoard
  • Fios de jumper

Esquemático – ESP8266 NodeMCU com BMP388

O BMP388 pode se comunicar usando os protocolos de comunicação I2C ou SPI.

ESP8266 com BMP388 usando I2C

Siga o próximo diagrama esquemático para conectar o BMP388 ao ESP8266 usando os pinos I2C padrão.

ESP8266 com BMP388 usando SPI

Como alternativa, talvez você queira usar o protocolo de comunicação SPI. Nesse caso, siga o próximo diagrama esquemático para conectar o BMP388 ao ESP8266 usando os pinos SPI padrão.

Instalação da biblioteca BMP3XX da Adafruit

Existem diferentes bibliotecas compatíveis com o sensor BMP388 e o Arduino. Neste tutorial, usaremos a biblioteca BMP3XX da Adafruit.

Siga as próximas etapas para instalar a biblioteca em seu Arduino IDE:

Abra o IDE do Arduino e vá para Sketch > Include Library > Manage Libraries. O Gerenciador de bibliotecas deverá ser aberto.

Procure por “adafruit bmp3xx” na caixa de pesquisa e instale a biblioteca.

Código – Leitura de pressão, altitude e temperatura do BMP388

A melhor maneira de se familiarizar com um novo sensor é começar com um exemplo básico fornecido pela biblioteca.

Depois de instalar a biblioteca BMP3XX, abra o Arduino IDE e vá para File > Examples > Adafruit BMP3XX Library > bmp3XX_simpletest. O código a seguir deve ser carregado.

#include <Wire.h>
#include <SPI.h>
#include <Adafruit_Sensor.h>
#include "Adafruit_BMP3XX.h"

#define BMP_SCK 14
#define BMP_MISO 12
#define BMP_MOSI 13
#define BMP_CS 15

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

  // Configurar a sobreamostragem e a inicialização do filtro
  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);
}

Pressão no nível do mar

Para obter resultados mais precisos de pressão e altitude, recomendamos que você ajuste a pressão do nível do mar para sua localização na variável SEALEVELPRESSURE_HPA:

#define SEALEVELPRESSURE_HPA (1013.25)

O valor padrão é 1013,25 hPa. Para obter resultados mais precisos, verifique a pressão do nível do mar em seu local. Você pode usar este site para verificar a pressão do nível do mar.


Como o código funciona

Continue lendo esta seção para saber como o código.

Bibliotecas

O código começa com a inclusão das bibliotecas necessárias: a biblioteca Wire para usar I2C, a biblioteca SPI (se você quiser usar SPI em vez de I2C), as bibliotecas Adafruit_Sensor e Adafruit_BMP3XX para fazer a interface com o sensor BMP388.

#include <Wire.h>
#include <SPI.h>
#include <Adafruit_Sensor.h>
#include "Adafruit_BMP3XX.h"

Você está gostando do projeto, ele completo é encontrado no Ebook com este e outros, abaixo.

Guia de Esp8266 com sensores e módulos

Please follow and like us:
error0
fb-share-icon
Tweet 20
fb-share-icon20