Generic selectors
Exact matches only
Search in title
Search in content
Post Type Selectors
/
/
Monitorando Pressão, Temperatura e Altitude com o BMP180 e Display OLED

Monitorando Pressão, Temperatura e Altitude com o BMP180 e Display OLED

Sumário

Baixe agora a apostila Arduino Iniciante e comece seus projetos

Compartilhe seu conhecimento e receba em dinheiro ou produtos.

Introdução

A medição de grandezas como temperatura e pressão atmosférica está presente em diversos projetos eletrônicos, desde estações meteorológicas até drones, altímetros e sistemas de monitoramento ambiental. Com o auxílio de sensores digitais, é possível obter essas informações de forma prática e com boa precisão, tornando o desenvolvimento desses projetos muito mais simples.

Olá meu nome é Iago, e neste artigo, você aprenderá a utilizar o BMP180 em conjunto com um Arduino Uno e um display OLED SSD1306 para criar um monitor capaz de exibir, em tempo real, os valores de pressão atmosférica, temperatura e altitude aproximada. Além da montagem e da programação, entenderemos os conceitos básicos por trás dessas medições, permitindo que você compreenda o funcionamento do projeto e não apenas reproduza o circuito.

Ao final deste tutorial, você terá um projeto funcional e uma base para desenvolver aplicações mais completas utilizando sensores ambientais, explorando novos recursos e integrando outros dispositivos ao seu sistema.

Nivel do projeto: básico/iniciante

Entendendo o Projeto

Antes de montar o circuito, é importante entender o papel de cada componente e como eles trabalham juntos.

O BMP180 é um sensor capaz de medir a pressão atmosférica e a temperatura. A pressão atmosférica é a força que o ar exerce sobre a superfície da Terra. Embora não possamos percebê-la no dia a dia, ela está sempre presente e pode variar de acordo com o clima e a altitude do local.

sensor bmp180

Além dessas medições, o BMP180 também consegue fornecer uma estimativa da altitude. Isso acontece porque, quanto mais alto estamos em relação ao nível do mar, menor tende a ser a pressão do ar. Utilizando essa relação, a biblioteca do sensor calcula automaticamente uma altitude aproximada, que pode ser utilizada em diversos projetos.

Para exibir essas informações, utilizaremos um display OLED SSD1306, que apresenta excelente contraste e baixo consumo de energia. Tanto o display quanto o BMP180 utilizam a comunicação I²C, um protocolo que permite conectar vários dispositivos ao Arduino utilizando apenas dois pinos de comunicação, chamados SDA e SCL. Isso torna a montagem mais simples e organizada, sendo uma ótima escolha para quem está iniciando no mundo da eletrônica.

display OLED SSD1306,

Com esses conceitos em mente, vamos conhecer os componentes necessários e iniciar a montagem do projeto.

Materiais e Requisitos

Para desenvolver este projeto, você precisará de poucos componentes e de algumas bibliotecas para o Arduino. A montagem é simples e ideal para quem está dando os primeiros passos com sensores e comunicação I²C.

Materiais utilizados:

Todos os componentes utilizados neste projeto podem ser encontrados na loja da Eletrogate.

Bibliotecas:

  • Adafruit BMP085 Library
  • Adafruit GFX Library
  • Adafruit SSD1306 Library

Requisitos:

  • Um computador com Windows, Linux ou macOS
  • Arduino IDE instalada

Montagem

A montagem deste projeto é bastante simples, pois o BMP180 e o display OLED utilizam o protocolo de comunicação I²C, permitindo que ambos compartilhem os mesmos pinos SDA e SCL do Arduino. Dessa forma, o circuito utiliza menos conexões, facilitando a organização na protoboard.

Comece posicionando o Arduino, o BMP180 e o display OLED na protoboard. Em seguida, conecte os pinos de alimentação (VCC e GND) de ambos os módulos ao Arduino. Depois, faça as ligações dos pinos SDA e SCL, responsáveis pela comunicação I²C.

Após conferir todas as conexões, conecte o Arduino ao computador utilizando o cabo USB. Com a montagem concluída, o circuito estará pronto para receber a programação.

Neste projeto, os pinos SDA e SCL do Arduino são distribuídos pela protoboard para que tanto o BMP180 quanto o display OLED compartilhem o mesmo barramento I²C. Essa técnica facilita as conexões, deixa a montagem mais organizada e demonstra uma das principais vantagens desse protocolo: a possibilidade de conectar vários dispositivos utilizando apenas dois pinos de comunicação.

Programação

Com o circuito montado, é hora de programar o Arduino. Antes de enviar o código para a placa, certifique-se de que as bibliotecas Adafruit BMP085, Adafruit GFX e Adafruit SSD1306 estejam instaladas na Arduino IDE. Elas podem ser encontradas no Gerenciador de Bibliotecas, acessado pelo menu Ferramentas > Gerenciar Bibliotecas.

Após instalar as bibliotecas, copie o código abaixo para a IDE do Arduino e envie-o para a placa.

#include <Wire.h>
#include <Adafruit_BMP085.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>

// ===== OLED =====
#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64
#define OLED_RESET -1

Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);

// ===== BMP180 =====
Adafruit_BMP085 bmp;

void setup() {
  Serial.begin(9600);
  Wire.begin();

  // OLED (0x3C)
  if (!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {
    Serial.println("Erro OLED");
    while (1);
  }

  // BMP180 (0x77)
  if (!bmp.begin()) {
    Serial.println("Erro BMP180");
    while (1);
  }

  display.clearDisplay();
  display.setTextColor(SSD1306_WHITE);

  display.setTextSize(1);
  display.setCursor(9, 25);
  display.println("INICIANDO SISTEMA");
  display.display();

  delay(2000);
}

void loop() {

  float temperatura = bmp.readTemperature();
  float pressao = bmp.readPressure() / 100.0;  // hPa
  float altitude = bmp.readAltitude();         // metros em relacao ao nivel do mar

  // ===== Serial =====
  Serial.print("Temperatura: ");
  Serial.print(temperatura, 1);
  Serial.println(" C");

  Serial.print("Pressao: ");
  Serial.print(pressao, 1);
  Serial.println(" hPa");

  Serial.print("Altitude: ");
  Serial.print(altitude, 1);
  Serial.println(" m");

  Serial.println();

  // ===== OLED =====
  display.clearDisplay();

  display.setTextSize(1);

  display.setCursor(0, 0);
  display.print("Temp: ");
  display.print(temperatura, 1);
  display.print(" C");

  display.setCursor(0, 20);
  display.print("Press: ");
  display.print(pressao, 1);
  display.print(" hPa");

  display.setCursor(0, 40);
  display.print("Alt: ");
  display.print(altitude, 1);
  display.print(" m");

  display.display();

  delay(1000);
}

CÓDIGO FEITO PELO O AUTOR: O código apresentado neste artigo foi desenvolvido pelo autor e está disponível gratuitamente para que você possa estudar, modificar e utilizar em seus próprios projetos. Dar os devidos creditos

Após enviar o código para o Arduino, o display OLED exibirá uma tela de inicialização e, em seguida, passará a mostrar as leituras de temperatura, pressão atmosférica e altitude aproximada, atualizando os valores a cada segundo.

O programa utiliza as bibliotecas Adafruit BMP085, Adafruit GFX e Adafruit SSD1306 para facilitar a comunicação com o sensor BMP180 e o display OLED. Durante a execução, o Arduino realiza as leituras do sensor, envia os dados para o Monitor Serial e também os exibe no display, permitindo acompanhar as medições em tempo real.

Testando o Projeto

Com o código gravado na placa, conecte o Arduino ao computador e aguarde a tela de inicialização ser exibida no display OLED. Após alguns segundos, o sistema começará a mostrar os valores de temperatura, pressão atmosférica e altitude aproximada, atualizando as informações automaticamente a cada segundo.

Além do display, abra o Monitor Serial da Arduino IDE para acompanhar as mesmas leituras em formato de texto. Isso facilita a verificação do funcionamento do sensor e pode ajudar na identificação de possíveis problemas.

Para observar mudanças nas medições, experimente segurar o BMP180 com as mãos por alguns instantes e perceba a variação da temperatura. Se possível, leve o sensor para locais com diferentes altitudes, como um andar superior ou uma escada, e observe como a leitura de altitude pode sofrer pequenas alterações. Lembre-se de que esse valor é uma estimativa e pode variar conforme as condições atmosféricas.

Se tudo der certo, seu projeto funcionará assim:

FONTE: do autor

Caso alguma conexão esteja mal encaixada, ou com mal contato, o sistema irá avisar no serial.

Conclusão

Neste artigo, desenvolvemos um monitor de pressão atmosférica, temperatura e altitude utilizando o sensor BMP180, o Arduino Uno e um display OLED, explorando desde a montagem do circuito até a programação e exibição das leituras em tempo real.

Além de aprender a utilizar a comunicação I²C e as bibliotecas necessárias para o projeto, você conheceu uma forma simples de monitorar variáveis ambientais que podem ser aplicadas em estações meteorológicas, sistemas de monitoramento e diversos outros projetos com Arduino.

Agora que o projeto está funcionando, experimente adicionar novas funcionalidades, como o registro das medições em um cartão SD, o envio dos dados para a internet utilizando um ESP32 ou a integração com outros sensores ambientais.

Agradecimentos

Obrigado por acompanhar este projeto! Espero que este artigo tenha contribuído para o seu aprendizado e servido de inspiração para novos projetos com Arduino.

Em caso de dúvidas, estou à disposição: [email protected]

Bons estudos e até o próximo projeto!

Referências

Código desenvolvido pelo autor e disponibilizado livremente para estudos e adaptações.

  • Referências
  • Documentação da biblioteca Adafruit BMP085 Library.
  • Documentação da biblioteca Adafruit SSD1306.
  • Datasheet do sensor BMP180.

Sobre o autor


Iago Davi Alves da Silva

 

Precisa dos componentes para este projeto?

Encontre tudo na Loja Eletrogate com frete grátis para compras acima de R$ 200