Barômetro BMP180 com Raspberry

bmp180 com Raspberry
bmp180 com Raspberry

Barômetro BMP180 com Raspberry

BMP180 com Raspberry? Poderia ser apenas mais um artigo após uma longa temporada de sofrimento solitário em busca de um sorriso regado à lágrimas, mas dessa vez tenho o prazer, a honra, o orgulho e o puxa-saquismo de anunciar o primeiro post com ajuda direta do meu chefe, Denis Orsi. Não foi ajuda do tipo “formatar o texto”; foi bem do tipo “formatar a fórmula”, sem hipérboles e não-figurativo. Explico no decorrer desse artigo.

Já há algum tempo eu chocava alguns desses barômetros por serem fantásticos; uma miniatura dessa com capacidade de medir a pressão atmosférica e altitude, além de medir com muita precisão a temperatura. Nesse artigo disponho do código Python utilizado no ato do desenvolvimento. “No ato do desenvolvimento” é um sinônimo explícito de “rascunho”, primo da discrepância e passivo de incoerências.

Se alguém (ainda que uma pessoa só) pedir para organizar em uma classe, eu escrevo e disponibilizo com prazer, mas por ora é apenas isso.

Leia sempre o datasheet





Como diria o Steeve (amigo do Osmar – a primeira fatia do pão de forma):

“Existem dois tipos de pessoas; as que lêem o datasheet e as que não gostam de patinhas de sirí”.

Eu quase sempre lia o datasheet em busca de alguma informação extra, mas desde que comecei a trabalhar com o Denis, a primeira coisa que faço é ler o datasheet. Não adianta pegar material pronto como por exemplo, uma biblioteca; inserí-la, chamar seu método e não saber como um dispositivo funciona. E isso não é o pior; tem tutoriais que induzem à perdição! Vi um tutorial de um dispositivo com nível lógico de 3.3V e o cara dizendo pra chutar o pau em 5V que não tinha problema. Aí olho o datasheet e ‘pow’! O ponto de morte estava marcado como 4.5V no pino lógico. Por isso a recomendação: leia-o-datasheet!

Para o BMP180 não haveria outra opção, claro. E veja o porquê:

Fórmula para o BMP180
Fórmula para o BMP180

De forma alguma você faria esse dispositivo funcionar a contento sem ler o datasheet – exceto estivesse esperando por esse artigo, claro.

Se você achou que agora ficou fácil lendo essa fórmula, experimente implementar antes de usar o código que Denis e eu fornecemos nesse artigo. É o C A O S implementar isso, sério.

Se desejar verificar, os coeficientes de calibração estão na página 13 do datasheet.

A lógica (explicada de maneira porca e superficial)

Basicamente, é necessário fazer uma leitura inicial para calibrar o dispositivo. Essa leitura inicial é armazenada em diversas variáveis e devem ser utilizadas a seu tempo, depois algumas delas são modificadas, mas elas devem ser lidas na ordem que indica a fórmula para não dar muita variação no resultado final.

Existem 3 níveis de precisão para a leitura e cálculo da pressão atmosférica (em hPa) e utilizamos “hard-coded” o nível 3, que é o mais preciso.

Os delays inseridos no código não são enfeites; estão nas posições onde os tempos de delay são necessários e um pouquinho acima do tempo suficiente para o dispositivo “jogar o cabelo pro lado certo”.

Características do dispositivo





Normalmente inicio com essas informações – nunca cito todas, apenas as necessárias para uma apresentação. Claro que hoje não será diferente, exceto pelo fato da disposição da informação.

O BMP180 é um sensor digital de pressão criado pela Bosch, com níveis de medição entre 300 e 1100Pa (9000 metros à -500 metros relativo ao nível do mar). É um LGA com dimensões de 4mmX4mm (sem contar a board, obviamente), consome 5uA e trabalha entre as tensões de 1.62V à 3.6V.  Ele mede temperatura, pressão e altitude, possui interface I²C e os usos ficam por conta da sua imaginação.

A temperatura tem precisão de 16bits e a pressão tem precisão de 16 à 19bits. É isso.

Já habilitou seu I²C hoje?

Pois é, não basta conectar o dispositivo ao Raspberry. Para habilitar o I²C, siga esse tutorial que escrevi como introdutório aos artigos relacionados à I²C, é fundamental que seja feito. Após isso, volte a esse ponto e dê sequência.

Não vou falar de wiring porque é uma vergonha. Leia esse artigo. Todos os dispositivos I²C são conectados assim; SDA, SCL, VCC e GND. Ponto.

Código rascunho com os prints de debug

O código está no estado mais crú (eu tiraria o acento e o ‘R’) que se pode imaginar. Está 100% funcional, mas está zoneado. Se for pra criticar, me mande 100 reais primeiro. Se for elogiar, antecipo meu muito obrigado – e creio que falo pelo Denis também nesse aspecto.

Basta salvar esse código em um arquivo. Se quiser experimentá-lo com bpython, siga esses passos:

Fácil ou não? É, utilizar agora ficou fácil, mas dessa vez o trabalho foi feito a quatro mãos, e podem esperar por mais!

Aproveito pra agradecer aos assinantes do canal no YouTube, que já passaram da marca dos 4.000!

Inscreva-se no nosso newsletter, alí em cima à direita e receba novos posts por email.

Siga-nos no Do bit Ao Byte no Facebook.

Prefere twitter? @DobitAoByte.

Inscreva-se no nosso canal Do bit Ao Byte Brasil no YouTube.

Nossos grupos:

Arduino BR – https://www.facebook.com/groups/microcontroladorarduinobr/
Raspberry Pi BR – https://www.facebook.com/groups/raspberrybr/
Orange Pi BR – https://www.facebook.com/groups/OrangePiBR/
Odroid BR – https://www.facebook.com/groups/odroidBR/
Sistemas Embarcados BR – https://www.facebook.com/groups/SistemasEmbarcadosBR/
MIPS BR – https://www.facebook.com/groups/MIPSBR/
Do Bit ao Byte – https://www.facebook.com/groups/dobitaobyte/

Próximo post a caminho!

Agregador de Links - Loucuras da Net

Comments

comments

Djames Suhanko

Djames Suhanko é Perito Forense Digital. Já atuou com deployer em sistemas de missão critica em diversos países pelo mundão. Programador Shell, Python, C, C++ e Qt, tendo contato com embarcados ( ora profissionalmente, ora por lazer ) desde 2009.