O módulo menor é o transmissor (TX). O maior é o receptor (RX). Utilizaremos também a biblioteca VirtualWire para fazer a comunicação com os módulos. Esses módulos só permitem a comunicação em um sentido ou unidirecional, ou seja, sempre teremos o envio de dados do TX para o RX. Para que possamos fazer uma comunicação completa com envio e recebimento por ambos teríamos que utilizar dois pares de módulos com frequências diferentes. O download da biblioteca e maiores detalhes sobre ela, podem ser obtidos no link já informado.
Em ambos os módulos temos um local para colocar uma antena (ANT). Com a antena, a distância entre eles poderá ficar bem maior.
Transmissão (TX)
Iniciaremos pela aplicação que envia os dados. Essa aplicação enviará a mensagem "TransRF" a cada segundo. Ligue os pinos de alimentação e terra do módulo ao arduino e o pino ATAD ao pino 9 também do arduino.
Segue abaixo o código-exemplo.
#include <VirtualWire.h> // lib para RF //Pinos para o transmissor RF #define TX_PIN 9 #define RX_PIN 10 #define PTT_PIN 11 #define DOIS_MIL 2000 char mensagem[8]; void setup() { //Pino de envio vw_set_tx_pin(TX_PIN); //Pino de recepcao. Embora nao seja utilizado no TX, faz-se necessario definir vw_set_rx_pin(RX_PIN); vw_set_ptt_pin(PTT_PIN); vw_set_ptt_inverted(true); vw_setup(DOIS_MIL); mensagem[0]= 'T'; mensagem[1]= 'r'; mensagem[2]= 'a'; mensagem[3]= 'n'; mensagem[4]= 's'; mensagem[5]= 'R'; mensagem[6]= 'F'; mensagem[7]= '\0'; } void loop() { vw_send((uint8_t *)mensagem, 8); delay(1000); }
Recepção
Essa aplicação receberá a mensagem enviada pelo TX e imprimirá a mesma no console serial.
Ligue os pinos de alimentação e terra do módulo no arduino e ligue o pino DATA ao pino 9 também do arduino. Note de nesse módulo temos 2 pinos de dados. Ambos são iguais. Utilize qualquer um deles.
Segue abaixo o código-exemplo.
#include <VirtualWire.h> void setup() { Serial.begin(9600); vw_set_tx_pin(10);//Embora nao usado, mas precisa ser definido vw_set_ptt_pin(11); vw_set_rx_pin(9);//Pino de envio vw_set_ptt_inverted(true); vw_setup(2000); vw_rx_start(); } void loop() { uint8_t buf[VW_MAX_MESSAGE_LEN]; uint8_t buflen = VW_MAX_MESSAGE_LEN; Serial.println("Aguardando"); if (vw_get_message(buf, &buflen)) { Serial.print("Texto recebido:"); Serial.write((char*)buf); Serial.println(); } delay(1000); }
Saída do console serial:
Segue abaixo uma foto dos módulos montados:
Até a próxima.
Sem comentários:
Enviar um comentário