Hoje vou mostrar um módulo bastante comum e interessante para quem mexe com Arduino, o módulo de temperatura e pressão BMP085. Ele é uma excelente opção para montar, por exemplo, um projeto de estação meteorológica com Arduino.

Sensor de temperatura e pressão BMP085

O nome BMP085 vem do nome dado ao sensor propriamente dito, conforme podemos ver no datasheet. No caso do módulo da foto acima, o código do módulo é GY-65.

O GY-65 funciona com uma tensão de 1.8 a 3.6v e sua faixa de leitura de pressão é de 300 a 1100 hPa (hectoPascal), o que permite determinar altitudes desde 9000 metros acima do nível do mar, até -500m.

Conexão do sensor com Arduino

A conexão com o controlador é feita por apenas 2 pinos, usando a interface I2C, o que torna o circuito bem fácil de entender e configurar, como você pode ver no esquema abaixo:

Circuito Arduino Uno e sensor BMP085

Fique atento a pinagem do seu módulo BMP085, pois dependendo do fabricante alguns pinos podem estar em posições diferentes, ok?

Programando o sensor BMP085

Para programar o Arduino com o sensor vamos utilizar uma biblioteca da Adafruit, disponível neste endereço.

Um parênteses a respeito dessa biblioteca é que, ao descompactar, o nome da pasta será “Adafruit-BMP085-Library-master”. Infelizmente a IDE não aceita nome de pasta de bibliotecas com números e caracteres especiais, então renomeie a pasta apenas para “BMP085“. Estou usando para esses testes a versão 1.0.5 da IDE do Arduino, não sei se isso acontece nas outras versões.

O programa abaixo é baseado no programa de teste que vem junto com a biblioteca, com as devidas traduções para facilitar o entendimento:

//Programa : Teste módulo pressão BMP085
//Autor : Adafruit
//Traducoes e comentarios : Arduino e Cia


#include <Wire.h>
#include <Adafruit_BMP085.h>

// Conectar pino Vcc do BMP085 ao pino 3.3v do Arduino(NAO UTILIZAR 5.0V !)
// Conectar pino GND do módulo ao GND do Arduino
// Conectar o pino SCL do módulo ao pino analógico 5 do Arduino
// Conectar o pino SDA do módulo ao pino analógico 4 do Arduino
// Pino EOC (End of conversion) não utilizado
// Pino XCLR é um pino de reset, também não é utilizado

Adafruit_BMP085 bmp;

void setup() 
{
  Serial.begin(9600);
  if (!bmp.begin()) {
  Serial.println("Sensor BMP085 não encontrado, verifique as conexões !");
  while (1) {}
  }
}

void loop() 
{
    Serial.print("Temperatura = ");
    Serial.print(bmp.readTemperature());
    Serial.println(" *C");

    Serial.print("Pressao = ");
    Serial.print(bmp.readPressure());
    Serial.println(" Pa");

    // Calcula a altitude utilizando a pressao barometrica padrao
    // de 1013.25 milibar = 101325 Pascal
    Serial.print("Altitude = ");
    Serial.print(bmp.readAltitude());
    Serial.println(" metros");

  // É possivel extrair uma medição mais precisa se você souber 
  // a pressão ao nível do mar, que varia com o tempo/clima. 
  // Se ela for de 1015 milibars ,é igual a 101500 Pascals.

    Serial.print("Altitude real = ");
    Serial.print(bmp.readAltitude(101500));
    Serial.println(" metros");
    Serial.println();

    delay(5000);
}

Carregue o programa no Arduino e abra o serial monitor da IDE. De 5 em 5 segundos será apresentada a temperatura em Celsius, a pressão em Pascal e a altitude, em metros:

Dados do BMP085 no Serial Monitor

Gostou? Confira outros posts usando sensores aqui mesmo no Arduino e Cia!

Avalie este post!