Autor Tópico: Transmissão rf com PIC...  (Lida 36843 vezes)

Description:

0 Membros e 1 Visitante estão vendo este tópico.

Smarley

  • Visitante
Transmissão rf com PIC...
« Online: 06 de Março de 2009, 19:21 »
Gostaria de saber se algum dos colegas ja utilizou transmissão RF para comunicação entre PIC's.
Eu vou utilizar aqui no apartamento, para controlar uns aparelhos eletrônicos.

Comprei no solda fria 2 Módulo Receptor de RF 315 MHz (RWS-371-3) e 2 Módulo Transmissor de RF 315 MHz.
Eu olhei que a taxa do transmissor é de 8Kbps, e do receptor de 4800bps.
Tem algum problema de eu trabalhar com uma taxa de 4000bps? eu queria trabalhar com uma mais baixa assim para dar uma folga pro receptor. No programa está em 9600bps ainda, mas vou baixa-la.

Eu não tenho necessidade de velocidade nos dados. O que o PIC mestre vai fazer é o seguinte.
Se alguem apertar o botão 1, ele vai mandar o valor 8 pela saída serial. Quando passar um tempo ele manda o valor 9. Com isso o outro PIC vai receber e interpretar este sinal. Cada vez que o escravo recebe ele manda o valor de volta para a confirmação do valor.

Para eu fazer isto basta ligar a saída do Tx e Rx no DATA no transmissor e receptor ou eu tenho que colocar algum resistor ou circuito entre eles?

O programa ja está pronto.
No meu circuito vou utilizar um DS1302 para marcar o horário, pois vou precisar dele para ligar um rele...

Só falta fazer a placa no Eagle, implementar mais umas funções no programa para ajuste do horário, e chegar os componentes.
Em anexo o datasheet do transmissor e receptor.

Abraço!

Offline C N C N o w !

  • CNCMASTER
  • ******
  • Posts: 6300
  • Sexo: Masculino
Re: Transmissão rf com PIC...
« Resposta #1 Online: 06 de Março de 2009, 20:01 »
Tem algum problema de eu trabalhar com uma taxa de 4000bps?

Não há probs que eu saiba.

Citar
Para eu fazer isto basta ligar a saída do Tx e Rx no DATA no transmissor e receptor ou eu tenho que colocar algum resistor ou circuito entre eles?

Como vc pode ver no exemplo de aplicação na DS, não há necessidade de resistor.

Provavelmente vc terá de transmitir um preâmbulo para que o AGC do receptor se ajuste.

Smarley

  • Visitante
Re: Transmissão rf com PIC...
« Resposta #2 Online: 06 de Março de 2009, 20:08 »
Provavelmente vc terá de transmitir um preâmbulo para que o AGC do receptor se ajuste.

Como assim? Para sincronizar o receptor e transmissor?
O que seria este preâmbulo?
Que tipo de sinal...

Offline C N C N o w !

  • CNCMASTER
  • ******
  • Posts: 6300
  • Sexo: Masculino
Re: Transmissão rf com PIC...
« Resposta #3 Online: 06 de Março de 2009, 20:28 »
Provavelmente vc terá de transmitir um preâmbulo para que o AGC do receptor se ajuste.

Como assim? Para sincronizar o receptor e transmissor?
O que seria este preâmbulo?
Que tipo de sinal...

Quando não há transmissão o receptor abre o AGC, ou seja o ganho vai ao máximo e muito provavelmente os primeiros sinais recebidos serão severamente distorcidos, até que ocorra a acomodação do ganho, por isso é quase sempre necessário um preâmbulo, que pode ser uma simples sucessão de zeros e uns, o comprimento deverá ser determinado experimentalmente.

Eu tenho quase a certeza de que se não fizer isto terá probs.

Offline Cláudio F.

  • Fuso
  • **
  • Posts: 222
  • Sexo: Masculino
  • Cidade - UF: São Paulo/SP
Re: Transmissão rf com PIC...
« Resposta #4 Online: 06 de Março de 2009, 20:42 »
Olá Smarley, caso vc não tenha experiencia em trabalhar com transmissao de dados via rf, sugiro utilizar os módulos XBee da MaxStream. Simpes, rápido, simples de ser configurado vc comunica com ele através de uma porta serial e vc nao irá precisar esquentar a cabeça com sincronismo, crc, sujeira, etc...

Uma alternativa mais barata, é o TRW-24G. Um pouco enjoado na hora de botar pra rodar, mas uma vez que vc acertar, não esquenta mais a cabeça.

Abraço

Smarley

  • Visitante
Re: Transmissão rf com PIC...
« Resposta #5 Online: 06 de Março de 2009, 20:45 »
hmm..

Mas cara, eu acho que estou fazendo certo, da uma olhada.
No meu programa eu estou mandando o valor.
Recebendo ele de volta. Conferindo se é igual ao que foi mandado.
Se for diferente, ele manda denovo. Até que o valor correto volte do PIC escravo.
Isto não elimina estes problemas?

Eu até ia fazer um esquema para ele mandar, receber, conferir, e se estiver correto mandar outro sinal, liberando a acão do PIC escravo. Mas como ele só vai ter uma função por enquanto, eu não vou mandar este sinal de confirmação do mestre pro escravo. Até porque eu vou ter que conferir o valor de confirmação também.

Smarley

  • Visitante
Re: Transmissão rf com PIC...
« Resposta #6 Online: 06 de Março de 2009, 20:46 »
Olá Smarley, caso vc não tenha experiencia em trabalhar com transmissao de dados via rf, sugiro utilizar os módulos XBee da MaxStream. Simpes, rápido, simples de ser configurado vc comunica com ele através de uma porta serial e vc nao irá precisar esquentar a cabeça com sincronismo, crc, sujeira, etc...

Uma alternativa mais barata, é o TRW-24G. Um pouco enjoado na hora de botar pra rodar, mas uma vez que vc acertar, não esquenta mais a cabeça.

Abraço

Vou pesquisar sobre estes módulos, mas eu acho que com o meu programa la, eu não vou ter problemas com sujeiras. Da uma lida no meu post anterior ali...

Offline Cláudio F.

  • Fuso
  • **
  • Posts: 222
  • Sexo: Masculino
  • Cidade - UF: São Paulo/SP
Re: Transmissão rf com PIC...
« Resposta #7 Online: 06 de Março de 2009, 21:06 »
bao, fica a dica ai... caso tenha problema...

mas para completar a minha dica: esses módulos transceptores fazem o necessário para a comunicação seje feita sem erro, ou seja, se vc enviar um 'A', o receptor vai receber o 'A' e nada mais que isso. esse receptores eles ficam recebendo sujeiro o tempo todo.

para tentar resolver isso, eu te sugiro a criar pacotes de tamanho fixo (ex: 16 chars), com caracteres de inicio e fim (ex: SS: '@', FS: '#') e utilizar o oitavo bit para paridade. Resolveria 99% dos problemas.

Offline Cláudio F.

  • Fuso
  • **
  • Posts: 222
  • Sexo: Masculino
  • Cidade - UF: São Paulo/SP
Re: Transmissão rf com PIC...
« Resposta #8 Online: 06 de Março de 2009, 21:14 »
Smarley, nao tinha lido o seu 1o post completamente e só agora vi q vc quer ligar/desligar algo remotamente.
Fica um pokim mais facil, agora pra facilitar de vez sua vida, bota uns ci da holtek especialmente feitos para essa função. não me lembro o modelo deles, mas no site vc acha facil.

Smarley

  • Visitante
Re: Transmissão rf com PIC...
« Resposta #9 Online: 06 de Março de 2009, 22:40 »
tu se refere aqueles encoder e decoder?
Aqueles seriam para comunicação paralela--paralela.
Eu até poderia usar pois é somente 1 rele por enquanto.
Mas quando eu aumentar vou ter que disponibilizar mais portas do uC.
Vou tentar primeiro enviando um byte pelos 315Mhz mesmo.

Offline plancton81

  • Fuso
  • **
  • Posts: 185
  • Sexo: Masculino
Re: Transmissão rf com PIC...
« Resposta #10 Online: 07 de Março de 2009, 04:08 »
Pelo que eu saiba, com esses módulos não tem problema usar uma taxa menor de transmissão.

Pra o que você quer fazer por enquanto, seu "protocolo" é razoavel.

Se quiser aumentar o número de funções aí eu sugiro que vc faça um protocolo de verdade como já foi sugerido, você pode ler um pouco sobre modbus pra entender como ele funciona e até implementar ele ou algo parecido.

Eu já implementei alguns protocolos mestre-escravo assim, geralmente usando alguns bytes por mensagem, por exemplo:

% O D FUNC ARG CRC #

onde

% - indica inicio do pacote
O - ID do emissor da mensagem
D - ID do Destinatario da mensagem
FUNC - função a ser executada
ARG - argumento da função, por exemplo, um número relacionado a função enviada
CRC - calculo do CRC
# - indica final da mensagem.

Usando pacotes com formatos parecidos com este se resolve muita coisa.

Abraço!




Smarley

  • Visitante
Re: Transmissão rf com PIC...
« Resposta #11 Online: 07 de Março de 2009, 11:30 »
A função detes pacotes seriam para o receptor não pegar interferência? de portões eletrônicos ou qualquer outro aparelho se comunicando nesta faixa?

Para eu trabalhar com pacotes, eu tenho que largar a int e criar. Ai eu ja preciso de velocidade, pois antes era só um byte sendo enviado...
Eu não lembro, mas seria por ex.:

char %12liga1#

não entendi o que seria o CRC.
1 seria o transmissor e 2 o receptor.
liga, comando de ligar.
1, executa a função no rele 1.

Seria isto?

Offline C N C N o w !

  • CNCMASTER
  • ******
  • Posts: 6300
  • Sexo: Masculino
Re: Transmissão rf com PIC...
« Resposta #12 Online: 07 de Março de 2009, 12:09 »
A primeira providência é fazer com que transmissor e receptor funcionem. Por incrível que pareça é aqui onde fracassa a maioria dos projetos desse tipo.

Minha sugestão é que teste e verifique este aspecto, qualquer outra sugestão cai no vazio se a transmissão / recepção não funciona ...

Pacotes e CRC não resolvem absolutamente nada se não forem corretamente recebidos ...

Não há coisa melhor que o esquema de handshake que se pretende implementar, é o ideal. Não faz sentido implementar outros algoritmos de redundância e verificação quando isto é possível.



Offline plancton81

  • Fuso
  • **
  • Posts: 185
  • Sexo: Masculino
Re: Transmissão rf com PIC...
« Resposta #13 Online: 07 de Março de 2009, 17:31 »
A primeira providência é fazer com que transmissor e receptor funcionem. Por incrível que pareça é aqui onde fracassa a maioria dos projetos desse tipo.

...

Pacotes e CRC não resolvem absolutamente nada se não forem corretamente recebidos ...


Com certeza, tudo que eu falei é baseado nisso, acho que estamos falando de camadas diferentes =)

Não há coisa melhor que o esquema de handshake que se pretende implementar, é o ideal. Não faz sentido implementar outros algoritmos de redundância e verificação quando isto é possível.

Concordo de novo, só sugeri um pacote maior caso ele pretenda expandir o sistema dele, no final das contas fica mais "fácil" controlar tudo.



A função detes pacotes seriam para o receptor não pegar interferência? de portões eletrônicos ou qualquer outro aparelho se comunicando nesta faixa?

Se a interferencia for na camada do Hardware, nada vai funcionar, nao tem pacote que faça milagre. Isso serve para você endereçar e organizar o que cada "ponto de acesso" vai fazer. Se você nao pretende expandir o seu sistema, só ligar um equipamento remoto, tá razoavel o que vc quer fazer.

Para eu trabalhar com pacotes, eu tenho que largar a int e criar. Ai eu ja preciso de velocidade, pois antes era só um byte sendo enviado...
Eu não lembro, mas seria por ex.:

char %12liga1#

não entendi o que seria o CRC.


CRC de modo simples, é o resultado de uns calculos feitos com os bytes enviados ou recebidos, o transmisor e o receptor fazem o calculo dos bytes recebidos/enviados e esse valor CRC tem que bater nos dois pontos. Se bater o pacote ta integro, se não, aconteceu algum problema na transmissão/recepção.

1 seria o transmissor e 2 o receptor.
liga, comando de ligar.
1, executa a função no rele 1.

Seria isto?

Basicamente é isso aí.

Geralmente quando faço um esquema desse de pacote eu crio um array de char, coisa do tipo:
char PACOTE[16];

Aí em cada posição você coloca cada byte do seu protocolo.



 

Offline C N C N o w !

  • CNCMASTER
  • ******
  • Posts: 6300
  • Sexo: Masculino
Re: Transmissão rf com PIC...
« Resposta #14 Online: 07 de Março de 2009, 19:05 »
Com certeza, tudo que eu falei é baseado nisso, acho que estamos falando de camadas diferentes =)

Nós estamos falando da mesma coisa, a diferença é que vc preconiza uma solução pouco adequada para o caso, mais complexa, sem que essa complexidade traga qualquer benefício, ao contrário, considerando as condições específicas da implementação, pode ser um tiro no pé.

Pacotes são utilizados e justificáveis onde há tráfego de grande volume de dados e num período considerável.

É o caso dos HDs, onde seria insano tentar tratar os dados a nível de byte e portanto adota-se maior granularidade, tratando-se setores ou mais realisticamente, clusters. É o caso tb em redes, onde se trata, por exemplo pacotes de 1.500 bytes. Obviamente o tratamento de pacotes da tal tamanho não só recomenda, mas obriga à utilização de algoritmos de verificação sofisticados e descarta a redundância.

O que discutimos aqui é coisa de natureza quantitativa e qualitativamente muito diferente. Trata-se de ambiente doméstico, tráfego ridiculamente modesto, meio nada confiável e redundância absoluta à mão e isto faz toda a diferença.



 

/** * */