Um Radio LoRa 10 vezes mais
potente, de 1W, ao invés do 0.1W dos tradicionais. Esse é o módulo E44-TTL-1W,
que vou te apresentar hoje. Posso dizer que esse modelo é “butinado”, pois tem
um transistor na saída que amplifica seu sinal, estendendo seu alcance. Vamos
configurar esse módulo para uso com MCU ou PC e criar um exemplo para
comunicarmos o computador com um ESP32.
Destaco, no entanto, que
potência não é tudo, pessoal. Um amigo me contou que, com 500 miliwatts, ele,
com seu radio amador, chega até o Japão. Quero dizer, então, que potência
ajuda, claro, mas não é tudo.
E44-TTL-1W
O E44-TTL-1W é um módulo
transceptor sem fio de 1W com tecnologia de espalhamento espectral LoRa. Opera
em 900 ~ 931MHz, com base no RFIC SX1276, importado, original da Semtech,
transmissão transparente disponível, nível TTL.
As vantagens dos módulos são
mais concentradas na densidade de potência e melhor desempenho
anti-interferência.
O módulo tem a função de
criptografia e compactação de dados.
A função de compactação de
dados diminui o tempo de transmissão e a probabilidade de ser interferida,
enquanto melhora a confiabilidade e eficiência de transmissão.
Esse módulo é TX RX,
basicamente. Tem pinos de controle e alimentação, mas é ligado na Uart. Podemos
dizer que esse modelo simplifica absurdamente a comunicação com LoRa.
Um detalhe é que, dentro desse
chip, não é LoRaWAN, mas um protocolo proprietário LoRa da EBYTE.
Na imagem abaixo, podemos ver
um STM8L151G, que gasta pouca corrente, além do famoso SX1276.
E15-USB-T2 v1.2
No lado esquerdo da imagem
temos o módulo, que visualmente parece um pendrive, o qual será ligado ao
computador. Na direita temos o esquema que mostra cada pino deste dispositivo.
Características
1. LoRa
Alta
confiabilidade. Possibilidade de ser interceptada extremamente baixa.
2. Ultra-low
power consumption
Ele suporta
WOR (wake on radio) para reduzir o consumo geral de energia.
3. Fixed
transmission
O módulo
pode se comunicar com outros módulos que trabalham em diferentes canais e
endereços.
4. Broadcast
transmission
Configurar
o endereço do módulo para 0xFFFF possibilita a comunicação com outros módulos
no mesmo canal.
5. FEC
(Forward Error Correction)
Em caso de
interferência repentina, é possível corrigir os pacotes de dados interferidos
de forma proativa, de modo que a confiabilidade e a faixa de transmissão sejam
melhoradas.
6. Sleep
Mode
Quando o
módulo trabalha em modo sleep (modo 3), ele está disponível para configuração,
não para transmitir e receber. (6μA)
7. Watchdog
Possui um watchdog integrado. Quando ocorrer uma exceção, o módulo será reiniciado em 0,107 segundos e continuará a trabalhar de acordo com os parâmetros anteriores.
Possui um watchdog integrado. Quando ocorrer uma exceção, o módulo será reiniciado em 0,107 segundos e continuará a trabalhar de acordo com os parâmetros anteriores.
8. Parameter
saving
Os parâmetros
serão salvos após a configuração e não serão redefinidos quando desligado.
Definição dos pinos
Modos de Operação
Configuração
Para entrar em modo de
configuração, precisamos colocar o módulo E15-USB com os pinos indicando o modo
Sleep. Para isso desconecte os jumpers indicadores dos pinos M0 e M1, como na
imagem abaixo.
Faça download do programa RF
Setting através do link:
Abaixo vemos a tela de configuração utilizando o programa RF Setting
Veremos agora como configurar o nosso módulo:
1. Abrir
o programa RF Setting.
2. Selecionar
a porta COM correspondente ao módulo.
3. Clicar
em OpenPort para obter acesso.
4. Agora,
clique em GetParam para obter os parâmetros salvos no módulo.
5. Modifique
os parâmetros de acordo com sua necessidade. (Principais: UartRate, Address e
Channel)
6. Após
modificar os parâmetros, clique em SetParam. Os dados agora estão salvos no
módulo.
7. Clique
em ClosePort para encerrar a configuração com o módulo.
Caso queira resetar as
configurações padrão, basta clicar em Preset.
Modo de uso
Após as configurações serem
finalizadas, já podemos utilizar nosso módulo E44-TTL-1W para comunicação,
tanto com um MCU(microcontrolador) quanto com um PC.
Para utilizar no PC, basta
conectar o módulo E44-TTL-1W no módulo E15-USB, como na figura abaixo.
No PC
Lembrando que, para uso no
computador, configuramos o modo através dos pinos do módulo E15-USB. A figura
abaixo nos mostra como conectar/desconectar os jumpers para cada modo.
No MCU
Para usarmos com um
microcontrolador, basta fazer as ligações como segue a figura abaixo.
Exemplo
Faremos agora um exemplo para
controlar os LEDs e um Buzzer de um ESP32 através do computador. Os comandos
serão enviados por um terminal e o ESP32 receberá através do radio Lora.
Funcionamento
PC envia dados através da
Serial para o módulo, que transforma esses dados em radiofrequência Lora e
envia. O módulo recebe os dados via rádio e envia para o ESP32, através da
Serial.
Configurações
Os dois módulos E44-TTL devem
estar configurados como a imagem abaixo.
No PC
Após conectar o módulo
E44-TTL-1W no módulo E15-USB, coloque-o no computador e utilize algum terminal
para comunicação Serial. Por exemplo, o Termite.
No ESP32
Faremos um programa que, ao
receber dados do radio LoRa, verificará os comandos para controlar os Leds ou o
buzzer.
Biblioteca
Adicione biblioteca
“TM1637Display”.
Acesse o link e
faça download da biblioteca.
Descompacte o arquivo e cole
na pasta de bibliotecas da IDE do arduino.
C:/Program Files
(x86)/Arduino/libraries
COMANDOS
Para esse projeto, criei o
seguinte protocolo de comandos para controle:
No ESP32
Incluímos a biblioteca
responsável para comunicação com o display e inicializamos o display nos pinos
que definirmos.
//Biblioteca responsável para comunicação com o display de 7 segmentos #include <TM1637Display.h> // Module connection pins (Digital Pins) #define CLK 14 #define DIO 13 const uint8_t PIN_BUZZER = 23; const uint8_t PIN_LED1 = 22; const uint8_t PIN_LED2 = 21; const uint8_t PIN_LED3 = 19; const uint8_t PIN_LED4 = 18; //Inicializa o display nos pinos definidos acima TM1637Display display(CLK, DIO); String data = ""; int counterReceive = 0; String idMCU = "MCU_1";
No Setup, configuramos o
brilho do display, e seguimos para o Loop.
void setup() { Serial.begin(9600); //configura o brilho do display com valor máximo display.setBrightness(0x07); display.showNumberDec(0); configurePins(); } void loop() { if(Serial.available()) { while(Serial.available()) { data+=(char)Serial.read(); } data.replace("\n",""); if(data.equals("CHECK")) { Serial.println(idMCU+" OK"); counterReceive++; //imprime no display o valor lido display.showNumberDec(counterReceive); } else { parserData(); counterReceive++; //imprime no display o valor lido display.showNumberDec(counterReceive); } data = ""; } }
parserData
Nesta etapa, procedemos com o
parser dos dados recebidos e verificamos quais os comandos relacionados ao Led
e ao Buzzer.
//faz o parser dos dados recebidos para identificar o comando void parserData() { char command = data[0]; // Serial.print(command); if(command == 'L') { uint8_t led = data[1]-'0'; uint8_t value = data[2]-'0'; configureLed(led, value); } else if(command == 'B') { uint8_t value = data[1]-'0'; digitalWrite(PIN_BUZZER, value); } else if(command == 'A') { uint8_t value = data[1]-'0'; allLeds(value); } }
ConfigureLed
Configuramos a ligação ou
desligamento do Led de acordo com o valor passado.
void configureLed(uint8_t led, uint8_t value) { switch(led) { case 1: digitalWrite(PIN_LED1, value); break; case 2: digitalWrite(PIN_LED2, value); break; case 3: digitalWrite(PIN_LED3, value); break; case 4: digitalWrite(PIN_LED4, value); break; default: break; } }
allLeds & configurePins
Com AllLeds setamos o valor
passado para todos os Leds de uma só vez. Ainda, configuramos o modo dos pinos
como saída.
void allLeds(uint8_t value) { digitalWrite(PIN_LED1, value); digitalWrite(PIN_LED2, value); digitalWrite(PIN_LED3, value); digitalWrite(PIN_LED4, value); } void configurePins() { pinMode(PIN_BUZZER, OUTPUT); pinMode(PIN_LED1, OUTPUT); pinMode(PIN_LED2, OUTPUT); pinMode(PIN_LED3, OUTPUT); pinMode(PIN_LED4, OUTPUT); }
6 Comentários
olá o código ta incompleto. nada funciona.tá difícil de acompanhar seus exemplos.
ResponderExcluirEu tive que colocar um delay para funcionar.
Excluirvoid loop() {
if(Serial.available())
{
while(Serial.available())
{
data+=(char)Serial.read();
delay(100);
}
Boa noite já sou seu fã é do seu canal! Comprei dois modulos para fazer testes com pic, mas veio sem antena. Consigo realizar testes a 1,5 metros até que eu compre as antenas? Basta ligar como se fosse um módulo bluetooth hc05? Desde já agradeço!
ResponderExcluirSe ligar sem antena, pode acabar estragando o dispositivo.
ExcluirFake News, Não funcionar ! parece aqueles exemplos que o cara sai pegando na internet copia e junta tudo e coloca no blog, só que não testa para saber se realmente funciona.
ResponderExcluirEste comentário foi removido pelo autor.
Excluir