Controlando temperatura e pressão com o BMP180

Controlando temperatura e pressão com o BMP180

O sensor de temperatura e pressão BMP180 é o sucessor do BMP085, e foi desenvolvido para ser um sensor ainda mais compacto e econômico em termos de energia (por volta de 3 µA). Devemos destacar que esse sensor é totalmente compatível com o BMP085, tanto em termos de software como em termos de firmware e interface.

Sensor de temperatura e pressão BMP180

Apesar de também medir a temperatura, ele foi desenvolvido com o objetivo de medir a pressão atmosférica, e com base nesses dados podemos determinar a altitude e realizar previsões do tempo com grande precisão. graças ao baixíssimo consumo de energia, o CI BMP180 (datasheet) é indicado para utilização em equipamentos compactos como GPS, smartphones, tablets e equipamentos esportivos.

No Arduino, também temos esse conceito de compactação, com o CI instalado em uma placa de 12 x 10 mm. Ele funciona com alimentação de 1,8 à 3.6V, e possui um regulador de tensão embutido que permite que você o conecte normalmente às placas Arduino com nível de sinal de 5V, como o Arduino Uno.

A conexão ao Arduino utiliza a interface I2C, por meio dos pinos analógicos 4 (SDA) e 5 (SCL). No módulo temos somente 4 pinos : Vin (1,8 à 3.6V), GND, SCL e SDA :

Módulo BMP180 - Detalhes

 

Ligação do BMP180 ao Arduino

A ligação do sensor BMP180 ao Arduino é muito simples, e vamos utilizá-lo em conjunto com um Display LCD 16×2 para mostrar as informações de temperatura, pressão e altitude. O potenciômetro utilizado no circuito é de 10 K, e serve para ajuste de contraste.

Atenção para a alimentação do módulo, que como comentamos anteriormente, vai de 1,8 à 3.6V, e no nosso exemplo vamos conectar o Vin do módulo ao pino 3.3V do Arduino.

Circuito Arduino - BMP180

 

Biblioteca e Programa

Por ser totalmente compatível com o BMP085, podemos inclusive utilizar a mesma biblioteca, encontrada neste link. Faça o download, descompacte o arquivo e coloque a pasta com a biblioteca dentro da pasta LIBRARIES da IDE do seu Arduino.

O programa apresenta na tela as informações de temperatura, na primeira linha, e vai alternando as informações de pressão (em Pa) e altitude (em metros) na segunda linha, atualizando as informações a cada 3 segundos.

// Programa : Sensor de temperatura e pressao BMP180
// Autor : FILIPEFLOP

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

LiquidCrystal lcd(12,11, 5, 4, 3, 2);

Adafruit_BMP085 bmp180;

int mostrador = 0;
  
void setup() 
{
  Serial.begin(9600);
  lcd.begin(16,2);
  if (!bmp180.begin()) 
  {
    Serial.println("Sensor nao encontrado !!");
    while (1) {}
  }
}
  
void loop() 
{   
   lcd.setCursor(0, 0);
   lcd.print("Temp. :  ");
   Serial.print("Temperatura : ");
   if ( bmp180.readTemperature() < 10)
   {
     lcd.print(" "); 
     lcd.print(bmp180.readTemperature());
     Serial.print(bmp180.readTemperature());
     Serial.println(" C");
   }
   else
   {
     lcd.print(bmp180.readTemperature(),1);
     Serial.print(bmp180.readTemperature(),1);
     Serial.println(" C");
   }
   lcd.print(" ");
   lcd.print((char)223); 
   lcd.print("C   ");
      
   if (mostrador == 0)
   {
     lcd.setCursor(0, 1);
     lcd.print("                ");
     lcd.setCursor(0, 1);
     lcd.print("Altit.: ");
     Serial.print("Altitude : ");
     lcd.print(bmp180.readAltitude());
     Serial.print(bmp180.readAltitude());
     Serial.println(" m");
     lcd.print(" m");  
    }
   if (mostrador == 1)
   {
     lcd.setCursor(0, 1);
     lcd.print("                ");
     lcd.setCursor(0, 1);
     lcd.print("Press.: ");
     Serial.print("Pressao : ");
     lcd.print(bmp180.readPressure());  
     Serial.print(bmp180.readPressure());  
     Serial.println(" Pa");
     lcd.print(" Pa");
   }
   
   delay(3000);
   mostrador = !mostrador;
}

Essas informações também são mostradas no Serial Monitor :

BMP180 - Serial Monitor

Abaixo, foto do circuito em funcionamento :

BMP180 e Arduino

Gostou? Ajude-nos a melhorar o blog atribuindo uma nota a este tutorial (estrelas no final do artigo) e visite nossa loja FILIPEFLOP!

8
Controlando temperatura e pressão com o BMP180
44 votos, 4.70 classificação média (94% pontuação)

Formado em Ciência da Computação pela Universidade de Mogi das Cruzes, atualmente responsável pelo departamento técnico da FILIPEFLOP.

Compartilhe este Post

60 Comentários

  1. Anderson - 6 de abril de 2017

    Meu querido, boa tarde!!

    Essa altitude fornecida pelo módulo, está em relação ao nível de mar?

  2. Jucélia - 13 de fevereiro de 2017

    Olá boa tarde, tutorial muito bem desenvolvido, porém tive problemas de leitura dos dados com o sensor bpm180 com meu Arduino Mega 2560, isso se dá a diferença das placas???

  3. Hugo - 26 de julho de 2016

    Boa tarde,

    Estou fazendo o sensoriamento em um aeromodelo e quero conectar o sensor BMP180 junto com o acelerômetro MPU-6050. Sou novo no assunto e notei que ambos os sensores utilizam as portas A4 e A5, destinadas ao SDA e SCL, tentei colocar o barômetro em outras portas SDA e SCL no Genuíno UNO, porém apresentou o seguinte erro:

    “avrdude: can’t open input file C:\Users\Monster\AppData\Local\Temp\build761063ba116631a4e52caab947b65c6d.tmp/BMP085test.ino.hex: No such file or directory
    avrdude: read from file ‘C:\Users\Monster\AppData\Local\Temp\build761063ba116631a4e52caab947b65c6d.tmp/BMP085test.ino.hex’ failed”

    A minha dúvida é a seguinte, posso colocar ambos os sensores na mesma porta A4 e A5 por meio da protoboard? Ou preciso colocar algum componente no meio? Vi em alguns fóruns que era possível e em outros disseram que me traria complicações. No aguardo da resposta, grato!

  4. joao garcia - 12 de junho de 2016

    Olá, Adilson!

    Estava analisando esta plaquinha e notei que o regulador de tensão incorporado nela (662k), ajusta a tensão para 3,3V na entrada de alimentação do CI BMP180 (blindado com metal). Dessa forma, é possível alimentá-la (pelo Vin da placa) com tensão superior a 3,3v (até 6V, conforme as especificações do regulador).
    O que você acha?

    Att João Garcia

  5. Igor - 4 de junho de 2016

    Como encapsular este barômetro para protegê-lo da umidade sem afetar a leitura?

  6. MIchel - 2 de junho de 2016

    Olá,
    olhei as imagens do desenho na protoboard e não encontrei um que simbolizasse o BMP180, para uso no Fritzling. Onde é que vocês encontraram o arquivo da imagem do BMP180?
    Obrigado!

  7. William - 14 de maio de 2016

    Bom dia, estou com dificuldades para fazer o sensor funcionar junto a um display com módulo I2C, voce sabe me dizer quais alterações devem ser feitas? e o modulo I2C esta ligado na A4 e A5.

  8. Marcos Morsch - 30 de abril de 2016

    Quando dizem que eu moro no burraco do mundo eu estava brincando, pois o resultado fica assim:

    Pressao : 101765 Pa
    Temperatura : 19.9 C
    Altitude : -37.15 m

    O que pode estar errado pois converti a Pa para HPa e comparei com uma estação meteorológica da cidade e o resultado bateu.

  9. Jonathas Tavares Neves - 8 de abril de 2016

    Boa Tarde a todos,

    Bom eu tenho um projeto que eu tenho que comunicar o sensor BMP180 e mais dois outros sensores SRF02 com o micro ATMEGA328P.
    Eles se comunicam apenas pelas pinos I2C que nesse caso são o A4 (PC4/SDA) e A5 (PC5/SCL).

    Eu nunca havia trabalho com pinos I2C, alguém me ajuda?

    1) como faço para receber os dados desses sensores por apenas esses dois pinos?

    Obrigado desde já,

    Att

  10. Álvaro - 23 de março de 2016

    O sensor ele ele deve ser soldado nos pinos? Estou com essa dúvida.
    O sensor ele pode ser usado em um sistema que contenha traços de combustível?

  11. Felipe Ferreira Mendes - 23 de março de 2016

    Prezados bom dia,

    Será que é possível ligar esse arduíno a um segundo (ARDUINO GSM SHIELD) , para que consiga enviar instruções de temperatura para um telefone celular configurável ?

    Minha idéia é através do controle de temperatura , enviar alertas para números responsáveis.

    Muito bom o Blog de vocês! Parabéns.

  12. Murillo - 16 de fevereiro de 2016

    Cara muito bom o tutorial, mas será que podem me passar alguma referência sobre o uso deste módulo para microcontroladores PIC?

  13. ALEXANDRE - 6 de fevereiro de 2016

    Amigo preciso da bilbioteca do bmp180 para arduino e simulação no proteus 8 , onde encontro?

  14. Fábio - 13 de janeiro de 2016

    Olá, os senhores nos ajudam muito com esses post, sem o flipeflop.com não teria conseguido aprender várias coisas com o hardware arduíno; porém gostaria de fazer um pedido: Os senhores podem explicar o algorítimo?
    Tudo funcionou certinho, mas não entendi como os senhores transformaram a pressão em altitude.

    Obrigado.

  15. Leonardo - 17 de dezembro de 2015

    Olá, o tutorial de vocês é ótimo muito bem explicado, parabéns.
    Porem preciso de uma ajuda com relação a uma duvida, como eu faço para ligar mais de um sensor no mesmo barramento I2C?

    Agradeço desde já

  16. Isaias - 28 de novembro de 2015

    Bom dia equipe,
    Não estou conseguindo fazer a informação do BPM 180 mostrar no display 16×2 mesmo copiando e colando o código, entretanto ele aparece no serial monitor. Sou iniciante estou usando UNO R3 alguém poderia me dá uma ajuda?

  17. Alexandre - 16 de outubro de 2015

    Bom Dia, tentei utilizar esse sensor como altímetro visto que sua precisão (teórica) é de 25cm. Todavia o mesmo apresentou constantes variações de altura mesmo parado. Ele varia cerca de 60cm para mais ou para menos mesmo parado. Gostaria de saber se o mesmo ocorreu com vc e se ha como melhorar essa precisão…. (já realizei media de 100 amostras e mesmo assim essa variação continua)

  18. Torricelli - 11 de outubro de 2015

    Muito obrigado pelo tutorial. Funcionou de primeira e está funcionando conforme o exemplo.
    Parabéns pelo trabalho.

  19. Matheus Garbelini - 10 de outubro de 2015

    Ola, o módulo possui resistor de pullup incluso?

  20. Clovis - 29 de setembro de 2015

    Boa noite, eu consigo fazer um dispositivo que me dê um sinal sonoro com a variação da pressão?
    Ex. Se eu subir um metro ele emite um sinal que está subindo em relação ao nível do mar.
    Alguém poderia me dar um Help de como faço essa engenhoca???
    Obrigado

  21. Rafael - 10 de setembro de 2015

    Boa tarde!

    Esse sensor poderia ser usado para medir pressão e temperatura de um pneu?

    • Marcelo Cutin - 10 de setembro de 2015

      Oi, Rafael.

      Infelizmente com o BMP180 você não conseguirá medir a pressão interna de um pneu porque o maior valor de pressão que ele consegue enxergar é 1100 hPa, o que dá algo em torno de 15-16 psi. O pneu de um carro, por exemplo, trabalha com uma calibragem bem maior que, em alguns modelos, pode passar do dobro desse valor.

      • Rafael - 10 de setembro de 2015

        Olá Marcelo, obrigado pelo retorno.

        Estou fazendo um projeto de faculdade que preciso medir a pressão de um pneu, não necessariamente de um carro, mas de algum pneu. Você teria um outro sensor que possa me indicar para utilizar?? Você poderia me passar seu email para que eu possa te explicar melhor em que consiste meu projeto e assim você me indicar os sensores ideias que preciso comprar na FilipeFlop.
        Obrigado!

        • Marcelo Cutin - 11 de setembro de 2015

          Olá, Rafael.

          Não posso postar meu e-mail aqui por questões de segurança e privacidade. Tem muitos bots na internet rastreando sites em busca de e-mails para incluir em listas de spam.

          Tenho perfil no Gravatar (por isso a foto do cogumelo no meu perfil aqui nos comentários). Lá você encontrará um meio de entrar em contato comigo. Para ver meu perfil no gravatar é só clicar na minha foto que a opção de visualizar o meu perfil ficará visível para você.

          Com relação ao seu projeto de faculdade, precisa ser necessariamente um pneu? Você pode usar outras soluções para medir pressão dentro de um recipiente, de uma câmara, de um balão de aniversário, por exemplo. Talvez você até consiga utilizar o BMP180 com uma delas, mas aí tem que fazer uns cálculos. Você pode inclusive usar de alguns meios práticos e de baixo custo para você mesmo provocar variações de pressão no interior de uma câmara (por exemplo) e detectar essa variação com o sensor que você for utilizar.

    • Marcelo Cutin - 10 de setembro de 2015

      Oi, Rafael.

      Infelizmente com o BMP180 você não conseguirá medir a pressão interna de um pneu, pois o valor máximo de pressão que ele enxerga é 1100 hPA, o que dá algo em torno de 15-16 psi.

      Um pneu automotivo, por exemplo, trabalha com pressões que podem ser maiores que o dobro desse valor.

  22. Ramiro - 3 de setembro de 2015

    O bmp180 funciona em avião pressurizado pra determinar altitude?

    • Marcelo Cutin - 5 de setembro de 2015

      A pressão interna da cabine é maior que a pressão externa (atmosférica). Se você levá-lo para o interior de um avião, ele lerá a pressão interna e não enxergará a pressão atmosférica real (do lado de fora do avião). Logo, isso afetará o cálculo da altitude.

  23. leonardo - 27 de agosto de 2015

    esta dando erro na bilblioteca aqui para min.
    so que eu testei com a biblioteca BMP180 da sparkfun esta o modulo esta funcionando direitinho. como faço para adaptar o codigo para funcionar como aqui no tutorial?

  24. paulo - 12 de julho de 2015

    Olá poderia usar para saber se algo esta subindo ou descendo, ex: em um avião. Obrigado

  25. Lucio Lira - 9 de julho de 2015

    Montei o projeto, porem ele apresenta a altitude de forma imprecisa, sem movimentar o sensor ele apresenta varias altitudes de ate 8 metros de diferença, e muda a altitude com muita freqüência, o que pode ser?

    • FILIPEFLOP - 10 de julho de 2015

      Boa tarde Lucio,

      Por favor reveja as conexões e, caso o problema permaneça, o sensor que você está utilizando provavelmente está com defeito.

      Abraço

      Adilson – Equipe FILIPEFLOP

  26. marcos souza - 7 de julho de 2015

    Estou começando agora com arduino, comprei um leonardo e tentei carregar este códogo mas não deu certo. não retorna informação no display nem no monitor serial.
    teria alguma configuração diferente para esta placa?

  27. luiz cypriano\ - 28 de junho de 2015

    qual o custo deste dispositivo

  28. Douglas - 28 de junho de 2015

    Olá, por favor, como ele poderia ser usado como previsão do tempo ? como descrito lá em cima ? Por favor me responda. Mesmo que não saiba. Tem alguma referencia como posso fazer isso ?

  29. Estação Meteorológica com Arduino | Blog FILIPEFLOP - 27 de maio de 2015

    […] nível de sinal de 5V, como o Arduino Uno. Descubra como controlar pressão e temperatura seguindo este post também aqui do nosso […]

  30. amiel - 24 de abril de 2015

    ola,gostaria de saber qual o principio de funcionamento desse sensor

  31. Thiago - 9 de abril de 2015

    estou usando esse sensor num arduino mega com um lcd keypad shield, tentei fazer uma “gambiarra” pois o shield usa o plug 3,3v e me deixou sem ele, mas por surpresa o sensor bmp180 esta funcionando somente usando o GND, SCL e SDA. =P … e pelos dados ficou tudo igual!!! aproveitei e criei uma leitura de média aritmética assim depois de um tempo ele me dá uma altitude mais precisa!!!

  32. David - 22 de março de 2015

    Sempre que utilizo a biblioteca Wire.h com a biblioteca Ethernet.h e SPI.h, o código apresenta erro, como um conflito entre as bibliotecas. Não sei se por conta dos pinos digitais de saída. Alguém está com o mesmo problema e conseguiu resolver?

  33. LUIZ - 10 de março de 2015

    ESTE SENSOR DE NÃO SERVIRIA PARA MONTAR UMA BALANÇA?

    • FILIPEFLOP - 31 de março de 2015

      Boa noite,

      Não, o que você precisa é de um sensor de carga.

      Grato.

      Adilson – Equipe FILIPEFLOP

    • Marcelo - 12 de julho de 2015

      Você até poderia usá-lo para fazer uma balança, mas a solução seria mais complexa e mais limitada do que usar o sensor de carga indicado pelos equipe FilipeFlop na resposta acima.

      Para construir uma balança com o BMP180 você teria que montar o sensor de tal forma que ele estivesse medindo a pressão dentro de um recipiente lacrado e cheio de ar (uma bexiga, por exemplo). O prato da balança funcionaria como um êmbolo que iria comprimir essa bexiga, fazendo com que a pressão no interior da bexiga aumentasse de acordo com o peso do objeto sendo pesado. Aí é conta é um pouco de física: F=PxA, onde F é a força peso, P é a pressão lida pelo sensor e A é a área do prato.

      Essa solução é mais limitada do que usar um sensor de carga (um dinamômetro, por exemplo) porque o range do BMP180 é pequeno para esse tipo de aplicação.

  34. rebouças - 10 de março de 2015

    na foto tem um resistor, mas no esquema de ligação nao tem, esse projeto pode ser feito sem o resistor da foto

Deixe uma resposta