Pesquisar

AFSmartRadio Tranceiver 915Mhz Lora

AFSmartRadio Tranceiver 915Mhz Lora

Módulo Lora
Módulo AFsmart Lora V1.0 montado Arduino Pro-Mini e Rádio Rf4463PRO

A Internet das coisas (IOT) evoluiu de tal forma que cada dia surge novidades, menores e com mais "fome" para comunicar com as "coisas", o que era impossível há alguns anos. 

Atualmente as  tecnologias como GSM e WiFi são as mais usadas para este tipo de aplicação, mas  em qualquer tecnologia há suas vantagens e desvantagens:

Tecnologia GSM, 3G, LTE : embora os valores vem caindo, ainda possuem altos custos, no lado da infraestrutura, um plano de dados é necessário para comunicações, e também demanda um alto consumo de energia

Tecnologia WiFi, BLUETOOTH : cobertura de curta distância algumas dezenas de metros dentro dos edifícios, e alto consumo de energia.
A transmissão de dados usando radio frequência 315@915Mhz é a bola da vez, é bastante difundida em países da Europa inclusive utilizando o protocolo LoRa®, ou Sigfox, permitindo uma comunicação a longas distâncias com um baixo consumo de energia, e com um  custo mais acessível que os atualmente existentes no mercado.
Essa tecnologia se baseia em uma topologia de rede estrela, parecido com uma rede celular. A principal aplicação são sistemas IoT (internet das coisas) como monitoramento de sensores (luz, pressão, controle on_off, temperatura, entre outros). Principalmente aqueles operados por bateria, com mensagens relativamente curtas.
Topologia Estrela
No Brasil atualmente esta em expansão dois modos de comunicação LoRa® e o Sigfox.

Claro que paralelamente aos meios/protocolos de transmissão de dados mencionados é possível realizar aplicações distintas para aprendizado, cursos, e mesmo aplicações profissionais, desenvolvimento de produtos, etc.


A ideia não é se prender em nenhum  protocolo. A proposta é informar os dois meios disponíveis atualmente para pesquisa.

Como os rádios para desenvolvimento possuem tamanhos relativamente reduzidos, dificultando o trabalho para um grande número de pessoas/desenvolvedores, a AFEletrônica desenvolveu um módulo para vir facilitar este desenvolvimento e despertar o interesse de mais pessoas para o mundo maker desenvolvendo aplicações com rádios nas fequèncias 915Mhz ou 433Mhz.


Lora 1276  RF4463Pro e Arduino

A comunicação com o módulo é feita via SPI, usando um módulo Arduino ou outro processador para a configuração. Adicional aos sinais SPI, esses rádios requerem o tratamento de sinais adicionais. À medida que o módulo funciona com tensão máxima de 3v3 em seus terminais.
Portanto se faz necessário uma tradução de nível lógico de sinal entre Arduino/Processador e SX1276 ou RF4463Pro 
Percebe-se que não é tão trivial o desenvolvimento de aplicações com o módulo em casa por exemplo, devido ao seu tamanho e dificuldade para manuseio, o rádio possui seus exatos: 17,30 x 17,0 x 2,6 mm e passo de seus terminais de 1,27mm, daí a dificuldade de manuseio, impossível? claro que não, mas convenhamos que não é para qualquer um.

Pensando nesta dificuldade a engenharia da AFEletrônica deu um passo à frente desenvolvendo um equipamento que suporta os dois rádios, Lora 1276 e RF4463Pro, entre outras possibilidades que você ira perceber ao longo desta matéria.


Radio Lora
Módulo AFSmartRadio montado com Pro-Mini e Radio RF4463Pro

O rádio aqui abordado será o módulo tranceptor RF4463Pro 915Mhz, a placa base desenvolvida pela AFEletrônica suporta dois rádios distintos, o próprio RF4463Pro quanto o rádio Lora1276 que iremos entrar em detalhe em uma próxima oportunidade, bastando apenas escolher a montagem no slot referente a cada modelo de rádio, uma vez que os módulos possuem disposições distintas para os pinos de alimentação e comunicação. Para suportar os dois modelos o módulo AFSmartRadio, foi desenvolvido para ambos, abrindo assim um leque de possibilidades para o desenvolvedor.


O módulo AFSmartRadio (vamos chamar placa base, ou placa mãe), possui algumas variações de montagem que deve ser escolhida no momento da aquisição. Pode ser montado com conector aparafusado ou barra de pinos nas saídas/entradas disponibilizadas na lateral da placa, visando sempre facilitar quem estará usando o equipamento.

O tipo de antena deve ser escolhido de acordo com a aplicação/necessidade. 

Embora o módulo possua uma antena impressa on-board, sendo possível com apenas um jumper de estanho conecta-la ao pino Antena do Rádio. O desempenho não é grande mas para estudos e pequenas distâncias funcionam perfeitamente, a distância conseguida em teste chegou em aproximadamente 40 metros. 


Com antena 915Mhz externa de 1.5 dBi longa conectada no conector SMA com o rádio RF4463Pro, a história já foi outra, se conseguiu em teste de campo um desempenho de 0,36Km de raio em area livre, conforme imagem ao final desta matéria.

O módulo também pode ser montado com antena helicoidal  915Mhz, neste caso é interessante solicitar a placa sem o conector SMA, a antena deve ser escolhida conforme desejo respeitando tão somente a frequência de 915Mhz. Há outros modelos claro, inclusive no próprio site da AFEletrônica.


 Antena Helicoidal 915Mhz


Os pinos de conexão dos rádios segue montado para apenas um rádio, caso adquira somente o módulo sem os rádios deve informar o fabricante para qual rádio deve ser montado Lora1276 ou RF4463Pro - para isso deve ser deixado uma mensagem na compra, no entando quando eles percebem que a compra foi somente do módulo AFSmartRadio eles irão lhe questionar a respeito via mensagem pelo próprio site.

Especificações módulo base AFSmartRadio:

Tensão de Alimentação: 9~15Vdc

Entrada para módulos: Rf4463PRO ou Lora1276 (necessário montar Slot conforme modelo escolhido) - possível montar os dois modelos, mas extremamente importante atentar a posição de montagem uma vez que as pinagens são distintas para cada modelo de Rádio.

Slot para Arduino Pro-Mini - necessário atentar ao modelo pois o Pro-Mini possui algumas variantes com relação à pinagem, Pode ser usado Pro-Mini versão 3v3@8Mhz ou Pro-Mini 5v@16Mhz, para o módulo AFSmart é transparente um ou outro modelo.

Slot para Cartão MicroSD lado de baixo da placa

Saída Rele: 250Vac@5A

Botão para uso Geral

Led de Status para uso Geral

Slot para aplicações futuras ou necessidade do usuário

Entrada Para Antena Externa

Slot para comunicação com periféricos I2c

Slot para Ethernet Enc28j60 ou necessidade do usuário

Conector para comunicação com periféricos I2c

Possui antena impressa on-board distância alcançada 40 metros campo aberto
Projeto de sensor interno para leitura da tensão de alimentação.

Conector SMA para antena externa

Consumo Rádio Lora1276
SleepMode < 200nA @20dBm
Modo Rx 13mA @20dBm
Modo Tx 120mA @20dBm

Consumo rádio RF4463Pro
SleepMode < 100nA @20dBm
Modo Rx 13.5mA  @20dBm
Modo Tx 85mA  @20dBm


Possibilidade de montar uma memória I2c modelo 24C256/8_TSSOP - pode inclusive ser solicitado para o fabricante enviar montado mediante o pagamento para aquisição e montagem da mesma.


O módulo AFSmart é comercializado com ou sem os módulos:
Arduino, Rádios RF4463Pro ou Lora 1276.
Módulo Adapção rádio Lora e Arduino
Descrição das pinagens - atente ao modelo com barra de pinos



Para implementação desta matéria foi utilizado dois módulos AFSmart com os rádios RF4463Pro.

Módulo Cliente - envia a mensagem "AFEletronica Ola voce esta ai?"

Módulo Server - uma vez recebeu a mensagem "AFEletronica Ola voce esta ai?" responde com a mensagem "Ola AFEletronica estou aqui 100%";

Há também um status visual via LedStatus que esta ligado ao pino A3 do Pro-Mini de forma a informar visualmente que há comunicação entre ambos.

No Módulo cliente para auxiliar nas medidas realizadas em campo e não precisar ficar olhando para o LedStatus ligamos e desligamos também o Rele que esta no pino IO4 do Pro-Mini, assim pelo som de atracamento do rele foi possível verificar que havia comunicação ao mesmo tempo que o módulo cliente era distanciado do módulo Servidor.

Método utilizado para realizar a gravação do Arduino Pro-mini, escrevemos sobre isso em uma outra matéria acesse aqui


Método utilizado para envio da aplicação ao Arduino Pro-Mini





Código módulo Cliente - baseado no exemplo de: rf24_client.pde

#include <SPI.h>
#include <RH_RF24.h>

// Singleton instance of the radio driver
RH_RF24 rf24;

const int ledPin =  A3 ;       // LedStatus ligado ao pino A3 do Pro-Mini
const int RelayPin = 4;       // Rele
int ledState = LOW;           // ledState usado para comutar o LED
int RelayState = LOW;       // RelayState usado para comutar o Rele
int chipSelect = 8;             // chipSelect SDCard

void setup() 
{
  pinMode(chipSelect , OUTPUT);
  pinMode(ledPin, OUTPUT);
  digitalWrite(ledPin,HIGH);
  pinMode(RelayPin, OUTPUT);
  digitalWrite(RelayPin,LOW);
  Serial.begin(9600);

  
  
  if (!rf24.init())
    Serial.println("init failed");
//Para 915Mhz descomentar em RH_RF24.cpp a linha radio_config_Si4464_30_915_2GFSK_5_10

}


void loop()
{

  float temperatura = rf24.get_temperature();  
  Serial.println("Sending to rf24_server");
  Serial.println(temperatura);
  // Envia Mensagem para o  Rf4463PRO Servidor
  uint8_t data[] = "AFEletronica Ola voce esta ai?";
  rf24.send(data, sizeof(data));
  
  rf24.waitPacketSent();
  // Aguarda uma resposta do Servidor 
  uint8_t buf[RH_RF24_MAX_MESSAGE_LEN];
  uint8_t len = sizeof(buf);

  if (rf24.waitAvailableTimeout(500))
  { 
    // A resposta deve ser "Ola AFEletronica estou aqui 100%"
    if (rf24.recv(buf, &len))
    {
      Serial.print("got reply: ");
      Serial.println((char*)buf);
      //Inverte o estado do led (HIGH/LOW) - se receber a resposta do servidor comuta o led        quanto o Rele e escreve na serial
     
      ledState = !ledState;                 //comuta LedStatus
      RelayState = !RelayState;        //Comuta Rele
      //Aciona a porta do led
      digitalWrite(ledPin, ledState);
      digitalWrite(RelayPin, RelayState);
     
    }
    else
    {
      Serial.println("recv failed");
    }
  }
  else
  {
    Serial.println("No reply, is rf24_server running?");
  }
  delay(400);
}

Código módulo Servidor - baseado no exemplo de: rf24_server.pde



#include <SPI.h>
#include <RH_RF24.h>

// Intancia o rádio
RH_RF24 rf24;
const int ledPin = A3;          // LedStatus ligado ao pino A3 do Pro-Mini
int ledState = LOW;             // usado para comutar o LED
void setup() 
{
  pinMode(ledPin, OUTPUT);
  digitalWrite(ledPin, HIGH);
  Serial.begin(9600);
  if (!rf24.init())
    Serial.println("init failed");
//Para 915Mhz descomentar em RH_RF24.cpp a linha radio_config_Si4464_30_915_2GFSK_5_10
  
}

void loop()
{
  
  if (rf24.available())
  {
    // Aguarda a mensagem que deve ser    "AFEletronica Ola voce esta ai?"
    uint8_t buf[RH_RF24_MAX_MESSAGE_LEN];
    uint8_t len = sizeof(buf);
    if (rf24.recv(buf, &len))
    {
//      RF24::printBuffer("request: ", buf, len);
      Serial.print("got request: ");
      Serial.println((char*)buf);
      Serial.print("RSSI: ");
      Serial.println((uint8_t)rf24.lastRssi(), DEC);
      
      // Responde ao cliente com a mensagem abaixo
      uint8_t data[] = "Ola AFEletronica estou aqui 100%";
    
      //Inverte o estado do led (HIGH/LOW)
      ledState = !ledState;
      //Aciona a porta do led
      digitalWrite(ledPin, ledState);
      rf24.send(data, sizeof(data));
      rf24.waitPacketSent();
      Serial.println("Sent a reply");
    }
    else
    {
      Serial.println("recv failed");
    }
  }
}



Resultado dos Testes com Rádio RF4463PRO 
Resultado testes

Nenhum comentário:

Postar um comentário