Controlando temperatura e pressão com o BMP180 62

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 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.

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

BMP180 - Serial Monitor

Abaixo, foto do circuito em funcionamento :

Este foi mais um conteúdo que preparamos com bastante cuidado para você. Esperamos que tenha gostado deste artigo e lembre-se de deixar suas dúvidas, críticas e sugestões nos comentários abaixo 🙂

Posts Relacionados

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

62 Comentários

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

    1. Acredito que o resistor está associado com o display. Em muitos casos tenho visto a necessidade de utilização de resistores de forma similar aos que são usados para proteção em leds.

      Luis Miguel Schiebelbein
    2. Boa noite,

      Pode ser feito sem o resistor, utilizamos apenas para reduzir a luminosidade do display.

      Abraço.

      Adilson – Equipe FILIPEFLOP

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

    1. Boa noite,

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

      Grato.

      Adilson – Equipe FILIPEFLOP

    2. 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.

  3. 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?

  4. 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!!!

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

  6. 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 ?

    1. Bom dia Douglas,

      Para utilizar o barômetro para previsão do tempo, você terá que fazer uma coleta de dados e trabalhar com esses dados para determinar se a pressão está subindo ou descendo ao longo de um determinado período.

      Nesse link você encontra uma discussão sobre o assunto: http://www.wxforum.net/index.php?topic=22132.0

      Abraço.

      Adilson – Equipe FILIPEFLOP

  7. qual o custo deste dispositivo

    1. Bom dia Luiz,

      O BMP180 está à venda na nossa loja: https://www.filipeflop.com/pd-6b919-sensor-de-pressao-e-temperatura-bmp180.html

      Temos também o display LCd 16×2: https://www.filipeflop.com/pd-6b7e4-display-lcd-16×2.html

      Abraço.

      Adilson – Equipe FILIPEFLOP

  8. 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?

    1. Bom dia Marcos,

      Por favor dê uma olhada neste link, pois a disposição dos pinos é diferente. O SDA e SCL, por exemplo, estão nos pinos digitais 2 e 3:

      https://c2.staticflickr.com/8/7101/7329403498_47d10925f3_b.jpg

      Abraço.

      Adilson – Equipe FILIPEFLOP

  9. 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?

    1. 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

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

    1. Boa tarde Paulo,

      Sim, você pode utilizar este sensor para determinar a altitude.

      Abraço.

      Adilson – Equipe FILIPEFLOP

  11. 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?

    1. Boa tarde Leonardo,

      Acho que o pessoal da Adafruit alterou a biblioteca que está no post. Tente essa daqui, por favor: https://github.com/adafruit/Adafruit-BMP085-Library

      Abraço

      Adilson – Equipe FILIPEFLOP

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

    1. 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.

  13. Boa tarde!

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

    1. 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.

      1. 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!

        1. 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.

    2. 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.

  14. 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

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

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

    1. Obrigado Torricelli!

      Abraço

      Adilson – Equipe FILIPEFLOP

  17. 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. 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?

  19. 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á

    1. Boa tarde Leonardo,

      O BMP180 tem um endereço único, logo teoricamente você só vai conseguir ligar um de cada vez no barramento I2C.

      Existem algumas soluções via hardware, que você pode conferir nesse link: https://github.com/sparkfun/BMP180_Breakout/issues/2

      Abraço!

      Adilson – Equipe FILIPEFLOP

      1. Muito obrigado pela ajuda, realmente uma equipe muito eficiente.

  20. 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.

    1. Boa tarde Fábio,

      Na verdade essa informação e o algoritmo já estão incluídos na biblioteca. Entretando, você pode acessar o link abaixo para obter mais informações sobre o BMP180, inclusive a fórmula usada para cálculo da altitude:

      https://learn.sparkfun.com/tutorials/bmp180-barometric-pressure-sensor-hookup-/measuring-weather-and-altitude

      Abraço!

      Adilson – Equipe FILIPEFLOP

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

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

  23. 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.

    Felipe Ferreira Mendes
  24. 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?

    1. Boa tarde Álvaro,

      Sim, você precisa soldar a barra de pinos ao módulo. Não temos informações sobre esse tipo de uso.

      Abraço.

      Adilson – Equipe FILIPEFLOP

  25. 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

    Jonathas Tavares Neves
  26. 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.

  27. 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.

    1. Eu tmb estava com este problema, ao invés de ligar na A4 e A5, ligue na porta SCA e SDL, aqui resolveu o problema. Estou usando uma ATmega 256

      1. Valeu!! estava com esse problema, e não tinha notado essas portas no arduino mega.

  28. 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!

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

  30. 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

  31. 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:UsersMonsterAppDataLocalTempbuild761063ba116631a4e52caab947b65c6d.tmp/BMP085test.ino.hex: No such file or directory
    avrdude: read from file ‘C:UsersMonsterAppDataLocalTempbuild761063ba116631a4e52caab947b65c6d.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!

    1. Estou trabalhando em um túnel de vento com vários sensores BMP180, e a solução para isso foi a utilização de um multiplexador 4067 que deu liberdade para trabalhar com 16 sensores.

      1. Boa Tarde Marcos,

        Estou trabalhando em um projeto semelhante com o mesmo sensor e multiplexador. Por gentiliza, você poderia disponibilizar se possível o código e o esquema de montagem que você utilizou? Você utilizou Arduino neste projeto?

        Desde já,
        Muito Obrigado!

      2. Marcos,
        Estou com o mesmo projeto, mas ainda não consegui a programação exata. Poderia me passar?

        Att

    2. Boa tarde Hugo,

      É possível sim, você pode ligar vários dispositivos I2C no mesmo barramento. Dê uma olhada neste post, que usa um display I2C e um módulo RTC ao mesmo tempo. É a mesma ideia: http://www.arduinoecia.com.br/2015/04/arduino-lcd-16×2-modulo-i2c-rtc-ds1307.html

      Abraço!

      Adilson – Equipe FILIPEFLOP

  32. 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???

  33. Meu querido, boa tarde!!

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

  34. Adilson parabéns pelo trabalho, no datasheet deste sensor ele tem um range que vai até 11 bar, gostaria de usar o mesmo para uma aplicação específica de monitoramento de pressão, em um local onde devido ao seu tamanho diminuto seria perfeito. Ficaria sob uma pressão de até três ou quatro bar, acredita que posso fazer uso dele sem problemas? Fora que medindo temperatura também é muito útil para minha aplicação. Obrigado pela atenção!

  35. Boa noite sou professor de física e estou tentando montar um sensor de uv com umidade de ar e temperatura mostrando os valores em uma tela oled e gravar os dados em um cartão de memoria.

    Como posso fazer este projeto?
    Você podem me ajudar?

Trackbacks and Pingbacks

  1. […] 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 […]