Escolar Documentos
Profissional Documentos
Cultura Documentos
ESP32 Lora Frequencias
ESP32 Lora Frequencias
3
LoRa® - LoRaWAN™ - e as Frequências
Quando eu uso ESP32 Lora ?
Frequências:
Estados Unidos : 902-928 mHz
Austrália : 915-928 mHz
China : 779-787 e 470-510 mHz
Europa : 863-870 e 433 mHz
Brasil : 902-928 mHz No Brasil, a administração de frequências está sob a responsabilidade da Anatel.
Para o caso brasileiro, a Anatel regulamentou a banda de 900 MHz para operação
GSM conforme o esquema acima:
USA 64 canais
Valido para a data de 15/02/2018 mas pode sofrer alteração conforme resolução da Anatel
A ultima foi Resolução nº 680, de 27 de junho de 2017
Quando eu uso ESP32 Lora ?
10
Montagem
11
Bibliotecas
Adicione a seguinte biblioteca “Adafruit SSD1306”.
Basta acessar “Sketch >> Incluir Bibliotecas >> Gerenciar Bibliotecas...”
Programas
Pacote : Sender Receiver
byte 0: índice de frequência
byte 1: # delimitador
byte 2: unsigned int
byte 3: unsigned int
13
Programa EMISSOR
14
Programa EMISSOR Sender
#include <SPI.h>
#include <LoRa.h>
#include <Wire.h>
#include "SSD1306.h“
//pino Botão
#define PIN_BTN 23
//pino LED
#define PIN_LED 22
display.init();
display.flipScreenVertically();
display.setFont(ArialMT_Plain_10);
delay(1500);
display.clear();
SPI.begin(SCK,MISO,MOSI,SS);
LoRa.setPins(SS,RST,DI00);
if (!LoRa.begin(frequencia[indice],PABOOST))
{
display.drawString(0, 0, "Starting LoRa failed!");
display.display();
while (1);
}
LoRa.enableCrc(); // Por default é desativado
Loop
//recupera o estado do botao
estadoBtn = digitalRead(PIN_BTN);
//verifica se o estado do botão mudou e se mudou para LIGADO
if( (estadoBtn != ultimoEstadoBtn) && (estadoBtn == HIGH) )
{
//liga o LED indicador de mudança de frequencia
digitalWrite(PIN_LED, HIGH);
//verificação para não estourar o indice do array
if( (indice+1) > 5){
indice = 0;
}
else {
indice++;
}
enviarPacote(); // avisa que mudou frequência
atualizarDisplay();
mudarFrequencia();
}
//caso nao tenha apertado o botão, ou seja, seu estado é DESLIGADO, então a frequencia permanece a mesma
else {
enviarPacote();
atualizarDisplay();
}
//contador que é enviado (DADO)
counter++;
//copia o estado atual do botão na variável de verificação da mudança de estado
ultimoEstadoBtn = estadoBtn;
//acende LED interno para indicar que enviou o pacote e da um delay
digitalWrite(2, HIGH);
delay(700);
digitalWrite(2, LOW);
delay(500);
} 17
mudarFrequencia e enviarPacote
//muda a frequencia do Lora, a nova frequencia será de acordo com a variável "INDICE"
//que pegará no array a nova frequencia
void mudarFrequencia(){
if (!LoRa.begin(frequencia[indice],PABOOST))
{
display.drawString(0, 0, "Starting LoRa failed!");
display.display();
while (1);
}
LoRa.enableCrc();
digitalWrite(PIN_LED, LOW); //desliga o LED indicador da mudança de frequência
}
19
Programa RECEPTOR
20
Programa RECEPTOR
#include <SPI.h>
#include <LoRa.h>
#include <Wire.h>
#include "SSD1306.h“
21
Setup
void setup() {
pinMode(16,OUTPUT);
pinMode(2,OUTPUT);
digitalWrite(16, LOW); // set GPIO16 low to reset OLED
delay(50);
digitalWrite(16, HIGH); // while OLED is running, must set GPIO16 in high
display.init();
display.flipScreenVertically();
display.setFont(ArialMT_Plain_10);
delay(1500);
display.clear();
SPI.begin(SCK,MISO,MOSI,SS);
LoRa.setPins(SS,RST,DI00);
if (!LoRa.begin(frequencia[indice],PABOOST))
{
display.drawString(0, 0, "Starting LoRa failed!");
display.display();
while (1);
}
LoRa.enableCrc();
25