Medidor de altitude baseado em Arduino usando sensor BMP180

Medidor de altitude baseado em Arduino usando sensor BMP180

BMP180 é um sensor de pressão digital projetado para operação de baixa potência e baixa tensão em telefones celulares, dispositivos de navegação e assistentes digitais pessoais. O sensor possui uma interface I2C para comunicar os dados do sensor. Ele pode operar em 2,5 ~ 3,6 V e consome apenas 12 uA, mesmo no modo de resolução ultra-alta. O sensor pode ser usado para diversas aplicações, incluindo medição de altitude a partir do nível do mar, medição de altitude a partir do solo, medição de velocidade vertical e detecção de condições climáticas.

Neste projeto, desenvolvemos um medidor de altitude usando o sensor BMP180 e nossa placa microcontroladora favorita – Arduino. Este medidor de altitude exibe a altitude em tempo real a partir do nível do mar em um pequeno display OLED. O display OLED usado para a altitude atual é o SSD1306.

Componentes necessários

  1. Arduino UNO/qualquer placa Arduino x1
  2. Sensor de pressão BMP180 x1
  3. SSD1306 OLEDx1
  4. Conectando fios/fios de jumper

Conexões de circuito
O medidor de altitude é projetado conectando o sensor de pressão SSD1306 OLED e BMP180 com o Arduino UNO. O sensor BMP180 possui quatro terminais – Vin, Gnd, SCL e SDA. Os pinos Vin e Gnd do sensor são conectados à saída de 3,3 V e a um pino de aterramento do Arduino UNO. Os pinos SCL e SDA do sensor podem ser conectados a qualquer uma das portas I2C da placa Arduino. As portas I2C no Arduino UNO são mostradas na imagem abaixo.

O OLED SSD1306 é conectado ao Arduino usando uma porta SPI física. Para fazer a interface do SSD1306 OLED via porta SPI física, conecte os pinos D0/SCK e D1/MOSI do SSD1306 OLED aos pinos D13 e D11 do Arduino, respectivamente. Conecte os pinos DC, RESET e CS do SSD1306 aos pinos D9, D10 e D8 do Arduino, respectivamente. O circuito final é o seguinte.

Esboço do Arduino

Como funciona o circuito
BMP180 é um sensor piezoresistivo usado para detectar a pressão atmosférica. O sensor mede a temperatura e a pressão, pois ambos os fatores afetam a densidade do ar. A temperatura é medida para compensar as leituras de pressão de acordo com as mudanças na densidade do ar. O sensor gera a pressão atmosférica em Pascal através de sua interface I2C.

Existem bibliotecas Arduino disponíveis para sensores BMP180 da Adafruit e Sparkfun. Neste projeto, estamos usando a biblioteca do Sparkfun, e esta biblioteca converte a saída do sensor em Pascal para hectoPascal.

O sensor primeiro lê a leitura de temperatura não compensada e depois a leitura de pressão não compensada. Finalmente, ele faz alguns cálculos complexos com ambas as leituras, envolvendo uma série de coeficientes armazenados em sua EEPROM para fornecer pressão barométrica e temperatura precisas. A pressão barométrica varia com a altitude, e a pressão atmosférica diminui com o aumento da altitude e vice-versa. Uma mudança de 1 Hectopascal corresponde a cerca de 8 metros de altitude. O BMP180 é um sensor muito sensível e responde até mesmo a mudanças mínimas na pressão atmosférica real. A equação a seguir fornece a altitude do nível do mar.

altitude = 44330 * (1 – (Patual/Pnível do mar)^(1/5.255))

O próprio sensor se encarrega de realizar todos esses cálculos complexos e emite diretamente a pressão barométrica verdadeira atual.

O Arduino escuta a pressão barométrica do sensor BMP180 por meio de sua interface I2C. A biblioteca Sparkfun fornece funções de leitura de temperatura, pressão e altitude, e o Arduino lê a leitura de altitude e exibe a leitura no SSD1306 OLED.

O display OLED está conectado à porta física SPI do Arduino. Assim, o OLED se comunica com o controlador pela interface SPI enquanto o sensor BMP180 retransmite as leituras de pressão pela interface I2C. O Arduino lê a altitude do BMP180 via I2c e a exibe no display OLED via SPI. A leitura de saída exibida está em metros.

O código
Em primeiro lugar, as bibliotecas SPI e Wire são importadas para comunicação de dados através de interfaces SPI e I2C. As bibliotecas Adafruit_GFX e Adafruit_SSD1306 são importadas para funcionar com o display OLED SSD1306. A biblioteca Sparkfun BMP180 é importada para funcionar com o sensor BMP180. Constantes e atribuições de pinos para o display OLED são definidas. Um objeto 'display' da classe 'Adafruit_SSD1306' é instanciado para lidar com o display OLED, e um objeto 'pressão' da classe 'SFE_BMP180' é instanciado para lidar com o sensor BMP180. Uma 'linha de base' variável é definida para armazenar a pressão atmosférica de referência ao nível do mar. A seguir, um array de bitmap é definido para armazenar o logotipo EEWORLDONLINE.

Na função setup , a taxa de transmissão para comunicação de dados é definida como 9600 bps. A exibição é inicializada usando o método display.begin . Se a pressão detectar o método sensor.begin BMP180, o logotipo piscará no display OLED. Caso contrário, a mensagem “Dispositivo não funciona” piscará no OLED.

Na função loop são declaradas variáveis ​​para armazenar leituras de pressão e altitude. A pressão é lida chamando a função definida pelo usuário getPressure . A pressão atmosférica de base para a localização atual é definida. Isto é definido como 1013, pois a altitude é lida em relação ao nível do mar aqui. A altitude é medida chamando o objeto de sobrepressão do método altitude com a linha de base fornecida. O display OLED é limpo usando o método display.clearDisplay . O cursor está configurado para iniciar a tela usando display. método setCursor . O tamanho do texto é definido como 2 usando display. método setTextSize . A cor do texto é definida como branco usando o método setTextColor . A altitude de leitura é impressa no OLED usando os métodos display.print e display.println . As leituras piscam no OLED quando o método display.display(0 é chamado. Um atraso de 1500 ms é fornecido chamando a função delay antes da próxima iteração da função loop .

A função getPressure lê a pressão barométrica do sensor BMP180. Ele usa os métodos startTemperature , getTemperature e startPressure da biblioteca Sparkfun.

Resultado

Conteúdo Relacionado

ESP32-CAM é um módulo de câmera compacto que combina...
Uma rede de sensores é incorporada em todos os...
O controlador do motor é um dos componentes mais...
A evolução dos padrões USB foi fundamental para moldar...
A SCHURTER anuncia um aprimoramento para sua conhecida série...
A Sealevel Systems anuncia o lançamento da Interface Serial...
A STMicroelectronics introduziu Diodos retificadores Schottky de trincheira de...
Determinar uma localização precisa é necessário em várias indústrias...
O novo VIPerGaN50 da STMicroelectronics simplifica a construção de...
A Samsung Electronics, fornecedora de tecnologia de memória avançada,...
O mercado embarcado tem uma necessidade de soluções de...
Você provavelmente já se deparou com o termo 'arrastar'...
Você provavelmente tem um Isolador de suporte Se você...
Você provavelmente já viu permanecer um isolante sente-se em...
Você provavelmente já viu Isoladores de manilha entronizados em...
Você provavelmente já passou por situações em que o...
Retour au blog

Laisser un commentaire

Veuillez noter que les commentaires doivent être approuvés avant d'être publiés.