A comunicação com o Arduino é através do I2C e o dispositivo trabalha com 3.3v, alguns sites falam em 5v, mas por garantia é melhor utilizar 3.
Para facilitar o uso vamos utilizar a biblioteca Adafruit_BMP085, assim não cobriremos o I2C que são encapsulados pela biblioteca Wire e a Adafruit_BMP085.
Para instalar a biblioteca basta descompactar o conteúdo na pasta libraries do IDE do Arduino, clique aqui para fazer o download.
A biblioteca irá disponibilizar um código de exemplo no seu IDE.
Requisitos de hardware.
1 Arduino
1 BMP085
Circuito.
O circuito é muito simples, basta conectar o VCC do sensor aos 3.3v do Arduino, GND ao GND, SDA a porta analógica 4 e SCL a porta analógica 5.
Imagem desenvolvida com o Fritzing
Código.
#include <Wire.h>
#include <Adafruit_BMP085.h>
// A biblioteca da Adafruit utiliza a comunição I2C para se comunicar com o sensor
//Conexões BMP085 / Arduino
//VCC - 3.3v
//GND - Ground
//SCL - Analógica 5
//SDA - Analógica 4
//Declaração do sensor
Adafruit_BMP085 bmp;
void setup(){
Serial.begin(9600);
if(!bmp.begin()){
Serial.println("Não encontrei o sensor BMP085, verifique as ligações!");
while(1){}
}
}
void loop() {
// Calcula a temperatura
Serial.print("Temperatura = ");
Serial.print(bmp.readTemperature());
Serial.println(" *C");
// Calcula a pressão atmosférica
Serial.print("Pressão = ");
Serial.print(bmp.readPressure());
Serial.println(" Pa");
// Calcula a altitude assumindo a pressão barométricca padrão
// de 1013.25 millibar = 101325 Pascal
Serial.print("Altitude = ");
Serial.print(bmp.readAltitude());
Serial.println(" metros");
// Você pode obter uma altitude mais precisa se souber
// a pressão atual ao nível do mar
// Ex. Se for 1018.7 millibars = 101870 Pascal
Serial.print("Altitude real = ");
Serial.print(bmp.readAltitude(101870));
Serial.println(" metros");
Serial.println();
delay(10000);
}
Referências.