blog-eletrogate-logo-desktop blog-eletrogate-logo-mobile
  • Categorias
    • Voltar
    • INICIANTES
    • INTERMEDIÁRIOS
    • AVANÇADOS
    • divide
    • Automação Residencial
    • Componentes Eletrônicos
    • Impressão 3D
    • IoT
    • Modelagem 3D
    • Módulos Wifi
    • Por trás da tecnologia
    • Projetos
    • Raspberry Pi
    • Robótica
    • Sensores
    • Shields
    • Sistemas Operacionais
    • Tipos de Arduino
    • Tutoriais
  • Apostilas
  • Quem Somos
  • Seja um redator
  • Trabalhe Conosco
    • Categorias
      • Voltar
      • INICIANTES
      • INTERMEDIÁRIOS
      • AVANÇADOS
      • divide
      • Automação Residencial
      • Componentes Eletrônicos
      • Impressão 3D
      • IoT
      • Modelagem 3D
      • Módulos Wifi
      • Por trás da tecnologia
      • Projetos
      • Raspberry Pi
      • Robótica
      • Sensores
      • Shields
      • Sistemas Operacionais
      • Tipos de Arduino
      • Tutoriais
    • Apostilas
    • Quem Somos
    • Seja um redator
    • Trabalhe Conosco
Loja Eletrogate
voltar
  • Introdução
  • LoRa
  • Projeto e Componentes
  • Esquema de Ligação
  • Configurações e Instalação das Bibliotecas
  • Programação
  • Resultado Final
  • Conclusão
  • Sobre o Autor
IoT

Monitoramento de Temperatura com Heltec ESP32 LoRa

Eletrogate 22 de dezembro de 2021Atualizado em: 20 set 2022

Introdução

Com o avanço da tecnologia hoje temos cada vez mais dispositivos conectados na internet, com isso a IoT (internet of Things) é uma das áreas que mais cresce na atualidade, algumas situações impõem desafios à tecnologias de transmissão de dados mais populares como WiFi e Ethernet. Um exemplo disso seria conectar sensores em áreas remotas e sem acesso à rede elétrica. A tecnologia LoRa é uma solução para situações assim. Neste artigo, iremos explorar os princípios básicos do protocolo LoRa (Long Range) e como ele pode ser usado com a Placa LoRa Wifi 433MHz SX1276 – ESP32 Display OLED 0.96 para projetos em IoT usando o IDE do Arduino.


LoRa

O LoRa é uma tecnologia de radiotransmissão de longo alcance e baixo consumo criada pela Semtech™, ou seja, com essa tecnologia podemos criar projetos para aplicações de longa distancia, como por exemplo um termômetro em uma plantação distante alimentado por uma bateria ou painel solar. A tecnologia usa bandas de radiofrequência em sub-gigahertz sem licença, como 433 MHz, 868 MHz. Aqui no Brasil usamos a 915MHz regulada pela a Anatel. Com ela podemos criar links de transmissão entre dispositivos na escala de quilômetros (3-4 Km para regiões urbanas e em zonas rurais 15 Km ou mais).

Frequências LoRa no Brasil

Frequências LoRa no Brasil

A resolução da Anatel que trata dessas faixas de frequência está disponível no site neste link.


Projeto e Componentes

O projeto que vamos criar é um termômetro remoto. Vamos criar uma rede Peer-to-Peer (ponto a ponto) com um sensor de temperatura DHT11 conectado a um transmissor, e um receptor mostrando os dados no display.

Materiais necessários para o projeto Monitoramento de Temperatura com Heltec ESP32 LoRa

  • 2 Placa Heltec LoRa Wifi 915MHz SX1276 – ESP32 Display OLED 0.96 com Antena
  • 1 Sensor de Umidade e Temperatura DHT11 ou DHT22
  • 1 Protoboard 400 Pontos
  • Jumpers

A placa Heltec Wi-Fi ESP32 LoRa possui um módulo LoRa SX1276, um microprocessador Xtensa 32-Bits LX6 com uma tela OLED de 0,96” com resolução de 128×64. Também conta com um conector para bateria para alimentação remota.  Demais características podem ser encontradas em ESP32 LoRa WiFi.

Placa LoRa Wifi 915MHz SX1276 - ESP32 Display OLED 0.96

Placa LoRa Wifi 915MHz SX1276 – ESP32 Display OLED 0.96

WiFi-LORA-32-V2-pinout

O sensor DHT11 é um sensor de temperatura e umidade de saída de sinal digital garantindo alta confiabilidade e estabilidade a longo prazo. O elemento sensor de temperatura é um termistor do tipo NTC e o sensor de umidade é do tipo HR202, o circuito interno faz a leitura dos sensores e se comunica a um microcontrolador através de um sinal serial de uma via. Demais características podem ser encontradas em DHT11. Nesse projeto pode ser usado o DHT22 com as devidas adaptações.

DHT11-Pinout

Sensor de Umidade e Temperatura DHT11

Sensor de Umidade e Temperatura DHT11


Esquema de Ligação

As ligações no transmissor:

DHT11 – Heltec

  • VCC    >   VCC
  • GND   >   GND
  • Data    >   17

O receptor não tem ligações.

Heltec_Lora_esquema


Configurações e Instalação das Bibliotecas

Para utilizar a placa Heltec precisamos instalar e configurar as bibliotecas.

Clique em Arquivos > Preferências, vá até a opção URLs Adicionais de Gerenciamento de Placas e adicione: https://github.com/Heltec-Aaron-Lee/WiFi_Kit_series/releases/download/0.0.5/package_heltec_esp32_index.json

Em seguida entre em Ferramentas > Placas > Gerenciador de Placas: Na busca, digite Heltec ESP32, e instale o pacote Heltec ESP32 Series Dev-boards

Opção URLs Adicionais

Download da biblioteca da Heltec ESP32.

Cliquem em  Sketch > Incluir Biblioteca > Gerenciador de Biblioteca. Na busca, digite Heltec ESP32, e instale o pacote Heltec ESP32 Series Dev-boards

Para mais informações acesse: https://heltec-automation-docs.readthedocs.io/en/latest/esp32/quick_start.html


Programação

Após a conexão entre a placa Heltec ESP32 e o Arduino IDE, basta copiar e colar o código deste post.

Na IDE clique em Ferramentas > Placas > Heltec ESP32 Arduino e escolha a placa Heltec LoRa 32 V2

escolher a placa

Após os passos anteriores, deve-se carregar na placa o programa.

Código do Transmissor

O transmissor lê o sensor, envia os dados via LoRa e, em seguida, imprime no display OLED e pisca o LED.

Cabeçalhos utilizados

//inclusão de bibliotecas
#include "heltec.h"
#include "DHTesp.h"

#define BAND    915E6  //Escolha a frequência

DHTesp dht;

String packet ;
float currentTemp;
float currentHumidity;

/* Protótipo da função */
void getTemp();
void sendPacket();

/*
  Nome da função: getTemp
  objetivo: ler a temperatura e atibiu a variável currentTemp.
*/
void getTemp()
{
  float temperature = dht.getTemperature();
 
  if (temperature != currentTemp) { //Verifica se houve mudança na temperatura
    currentTemp = temperature;
    digitalWrite(LED, HIGH);   // Liga o LED
    delay(500);                // Espera 500 milissegundos
    digitalWrite(LED, LOW);    // Desliiga o LED
    delay(500);                // Espera 500 milissegundos
  }
  delay(1000);
}

/*
  Nome da função: sendPacket
  objetivo: envia a temperatura via LoRa armazenada na variável currentTemp.
*/
void sendPacket()
{
  LoRa.beginPacket();
  LoRa.print("Temperatura: ");
  LoRa.print(currentTemp);
  LoRa.endPacket();
}

/******************* função principal (setup) *********************/
void setup()
{
  pinMode(LED,OUTPUT); //inicializa o LED
  
  Heltec.begin(true /*Habilita o Display*/, true /*Heltec.Heltec.Heltec.LoRa Disable*/, true /*Habilita debug Serial*/, true /*Habilita o PABOOST*/, BAND /*Frequência BAND*/);
 
  Heltec.display->init();
  Heltec.display->flipScreenVertically();  
  Heltec.display->setFont(ArialMT_Plain_16);
  Heltec.display->clear();
  Heltec.display->drawString(33, 5, "Iniciado");
  Heltec.display->drawString(10, 30, "com Sucesso!");
  Heltec.display->display();
  delay(1000);
  
  dht.setup(17, DHTesp::DHT11); //inicializa o DHT no pino 17
   
  currentTemp = dht.getTemperature();
}

/******************* função em loop (loop) *********************/
void loop()
{
  getTemp(); //Ler temperatura
  
  Heltec.display->clear();
  Heltec.display->setTextAlignment(TEXT_ALIGN_LEFT);
  Heltec.display->setFont(ArialMT_Plain_16);
  
  Heltec.display->drawString(30, 5, "Enviando");
  Heltec.display->drawString(33, 30, (String)currentTemp);
  Heltec.display->drawString(78, 30, "°C");
  Heltec.display->display();

  sendPacket(); //Envia temperatura
}

Código do Receptor

O receptor aguarda a chegada de pacotes. Ao receber algum dado, imprime o valor no display OLED e pisca o LED.

Cabeçalhos utilizados

#include "heltec.h"

#define BAND    915E6  //Escolha a frequência

String packSize = "--";
String packet ;

/* Protótipo da função */
void LoRaDataPrint();
void cbk(int packetSize);

/*
  Nome da função: LoRaDataPrint
  objetivo: imprime a temperatura e tamanho do pacote recebido no display.
*/
void LoRaDataPrint(){
  Heltec.display->clear();
  Heltec.display->setTextAlignment(TEXT_ALIGN_LEFT);
  Heltec.display->setFont(ArialMT_Plain_10);
  Heltec.display->drawString(0 , 1 , "Recebendo "+ packSize + " bytes");
  Heltec.display->setFont(ArialMT_Plain_16);
  Heltec.display->drawString(15, 16, "Temperatura");
  Heltec.display->drawString(33, 38, packet);
  Heltec.display->drawString(78, 38, "°C");
  Heltec.display->display();
}

/*
  Nome da função: cbk
  recebe como parâmetos um inteiros (packetSize)
  objetivo: recebe a temperatura via LoRa e armazena na variável packet.
*/
void cbk(int packetSize) {
  packet ="";
  packSize = String(packetSize,DEC);
  for (int i = 0; i < packetSize; i++) {
    packet += (char) LoRa.read(); //Atribui um caractere por vez a váriavel packet 
  }
  LoRaDataPrint();
}

/******************* função principal (setup) *********************/
void setup()
{
  pinMode(LED,OUTPUT); //inicializa o LED
  
  Serial.begin(9600);
  Heltec.begin(true /*Habilita o Display*/, true /*Heltec.Heltec.Heltec.LoRa Disable*/, true /*Habilita debug Serial*/, true /*Habilita o PABOOST*/, BAND /*Frequência BAND*/);
 
  Heltec.display->init();
  Heltec.display->flipScreenVertically();  
  Heltec.display->setFont(ArialMT_Plain_10);
  Heltec.display->clear();
  Heltec.display->drawString(10, 5, "Iniciado com Sucesso!");
  Heltec.display->drawString(10, 30, "Aguardando os dados...");
  Heltec.display->display();
  Serial.println("Iniciado com Sucesso!");
  Serial.println("Aguardando os dados...");
  delay(1000);
  
  LoRa.receive(); // Habilita o rádio LoRa para receber dados
}

/******************* função em loop (loop) *********************/
void loop()
{
  int packetSize = LoRa.parsePacket();
  if (packetSize) { //Verifica se há dados chegando via LoRa
    cbk(packetSize);
    digitalWrite(LED, HIGH);   // Liga o LED
    delay(500);                // Espera 500 milissegundos
    digitalWrite(LED, LOW);    // Desliiga o LED
    delay(500);                // Espera 500 milissegundos
    Serial.print("Recebendo a temperatura: ");
    Serial.print(packet); //Imprime no monitor serial a temperatura
    Serial.println("°C");
  }
  delay(10);
}

Resultado Final

O resultado final do projeto você pode conferir no vídeo abaixo. No vídeo é mostrado o transmissor conectado a um Power Bank de 4.7V, transmitindo os dados e o receptor mostrando os dado recebidos. Em um dado momento, utilizei um soprador térmico para mudar a temperatura.

https://blog.eletrogate.com/wp-content/uploads/2021/12/Video-demo-.mp4

Conclusão

Com este projeto é possível obter êxito em diversas aplicações onde é necessário coletar dados remotos e transmiti-los para um receptor e dele salvar em algum lugar ou enviar para a internet. LoRa é uma tecnologia que veio para solucionar problemas de comunicação de longas distancia, além de resolver esse problema ela também e de baixo consumo, baixo custo de implementação e manutenção e de implementação simples em alguns casos.

Para mais materiais como esse, continue acompanhando as postagens semanais do blog e não deixe de visitar nossa loja. Lá você encontra todos os componentes necessários para desenvolver esse e muitos outros projetos!

Que a força estejam com vocês!

NÃO ENTREM EM PÂNICO!

Até mais!

Conheça a Metodologia Eletrogate e ofereça aulas de robótica em sua escola!


Sobre o Autor


Saulo Aislan

Graduando em Tecnologia em Telemática pelo IFPB – Campus de Campina Grande – PB. Tenho experiência com os microcontroladores da família Arduino, ESP8266, ESP32, STM32 e microprocessador Raspberry Pi. Tenho projetos na áreas de IoTs voltada para a indústria 4.0, agroindústria e indústria aeroespacial civil utilizando LoRa, Bluetooth, ZigBee e Wi-Fi. Atualmente estudando e desenvolvendo em FreeRTOS para sistemas em tempo real com ESP32 e LoRaWan para Smart City e compartilhando alguns projetos no blog da Eletrogate.


Materiais utilizados

Eletrogate

22 de dezembro de 2021 Atualizado em: 20 set 2022

A Eletrogate é uma loja virtual de componentes eletrônicos do Brasil e possui diversos produtos relacionados à Arduino, Automação, Robótica e Eletrônica em geral.

Conheça a Metodologia Eletrogate e Lecione um Curso de Robótica nas Escolas da sua Região!

Projetos

Jogo da Velha na TV!

Eletrogate19 de setembro de 2023

Este é um jogo de quebra-cabeça para dois jogadores, identificados como “X” e “O”, que se revezam marcando os espaços em uma área 3 × 3.
Alguma vez na vida você já deve ter jogado este clássico jogo conhecido como Jogo-da-Velha ou Tic-Tac-Toe.

Neste post, você vai aprender a montar e programar uma versão digital deste jogo, com saída de imagem para TV, utilizando apenas alguns componentes eletrônicos básicos, uma placa Arduino UNO e um Teclado Matricial de 16 teclas.

Projetos

Jogo da Velha na TV!

Eletrogate19 de setembro de 2023

Este é um jogo de quebra-cabeça para dois jogadores, identificados como “X” e “O”, que se revezam marcando os espaços em uma área 3 × 3.
Alguma vez na vida você já deve ter jogado este clássico jogo conhecido como Jogo-da-Velha ou Tic-Tac-Toe.

Neste post, você vai aprender a montar e programar uma versão digital deste jogo, com saída de imagem para TV, utilizando apenas alguns componentes eletrônicos básicos, uma placa Arduino UNO e um Teclado Matricial de 16 teclas.

IoT

LittleFS: Alto Desempenho para RP Pico, ESP32 e ESP8266

Eletrogate12 de setembro de 2023

Aprenda neste post, a usar o sistema de arquivos LittleFS, que possui mais desempenho do que o sistema SPIFFS, nas placas Raspberry Pi Pico, ESP32 e ESP8266.

IoT

LittleFS: Alto Desempenho para RP Pico, ESP32 e ESP8266

Eletrogate12 de setembro de 2023

Aprenda neste post, a usar o sistema de arquivos LittleFS, que possui mais desempenho do que o sistema SPIFFS, nas placas Raspberry Pi Pico, ESP32 e ESP8266.

Sensores

Como Utilizar o Módulo Sensor de Cor RGB TCS34725

Eletrogate5 de setembro de 2023

Você já precisou de algum sensor para detectar as cores de objetos? Venha conferir o post de hoje! Nós vamos utilizar o sensor RGB TCS34725.

Sensores

Como Utilizar o Módulo Sensor de Cor RGB TCS34725

Eletrogate5 de setembro de 2023

Você já precisou de algum sensor para detectar as cores de objetos? Venha conferir o post de hoje! Nós vamos utilizar o sensor RGB TCS34725.

Projetos

Controlando o Braço Robótico em MDF via Bluetooth

Eletrogate29 de agosto de 2023 Atualizado em: 01 set 2023

Que tal montar um braço robótico e controlá-lo pelo celular? Entre para dicas de montagem e aprender a controlar servos e conectar sua placa.

Projetos

Controlando o Braço Robótico em MDF via Bluetooth

Eletrogate29 de agosto de 2023 Atualizado em: 01 set 2023

Que tal montar um braço robótico e controlá-lo pelo celular? Entre para dicas de montagem e aprender a controlar servos e conectar sua placa.

Eletrogate Robô

Cadastre-se e fique por
dentro de novidades!

blog-eletrogate-logo-footer

Rua Rio de Janeiro, 441 - Sala 1301
Centro - Belo Horizonte/MG
CEP 30160-041
*Não temos atendimento físico

ANWAR SLEIMAN HACHOUCHE - ME
CNPJ: 18.917.521/0001-73

Atendimento

(31) 3142-3800

[email protected]


Seg a Sex - das 8h às 17h

Institucional

  • Apostilas
  • Quem Somos
  • Privacidade
  • Seja um Redator
  • Trabalhe Conosco

Nos acompanhe

Facebook Instagram Youtube

© ELETROGATE 2023 - Todos os direitos reservados. Termos de uso e Política de privacidade.