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

Description:

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

Offline plancton81

  • Fuso
  • **
  • Posts: 185
  • Sexo: Masculino
Re: Transmissão rf com PIC...
« Resposta #15 Online: 08 de Março de 2009, 03:26 »
Jorge, acho que o que eu disse não é tão inviavel nem inadequado quanto parece.

Eu falei que pra o que ele quer tá razoavel a solução dele, se for só isso mesmo, deve ser até o melhor custo/beneficio.

O que tentei aconselhar, é que caso ele pretenda usar mais funções futuramente no sistema ou mais de um escravo, fica dificil fazer desse jeito.

Não me provoca não senão eu vou sugerir um algoritmo de correção de erros... he he he  ;D





Offline C N C N o w !

  • CNCMASTER
  • ******
  • Posts: 6300
  • Sexo: Masculino
Re: Transmissão rf com PIC...
« Resposta #16 Online: 08 de Março de 2009, 08:03 »

Eu não disse que sua proposta é inviável, nem inadequada, o que eu disse é que é pouco adequada, pq é mais complexa e não traz benefícios.  :P

Considere-se provocado !  ;D

A solução proposta não apenas é "razoável", é a melhor possível, em qualquer circunstância. Se discorda, apresente coisa melhor. Isto tb é uma provocação.  ;D
« Última modificação: 08 de Março de 2009, 08:06 por C N C N o w ! »

Smarley

  • Visitante
Re: Transmissão rf com PIC...
« Resposta #17 Online: 08 de Março de 2009, 13:15 »
Pessoal, que bom que se interessaram por isso!
Eu gosto de fazer programas para microcontroladores e pensar em algorítmos para resolver soluções.
Eu vou fazer o seguinte.
Eu não vejo a necessidade de enviar mais de um byte para o escravo... A não ser que seja por causa da interferência.
Mas eu vou tentar resolver assim:
Vou mandar um byte para o escravo. No caso o valor 8.
O escravo recebe este byte, manda de volta, e grava numa variável "y".
O mestre verifica se o valor que voltou foi o mesmo enviado.
Caso positivo, o mestre manda um outro valor, 16 por exemplo.
O escravo recebe este valor, manda de volta e antes de gravar na variável y, ele verifica se o valor é 16.
Caso seja negativo, ele vai mandar de volta para o mestre outro valor, que não vai ser 16. Aí o mestre volta para o começo, mandando o valor 8, para que o escravo não grave um valor errado na variável "y".
Caso positivo, o escravo entra em um laço de menu(), que vai ser onde está os comandos dos reles.
No caso, o valor 16 seria para dar um comando "pode começar" e o valor 8 seria o comando do rele.
Vou implementar isto no programa hoje, e testar.
Se der certo deste jeito, eu posso colocar vários escravos, e continuar usando 1 byte. Porque eu colocaria o valor de "pode começar" diferente para cada escravo.
:)

Abraço!

Offline Cláudio F.

  • Fuso
  • **
  • Posts: 222
  • Sexo: Masculino
  • Cidade - UF: São Paulo/SP
Re: Transmissão rf com PIC...
« Resposta #18 Online: 08 de Março de 2009, 13:19 »
Smarley,

imagine a possibilidade de vc receber do receptor continuamente isso: "DF13213D456S879S5S2 3SDASFDASFDSA89F56F D4H..." (ele vai estar sempre recebendo caracteres, exitem milhares de fontes de 315mhz ao nosso redor. nem vou considerar harmônicas)

será que vc vai conseguir indentificar um caractere enviado do mestre?

Offline Cláudio F.

  • Fuso
  • **
  • Posts: 222
  • Sexo: Masculino
  • Cidade - UF: São Paulo/SP
Re: Transmissão rf com PIC...
« Resposta #19 Online: 08 de Março de 2009, 13:30 »
Me desculpe pelo post incompleto, comi bola aqui.

Mas continuando...

O jeito mais simplista de fazer isso na minha opnião, é filtrar na int da serial os caracteres de controle e enviar cada comando umas 10x num determinado período. no receptor vc  contaria esses caracteres, confirmaria se esta dentro do tempo e dispensaria a necessidade do handshaking e consequentemente de mais um transceptor.

Smarley

  • Visitante
Re: Transmissão rf com PIC...
« Resposta #20 Online: 08 de Março de 2009, 13:32 »
Acho que sim, pois só vai dar problema se o recepetor receber o valor.
8 e depois 16 na mesma seqüencia.
Caso ele receba um 8, e depois 9, ele não vai ser liberado para fazer nada.
Ou se ele receber um 9 e depois 16, ele vai entrar no menu, mas não vai ter esta opção la.
Para diminuir este problema eu posso enviar uma char então com mais bytes.
Mas não sei se isto será problema.

Uma dúvida besta aqui...
Como as letras e outros caracteres, como !&%@# são representados com os 8 bits de uma char?
Pode até parecer bobagem não lembrar disto, mas a ressaca não me deixa pensar agora... :P

Smarley

  • Visitante
Re: Transmissão rf com PIC...
« Resposta #21 Online: 08 de Março de 2009, 13:33 »
Me desculpe pelo post incompleto, comi bola aqui.

Mas continuando...

O jeito mais simplista de fazer isso na minha opnião, é filtrar na int da serial os caracteres de controle e enviar cada comando umas 10x num determinado período. no receptor vc  contaria esses caracteres, confirmaria se esta dentro do tempo e dispensaria a necessidade do handshaking e consequentemente de mais um transceptor.

Isto vai ser pensado futuramente!
para eliminar um receptor e transmissor.
Mas eu não sei se vou fazer isto, pois eu também quero informações do escravo.
Como controle do nível da água.

Offline Cláudio F.

  • Fuso
  • **
  • Posts: 222
  • Sexo: Masculino
  • Cidade - UF: São Paulo/SP
Re: Transmissão rf com PIC...
« Resposta #22 Online: 08 de Março de 2009, 13:34 »
Smarley, vc esta falando da tabela ASCII?

http://pt.wikipedia.org/wiki/ASCII

Smarley

  • Visitante
Re: Transmissão rf com PIC...
« Resposta #23 Online: 08 de Março de 2009, 13:58 »
hmm
não lembrava mesmo...
Quando o uC receber este valor, o do caractere. Como ele faria para diferenciá-lo de valores comuns e mostrar o caracter no LCD?

Offline plancton81

  • Fuso
  • **
  • Posts: 185
  • Sexo: Masculino
Re: Transmissão rf com PIC...
« Resposta #24 Online: 08 de Março de 2009, 14:07 »

Eu não disse que sua proposta é inviável, nem inadequada, o que eu disse é que é pouco adequada, pq é mais complexa e não traz benefícios.  :P

Considere-se provocado !  ;D

A solução proposta não apenas é "razoável", é a melhor possível, em qualquer circunstância. Se discorda, apresente coisa melhor. Isto tb é uma provocação.  ;D


Hehe, Eu acho razoavel porque não considero 100% seguro esse tipo de implementação. Num ambiente doméstico pode até funcionar, mas não é totalmente improvavel que algo estranho aconteça quando alguém começar a brincar com o alarme do carro, controle do portão e etc... Te garanto que esses controlezinhos não mandam um byte só, mandam uma cacetada de coisa que podem coincidir com os bytes solteiros que você esta usando.

Quando você manda um pacote, tem um sequência de dados nele, e o receptor só entende aquilo. Se chegar um monte de byte quebrado ou coisa fora do lugar ele vai simplesmente ignorar. Se tiver CRC ainda, só com interveção divina para seu receptor aceitar algo errado.

Já que é pra sugerir me ocorreu agora que você poderia mandar para o receptor dois bytes. um com o endereço do escravo e um outro número qualquer. vc faria uma multiplicação, um ou-exclusivo, ou qualquer algoritmo com esses dois bytes e devolveria esse valor ao mestre, se isso bater o mestre devolve uma confirmação com mais de um byte. Mesmo assim, ainda não é seguro... eu prefiro os pacotes...  ;D

Mas repetindo... não discordo do que está sendo feito...




Smarley

  • Visitante
Re: Transmissão rf com PIC...
« Resposta #25 Online: 09 de Março de 2009, 00:00 »
Eu tava tentando simular agora. O envio do byte de comando e do byte de liberação.
Mas está acontecendo algo estranho...
Tipo, quando o escravo recebe 8, e depois 32. Ele manda devolta 8+16+32 = 56.
Mas o mestre está mandando somente 32.
no escravo só tem isso de programa e ele mandar assim...
Citar
   while(true)
   {
   x=getc();
   putc(x);
   y=getc();
   putc(y);
   if(y==16)
   {
   if(x==8)
   {
   output_high(PIN_B3);
   }
   else
   {
   output_low(PIN_B3);
   }
   }
   }

o que pode estar errado?
quando eu mando 81 para escravo depois do 8. Ele manda 89.
Ele está sempre somando este valor, e as vezes imendando ele. dependendo do número que recebe.

Offline plancton81

  • Fuso
  • **
  • Posts: 185
  • Sexo: Masculino
Re: Transmissão rf com PIC...
« Resposta #26 Online: 09 de Março de 2009, 00:51 »
o que a função xxxx faz? e a output_high?
em que lugar que é enviado de volta pro mestre?



Offline Cláudio F.

  • Fuso
  • **
  • Posts: 222
  • Sexo: Masculino
  • Cidade - UF: São Paulo/SP
Re: Transmissão rf com PIC...
« Resposta #27 Online: 09 de Março de 2009, 01:29 »
Smarley,

liga esse receptor na serial do pc, abre o hyper terminal e da uma analisada no q vc recebe do mestre.

pelo q pude perceber, vc esta achando q vc só vai receber os dados q o seu transmissor enviar. e não é bem porai...

Offline plancton81

  • Fuso
  • **
  • Posts: 185
  • Sexo: Masculino
Re: Transmissão rf com PIC...
« Resposta #28 Online: 09 de Março de 2009, 02:14 »
Smarley,

Não sei se é o caso, mas se seus módulos forem identicos (2 TX e 2 RX), com exatamente a mesma frequencia. Você tem que levar em consideração que tudo que vc envia por qualquer TX, chega nos 2 RX. e tem que ser previsto no seu algoritmo do mestre e do escravo.

E tem que ter algum controle pra o mestre e o escravo nunca falarem ao mesmo tempo, senão ninguem se entende.

Smarley

  • Visitante
Re: Transmissão rf com PIC...
« Resposta #29 Online: 09 de Março de 2009, 06:22 »
bah cara, mas eu estava usando o simulador no pc. Proteus.
E nem estava usando módulos sem fio.
Tava no fio mesmo...
Não sei porque aconteceu isso.
Tem mais esse detalhe neh...
só que é assim cara.
Se eu tenho um "putc(x);" no mestre. Ele está só mandando.
E na próxima linha eu tenho um "getc();".
Ou seja. Ele vai mandar, e quando terminar, pular para o próximo comando e receber.
Tu acha que eu vou ter problemas assim?
Eu vou usar pacotes, de uns 10bytes ou mais, porque não me custa nada fazer isto...

abraço!

 

/** * */