Pesquisar

Módulo AFSmart Rádio com RF4432 
Este módulo ainda ira dar muito assunto interessante
Ainda falando do módulo AFSmartRádio, iremos realizar uma implementação semelhante a que realizamos com o Rádio RF4463PROMas utilizando o rádio RF4432 que pode ser adquirido AQUI .

O módulo AFSmartRádio, ainda irá nos fornecer muitos assuntos, visto sua versatilidade, não havíamos nem pensado na possibilidade de utilizar o rádio RF4432, ele possui aproximadamente 1.6mm de diferença entre o barramento principal e o pino da antena, mas sem muito esforço foi possível usa-lo no módulo AFSmartRádio, embora possua esta diferença de  1.6mm menor que o Rádio RF4463Pro a pinagem do barramento principal é exatamente disponibilizado na mesma sequência, tornando possível o desenvolvimento com o AFSmartRádio, aumentando ainda mais as possibilidades.

E claro não podíamos deixar de realizar uma aplicação com um rádio com um custo menor. Medidas de desempenho serão adicionados em momento oportuno.

Por ser um rádio mais "barato" e não possuir a blindagem dos outros dois rádios, claro que isso reduz a distância de transmissão,  mas não deixa de ser uma ótima oportunidade e mais uma opção para desenvolvimento, possibilitando aprendizado por um custo menor e mostrar a versatilidade do módulo de desenvolvimento AFSmartRádio.

Assim aumentamos demasiadamente as opções para profissionais, entusiastas, estudantes, etc...


Mostraremos uma aplicação com o Rádio RF4432 e Arduino
A comunicação com o Rádio é feita via SPI, usando o Arduino Pro-MIni que já há o soket pronto na placa de desenvolvimento.

Caso já possua o Pro-Mini, apenas verifique a pinagem de seu Pro-Mini é igual ao da imagem abaixo? pois há algumas variações em relação à este modelo de Arduino, senão pode adquirir AQUI.

AFSmarto Radio e RF4432 915Mhz
Módulo AFSmartRadio montado com Pro-Mini e Radio RF4432 915Mhz

O rádio abordado será o módulo transceptor RF4432 915Mhz, a placa base desenvolvida pela AFEletrônica suporta ainda os Rádios RF4463Pro e Lora1276 

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

O barramento 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 que é o mesmo slot para o RF4432 - para isso deve ser deixado uma mensagem na compra. Caso não seja informado, o conector para o Slot segue desmontado, ai você deve realizar a montagem, e claro possuir familiaridade em solda.

Especificações módulo base AFSmartRadio:

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

Entrada para módulos: Rf4463PRO & RF4432 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
Projeto de sensor interno para leitura da tensão de alimentação.
Conector SMA para antena externa

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

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

Consumo rádio RF44632 100mW
SleepMode < 800nA @20dBm
Modo Rx 18.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 ou Rádios.

Mapa Pinagem Módulo AFSmart

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

Módulo Cliente - envia a mensagem "RF4432 esta ai?"

Módulo Server -  responde com a mensagem "Estou aqui ouvindo 100%";

Há também um status onde podemos ouvir o Rele da placa Server sendo acionado a cada mensagem recebida, de forma a facilitar os testes em campo.

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: rf22_client.pde


//NOTA IMPORTANTE em RH_RF22.cpp necessário setar frequencia para 915Mhz


#include <SPI.h>
#include <RH_RF22.h>

// Singleton instance of the radio driver
RH_RF22 rf22;

void setup()
{
  pinMode(9, OUTPUT);   // Necessário colocar SDN em GND para que este rádio inicialize
  digitalWrite(9,LOW);  // Necessário colocar SDN em GND para que este rádio inicialize
  Serial.begin(9600);
  if (!rf22.init())
    Serial.println("init failed");
  // Defaults after init are 434.0MHz, 0.05MHz AFC pull-in, modulation FSK_Rb2_4Fd36
 // rf22.setFrequency(915.00);
  rf22.setFHStepSize(5);

}

void loop()
{

  Serial.println(rf22.lastRssi()); //Imprime Valor RSSI em dbm
  Serial.println("Sending to rf22_server");
  // Send a message to rf22_server
  uint8_t data[] = "RF4432 Esta ai?";
  rf22.send(data, sizeof(data));

  rf22.waitPacketSent();
  // Now wait for a reply
  uint8_t buf[RH_RF22_MAX_MESSAGE_LEN];
  uint8_t len = sizeof(buf);

  if (rf22.waitAvailableTimeout(500))
  {
    // Should be a reply message for us now 
    if (rf22.recv(buf, &len))
    {
      Serial.print("got reply: ");
      Serial.println((char*)buf);
    }
    else
    {
      Serial.println("recv failed");
    }
  }
  else
  {
    Serial.println("No reply, is rf22_server running?");
  }
  delay(400);
}



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



#include <SPI.h>
#include <RH_RF22.h>

//Instância driver do rádio
RH_RF22 rf22;
const int relay =  4;      // pino rele
const int SDNpin =  9;      // SDNpin


void setup() 
{
   
  pinMode(relay, OUTPUT);  
  digitalWrite(relay,LOW); //começa rele desligado
  pinMode(SDNpin, OUTPUT); // SDNpin como Saída
  digitalWrite(SDNpin,LOW); // Necessário colocar SDNpin em GND para que o rádio inicialize
  Serial.begin(9600);
  if (!rf22.init())
    Serial.println("Inicializacao do Radio Falhou");  
  //NOTA IMPORTANTE em RH_RF22.cpp necessário setar frequencia para 915Mhz
}

void loop()
{
   
  
  if (rf22.available())
  {
    // Should be a message for us now   
    uint8_t buf[RH_RF22_MAX_MESSAGE_LEN];
    uint8_t len = sizeof(buf);
    if (rf22.recv(buf, &len))
    {
      //RF22::printBuffer("request: ", buf, len);
      Serial.print("Pergunta: ");
      Serial.println((char*)buf);
      Serial.print("RSSI: ");
      Serial.println(rf22.lastRssi(), DEC);
      
      // Send a reply
      uint8_t data[] = "Estou aqui ouvindo 100%";
      rf22.send(data, sizeof(data));
      rf22.waitPacketSent();
      Serial.println("Enviou uma Resposta");
      digitalWrite(relay,LOW);
      delay(100);
      digitalWrite(relay,HIGH);
    }
    else
    {
      Serial.println("Falha ao Receber dado");
    }
  }
}

Nenhum comentário:

Postar um comentário