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.
cara vlw me ajudou muito
ResponderExcluirmais e as outras 2 coneccoes ficam de fora ?
Oi amigo, valeu por ter comentado.
ExcluirO I2C utiliza apenas 4 pinos sendo o suficiente para a leitura do sensor.
O XCLR serve para você enviar um comando de reset ao sensor.
No EOC o sensor coloca um sinal quando acaba de fazer a medição.
Por isso você só utilizará esses pinos se realmente necessitar desses controles adicionais.
Abraços.
estou tentando gravar no Pro Mini atmega328 3.3V 8M
Excluirmais não ta indo
no caso nao teria como ligar um transmissor de 433mhz direto no sensor e usam no receptor um Pro Mini atmega328 3.3V 8M ?
Acho que ligar o sensor direto no tx não dá, você terá que utilizar um microcontrolador como arduino no meio.
ExcluirAí o arduino lê o sensor e envia via tx.
Abs.
sta dando esta mensagem
Excluiravrdude: Version 5.11, compiled on Sep 2 2011 at 19:38:36
Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/
Copyright (c) 2007-2009 Joerg Wunsch
System wide configuration file is "C:\Program Files (x86)\Arduino\hardware/tools/avr/etc/avrdude.conf"
Using Port : \\.\COM4
Using Programmer : arduino
Overriding Baud Rate : 57600
avrdude: Send: 0 [30] [20]
avrdude: Send: 0 [30] [20]
avrdude: Send: 0 [30] [20]
avrdude: Recv:
avrdude: stk500_getsync(): not in sync: resp=0x00
avrdude done. Thank you.
estou olhando o arquivo avrdude.conf pra achar onde baixar a velocidade da serial para 9600bps
como ei se o codigo foi gravado no Arduino ?
ExcluirEste comentário foi removido pelo autor.
ResponderExcluirBoa tarde!
ResponderExcluirEstou precisando instalar dois sensores bmp085 no mesmo arduino. O problema é que não consigo modificar as entradas analógicas A4 e A5. Você pode me ajudar!
Estou desenvolvendo um experimento e esse problema se mostrou uma pedra no caminho.
Agradeço antecipadamente
Alguém por favor me ajude?
ResponderExcluirAté agora não tive uma resposta!
muito bom :)
ResponderExcluir