fbpx

Transforme o seu Esp32 LoRa em um gateway, para transmitir dados de dispositivos LoRa para a Nuvem.

Nesse artigo você aprenderá a usar a placa WiFi da Heltec como um gateway, para interconectar dispositivos LoRa com uma rede WiFi e enviar os dados transmitidos por ele para um servidor na Nuvem.

O WiFi LoRa 32, também conhecido como ESP32 LoRa, é uma placa de desenvolvimento IoT projetada e produzida pela Heltec Automation (TM). A placa é baseada na integração do ESP32 com o chip LoRa SX127x.

Possuindo as funções Wi-Fi, BLE e LoRa, o ESP32 LoRa também conta com um sistema de gerenciamento de bateria Li-Po e um display OLED. O que faz dele uma opção de bom custo benefício para o uso no desenvolvimento de projetos IOT.

Neste artigo, programaremos o ESP32 LoRa  para operar como um gateway LoRa WiFi. A função do gateway, será receber e gerenciar mensagens de dispositivos, que se comunicam via protocolo LoRa e redirecionar estas mensagens para um servidor na nuvem, utilizando uma rede WiFi

O gateway, por exemplo, poderia ser utilizado como ponto de conexão entre um grupo de microcontroladores, cada um deles coletando as medições de um sensor (umidade, temperatura, intensidade luminosa) e um dashboard online que exibiria os valores das variáveis medidas pelos sensores.

Para este projeto você precisará de:

  • 2 placas de desenvolvimento WiFi LoRa 32 da Heltec;
  • Conexão com uma rede WiFi;
  • Plataforma EasyIoT.

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 o 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 instale a biblioteca:

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 e 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 da IDE do Arduino 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 a finalidade de testar o EasyGateway, programaremos outro módulo WiFi LoRa 32 para funcionar como um EasyDevice que transmitirá mensagens para o gateway via LoRa.

Desconecte o EasyGateway e conecte a placa de Heltec, que será utilizada como EasyDevice. Baixe o código do EasyDevice e abra com a IDE do Arduino.

#include <Easyiot-LoRa.h>

int cont = 0;

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

}

void loop() {
  
  interrupcao();
  payload = "Testando o envio ";
  payload = payload + cont;
  cont++;
  send_lora();
  Serial.println(F("Payload enviado (visualize os dados na plataforma)"));
  delay_lora(5000);
}
 
 
 

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.

O código do EasyDevice pode ser usado como base para transmitição de quaisquer dados de sensores para a Nuvem, via EasyGateway. Basta colocar o dado que se deseja transmitir, em formato de string, na variável payload.

Passo 5: Reconfiguração do EasyGateway

Caso você queira reprogramar o EasyGateway para associá-lo a um novo Easy Token, conecte a placa da Heltec na USB e a reinicie pressionando o botão PRG noESP32 LoRa, por ao menos 5 segundos ou até o LED branco piscar.

Insira o novo Easy Token, similarmente ao que foi feito no passo 3 desse artigo. Um novo RX-ID será associado ao gateway e você precisará atualizar todos os dispositivos LoRa que se comunicam com ele. Ao reiniciar o EasyGateway todos os EasyDevice associados a ele precisarão ser reiniciados.

Para reiniciar o EasyDevice conecte-o a uma porta USB e pressione o botão PRG  por ao menos 5 segundos, que é o mesmo procedimento usado para reprogramar o Easy Gateway, depois abra o monitor serial e insira o novo RX-ID.Este procedimento de reinicialização, também poderá ser usado para corrigir a inserção no EasyGateway, de um RX-ID não existente.