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!