Volto hoje a falar sobre a instalação
do ESP32 LoRa na Arduino IDE, assunto que já falei, mas que volto a tratar por
necessidade de atualização. Vou te apresentar um passo a passo de instalação
das bibliotecas do ESP32 LoRa, tanto para a comunicação LoRa quanto para o
display. Ainda, te mostro um exemplo de código fonte utilizando algumas funções
de LoRa e de display. No nosso projeto utilizado o microcontrolador da Heltec.
Instalação
Recursos usados
- ESP32 LoRa Heltec
- Cabo microusb para usb
Para quem já instalou Esp32
É necessário deletar as
seguintes pastas:
Passos seguidos no vídeo:
1. Instalação da placa ESP32
(A placa Heltec_WiFi_LoRa_32 e Heltec_WiFi_Kit_32 também serão instaladas)
1.1 -
Na sua Arduino IDE vá em:
Arduino -> Preferências
Em URLs Adicionais para
Gerenciadores de Placas, adicione a url:
https://dl.espressif.com/dl/package_esp32_index.json
1.2 -
Na sua Arduino IDE vá em:
Ferramentas -> Placas ->
Gerenciador de placas
Pesquise por: esp32
Instale o pacote descrito como:
esp32 by Espressif Systems
2. Instalação dos drivers
Silicon Labs CP210x USB para UART Bridge VCP.
Acesse:
https://www.silabs.com/products/development-tools/software/usb-to-uart-bridge-vcp-drivers
Baixe e instale o driver compatível com o
seu S.O.
3. Instalação da biblioteca LoRa
Na sua Arduino IDE vá em:
Sketch -> Incluir biblioteca ->
Gerenciar bibliotecas
Pesquise por: LoRa
Instale a biblioteca descrita como: LoRa
(distribuída por Sandeep Mistry)
4. Instalação da biblioteca
SSD1306 para o display
Na sua Arduino IDE vá em:
Sketch -> Incluir biblioteca ->
Gerenciar bibliotecas
Pesquise por: SSD1306
Instale a biblioteca descrita como: ESP8266
and ESP32 Oled Driver for SSD1306 display
Código
Declarações e variáveis
#include <LoRa.h> #include <SSD1306.h> // Pinos do display (comunicação i2c) const int DISPLAY_ADDRESS_PIN = 0x3c; const int DISPLAY_SDA_PIN = 4; const int DISPLAY_SCL_PIN = 15; const int DISPLAY_RST_PIN = 16; // Pinos do lora (comunicação spi) const int LORA_SCK_PIN = 5; const int LORA_MISO_PIN = 19; const int LORA_MOSI_PIN = 27; const int LORA_SS_PIN = 18; const int LORA_RST_PIN = 15; const int LORA_DI00_PIN = 26; // Frequência de comunicação const int BAND = 433E6; // Contador de pacotes enviados via lora int counter = 0; // Altura da fonte (correspondente a fonte ArialMT_Plain_16) const int fontHeight = 16; // Objeto do display SSD1306 display(DISPLAY_ADDRESS_PIN, DISPLAY_SDA_PIN, DISPLAY_SCL_PIN);
Setup
void setup()
{
// Iniciamos a serial com velocidade de 9600
Serial.begin(9600);
// Exibimos "Starting..." na serial (debug)
Serial.println("Starting...");
// Iniciamos o display
if(!displayBegin())
{
// Se não deu certo, exibimos falha de display na serial
Serial.println("Display failed!");
// E deixamos em loop infinito
while(1);
}
// Configuramos o posicionamento da tela, fonte e o alinhamento do texto
displayConfig();
// Iniciamos o lora
if(!loraBegin())
{
// Se não deu certo, exibimos falha de lora na serial
Serial.println("LoRa failed!");
// E deixamos em loop infinito
while (1);
}
}
Loop
void loop()
{
// Variável usada para indicar em qual linha o cursor deverá estar quando uma mensagem no display for exibida
int line;
// Limpamos o display
display.clear();
// Iniciamos na primeira linha (zero)
line = 0;
// Escrevemos a mensagem "Sending packet: " na primeira linha
display.drawString(0, line, "Sending packet: ");
// Mudamos para a segunda linha
line++;
// Escrevemos o incrementador "counter" na segunda linha
display.drawString(0, line * fontHeight, String(counter));
// Exibimos as alterações no display
display.display();
// Enviamos um pacote com a mensagem "hello" concatenado com o número "counter"
LoRa.beginPacket();
LoRa.print("hello ");
LoRa.print(counter);
LoRa.endPacket();
// Incrementamos o contador
counter++;
// Aguardamos 1 segundo
delay(1000);
}
displayBegin e displayConfig
// Função que inicializa o display
bool displayBegin()
{
// Reiniciamos o display
pinMode(DISPLAY_RST_PIN, OUTPUT);
digitalWrite(DISPLAY_RST_PIN, LOW);
delay(1);
digitalWrite(DISPLAY_RST_PIN, HIGH);
delay(1);
return display.init();
}
// Função que faz algumas configuções no display
void displayConfig()
{
// Invertemos o display verticalmente
display.flipScreenVertically();
// Setamos a fonte
display.setFont(ArialMT_Plain_16);
// Alinhamos a fonta à esquerda
display.setTextAlignment(TEXT_ALIGN_LEFT);
}
loraBegin
// Função que inicializa o radio lora
bool loraBegin()
{
// Iniciamos a comunicação SPI
SPI.begin(LORA_SCK_PIN, LORA_MISO_PIN, LORA_MOSI_PIN, LORA_SS_PIN);
// Setamos os pinos do lora
LoRa.setPins(LORA_SS_PIN, LORA_RST_PIN, LORA_DI00_PIN);
// Iniciamos o lora
return LoRa.begin(BAND);
}






5 Comentários
Valeu Fernando, estava apanhando para configurar minha heltec que recebi ontem!!!
ResponderExcluirValeu Fernando, muito bem explicado. Só faltou o INO de receptor. É possível disponibiliza-lo?
ResponderExcluirAmigo,
ResponderExcluirPoste sua dúvida no www.forum.fernandok.com.
Vamos formar uma comunidade e ajudar uns aos outros.
muito bom, muito atencioso e profissional.
ResponderExcluirFernando, a biblioteca do display não existe a do mesmo autor.... Tem uma com o nome quase igual, eu devo baixar ela?
ResponderExcluir