[AJUDA] Com modulos RF 433,9

Ola, Estou com duvidas, se é possivel ligar ou nao os seguintes modulos tx / rx com arduino.. Tentei alguns testes com a virtualWire mas nao consegui obter resultado..

Segue fotos do TX / RX

Esse pino E/D e enable, disable.. Nao sei se e possivel utilizar ele com arduino. Caso sim, qual biblioteca devo utilizar e se ja existe algum exemplo ou alguem ja tenha ligado algum modulo pareceido. Se Alguem pode e dar uma ajuda, agradeço dez de ja. :D :D

Obrigado

Não vejo razão para que não funcionem com o Arduino. Há uns anos (já há bastantes e já nem me lembro bem há quantos) usei uns parecido, na altura não usei Arduino (nem sequer conhecia, e talvez nem houvesse) mas o funcionamento era bastante simples. Se estes módulos forem como aqueles, apenas será necessário enviar os dados via série, pelo módulo TX e recebe-los, da mesma forma, através do módulo RX. Pesquisando na net, aparecem vários datasheets de módulos desse género, por exemplo: http://www.wenshing.com.tw/data_sheet/TWS-HS_Series_315MHz_433.92Mhz_868.35MHz_ASK_RF_Transmitter_Module_Data_Sheet.pdf

Estou a focar isto, porque como não explica como foram feitas as experiências e porque é que diz que:

(...) nao consegui obter resultado.

chamo a atenção para a página P.4 em que é mostrado o estado dos pinos E/D e DATA. Os dados (por exemplo a porta série) pode ser conectada ao pino DATA do módulo, mas o pino E/D tem que estar ligado a +5V. Sendo assim, ou estão sempre ligados a +5V ou então tem que haver um pino que controle o envio e recepção, que deve ser accionado via digitalWrite().

A minha sugestão é tente conectar o pino E/D a +5V e volte a repetir o teste e caso não funcione, explique exactamente o que significa "não funciona".

Luis obrigado pelas dicas...

Vou fazer uns testes e mostro a voce como foi feita as ligacoe se os codigos fica melhor..

Devo utilizar a library virtualWire mesmo neh ?

Vou tentar utilizar o teste simples que tem la..

Sobre o recepetor, esses dois datas preciso ligar ou apenas 1 ?

Abracos.

Devo utilizar a library virtualWire mesmo neh ?

Penso que não é preciso, penso que apenas é necessário conectar o módulo a uma porta série (no outro post quando li virtual wire estava a pensar em SoftwareSerial http://arduino.cc/en/pmwiki.php?n=Reference/SoftwareSerial ).

Sobre o recepetor, esses dois datas preciso ligar ou apenas 1 ?

Penso que sim, uma vez que não é dito mais nada.

Luisilva funcionou cara deu certo, estou conseguindo transmitir de um para o outro…
agora uma outra duvida se possivel me ajudar tmb…

No exemplo simples ele passa do transmissor e recebe no receptor em hexa, e possivel converter para string o valor ? ou se e possivel passar string direto…

Obrigado dez de ja…

Segue os codigos

Transmissor

#include <VirtualWire.h>

const int led_pin = 11;
const int transmit_pin = 12;
const int receive_pin = 2;
const int transmit_en_pin = 3;

void setup()
{
// Initialise the IO and ISR
vw_set_tx_pin(transmit_pin);
vw_set_rx_pin(receive_pin);
vw_set_ptt_pin(transmit_en_pin);
vw_set_ptt_inverted(true); // Required for DR3100
vw_setup(2000); // Bits per sec
pinMode(led_pin, OUTPUT);
}

byte count = 1;

void loop()
{

char msg[2] = {‘L’,‘K’};

msg[6] = count;
digitalWrite(led_pin, HIGH); // Flash a light to show transmitting
vw_send((uint8_t *)msg, 1);
vw_wait_tx(); // Wait until the whole message is gone
digitalWrite(led_pin, LOW);
delay(1000);
count = count + 1;
}

Receptor

#include <VirtualWire.h>

const int led_pin = 13;
const int transmit_pin = 12;
const int receive_pin = 11;
const int transmit_en_pin = 3;

void setup()
{
delay(1000);
Serial.begin(9600); // Debugging only
Serial.println(“setup”);

// Initialise the IO and ISR
vw_set_tx_pin(transmit_pin);
vw_set_rx_pin(receive_pin);
vw_set_ptt_pin(transmit_en_pin);
vw_set_ptt_inverted(true); // Required for DR3100
vw_setup(2000); // Bits per sec

vw_rx_start(); // Start the receiver PLL running

pinMode(led_pin, OUTPUT);
}

void loop()
{
uint8_t buf[VW_MAX_MESSAGE_LEN];
uint8_t buflen = VW_MAX_MESSAGE_LEN;

if (vw_get_message(buf, &buflen)) // Non-blocking
{
int i;

digitalWrite(led_pin, HIGH); // Flash a light to show received good message
// Message with a good checksum received, dump it.
Serial.print("Got: ");

for (i = 0; i < buflen; i++)
{
Serial.print(buf*, HEX);*

  • Serial.print(’ ');*
  • }*
  • Serial.println();*
  • digitalWrite(led_pin, LOW);*
  • }*
    }[/quote]

Em primeiro lugar ainda bem que não deu completamente ouvidos ao que eu escrevi antes e utilizou o VirtualWire. Depois de olhar para da biblioteca, vi que essa biblioteca é praticamente apenas uma porta série virtual.

Outra coisa é o facto de existir um erro no seu código:
Na linha:

       Serial.print(buf, HEX);

devia estar:

       Serial.print(buf[i], HEX);

É possível, retirando o HEX no print e fazendo write em vez de print. Ou seja, em vez disto:

       Serial.print(buf[i], HEX);

fazer isto:

       Serial.write(buf[i]);

Outra opção é substituir o código:

   Serial.print("Got: ");
   
   for (i = 0; i < buflen; i++)
   {
       Serial.print(buf, HEX);
       Serial.print(' ');
   }
   Serial.println();

por:

   Serial.println("Got: ");
   
       Serial.println(buf);
       Serial.println();

Beleza luis, brigado pela forca deu certo…

Abraços…

Lucas,

Poderia por favor me informar o alcances deste módulos e se possível me informar o esquema de ligação e o código?

Obrigado