quarta-feira, 16 de setembro de 2015

Como conectar o sensor de pressão / altitude BMP180 ou BMP085 ao Raspberry Pi

 

O BMP085/BMP180 é um sensor de pressão (barômetro) digital I2C fabricado originalmente pela BOSCH. O mais novo BMP180 que iremos apresentar nesse post tem características semelhantes ao antigo BMP085, portanto as conexões também serão semelhantes e o código disponibilizado pela Adafruit funciona com ambos modelos.

O BMP180 ou similar pode ser encontrado nesse link da DealExtreme.

Esse sensor provavelmente será utilizado no futuro projeto de quadcopter com Raspberry Pi. O barômetro é utilizado em aplicações diversas para navegação (medir altitude) assim como a criação de estações meteorológicas. A medição da altitude é feita por meio da relação com a pressão atmosférica, portanto é realizado o cálculo por software com base na pressão. Os altímetros analógicos funcionam de forma similar utilizando um barômetro.

Especificações do sensor barométrico BMP180


- Temperatura de operação: -40 à +85°C
- Variação de pressão: 300 - 1100hPa (+9000 metros até -500m relativos ao nível do mar)
- Tensão de alimentação do sensor: 1,8v - 3,6v.
- Resolução da saída de dados 0.01hPa
- Baixo consumo de energia: 5μA com 1 amostra por segundo no modo padrão
- Baixo ruído: 
                       0.06hPa (0.5m) no modo de baixo consumo
                       0.02hPa (0.17m) no modo de alta resolução
- Sensor de temperatura incluso, resolução 0.1°C
- Conexão I2C

sensor de pressão BMP180

Conexão elétrica do sensor BMP180


Existem diversos modelos de placas/módulos com o BMP180, entretanto o básico da conexão se dá por meio do VCC,GND,SDL,SCL.

Basta conectar as respectivas conexões do Raspberry Pi. Em qualquer modelo do Raspberry Pi utilizaremos o mesmos pinos abaixo. A única observação fica por conta da primeira revisão do Modelo B que precisará de alteração no software para utilizar o I2C-0.

sensor de pressão BMP180 conexão

Software para o sensor BMP180


Como exemplo utilizaremos o código em Python disponibilizado pela Adafruit.

Faça o download do código utilizando o GIT com o seguinte comando no terminal:

$ git clone https://github.com/adafruit/Adafruit_Python_BMP.git

Caso não tenha o git instalado execute antes: 

$ sudo apt-get install git-core

Entre no diretório Adafruit_Python_BMP e execute a instalação:

$ cd Adafruit_Python_BMP
$ sudo python setup.py install

Esse último comando irá instalar automaticamente a ferramenta.

Carregue os drivers de I2C caso necessário:

$ sudo modprobe i2c-dev
$ sudo modprobe i2c-bcm2708

Entre no diretório examples e rode o simpletest.py: 

$ cd examples
$ sudo python simpletest.py

Se tudo ocorreu normalmente será apresentado os dados da seguinte forma: 

Temp = 21.60 *C
Pressure = 92948.00 Pa
Altitude = 722.18 m
Sealevel Pressure = 92945.00 Pa


A pressão é apresentada como Pa (Pascal) ao invés de hPa (hectopascal), mas basta dividir por 100 para ter na unidade hPa: 92948.00/100 = 929,48hPa.

Conclusão


A conexão elétrica do sensor não poderia ser mais fácil pois utiliza I2C. A parte de software é um pouco trabalhoso no entanto, pois é necessário realizar a calibração do sensor. Como nosso projeto de quadcopter ainda está um pouco longe de ser terminado, utilizei alguns exemplos já existentes.

Caso necessite de código em C para integração, já há alguns exemplos que funcionam perfeitamente como esse: https://github.com/maasdoel/bmp180

O datasheet do sensor caso necessário pode ser encontrado aqui.

4 comentários:

  1. Caramba. que legal. Tinha comprado um e estava procurando tutoriais. Pretendo montar um drone autônomo utilizando o raspberry. Como programador, minhas habilidades com eletrônica são quase nulas rsrsrsrsrs. Você poderia indicar os principais pontos da eletrônica eu devo focar para conseguir seguir com esse projeto?

    ResponderExcluir
    Respostas
    1. Ao menos a lei de OHM caso ainda não saiba (inclusive as conversões de tensão/ampere/watts) é importante. Como geralmente os drones utilizam baterias de grande carga energética é preciso ter cuidado redobrado, um fio dimensionado errado (espessura) por exemplo pode torrar em questão de segundos. Aprender também a questão da especificação que cada bateria (acredito que provavelmente você utilizará Li-Po) pode fornecer em amperes (cálculo utilizando a especificação C) de uma vez só. Se por exemplo seu drone puxa uma carga de 30A mas sua bateria pode somente fornecer 15A, não será uma experiência muito boa pois você estará dando um curto circuito nela praticamente, isso pode causar desde fogo ou até explosão. Então há necessidade de verificar quanto tudo irá consumir e comprar uma bateria dimensionada para isso. Os controladores (ESCs) também tem de ser dimensionados para o consumo do motor. Cuidados com ligações erradas nos GPIOs do Raspberry Pi também, que podem queimar facilmente. Creio que o básico é isso, sempre verifique mais de uma vez as ligações elétricas e se estiver com dúvida não ligue nada na energia/bateria até sanar elas.

      Excluir
  2. Ola boa noite, eh possivel a instalacao do Barômetro Bmp180 Sensor De Pressão E Temperatura Arduino no GPS automotivo?

    ResponderExcluir
    Respostas
    1. Nunca tentei fazer algo do tipo, mas na teoria é possível.

      Excluir