Comunicando dois Arduino através de RF

Com a biblioteca Virtual Wire é possível comunicar de forma fácil dois Arduino por um simples e barato modulo de RF 433 mhz / 315mhz. As funções usadas são bem simples e bem parecidas com outras funções de outras bibliotecas Arduino. Abaixo segue os comandos traduzidos e dois testes que fiz, um o LED do RX pisca de acordo com o do TX, o outro o LED do RX somente pisca quando aperto um botão.

Função usada na RX AQUI.
Função usada na TX sem botão AQUI.
Função usada na TX com botão AQUI.

 


 

Texto retirado do autor original e traduzido:

 

Virtual Wiretrabalha um pouco diferente da maioria de bibliotecas doArduino. Muitas funções individuais são usadas e seus nomes sãoum pouco diferentes. Felizmente, elas são bem simples.


Funçõesde configurações

vw_set_tx_pin(transmit_pin)

Configurao pino de transmissão. O padrão é o 12.

vw_set_rx_pin(receive_pin)

Configurao pino de recepção. O padrão é o 11. No Teensy 2.0, o pino 11 nãodeve ser usado porque muitos módulos receptores não trabalhambem junto com o LED laranja daquele pino.vw_set_ptt_pin(transmit_en_pin)

Configurao pino “enable”, ou "push to talk (aperte para falar)".O padrão é o pino 10.

vw_set_ptt_inverted(true)

Configuraa polaridade do "push to talk (aperte para falar)".

vw_setup(2000)

Inicializausando todos os ajustes e inicializa a biblioteca. Esta função ésimilar a função “Begin” de outras bibliotecas. Todos os pinosprecisam estar configurados antes de chamar esta função.


Funçõesde transmissão

vw_send(message,length)

Transmiteuma mensagem. Onde: "message" é um vetor de bytes paraenviar e "length" é o numero de bytes que estão dentrodo vetor. Esta função retorna imediatamente e a mensagem é enviadalentamente por uma interrupção baseada em processos de background.

vw_tx_active()

Retornaverdadeiro se a mensagem está sendo enviada, ou falso se otransmissor não estiver ativo. Você pode usar isto após enviar umamensagem para testar quando a transmissão terminou.

vw_wait_tx()

Aguardauma mensagem para ser totalmente transmitida. Muitas vezes é maissimples chamar isto após vw_send.


Funçõesde recepção

vw_rx_start()

Ativaos processos de recepção. Você precisa chamar esta função antesde alguma recepção chegar. Uma interrupção baseada emprocessos de background é iniciada para monitorar os dados derecepção.

vw_have_message()

Retornaverdadeiro se a mensagem foi recebida. Essa função é similar afunção "available" outras bibliotecas.

vw_wait_rx()

Aguardapor uma mensagem ser recebida. Somente confirma se a mensagem foirecebida, caso contrario irá aguardar para sempre.

vw_wait_rx_max(timeout_ms)

Aguardapor uma mensagem, mas cancela após o tempo "timeout_ms".Retorna verdadeiro se uma mensagem foi recebida, ou falso se o tempodefinido acabar.

vw_get_message(buf,&buflen))

Lêa ultima mensagem recebida. Esta função somente deve ser chamadaquando a mensagem é interpretada para ser recebida por uma das trêsfunções acima. Onde: "buf" é um vetor onde a mensagem écopiada. "buflen"precisa ter o tamanho máximo do vetor que estiver chegando...(***) A própria função retorna verdadeiro se a mensagem estiver corretoou falso se a mensagem foi recebida mas aparentemente estácorrompida.

vw_rx_stop()

Desativaos processos de recepção.


*** Não entendi esta parte para tradução. "and upon return the number of bytes actually copied is retured."

Referencias:
http://www.pjrc.com/teensy/td_libs_VirtualWire.html
http://www.instructables.com/id/RF-315433-MHz-Transmitter-receiver-Module-and-Ardu
http://labdegaragem.com/profiles/blogs/tutorial-transmissor-e-receptor-rf-link-com-arduino

 

Comentários