Monitore a Temperatura e Pressão a distância com sensor BMP280
Monitoramento de Temperatura e Pressão a Distância com sensor BMP280

Monitoramento de Temperatura e Pressão a Distância com Sensor BMP280 2

No contexto da comunicação sem fio de longo alcance, o Módulo ESP32 LoRa SX1276 868/915Mhz com OLED destaca-se como uma solução facilitadora, pois combina um microcontrolador ESP32, um transceptor LoRa SX1276 e um display OLED. Este tutorial explora minuciosamente o funcionamento desse módulo, em conjunto com o Sensor de Pressão e Temperatura BMP280.

Sensor de Pressão e Temperatura BMP280

A combinação desses componentes permite a transmissão eficiente de dados de temperatura e pressão entre dois módulos ESP32 LoRa SX1276.

Objetivos: Projeto de Monitoramento com Sensor BMP280

O objetivo principal deste tutorial é proporcionar uma compreensão do Módulo ESP32 LoRa SX1276 868/915Mhz com OLED e do Sensor de Pressão e Temperatura BMP280. Ao final do guia, espera-se que você tenha adquirido conhecimentos sobre:

  • Configuração e especificações técnicas do Módulo ESP32 LoRa SX1276.
  • Funcionamento da tecnologia LoRa em comunicação sem fio de longo alcance.
  • Detalhes sobre o sensor BMP280 e seu papel na medição de temperatura e pressão.
  • Conexões elétricas para a transmissão de dados entre dois módulos ESP32 LoRa SX1276 usando o sensor BMP280.
  • Preparação do ambiente de desenvolvimento na Arduino IDE para os módulos ESP32 LoRa SX1276.
  • Instalação das bibliotecas necessárias para o correto funcionamento dos módulos.
  • Implementação dos códigos-fonte nos módulos, incluindo o receptor (Módulo 1) e o transmissor (Módulo 2).
  • Entendimento do fluxo de dados e visualização das informações no display OLED.

Materiais Necessários

Para seguir com este tutorial, você irá precisar dos seguintes componentes:

Materiais Necessários

Além dos itens mencionados acima, você também precisará ter a Arduino IDE instalada em seu computador uma conta cadastrada no Arduino Cloud.

O que é o Módulo ESP32 LoRa SX1276 868/915Mhz com OLED?

O Módulo ESP32 LoRa SX1276 868/915Mhz com OLED refere-se a um dispositivo de hardware que combina várias funcionalidades para projetos de comunicação sem fio de longo alcance. 

Módulo ESP32 LoRa SX1276 868/915Mhz com OLED

Vamos analisar cada parte do nome:

  • ESP32: O ESP32 é um microcontrolador de baixo custo, com suporte Wi-Fi e Bluetooth integrado. Ele é frequentemente utilizado em projetos IoT (Internet das Coisas) devido à sua conectividade sem fio e recursos de baixo consumo de energia.
  • LoRa (Long Range): LoRa é uma tecnologia de comunicação sem fio de longo alcance projetada para suportar comunicações de baixa potência e baixa taxa de dados em distâncias mais longas. É especialmente útil para aplicações de IoT que exigem comunicação em áreas amplas ou onde a infraestrutura de rede é limitada.
  • SX1276 868/915Mhz: SX1276 é um transceptor sem fio da Semtech que opera nas frequências de 868 MHz ou 915 MHz, dependendo da região geográfica. Ele é compatível com a tecnologia LoRa e é frequentemente usado em módulos para comunicação de longo alcance.
  • OLED: OLED (Organic Light-Emitting Diode) refere-se a um tipo de display que é leve, fino e flexível. Neste contexto, o módulo inclui um display OLED, que pode ser usado para exibir informações visuais, como texto ou gráficos.

Portanto, o Módulo ESP32 LoRa SX1276 868/915Mhz com OLED é um dispositivo que incorpora um microcontrolador ESP32, um transceptor LoRa SX1276 para comunicação de longo alcance nas frequências de 868 MHz ou 915 MHz, e um display OLED para a exibição de informações. Esses módulos são comumente utilizados em projetos de IoT, rastreamento remoto, monitoramento ambiental e outras aplicações que exigem comunicação sem fio de longo alcance com baixo consumo de energia.

Especificações técnicas do Módulo ESP32 LoRa SX1276 868/915Mhz com OLED

As especificações detalhadas do módulo, incluindo informações sobre o microcontrolador, conectividade, módulo LoRa, pinagem, tensões de operação e dimensões, podem ser encontradas abaixo.

  • Microcontrolador:
    Tipo: ESP32
    Velocidade do Clock: 240MHz
    Arquitetura: Xtensa Dual-Core de 32 bits
  • Conectividade:
    Wi-Fi: 802.11 b/g/n 2.4 GHz com suporte a Wi-Fi Direct, P2P Discovery, P2P Group Owner mode, P2P Power Management
    Bluetooth: BLE 4.2 (Bluetooth Low Energy)
  • Módulo LoRa:
    Tipo: SX1276
    Frequências suportadas: 868 MHz ou 915 MHz
  • Pinos:
    Pinos I/O Digitais: 27
    Portas Analógicas: 16
    Número total de pinos: 36
  • Conversor Analógico-Digital (DAC):
    Quantidade: 2
  • Tensão:
    Tensão de Operação: 3,3 VDC
    Tensão de Alimentação: 6 ~ 12 VDC
  • Corrente Máxima Pinos I/O:
    20 mA
  • Memória:
    Memória Flash: 4 MB
    SRAM: 520 Kbytes
    ROM: 448 KBytes
  • Dimensões:
    52 mm x 25 mm x 6 mm

Pinout do Módulo ESP32 LoRa SX1276 868/915Mhz com OLED

O pinout completo do módulo, fornecendo informações detalhadas sobre a disposição dos pinos, suas funções e conexões, pode ser encontrado abaixo.

Pinout do Módulo ESP32 LoRa SX1276 868/915Mhz com OLED

Como funciona a comunicação LoRa?

A comunicação LoRa (Long Range) é uma tecnologia sem fio de longo alcance projetada para transmitir dados em distâncias significativas com baixo consumo de energia. Aqui está um resumo de como funciona a comunicação LoRa:

  • Modulação LoRa: A tecnologia LoRa utiliza uma técnica de modulação chamada “Chirp Spread Spectrum” (CSS). Ela modula os sinais em forma de “chirps” (ondas que variam de frequência ao longo do tempo). Os chirps são sinais que se espalham pela largura de banda disponível, aumentando a resistência a interferências e proporcionando maior alcance.
  • Frequências de Operação: Os dispositivos LoRa operam em diferentes bandas de frequência, sendo comuns as faixas de 433 MHz, 868 MHz e 915 MHz, dependendo da região geográfica. A escolha da frequência depende das regulamentações locais e das características específicas do ambiente de operação.
  • Modos de Operação: A comunicação LoRa pode ocorrer em diferentes modos, como LoRa-to-LoRa (comunicação direta entre dispositivos LoRa), LoRa-to-Gateway (comunicação de dispositivos LoRa com uma estação base ou gateway), e LoRaWAN (rede de longo alcance que conecta dispositivos LoRa a uma infraestrutura centralizada).
  • Rede LoRaWAN: O LoRaWAN (LoRa Wide Area Network) é um protocolo de comunicação que permite a conectividade e gerenciamento eficientes de dispositivos LoRa em uma rede. Ele fornece uma arquitetura de rede em estrela, onde os dispositivos finais (nós) se comunicam com uma ou várias estações base (gateways). Os gateways encaminham os dados dos dispositivos para um servidor central, que gerencia e processa as informações.
  • Eficiência Energética: Uma das principais vantagens da tecnologia LoRa é sua eficiência energética. Dispositivos LoRa podem operar com baterias por longos períodos de tempo, tornando-os adequados para aplicações de baixo consumo, como sensores em ambientes remotos.
  • Alcance: A capacidade de comunicação de longo alcance é uma característica distintiva da tecnologia LoRa. Em condições ideais, os dispositivos podem alcançar distâncias de vários quilômetros.

A combinação de modulação LoRa, escolha de frequências adequadas, modos de operação flexíveis e eficiência energética fazem da tecnologia LoRa uma opção popular para aplicações de IoT, monitoramento remoto, agricultura inteligente e outras soluções que exigem comunicação de longo alcance com baixo consumo de energia.

Como funciona o Sensor BMP280 de temperatura e pressão?

O BMP280 é um sensor de pressão e temperatura que utiliza a tecnologia MEMS (Micro-Eletromecânica) para medir a pressão atmosférica e a temperatura ambiente

Sensor de Pressão e Temperatura BMP280

No componente, um sensor de pressão piezoelétrico MEMS é empregado para medir a pressão atmosférica. A deformação desse elemento piezoelétrico de silício em resposta à pressão gera uma carga elétrica, proporcional à pressão, que é convertida em unidades de pressão, geralmente em pascal (Pa) ou hectopascal (hPa).

Para a medição de temperatura, o BMP280 inclui um sensor de temperatura integrado, geralmente um termopar. Este sensor registra variações na resistência elétrica ou em outra propriedade física em resposta à temperatura ambiente. As leituras dessa propriedade física são, então, convertidas em unidades de temperatura, como graus Celsius (°C) ou Fahrenheit (°F).

O BMP280 é equipado com um circuito interno de calibração que automaticamente compensa variações na temperatura e outros fatores que poderiam afetar as leituras de pressão. Essa capacidade de calibração melhora a precisão das leituras em diferentes condições ambientais.

Em termos de comunicação e interface, o BMP280 se conecta com microcontroladores ou outros dispositivos por meio de interfaces digitais como I2C ou SPI. Os dados de temperatura e pressão são então lidos pelos dispositivos conectados, que interpretam essas informações conforme necessário para a aplicação específica.

Pinout Sensor de Pressão e Temperatura BMP280

O BMP280 encontra aplicações em diversos setores, incluindo meteorologia, drones, dispositivos de navegação e monitoramento ambiental, onde a medição precisa da pressão atmosférica e temperatura é crucial para o desempenho da aplicação. Além disso, o sensor oferece diferentes modos de operação e opções de configuração para atender às necessidades específicas de cada projeto. Ao utilizar o BMP280, é recomendável consultar a datasheet para garantir a configuração correta e a interpretação precisa das leituras do sensor.

Circuito Eletrônico usando o Sensor BMP280

Segue o esquema de conexões para o circuito responsável por transmitir informações de temperatura e pressão do sensor BMP280 entre dois módulos ESP32 LoRa SX1276. No processo, o módulo 1 recebe as informações provenientes do módulo 2 por meio da comunicação LoRa.

Circuito Eletrônico Sensor de Pressão e Temperatura BMP280

As conexões realizadas são as seguintes:

Sensor BMP280 <-> Módulo ESP32 LoRa SX1276
Pino VCC <-> 3V3
Pino GND <-> GND
Pino SCL <-> GPIO22
Pino SDA <-> GPIO21

Preparação Arduino IDE para o Módulo ESP32 LoRa SX1276

Para preparar a Arduino IDE para o Módulo ESP32 LoRa SX1276, vá em Arquivo > Preferências e em URLS do Gerenciador de Dispositivos, cole o link abaixo:
https://github.com/Heltec-Aaron-Lee/WiFi_Kit_series/releases/download/0.0.5/package_heltec_esp32_index.json 

Arduino IDE: Módulo ESP32 lora sx1276

Depois, vá ao Gerenciador de Placas e busque Heltec ESP32 Series Dev-boards. Clique em Instalar.

Arduino IDE - gerenciar placa

Por fim, vá em Ferramentas > Placas > Heltec ESP32 Series Dev-boards e selecione  WiFi LoRa 32(V2).

Arduino IDE - gerenciar placa

Instalação das Bibliotecas

Antes de carregar os códigos para os módulos ESP32 LoRa SX1276, é necessário fazer a instalação de algumas bibliotecas. Todas devem ser instaladas através de Gerenciador de Bibliotecas da Arduino IDE:

Heltec ESP32 Series Dev-boards – por Hetec Automation
LoRa – por Sandeep Mistry
Adafruit BMP280 – por Adafruit

Código Módulo 1 – Receptor

Abaixo você encontra o código para o Módulo 1 – Receptor (que não está conectado ao sensor BMP280). Copie o código, cole na Arduino IDE e faça o upload para o Módulo 1 – Receptor.

// Programa: Módulo 1 - Receptor | Envio de dados de temperatura e pressão com sensor BMP280 
e Módulo ESP32 LoRa  SX1276
// Autor: Rosana Guse

// Adiciona as bibliotecas utilizadas no código
#include <Wire.h>
#include <LoRa.h>
#include "heltec.h"

// Define os pinos de ligação
#define LORA_SS 18
#define LORA_RST 14
#define LORA_DI0 26
#define LORA_SCK 5
#define LORA_MISO 19
#define LORA_MOSI 27

// Cria um objeto para o display OLED
SSD1306Wire display(0x3c, SDA_OLED, SCL_OLED, RST_OLED);

void setup() {
 
  // Inicia a comunicação serial
  Serial.begin(115200);

  // Inicia a comunicação LoRa
  LoRa.setPins(LORA_SS, LORA_RST, LORA_DI0);
  if (!LoRa.begin(915E6)) {
    Serial.println("Falha na inicialização do LoRa. Verifique suas conexões.");
    while (1);
  }
}

void loop() {
 
  // Recebe dados via LoRa
  int packetSize = LoRa.parsePacket();

  if (packetSize) {
    Serial.println("Recebendo dados via LoRa");
    String receivedData = "";
    while (LoRa.available()) {
      receivedData += (char)LoRa.read();
    }
    Serial.println("Dados Recebidos: " + receivedData);
  }

  // Imprime as informações no display OLED
  display.setFont(ArialMT_Plain_10);
  display.drawString(10, 0, "Módulo 1 - Receptor");
  display.drawLine(64,20,64,60);
  display.drawString(0, 20, "Temperatura");
  display.drawString(80, 20, "Pressão");
  display.setFont(ArialMT_Plain_16);
  display.drawString(15, 40, String(temperatura));
  display.setFont(ArialMT_Plain_10);
  display.drawString(35, 40, "ºC");
  display.setFont(ArialMT_Plain_16);
  display.drawString(70, 40, String(pressao));
  display.setFont(ArialMT_Plain_10);
  display.drawString(107, 40, "hPa");
  display.display();
}

Código Módulo 2 – Transmissor

Abaixo você encontra o código para o Módulo 2 – Transmissor (que não conectado ao sensor BMP280). Copie o código, cole na Arduino IDE e faça o upload para o Módulo 2 – Transmissor.

// Programa: Módulo 2 - Transmissor | Envio de dados de temperatura e pressão com sensor
BMP280 e Módulo ESP32 LoRa  SX1276
// Autor: Rosana Guse

// Adiciona as bibliotecas utilizadas no código
#include <Wire.h>
#include <Adafruit_Sensor.h>
#include <Adafruit_BMP280.h>
#include <LoRa.h>
#include "heltec.h"

// Define os pinos de ligação
#define LORA_SS 18
#define LORA_RST 14
#define LORA_DI0 26
#define LORA_SCK 5
#define LORA_MISO 19
#define LORA_MOSI 27

// Cria um objeto para o display OLED
SSD1306Wire display(0x3c, SDA_OLED, SCL_OLED, RST_OLED);

// Cria um objeto para o sensor BMP280
Adafruit_BMP280 bmp;

void setup() {
 
  // Inicia a comunicação serial
  Serial.begin(115200);

  // Inicia o sensor BMP280
  if (!bmp.begin(0x76)) {
    Serial.println("Não foi possível encontrar um sensor BMP280 válido. 
    Verifique a conexão!");
    while (1);
  }

  // Inicia a comunicação LoRa
  LoRa.setPins(LORA_SS, LORA_RST, LORA_DI0);
  if (!LoRa.begin(915E6)) {
    Serial.println("Falha na inicialização do LoRa. Verifique suas conexões.");
    while (1);
  }
}

void loop() {

  // Faz a leitura de pressão e temperatura
  float temperatura = bmp.readTemperature();
  float pressao = bmp.readPressure() / 100.0;

  Serial.print("Temperatura: ");
  Serial.print(temperatura);
  Serial.println(" °C");

  Serial.print("Pressão: ");
  Serial.print(pressao);
  Serial.println(" hPa");

  // Envia dados via LoRa
  String dados = "Temp: " + String(temperatura) + " C, Press: " + String(pressao) + " hPa";
  LoRa.beginPacket();
  LoRa.print(dados);
  LoRa.endPacket();
  Serial.println("Dados enviados via LoRa");

  // Imprime as informações no display OLED
  display.setFont(ArialMT_Plain_10);
  display.drawString(10, 0, "Módulo 2 - Transmissor");
  display.drawLine(64,20,64,60);
  display.drawString(0, 20, "Temperatura");
  display.drawString(80, 20, "Pressão");
  display.setFont(ArialMT_Plain_16);
  display.drawString(15, 40, String(temperatura));
  display.setFont(ArialMT_Plain_10);
  display.drawString(35, 40, "ºC");
  display.setFont(ArialMT_Plain_16);
  display.drawString(70, 40, String(pressao));
  display.setFont(ArialMT_Plain_10);
  display.drawString(107, 40, "hPa");
  display.display();

  // Aguarda 5 segundos para um novo envio
  delay(5000);
}

Funcionamento do projeto usando Sensor BMP280

O Módulo 2 – Transmissor, equipado com um sensor BMP280, é responsável pela coleta de dados ambientais. Ao ser inicializado, o código configura a comunicação serial para monitoramento e inicia a leitura de temperatura e pressão por meio do sensor BMP280. Essas leituras são armazenadas nas variáveis “temperatura” e “pressao”.

Em seguida, os dados coletados são formatados em uma string que contém informações de temperatura e pressão. Utilizando o transceptor LoRa, o Módulo 2 inicia o processo de transmissão, enviando a string formatada para o Módulo 1 – Receptor. Simultaneamente, as informações também são exibidas no display OLED do Módulo 2, proporcionando uma visualização local dos dados.

FUncionamento Monitoramento de Temperatura e Pressão a Distância com BMP280

Após a transmissão, o sistema aguarda por um intervalo predefinido de 5 segundos, antes de repetir o processo. Esse intervalo entre as transmissões permite um monitoramento contínuo e eficiente dos dados ambientais.

Por outro lado, o Módulo 1 – Receptor, assume o papel de receber e interpretar os dados transmitidos pelo Módulo 2. Após a inicialização, a comunicação LoRa é configurada, e o módulo aguarda a chegada de dados.

Display Oled Módulo

Quando dados são recebidos via LoRa, o Módulo 1 interpreta a string recebida, desmembrando-a para extrair informações precisas de temperatura e pressão. As informações interpretadas são então exibidas no display OLED do Módulo 1, proporcionando uma visualização em tempo real dos dados coletados pelo Módulo 2.

Esse ciclo de recepção, interpretação e exibição continua de forma contínua, onde o Módulo 1 permanece à espera de novos pacotes de dados transmitidos pelo Módulo 2. Essa interação entre os módulos cria um sistema de monitoramento remoto eficiente, adequado para aplicações em monitoramento ambiental, rastreamento e projetos de IoT.


Se você tiver dúvidas, sugestões ou experiências para compartilhar, fique a vontade para deixar um comentário abaixo. E para não perder nenhum conteúdo como este, não deixe de nos seguir no Instagram.

Faça seu comentário

Acesse sua conta e participe

2 Comentários

  1. Olá, alguém entendeu como é tratada a msg que chega no receptor para ser enviado ao display? Do modo que está, como o receptor identifica os valores da variáveis temperatura (linha 55) e pressao (linha 59)?

    1. Olá Cristiano.

      Favor entrar em contato conosco no [email protected]

      Att.
      Vitor Mattos.
      MakerHero.