Neste post, você vai aprender a usar e programar a placa LoRa ESP32 Wifi com a IDE do Arduino. Esse produto está disponível em nossa loja, basta clicar aqui. Confira mais detalhes do produto a seguir.
A placa LoRa ESP32 WiFi é uma placa de desenvolvimento compacta que oferece três modos de comunicação: Wifi, Bluetooth e LoRa (a rede de longo alcance que é o diferencial dessa placa). LoRa é uma tecnologia de transmissão de dados sem fio que utiliza uma técnica de modulação de rádio baseada em chips transceptores Semtech LoRa. Essa técnica possibilita a comunicação a longas distâncias com pequenas quantidades de dados (baixa largura de banda), alta resistência a interferências e baixo consumo de energia. Assim, LoRa é ideal para aplicações que exigem longo alcance e economia de bateria. A placa conta com o microprocessador Xtensa 32-Bits LX6, que se destaca pelo baixo consumo de energia e pelo processamento dual core. Além disso, possui uma tela OLED de 0,96” com resolução de 128×64 integrada. Na parte inferior, há um controlador de carga e um conector JST para uma bateria (Li-Ion ou Li-Po) de 3.7V e até 1000mAh, permitindo a alimentação remota da placa.
Atenção: O módulo LoRa ESP32 WiFi não deve ser ligado sem que a antena esteja conectada corretamente, pois isso pode causar danos aos componentes, segundo o fabricante.
A seguir temos o diagrama de pinagem do dispositivo. Existem pinos com características específicas que os tornam adequados ou não para um determinado projeto. A imagem a seguir mostra quais pinos são melhores para usar como entradas, saídas e quais você precisa ter cuidado, se atente as notas.
É importante levar em conta que os pinos devem estar nos seguintes estados ao baixar o programa:
GPIO5 (LOW);
GPIO12 (LOW);
GPIO15 (HIGH).
O primeiro passo para começar a usar a placa LORA ESP32 com o ambiente de programação do Arduino é instalar o programa no computador. Caso já tenha a IDE do Arduino Instalada, pule para o próximo tópico.
Caso seja a primeira vez que está configurando algum ESP32 na IDE Arduino, passe para o próximo passo. Por outro lado, se você já possui a IDE do Arduino instalada em seu computador e em algum momento fez a instalação do pacote de placas do ESP32, é necessário fazer a remoção do pacote antes de prosseguir.
Vá em AppData → Local → Arduino15, delete a pasta Arduino15 completamente.
Para evitar qualquer problema nos passos seguintes, delete também a pasta de bibliotecas.
Vá em Documentos → Arduino → libraries e apague as bibliotecas que estão salvas.
Abra a IDE do Arduino, entre em Arquivos e vá até a opção Preferências:
Clique no ícone a direita de URLs Adicionais para Gerenciadores de Placas:
Adicione a seguinte URL e clique em OK:
https://dl.espressif.com/dl/package_esp32_index.json
Em seguida, vá em Ferramentas ➞ Placa➞ Gerenciador de Placas:
Na barra de pesquisa coloque ESP32, quando surgir esp32 de Espressif System. clique em Instalar e aguarde o download.
Em determinados casos, pode ser necessário realizar a instalação do driver serial para que um dispositivo funcione corretamente. Felizmente, o processo de instalação é bastante simples. Para começar, é preciso acessar o seguinte link: https://www.silabs.com/developers/usb-to-uart-bridge-vcp-drivers.
Uma vez no site, siga os passos abaixo para fazer o download e a instalação do driver:
Seguindo essas etapas, você poderá instalar o driver serial de forma rápida e fácil, garantindo o bom funcionamento do seu dispositivo.
Para instalar a biblioteca LoRa vá em: Sketch → Incluir Biblioteca → Gerenciar Bibliotecas;
Pesquise Heltec ESP32 e Instale a biblioteca descrita como: Heltec ESP32 Dev-Boards (distribuída por HelTec);
Atenção: Escolha a Versão 1.0.9
Pesquise SSD1306 e Instale a biblioteca descrita como: ESP8266 and ESP32 Oled Driver for SSD1306 display
Após seguir os passos anteriores, a Placa LoRa ESP32 WiFi estará pronta para ser conectada ao computador e programada. É importante destacar que, de acordo com o fabricante, a placa não deve ser energizada sem que a antena esteja devidamente conectada, pois isso pode ocasionar danos irreversíveis à placa. Portanto, verifique sempre se a antena está conectada antes de conectar a placa ao computador.
Para demonstrar o funcionamento da comunicação LoRa entre dois pontos, serão utilizadas duas unidades da Placa LoRa ESP32 WiFi. Para programar e energizar as placas, pode-se utilizar um cabo Micro USB conectado ao computador e uma fonte 5V Micro USB.
Uma das placas será programada com um código exemplo chamado “Sender”, que será responsável por enviar pacotes. Já a outra placa será programada com um código chamado “Receiver”, que será responsável por receber os pacotes enviados pela primeira placa.
As informações sobre o envio e recebimento de pacotes serão exibidas em tempo real no display OLED de cada uma das placas.
Para conectar a Placa LoRa ESP32 WiFi transmissora ao computador e programá-la, basta seguir os seguintes passos:
Seguindo esses passos, você poderá programar a sua Placa LoRa ESP32 WiFi e testar a comunicação LoRa entre dois pontos.
Acesse o menu novamente e vá em: Arquivo → Exemplos → Heltec ESP32 Dev-Boards → LoRa → OLED_LoRa_Sender:
Para operar a comunicação LoRa na Placa LoRa ESP32 WiFi, é necessário informar a frequência de operação da placa que está sendo utilizada. A frequência pode ser de 433MHz, 868MHz ou 915MHz, e essa informação deve ser inserida no código.
Para definir a frequência de operação, é importante lembrar que:
No exemplo apresentado, será utilizado um módulo que opera em ambas as frequências de 868MHz e 915MHz. Nesse caso, pode-se escolher qualquer uma das opções entre 868E6 e 915E6. Para o exemplo, será utilizada a frequência de 915MHz, ou seja, 915E6.
/*
This is a simple example show the Heltec.LoRa sended data in OLED.
The onboard OLED display is SSD1306 driver and I2C interface. In order to make the
OLED correctly operation, you should output a high-low-high(1-0-1) signal by soft-
ware to OLED's reset pin, the low-level signal at least 5ms.
OLED pins to ESP32 GPIOs via this connecthin:
OLED_SDA -- GPIO4
OLED_SCL -- GPIO15
OLED_RST -- GPIO16
by Aaron.Lee from HelTec AutoMation, ChengDu, China
成都惠利特自动化科技有限公司
https://heltec.org
this project also realess in GitHub:
https://github.com/Heltec-Aaron-Lee/WiFi_Kit_series
*/
#include "heltec.h"
#include "images.h"
#define BAND 915E6 //you can set band here directly,e.g. 868E6,915E6
unsigned int counter = 0;
String rssi = "RSSI --";
String packSize = "--";
String packet ;
void logo()
{
Heltec.display->clear();
Heltec.display->drawXbm(0,5,logo_width,logo_height,logo_bits);
Heltec.display->display();
}
void setup()
{
//WIFI Kit series V1 not support Vext control
Heltec.begin(true /*DisplayEnable Enable*/, true /*Heltec.Heltec.Heltec.LoRa Disable*/, true /*Serial Enable*/, true /*PABOOST Enable*/, BAND /*long BAND*/);
Heltec.display->init();
Heltec.display->flipScreenVertically();
Heltec.display->setFont(ArialMT_Plain_10);
logo();
delay(1500);
Heltec.display->clear();
Heltec.display->drawString(0, 0, "Heltec.LoRa Initial success!");
Heltec.display->display();
delay(1000);
}
void loop()
{
Heltec.display->clear();
Heltec.display->setTextAlignment(TEXT_ALIGN_LEFT);
Heltec.display->setFont(ArialMT_Plain_10);
Heltec.display->drawString(0, 0, "Sending packet: ");
Heltec.display->drawString(90, 0, String(counter));
Heltec.display->display();
// send packet
LoRa.beginPacket();
/*
* LoRa.setTxPower(txPower,RFOUT_pin);
* txPower -- 0 ~ 20
* RFOUT_pin could be RF_PACONFIG_PASELECT_PABOOST or RF_PACONFIG_PASELECT_RFO
* - RF_PACONFIG_PASELECT_PABOOST -- LoRa single output via PABOOST, maximum output 20dBm
* - RF_PACONFIG_PASELECT_RFO -- LoRa single output via RFO_HF / RFO_LF, maximum output 14dBm
*/
LoRa.setTxPower(14,RF_PACONFIG_PASELECT_PABOOST);
LoRa.print("hello ");
LoRa.print(counter);
LoRa.endPacket();
counter++;
digitalWrite(LED, HIGH); // turn the LED on (HIGH is the voltage level)
delay(1000); // wait for a second
digitalWrite(LED, LOW); // turn the LED off by making the voltage LOW
delay(1000); // wait for a second
}
Para enviar o código para a placa LoRa ESP32 WiFi, é necessário clicar no botão correspondente na IDE do Arduino e aguardar o carregamento. Caso ocorra algum erro durante o processo, é importante verificar se a placa correta foi selecionada no menu “Ferramentas”. Além disso, é importante lembrar que os códigos de exemplos da biblioteca só funcionarão com a placa LoRa que possui display OLED.
Após o carregamento do código “Sender”, é necessário desconectar a placa transmissora do computador e conectar a segunda placa LoRa ESP32 WiFi receptora através do cabo USB. Em seguida, deve-se selecionar a porta COM em que a placa está alocada e repetir o procedimento anterior, agora selecionando o código “OLED_LoRa_Receiver”.
Também é necessário informar novamente a frequência de operação da placa LoRa, que no exemplo é de 915E6.
/*
This is a simple example show the Heltec.LoRa recived data in OLED.
The onboard OLED display is SSD1306 driver and I2C interface. In order to make the
OLED correctly operation, you should output a high-low-high(1-0-1) signal by soft-
ware to OLED's reset pin, the low-level signal at least 5ms.
OLED pins to ESP32 GPIOs via this connecthin:
OLED_SDA -- GPIO4
OLED_SCL -- GPIO15
OLED_RST -- GPIO16
by Aaron.Lee from HelTec AutoMation, ChengDu, China
成都惠利特自动化科技有限公司
www.heltec.cn
This project is also available on GitHub:
https://github.com/Heltec-Aaron-Lee/WiFi_Kit_series
*/
#include "heltec.h"
#include "images.h"
#define BAND 915E6 //you can set band here directly,e.g. 868E6,915E6
String rssi = "RSSI --";
String packSize = "--";
String packet ;
void logo(){
Heltec.display->clear();
Heltec.display->drawXbm(0,5,logo_width,logo_height,logo_bits);
Heltec.display->display();
}
void LoRaData(){
Heltec.display->clear();
Heltec.display->setTextAlignment(TEXT_ALIGN_LEFT);
Heltec.display->setFont(ArialMT_Plain_10);
Heltec.display->drawString(0 , 15 , "Received "+ packSize + " bytes");
Heltec.display->drawStringMaxWidth(0 , 26 , 128, packet);
Heltec.display->drawString(0, 0, rssi);
Heltec.display->display();
}
void cbk(int packetSize) {
packet ="";
packSize = String(packetSize,DEC);
for (int i = 0; i < packetSize; i++) { packet += (char) LoRa.read(); }
rssi = "RSSI " + String(LoRa.packetRssi(), DEC) ;
LoRaData();
}
void setup() {
//WIFI Kit series V1 not support Vext control
Heltec.begin(true /*DisplayEnable Enable*/, true /*Heltec.Heltec.Heltec.LoRa Disable*/, true /*Serial Enable*/, true /*PABOOST Enable*/, BAND /*long BAND*/);
Heltec.display->init();
Heltec.display->flipScreenVertically();
Heltec.display->setFont(ArialMT_Plain_10);
logo();
delay(1500);
Heltec.display->clear();
Heltec.display->drawString(0, 0, "Heltec.LoRa Initial success!");
Heltec.display->drawString(0, 10, "Wait for incoming data...");
Heltec.display->display();
delay(1000);
//LoRa.onReceive(cbk);
LoRa.receive();
}
void loop() {
int packetSize = LoRa.parsePacket();
if (packetSize) { cbk(packetSize); }
delay(10);
}
Após enviar o código para a placa, é necessário energizar ambas as placas LoRa ESP32 WiFi. Na placa transmissora, será exibido no display OLED a mensagem “Sending packet”, juntamente com a quantidade de pacotes enviados. Já na placa receptora, será exibido o valor do RSSI, que indica a intensidade do sinal recebido em dBm, o tamanho do pacote que foi recebido e, após a palavra “hello”, a quantidade de pacotes recebidos até o momento.
Lembrando que o valor do RSSI é um indicador de intensidade do sinal recebido, dado em dBm. Quanto mais próximo de zero for o valor RSSI, melhor será a qualidade do sinal recebido. Um valor de RSSI maior ou igual a -30dBm é considerado um sinal de ótima intensidade. Geralmente, na comunicação utilizando LoRa, o sinal pode ser recebido quando o RSSI é menor ou igual a -132dBm. Logo, quanto maior for a distância entre o transmissor e o receptor LoRa, mais longe de 0dBm será o valor do RSSI.
O post apresenta um guia completo para utilizar a placa LoRa ESP32 WiFi com a IDE do Arduino. São apresentados os requisitos necessários para a instalação do driver serial, além de orientações para programar a placa, como a seleção da frequência de operação da comunicação LoRa. O tutorial também traz um exemplo de código para enviar e receber pacotes de dados entre duas placas LoRa, demonstrando no display OLED de cada placa o envio e recebimento de pacotes, além de fornecer informações sobre o RSSI e a qualidade do sinal recebido.
ROBOBUILDERS IMPORTACAO E COMERCIO DE PRODUTOS DE SISTEMAS E AUTOMACAO - CNPJ: 27.338.195/0001-30 © Todos os direitos reservados. 2023