Guia do uso ESP32: Construa uma estação meteorológica (BMP280 + SSD1306)

Tempo de leitura: 5 minutes

Este guia de introdução ao ESP32 descreve como construir uma estação meteorológica usando o ESP32 usando o BMP280 e o SSD1306. Este projeto ESP32 exibe as leituras do sensor usando um display LCD. Construir uma estação meteorológica com o ESP32 é um projeto simples de IoT, mas é útil começar com o ESP32 e explorar seus principais recursos. Neste projeto, para monitorar a pressão e a temperatura, usaremos o BMP280. Portanto, este tutorial do ESP32 explora como:

  • use BMP280 ou BME280 para obter a temperatura e pressão atuais
  • use SSD1306 um display LCD que mostrará as leituras dos sensores

Para criar este projeto, usaremos o VS Code com o plugin PlatformIO. Este é um IDE muito interessante que nos ajuda.

O resultado final é mostrado na figura abaixo:

Esp32 Com Sensor

Componentes necessários

Para seguir este tutorial, você precisa destes componentes:

  • Placa ESP32 DEVKIT
  • Sensor BMP280
  • Display OLED SSD1306
  • Fios
  • ProtoBoard

Se você não possui um sensor BMP280, pode usar um BME280. Se você usar o sensor BME280, também poderá monitorar a umidade.

Descrição do módulo sensor BMP280

O BMP280 é um módulo sensor que mede pressão e temperatura. Se você possui o BME280, também é possível medir a umidade. Existem várias versões deste sensor. O usado nesta estação meteorológica ESP32 usa o protocolo de comunicação I2C.

Display OLED SSD1306

SSD1306 é um monitor OLED usado para exibir leituras do sensor. Existem várias versões deste monitor OLED. Eles têm largura e altura diferentes em termos de pixels. O usado neste projeto é a tela monocromática de 128 × 64. O SSD1306 usa o protocolo I2C; de qualquer forma, você também pode usar a versão SPI. Nesse caso, você precisa alterar as conexões.

Diagrama esquemático: ESP32 + BMP280 + OLED SSD1306

Primeiro, vamos ver como conectar o ESP32 ao BMP280 e ao SSD1306. O esquema é mostrado abaixo:

Esp32 Com Sensor

O BMP280 e o SSD1306 são dispositivos I2C, por isso temos que conectar quatro pinos:

  • O pino Vcc
  • O pino terra GND
  • O pino CLK do relógio
  • O pino SDA de dados

O relógio e os pinos de dados se conectam aos pinos EPS32 I2C, como mostrado acima.

Leia dados do sensor BMP280 usando ESP32

Nesta primeira etapa, leremos os dados do sensor (BMP280) conectado ao ESP32. Isto é muito simples. Primeiro, precisamos importar a Adafruit Library para gerenciar o BMP280. Se você não sabe ler, leia o parágrafo Configuração do IDE do ESP32 para saber como começar com o ESP32 e o PlatformIO.

#include <Arduino.h>
#include <WiFi.h>
#include <Wire.h>
#include <Adafruit_BMP280.h>
 
#define BMP_SDA 21
#define BMP_SCL 22
 
Adafruit_BMP280 bmp280;
 
void setup() {
  Serial.begin(9600);
  Serial.println("Inicializando BMP280");
  boolean status = bmp280.begin(0x76);
  if (!status) {
    Serial.println("Não conectado");
  }
}
 
void loop() {
  Serial.println(WiFi.localIP());
  float temp = bmp280.readTemperature();
  float press = bmp280.readPressure() / 100;
 
  Serial.println("Temperatura:");
  Serial.println(temp);
}

O código é bastante simples. Após incluir as definições, o código ESP32 declara, na linha 9, o objeto que usaremos para conectar ao sensor BMP280. No método setup(), estabelecemos a conexão entre o ESP32 e o BMP280. Como você pode perceber, o código usa o endereço 0x76. Verifique se o seu sensor possui o mesmo endereço I2C ou altere-o de acordo com suas necessidades.

Finalmente, no método loop(), lemos a temperatura e a pressão:

  • bmp280.readTemperature()
  • bmp280.readPressure()

A temperatura está em graus Celsius enquanto a pressão é expressa em Pascal. Para convertê-lo em milibar, é necessário dividir a leitura do sensor por 100.

Se você estiver usando um BME280, também poderá ler a umidade. É tudo, estamos prontos para mostrar o resultado.

Exibir leituras de sensor usando ESP32 e SSD1306

Nesta última parte desta introdução ao projeto ESP32, mostraremos os valores lidos no sensor e os mostraremos usando um display LCD (SSD1306). Você pode usar outro monitor compatível para mostrar o resultado. Vamos ver o código:

#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
 
Adafruit_SSD1306 display(128, 64, &Wire, -1);
 
void setup() {
  ...
  if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3c)) { 
    Serial.println(F("SSD1306 falha na alocação"));
    for(;;); // Não continue, faça um loop para sempre
  }
 
  display.setTextSize(1);
  display.clearDisplay();
  display.setTextColor(SSD1306_WHITE);
}
 
void loop() {
  Serial.println(WiFi.localIP());
  float temp = bmp280.readTemperature();
  float press = bmp280.readPressure() / 100;
 
  Serial.println("Temperatura:");
  Serial.println(temp);
 
  display.clearDisplay();
  display.setCursor(0,0);
  display.print("Temperatura:");
  display.println(temp);
  display.print("Pressão:");
  display.println(press);
  display.display();
 
  delay(6000);
}

Algumas coisas a serem observadas nesta parte do código ESP32. Primeiro, se você não sabe importar a biblioteca para gerenciar o SSD1306, vá para o próximo parágrafo. Após importar as definições, na linha 4, definimos o objeto que manipulará a exibição. O visor usado nesta estação meteorológica ESP32 é um LCD de 128 × 64, a largura e a altura são os valores usados na definição. Se sua exibição tiver dimensões diferentes, substitua os valores por largura e altura. Na linha 8, o código tenta se conectar ao monitor. Por fim, configura a tela definindo o tamanho e a cor do texto.

No método loop(), simplesmente mostramos a temperatura e a pressão lidas no sensor. Isso é tudo. Você construiu sua estação meteorológica usando o ESP32.

O ESP32 é um ótimo dispositivo e pode ser usado em vários cenários.

Configurando o ESP32 IDE

Uma vez que os pinos estejam conectados, podemos concentrar nossa atenção em como configurar o IDE que usaremos para criar o projeto da estação meteorológica ESP32. Como dito anteriormente, usaremos o Visual Studio Code com o plugin Platform IO. Você pode baixar o código do Visual Studio neste link. Em seguida, clique no menu Extensões no lado esquerdo e procure o plugin PlatformIO. Quando você o instala, terá algo parecido com isto:

Arduino

É tudo o que estamos prontos para usar o IDE.

Criando um novo projeto ESP32

Está na hora de criar um novo projeto ESP32. Abra o plugin PlatformIO e crie um novo projeto:

Arduino

Em seguida, selecione a plataforma ESP32:

Arduino

Isso é tudo … agora você pode criar o novo projeto onde desenvolveremos os primeiros passos com a estação meteorológica ESP32.

Importando as Bibliotecas

Depois que o projeto é criado, podemos importar as bibliotecas para lidar com o BMP280 e o SSD1306. Clique em Bibliotecas (menu do lado esquerdo) e procure:

  • BMP280
  • SSD1306

Depois de encontrar as bibliotecas Adafruit, você pode importá-las para o seu projeto e está pronto para usá-las.

Empacotando

No final deste artigo, você aprendeu como começar com o ESP32 construindo uma estação meteorológica simples. Este tutorial descobriu como conectar o ESP32 ao BMP280 e como mostrar as leituras do sensor usando o SSD1306. Você pode melhorar ainda mais esse projeto do ESP32, adicionando novos sensores ou novos recursos.

TAGS : BMP280, SSD1306, Estação meteorológica

Visits: 1 Visits: 1194543