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