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.
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".
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
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();