Ultimamente têm-me pedido frequentemente ajuda com módulos RF…Vou então criar este "pequeno" texto para tentar ajudar quem tem duvidas…
Normalmente, quando pensamos em comunicações sem fios para os nossos MCU’s vem-nos à mente os famosos Xbee. Mas nem todos tem possibilidades para comprar uns xbee pois são um pouco “caros”…Vem então a segunda solução: Módulos RF.
O conceito dos módulos RF é bastante simples….O emissor envia dados por série e o receptor recebe-os.

Mas sendo assim também se pode tornar uma má escolha. Precisamos então de um encoder e um decoder. O que eles vão fazer é receber, por exemplo, 8 bits “paralelos”, codifica-los e envia-los por série. O decoder vai receber esses dados, analisa o endereço e caso esteja certo, descodifica esses dados e faz uma determinada acção que enviamos pelo encoder. Por exemplo, se metermos 5V nos pinos de dados 1 e 2 do encoder, o decoder vai “ligar” os pinos 1 e 2 de saída de dados. Até agora, simples certo? Vamos passar à explicação pormenorizada.
Módulos RFOs módulos RF mais conhecidos e utilizados são o emissor RT4 e receptor RR3 fabricados pela italiana
Telecontrolli, depois existem os “marca branca” que são muito mais baratos. Os primeiros módulos que comprei (muito por culpa de não conhecer as compras pela net) foram precisamente os da telecontrolli. Ficaram-me por 30€ (Balúrdio! Dava para um xbee!). Depois de uns tempos de utilização deixaram de funcionar sem motivo para tal. Depois comprei uns que a
Sparkfun tem e ficaram perto de 12€. Nota-se a pior qualidade de construção em relação aos da telecontrolli e os componentes são diferentes….no entanto, até hoje ainda não me falharam.

Vou escrever um pouco sobre os módulos da telecontrolli.
Seguindo as recomendações do fabricante, com alimentação, etc. estes módulos têm um alcance até 100 metros sem obstáculos, mas vai sempre depender do tipo de antena que possuímos. Para mais informações sobre antenas, etc. aconselho a lerem
este documento.
Cada módulo pode ter várias frequências. Aqui penso que o único requesito seja o emissor e receptor terem a mesma frequência.

A largura de banda do RT4 é de 4KHz, mas a do RR3 é de 2KHz, por isso deverá ficar limitada a 2 KHz.
Para lerem um pouco mais sobre os módulos deixo o link dos datasheet's:
RR3RT4Para o caso de outros módulos, normalmente é tudo idêntico mudando apenas os pinos.
Encoder e DecoderDatasheets:
http://www.freescale.com/files/rf_if/doc/data_sheet/MC145026.pdfPara que possamos transmitir dados com a mínima segurança e sem “interferências” necessitamos de um encoder e um decoder. No meu caso, uso os MC145026(Encoder) e o MC145027(decoder).
Cada um destes CIs tem 5 pinos para indicar o endereço. Pinout deles:
Para haver comunicação entre eles, o endereço de cada um tem de ser igual. Por exemplo:
No Encoder temos a seguinte configuração:
Pino A1 – 5V
Pino A2 – 5V
Pino A3 – GND
Pino A4 – GND
Pino A5 – NC
Neste caso vamos ter o endereço 1100 (mais ou menos isto). O decoder ao receber os dados, vai ler o endereço. Caso não seja igual não faz nada. Podemos usar vários encoders com apenas um par de módulos, bastando mudar o endereço para comunicar entre eles. Temos então a possibilidade de ter 243 endereços diferentes! Muito bom

Caso sejam muito “picuinhas” com a segurança, podem usar os pinos de dados para endereço e ai podem ter até 19.683 combinações diferentes!

Existem os pinos de entrada e saída de dados, respectivamente. Mais uma vez, um exemplo.
Imaginemos os pinos D6, D7, D8 e D9 do Encoder. Estes são os pinos de entrada de dados. Se utilizarmos esta cofiguraçao:
Pino D6 – 5V (1)
Pino D7 – 5V (1)
Pino D8 – GND (0)
Pino D9 – GND (0)
Então, caso o endereço esteja certo, as saídas do decoder serão as mesmas que o enviado:
Pino D6 – 5V (1)
Pino D7 – 5V (1)
Pino D8 – GND (0)
Pino D9 – GND (0)
Para que exista uma comunicação “sem erros”, temos de informar ao encoder quando pode enviar os dados. Ou seja, imaginemos que queremos enviar 1010…Se o encoder estivesse sempre a enviar dados, ao metermos o 1º pino a 1, ele enviava logo os dados 1000, o que não é nada bom. Para isso temos no encoder um pino chamado Transmit Enable (TE), assim, para haver uma transmissão de dados, este pino tem de estar a 0 (GND). No decoder, temos um pino chamado Valid Transmisson (VT) que caso o endereço e tudo o resto esteja bem, ele irá ficar a 1 quando receber os dados. Podemos por exemplo ligar um led que vai acender sempre que receber dados.
Temos aqui uma imagem que explica o funcionamento básico do encoder e decoder.
Usando esta imagem, vamos fazer um pequeno teste aos nossos CIs. Utilizando exactamente este esquema, vamos ligar uma resistência de 470ohm e um led em cada saída de dados do decoder. Se estiver tudo bem, ao mandar os dados 1000 deverá ligar o led da saída D6, e por ai em diante.
Agora, pegamos nos nossos módulos e ligamos o pino 15 do encoder ao pino de entrada de dados do emissor, e o pino de saída de dados do receptor ligamos ao pino 9 do encoder. Se tudo estiver bem, irá funcionar.

Uma particularidade deste decoder, é a “memoria” que possui. Ao enviarmos um dado, ele vai guardar esse dado até receber nova informação. Ou seja, se lhe dissermos para “ligar” a saída D6, ele vai deixá-la ligada até ter novas informações.
Agora vocês perguntam o porquê daquelas resistências e condensadores e porque não outros?
Bem, é simples. Com essas determinadas resistências e condensadores, o encoder/decoder vai trabalhar a uma certa frequência. Seguindo o datasheet do fabricante dos mesmos, vimos que a única frequência abaixo de 2KHz (disponível nos módulos RF) é utilizando estas resistências e condensadores. Caso queiram outras frequências, fica aqui a tabela.
No entanto, podem substituir a resistência de 50K por uma de 51K e o condensador de 5100pF pode ser um de 5,6nF de poliéster. Ficamos então com os seguintes componentes para a frequência de 1.71KHz:
RTc – 51K
CTc – 5,6nF
Rs – 100k
R1 – 51k
C1 – 22nF
R2 – 200k
C2 – 100nF
Mais tarde meto uns circuitos básicos para explicar o funcionamento. Qualquer duvida que tenham ou pedido em relação a este assunto estão a vontade para perguntar.
ATENÇÃO! Este tópico ainda está em atualização!
Fontes:
Datasheets e Rogercom