Como usar os módulos RF 315/433Mhz

untitled-2

Estes módulos operam em pares, transmissor e receptor, nas frequências ou de 315 ou 433Mhz, verifique sua versão. Eles são facilmente encaixados na protoboard e funcionam muito bem com Microcontroladores de modo que é possível criar um link de dados wireless, ou seja, transmitir dados de um Arduino para o outro sem quaisquer fios entre eles. Uma vez que os módulos ou são apenas transmissores ou apenas receptores eles só iram se comunicar em uma direção, sendo esta uma comunicação do tipo Simplex. Neste caso, as transmissões podem ser feitas apenas num só sentido, de um emissor para um ou mais receptores.

Aqui vamos ler a temperatura utilizando um DHT22 em um Arduino, transmitir para outro Arduino via RF no qual a temperatura será exibida em um display LCD, para isso vamos precisar de:

Componentes:

2 – Arduino (Qualquer versão)
1 – Transmissor RF 315Mhz (link)
1 – Receptor RF 315Mhz (link)
1 – Sensor de Temperatura e Umidade DHT22 (link)
1 – Display LCD 1602 com I2C (link)
2 – Fios de cobre de 22cm (Leia abaixo)
+ Protoboard e acessórios

Antena:

Para antena de fio:

Para a antena de fio não há mistério, é simplesmente um condutor de cobre conectado ao circuito em que considerando a frequência de 315Mhz e que o comprimento da antena será de 1/4 do comprimento de onda temos que a antena deve possuir 22,6 cm de comprimento, bastando apenas soldar o fio de cobre no ponto designado para a antena. Já para a frequência de 433Mhz o comprimento é de 16,5 cm e o procedimento é o mesmo.

Para antena helicoidal:

As antenas helicoidais são construídas na forma espiral ou hélice a partir de um ou múltiplos condutores. Esse tipo de antena é naturalmente escolhido para produção de radiação polarizada de forma circular (FUSCO, 2006). Essa antena utiliza polarização circular, é bastante comum na comunicação de satélites, pois não precisam ajuste de polarização. Também é utilizada em receptores de navegação GPS, pois apresentam uma abertura compatível com o ângulo do sinal incidente dos satélites (FRANZ, 2007). Sua estrutura básica pode ser observada na figura abaixo.

Antena helicoidal – Imagem: everythingrf.com

Como é possível montar antenas de diversos ganhos de acordo com a necessidade ou vontade deixamos aqui o site onde você pode calcular como deve montar a antena da forma que queira: http://www.changpuak.ch/electronics/calc_12a.php

Montagem:

Ligações:

Transmissor

Receptor

Arduino Módulo RF Arduino Módulo RF
5V VCC 5V VCC
GND GND GND GND
D5 DAT D5 DAT
Arduino DHT22 Arduino Display LCD
5V Pino 1 5V VCC
D2 Pino 2 GND GND
GND Pino 4 A4 SDA
A5 SCL

Códigos:

Biblioteca VirtualWire (link)

Transmissor

#include <VirtualWire.h>
#include <DHT.h>

#define DHTPIN 2
#define DHTTYPE DHT22

DHT dht(DHTPIN, DHTTYPE);

void setup()
{
  Serial.begin(115200);   // Inicializa a Serial
  vw_set_tx_pin(5);       // Define o pino de dados como D5
  vw_setup(2000);         // Velocidade (Bits por segundo)
  dht.begin();            // Inicializa o DHT
}

void loop()
{
  float t = dht.readTemperature(); // Lê a temperatura
  char temp[16];
  dtostrf(t, 3, 1, temp);       // Converte o valor float para char
  Serial.print("Enviado : ");
  Serial.println(temp);
  envia(temp); // Envia os dados
  delay(2000);
}

void envia (char *dados)
{
  vw_send((uint8_t *)dados, strlen(dados));
  vw_wait_tx();                                 // Aguarda o fim do envio
}

Receptor

#include <LiquidCrystal_I2C.h>
#include <Wire.h>
#include <VirtualWire.h>


LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);
String temp;

void setup()   {
  lcd.begin(16, 2);           // Inicializa o Display
  Serial.begin(115200);       // Inicializa a Serial
  vw_set_rx_pin(5);           // Define o pino de dados como D5
  vw_setup(2000);             // Velocidade (Bits por segundo)
  vw_rx_start();              // Inicializa o receptor

  lcd.setCursor(0, 0); //Seta a posição do cursor
  lcd.print("Aguardando...");
  delay(2000);
}

void loop()
{
  uint8_t message[VW_MAX_MESSAGE_LEN];
  uint8_t msgLength = VW_MAX_MESSAGE_LEN;
  
  if (vw_get_message(message, &msgLength))
  {
    Serial.print("Recebido: ");
    lcd.clear();
    lcd.setCursor(2, 0);
    lcd.print("Temperatura");
    // Converte para texto
    for (int i = 0; i < msgLength; i++)
    {
      Serial.write(message[i]);
      temp += char(message[i]);
    }
    lcd.setCursor(5, 1);
    lcd.print(temp);
    lcd.print(" ");
    lcd.print((char)223); // Símbolo de graus
    lcd.print("C");
    Serial.println();
    
    temp = "";    //Limpa o texto
    
    //Pisca o led indicador
    digitalWrite(12, HIGH);
    delay(100);
    digitalWrite(12, LOW);
  }
}

 

Este artigo contou com o apoio da ICStation que nos forneceu produtos para que nós continuemos criando conteúdo para o site, deixamos aqui nosso agradecimento pelo apoio. Se você não viu o unboxing, acesse aqui: https://youtu.be/ZdTkUyJx6ko

Quer ganhar desconto nas compras da ICStation? Basta usar:
Cupom: Jmics
Válido somente até 26/12/16, corre lá!
ICStation:  https://bit.ly/2chMjJI

 

0

Graduando em Engenharia Elétrica pela Universidade Federal de São João del Rei (UFSJ) também é Técnico em Eletrotécnica pelo Centro Federal de Educação Tecnológica de Minas Gerais (CEFET-MG). Apaixonado por criação e desenvolvimento de projetos relacionados à software e hardware.

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *