Sensor de temperatura e pressão BMP085 – Módulo GY-65
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.
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:
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:
Gostou? Confira outros posts usando sensores aqui mesmo no Arduino e Cia!
Otimo tutorial, porém não consegui fazer funcionar, coloquei todas as conexões corretas. A unica diferença é que é um Arduino Mega. Pode ser isso?
Boa noite,
No Arduino Uno, os pinos de ligação são o A4 (SDA) e A5 (SCL). No Arduino Mega, você deve usar os pinos 20 (SDA) e 21 (SCL).
Provavelmente é isso. Abraço !
Tive o mesmo problema e foi essa mesma a solução. Obrigado
olá boa tarde, estive fazendo esta conexão mas tive a seguinte linha de erro abaixo. Alguém pode ajudar?
C:Program Files (x86)ArduinolibrariesAdafruit_BMP085Adafruit_BMP085.cpp:19:24: fatal error: util/delay.h: No such file or directory
#include
^
compilation terminated.
Bom dia,
Parece que é algum erro na biblioteca. Qual versão de IDE você está usando ?
Abraço.
a PREssão vem em pa, transformei em hpa mas da preção de 920 hpa, não entendo, está incorreto, tem como calibrar?
Aqui dá um erro no include do bmp, diz que falta o adafruit_sensor.h, e se eu incluo este, gera outros 1000 erros… alguma ideia?
Boa noite,
Qual versão da IDE você está usando ?
Funcionou perfeitamente aqui. Obrigado.
Porem quando vou utiliza-lo junto com um sensor de temperatura e umidade, o SHT15, que é digital também (SDA e SCL) dá erro. Será que tem como fazer sem a biblioteca? Ou será que posso utilizar dois sensores nas entradas SDA e SCL simultaneamente?
Bom dia Thiago,
Você pode utilizar 2 ou mais sensores no barramento I2C, sem problemas. Isoladamente eles funcionam ?
Abraço.
Bom dia!
Estou tentando ligar dois sensores BPM085 no mesmo arduino mais não estou conseguindo, pois não estou conseguindo trocar, em um dos sensores, os pinos de ligação A4 e A5. Seria possivel fazer esse tipo de ligação? A possibilidade de trocar as os pinos de entrada de informação? O arduino que estou usando é o UNO.
Abraço
Boa noite Paulo,
Esse sensor utiliza a interface I2C, que fica nos pinos A4 e A5 do Uno, logo não é possível trocar essa conexão. Uma alternativa seria mudar o endereço do módulo, mas não encontrei nenhuma informação sobre isso.
Abraço !
Obrigado mesmo assim
Olá, estou usando um Arduino Nano. Fiz o circuito corretamente, inclui a biblioteca no IDE, e rodei o programa sem problemas. Entretanto, quando abro o serial monitor me aparece a seguinte mensagem: "Sensor BMP085 não encontrado, verifique as conexões !".
Pode me ajudar? Já conferia os pinos no sensor, e estão todos corretos.
Bom dia Natasha,
Parece ser algum problema de comunicação entre o Arduino e o BMP, como a própria mensagem mostra, mas para garantir que seja isso, peço que use o I2C Scanner para ver qual endereço está configurado no módulo. Eu explico como usar o I2C Scanner neste post:
http://www.arduinoecia.com.br/2015/04/arduino-lcd-16×2-modulo-i2c-rtc-ds1307.html
Abraço!
boa tarde, preciso fazer uma leitura mais precisa, maior que de 5 em 5 segundos, exclusivamente da pressão, existe a possibilidade de fazer leituras como 2x por segundo ou de segundo em segundo e posteriormente coloca-los em um gráfico?
ola, comprei o sensor bmp085 e bmp180, porém a IDE não consegue mostrar os dados ou aparece no caso do bmp085 :"Sensor BMP085 não encontrado, verifique as conexões ! e ocorre o mesmo com o DHT22 você poderia me ajudar ?
"