fbpx

ESP32 LoRa DS18b20: Monitore temperatura e transmita seus dados para a nuvem com o LoRa

Neste artigo você aprenderá como programar múltiplos ESP32 LoRa para enviar dados de sensores a um dashboard hospedado em um servidor na Nuvem. Usaremos o ESP32 LoRa e DS18b20 para monitorar temperatura.

ESP32 LoRa ou Wifi LoRa

A WiFi LoRa 32, também conhecido como ESP32 LoRa, é uma placa idealizada para simplificar o desenvolvimento de projetos IoT, como automação industrial ou residencial e sensoriamento remoto. A placa é baseada no chip SX1276 com a tecnologia LoRa, tem Bluetooth e WiFi embarcados e ainda possui um display OLED de 0,96 polegadas.

Mostraremos a seguir o passo a passo para criar um gateway usando um ESP32 LoRa e configurar o ESP32 LoRa como dispositivos que receberão as medições realizadas por sensores de temperatura e encaminharão ao gateway para que essas medições cheguem a um dashboard online.

Para este projeto você precisará de:

  • 3 Placas ESP32 LoRa (WiFi LoRa 32);
  • 2 Sensores de temperatura DS18B20;
  • 2 Resistor 10k Ohm.
  • 2 Protoboards.

Siga o esquemático abaixo para conectar os 2 sensores DS18B20 ao ESP32 LoRa.

Antes de começarmos, é preciso que você crie uma conta gratuita na Plataforma EasyIoT. É lá que encontraremos algumas das bibliotecas usada aqui. Usaremos também a Painel da Plataforma EasyIoT para exibir os dados que serão enviados para a Nuvem.

Passo 1: Configuração da IDE do Arduino

A IDE do Arduino pode ser usada para realizar a programação do WiFi LoRa 32, mas para isso é preciso instalar duas bibliotecas.

Primeiro instalaremos a biblioteca do Esp32.

Abra a IDE do Arduino e clique em Arquivo >> Preferências:

Na janela Preferências procure pelo campo URLs Adicionais para Gerenciadores de Placas, insira o link mostrado abaixo na caixa de diálogo e clique em OK.

https://dl.espressif.com/dl/package_esp32_index.json

Vá em Ferramentas >> Placa >> Gerenciador de Placas:

Procure por esp32, selecione o pacote esp32 by Espressif Systems e clique em instalar.

Verifique se o ESP32 foi adicionado à lista de placas em Ferramentas >> Placa:

Agora em Ferramentas >> Placa >> Gerenciador de Placas procure por LoRa e instale a biblioteca Heltec ESP32 Dev-Boards by Heltec Automation:

Por fim, instale as bibliotecas do display oled indo novamente em Ferramentas >> Placa >> Gerenciador de Placas procure por Adafruit SSD1306 by Adafruit e clique em instalar:

Em seguida, novamente em Ferramentas >> Placa >> Gerenciador de Placas procure e instale Adafruit GFX by Adafruit:

Passo 2: Biblioteca Easyiot-LoRa

Acesse a Plataforma EasyIoT, clique em Bibliotecas e baixe as bibliotecas EasyIoT-LoRa-ESP32 e LoRa.

Com a IDE do Arduino aberta, entre em Sketch >> Incluir Biblioteca >> Adicionar biblioteca .ZIP e inclua os as dois arquivos Zip baixados.

Passo 3: Programação do Gateway

O EasyGateway será a ponte entre os seus dispositivos LoRa e a Nuvem, por isso o configuraremos primeiro.

Baixe o código do EasyGateway e abra o código com a IDE do Arduino.

#include <Easyiot-LoRa.h>

const char*  ssid = "MEU_SSID"; // <-- Digite aqui o nome da sua rede WiFi
const char* password = "MINHA_SENHA"; // <-- Digite aqui a senha da sua rede WiFi
unsigned long inicio;

void setup() {
  int timeout = 0;
  
  Serial.begin(115200);
  display_logo();
  delay_lora(5000);
  Serial.print(F("Conectando a "));
  Serial.print(ssid);
  WiFi.mode(WIFI_STA);
  WiFi.begin(ssid, password);
  while ((WiFi.status() != WL_CONNECTED) || (timeout < 10)) {
    Serial.print(".");
    timeout++;
    delay_lora(1000);
    if(timeout == 30){
        timeout = 0;
        Serial.println();
        Serial.println(F("Falha na conexão, verifique os dados da sua WiFi!"));
        Serial.println(F("Tentando conectar novamente"));
        Serial.println();
        Serial.print(F("Conectando a "));
        Serial.print(ssid); 
    }
  }
  Serial.println();
  Serial.println(F("WiFi conectado"));
  Serial.println();
  
  pinMode(pinBUTTON, INPUT_PULLUP);
  pinMode(led, OUTPUT);
  attachInterrupt(digitalPinToInterrupt(pinBUTTON), handleButtonInterrupt, CHANGE);
  registro_gateway();
  display_gateway();
  _start_LoRa();
  inicio = millis();
}


void loop() {

  interrupcao();
  receive_lora();
  if((millis() - inicio) > 300000) {
    inicio = millis();
    _start_LoRa();  
  }
  
}
 
 
 
 


No código substitua MEU_SSID e MINHA_SENHA, nas linhas 3 e 5, pelo login e senha da sua rede WiFi.  

Execute o programa e abra o monitor serial da IDE.

O Easy Token é o código de registro do seu EasyGateway na Plataforma EasyIoT. Para obter seu Easy Token acesse a Plataforma, vá em Dispositivos >> Dispositivos Cadastrados e adicione um novo dispositivo.

Crie uma aplicação e clique em Continuar.

Selecione ESP32 e clique em Continuar.

Copie o Easy Token da sua aplicação.

Cole o Easy Token no monitor serial e digite Enter.

Copie o RX-ID e salve. Esse é o código de identificação do seu gateway, que deverá ser passado para todos os dispositivos LoRa conectados ao gateway.  Esse código também será exibido no display OLED.

Passo 4: Programação do Dispositivo LoRa com o sensor DS18B20

Com o EasyGateway configurado podemos programar os dispositivos que medirão temperatura usando o DS18B20 e enviarão essas medições ao gateway via LoRa.

Desconecte o EasyGateway da USB e conecte um dos ESP32 LoRa conectado a um sensor de temperatura. Baixe o código do DS18B20_EASYLORA e abra com a IDE do Arduino.

#include <Easyiot-LoRa.h>
#include <OneWire.h>
#include <DallasTemperature.h>

int cont = 0;
// GPIO onde o sensor DS18B20 esta conectado
const int oneWireBus = 17;

// Setup de uma instancia oneWire 
OneWire oneWire(oneWireBus);

// Passando a nossa referencia da instancia oneWire para o sensor de temperatura 
DallasTemperature sensors(&amp;oneWire);

void setup() {
  Serial.begin(115200);
  display_logo();
  delay_lora(5000);
  sensors.begin();
  pinMode(pinBUTTON, INPUT_PULLUP);
  pinMode(led, OUTPUT);
  attachInterrupt(digitalPinToInterrupt(pinBUTTON), handleButtonInterrupt, CHANGE);
  registro_device();
  display_device();
  _start_LoRa();

}

void loop() {

  String resposta;
  
  interrupcao();
  
  sensors.requestTemperatures();  // Requisicao da temperatura para o sensor
  float temperatureC = sensors.getTempCByIndex(0);
  
  payload = "Temperatura: ["; // A mensagem que sera enviada para a plataforma contendo a temperatura medida
  payload = payload + temperatureC;
  payload = payload + "] *C";

  payload = payload;
  send_lora();
  Serial.println(F("Payload enviado (visualize os dados na plataforma)"));
  delay_lora(5000);
}
 

 
 
 
 

Na mensagem enviada pelo dispositivo via LoRa para o gateway, o valor das medições do sensor deve aparece entre colchetes para que na Plataforma EasyIot ele possa ser identificado como um ponto de análise.

Execute o programa e abra o monitor serial da IDE.

Cole o RX-ID obtido no passo anterior no monitor serial e digite Enter.

Conecte o EasyGateway em outra entrada USB.

Entre no Painel da Plataforma EasyIoT  e veja as mensagens enviadas pelo dispositivo LoRa chegando. No painel a Aplicação contém o nome do EasyGateway e o Dispositivo contém o TX-ID, que é o código de identificação dos dispositivos que se comunicam, via LoRa, com o EasyGateway.

Repita estes procedimentos para configurar o outro ESP32 LoRa.

Passo 5 – Criando um Dashboard

Agora que as medições de temperatura do sensor já estão chegando ao painel, podemos criar um dashboard para visualizarmos melhor os dados.

Na Plataforma EasyIot clique em Dashboards e adicione um novo dashboard.

De um nome ao dashboard, defina o tipo como sendo Gráfico e selecione a aplicação, criada anteriormente, para enviar os dados de temperatura.

Adicione um ponto de análise.

Um ponto de análise é a parte da mensagem, enviada pelo dispositivo, onde se encontra a informação que se deseja exibir no dashboard. Essa informação deve aparecer na mensagem entre colchetes, para que o dashboard a identifique como um ponto relevante.

Selecione o tipo de dado como sendo String, de um nome ao ponto de análise e selecione a posição do dado no payload. Essa posição é dada pela ordem em que as informações de interesse, que serão apresentadas no dashbord aparecem na mensagem que o dispositivo envia. Como na mensagem do sensor de temperatura há apenas um ponto de interesse, que é o valor da temperatura, a posição do dado no payload será 1. Ao terminar a configuração clique em Salvar.

Adicione um gráfico.

Selecione o tipo do gráfico, o ponto de análise configurado anteriormente e os dispositivos que devem servir de fonte de dados para o dashboard.

Pronto, os dados de temperatura dos 2 sensores DS18B20 já estão chegando ao dasboard.