Como evitar interferências na comunicação sem fio?

12

Estou trabalhando no sistema de comunicação sem fio. Estamos usando cerca de 10 pares de transmissores e receptores. Estamos usando o microcontrolador atmega16 para codificação e decodificação pelas portas USART.

Agora somos capazes de transmitir os dados e receber os mesmos no final do receptor, mas há um grande problema quando encontramos os 2 dados do transmissor chegando ao mesmo tempo. O receptor não pode obtê-lo devido à interferência.

Suponha que um transmissor envie "SENDA" enquanto outro transmite "GETTS"; nesse momento, o receptor não pode receber dados adequados. Como todos os transmissores e receptores estão trabalhando na mesma frequência, esta interferência está ocorrendo. Como posso resolver esse problema?

user934070
fonte
4
Que tipo de circuitos de rádio fica entre o seu UART e a antena?
JPC

Respostas:

14

Desenvolver um protocolo de comunicação de RF viável pode ser um exercício complicado, mas educacional. Alguns pontos adicionais a considerar além do que foi dito:

  1. Em alguns equipamentos de rádio, é preciso muita energia para ouvir um sinal. Com muitos rádios, se não a maioria dos pequenos, escutar por um segundo consumirá mais energia do que transmitir por um milissegundo; em alguns rádios, ouvir milissegundos pode levar mais energia do que transmitir milissegundos. Se o consumo atual não é um problema, ouvir continuamente é muito mais simples do que ouvir de forma intermitente; se o consumo atual for um problema, pode ser necessário ouvir de forma intermitente. Provavelmente não é uma boa ideia até que você consiga avançar com um protocolo de escuta contínua.
  2. Ouvir antes de transmitir pode ser "educado", mas não é nem de longe tão útil com RF quanto com, por exemplo, um cabo Ethernet. A sinalização Ethernet é projetada para que não apenas seja provável que um dispositivo que ouça antes de transmitir evite uma colisão, mas também seja projetado para que um dispositivo cuja transmissão colide com a de outro dispositivo seja praticamente garantido perceber. A transmissão de RF não oferece tal promessa. É perfeitamente possível que, quando P quiser transmitir para Q, algum outro dispositivo X que esteja mais próximo de Q do que P esteja transmitindo alto o suficiente para impedir que Q ouça a transmissão de P, mas não alto o suficiente para P perceber. A única maneira de P saber que Q pode não ter recebido sua transmissão é pelo fato de P não ouvir uma resposta de Q.
  3. É importante ter cuidado com o problema de consenso - muito mais com RF do que com sinalização por fio. Se um P enviar para Q, é possível que Q ouça a transmissão de P e envie uma confirmação, mas P por várias razões não ouvirá essa confirmação. Portanto, é necessário ter muito cuidado para distinguir retransmissões de transmissões "novas".

    O problema de consenso pode ser especialmente irritante se alguém estiver tentando economizar energia desligando os receptores quando eles não são necessários. Suponha que dois P e Q devem se comunicar uma vez a cada 10 segundos, para que eles liguem e P envie um pacote a Q. Q recebe o pacote, envia seu reconhecimento e - sabendo que P não estará enviando nada por quase dez segundos, desliga. Se P não receber o reconhecimento de Q, ele retransmitirá; como Q está dormindo, no entanto, ele não ouvirá a retransmissão de P. Da perspectiva de Q, isso não importaria (ele já recebeu seus dados), mas significa que não importa quantas vezes P tente novamente, ele não terá como saber que Q recebeu seu pacote (pelo menos não até o próximo encontro em cerca de dez segundos).

  4. É inteiramente possível ter uma situação em que o nó Q poderá receber transmissões de P, mas P não poderá receber transmissões de Q. Pode não ser possível se comunicar de maneira útil em tais cenários, mas pelo menos deve-se esforçar para evitar fazer algo desagradável (como P repetir repetidamente uma transmissão centenas de tentativas por segundo)

Como dito, um protocolo de comunicação de RF viável pode ser um exercício complicado. Ainda assim, eu espero que você provavelmente aprenda muito com a experiência.

supercat
fonte
8

Se você não estiver usando um protocolo padrão para isso, precisará criar e implementar um, por exemplo, um exemplo simples:

  • antes de transmitir, um nó deve ouvir para verificar se o canal está livre
  • se, depois de transmitir uma mensagem, nenhuma confirmação for recebida, o nó deverá aguardar um período aleatório e tentar novamente, até um número máximo de tentativas

Então, o que acontece é que você primeiro tenta evitar "obstruções" ouvindo primeiro; se um bloqueio ainda ocorrer, você detecta isso por falta de reconhecimento do nó receptor e tenta novamente após um atraso aleatório - os dois transmissores obstruídos use atrasos aleatórios diferentes, minimizando a chance de uma segunda colisão.

Paul R
fonte
2
Uma grande limitação da prevenção de colisões é que não há garantia de que os possíveis transmissores estejam dentro do alcance de recepção um do outro, mesmo que ambos estejam dentro do alcance de destino do alvo pretendido.
Supercat
1
A prevenção de colisões fornece apenas algumas melhorias na utilização do canal. Você ainda precisa fazer reconhecimentos e retransmissões. A chave é esperar um tempo aleatório antes de retransmitir.
David Schwartz
O mais importante é que isso funcione em tempo real e também é uma maneira de comunicação. então, se fizermos o caminho de duas maneiras, haverá mais interferência. :(
user934070
OK - nunca será robusto ou confiável - você pode ouvir antes da transmissão, mas com uma forma diferente de nunca ter nenhuma garantia de que uma transmissão foi realmente recebida.
Paul R
4

Aqui estão duas opções comuns

1) Implemente um algoritmo Listen Before Talk (LBT), que verifica se há transmissão em andamento antes de iniciar a sua própria e, nesse caso, recua por um período de tempo. O período deve conter um comprimento fixo e um comprimento aleatório, para que eles não recuem todos pelo mesmo período. Muitos protocolos de rádio padrão incluem esse procedimento, consulte ETSI EN 300-220-1.

2) Implemente um sistema de farol onde as transmissões são cronometradas a partir do farol. Cada transmissor recebe seu próprio slot de tempo. Você normalmente usaria números de série nos dispositivos para determinar seu slot e teria um sistema para determinar quem envia o farol. Como isso depende de todos os transmissores com um slot diferente, não é uma boa ideia deixar para o usuário identificar exclusivamente todos os transmissores, a menos que você tenha um procedimento sólido para isso.

Martin
fonte
Como um aparte, acho que a Parte dois poderia tirar proveito do CDMA se eles souberem que a maioria das estações normalmente não precisará transmitir.
Kortuk
1
@ Kortuk: Fiquei com a impressão de que uma das vantagens do CDMA é que - se o receptor puder ser sincronizado com o remetente - o número de erros de bits aumentará à medida que o número de transmissores simultâneos aumentar, mas, caso contrário, haverá não existe "interferência" como tal.
supercat
@ supercat, tenho a impressão de que todo mundo está alocando aleatoriamente intervalos de tempo. A maioria dos transmissores fala apenas ocasionalmente, então a chance de dois falarem ao mesmo tempo é muito pequena, mas ocasionalmente acontece e aparece como um pequeno número de erros de bits nesse momento. Com o entrelaçamento e o ECC geral, você pode ignorar isso. Dito isto, todos têm intervalos de tempo predeterminados, com base em um gerador de números aleatórios, para garantir que dois transmissores não compartilhem o mesmo espaço constantemente e apenas ocasionalmente se encontrem. I pode pedir a alguém que sabe ao certo e tê-los carrilhão no.
Kortuk
1
@ Kortuk: Era o que eu pensava que CDMA significava, mas várias fontes, incluindo a página da Wikipedia, sugerem que se refere à modulação a uma velocidade superior à taxa de bits; se o transmissor inverte seu sinal de acordo com um fluxo de bits pseudo-aleatório e o receptor faz o mesmo e depois filtra o sinal resultante, o sinal original pode ser recuperado. Abordagens baseadas no intervalo de tempo pseudoaleatório são úteis, mas não acho que CDMA seja o termo certo. A maior dificuldade com essas abordagens é a coordenação. Eu realmente gostaria que houvesse um sinal de tempo de alta resolução amplamente disponível.
Supercat
1
@ Kortuk: A WWV meio que funciona para sincronizar relógios e relógios digitais, mas leva um minuto para enviar um sinal de tempo. Seria muito melhor se houvesse transmissões de horário amplamente implementadas, que pudessem ser lidas em 10 ms ou menos e garantidas uma certa tolerância ao horário da WWV no Colorado (o que significa que, em um local a 1.000 milhas de distância do retransmissor local) as transmissões de tempo devem levar a WWV em cerca de 5 ms).
Supercat
3

Pelo que entendi pelos comentários, etc, o poder não é um problema, mas a velocidade da comunicação. Então, aqui está minha sugestão para um protocolo.

Numere todos os nós, 0..n-1. Informe a cada nó qual é o número. O nó 0 será o mestre.

A cada 15 ms, o nó 0 envia uma mensagem: "0HELO".
1 ms depois, o nó 1 envia uma mensagem: "1DATA".
1 ms depois, o nó 2 envia uma mensagem: "2NICE".
1 ms depois, o nó 3 envia uma mensagem: "3". (Este nó não tem nada a dizer)
1ms depois, o nó 4 envia uma mensagem: "2CATS".
...
1ms depois, o nó 9 envia uma mensagem: "9MICE".
Depois, há uma pausa de 5ms.

Os nós sempre enviam suas mensagens nos horários corretos, mesmo que não tenham nada a dizer. Dessa forma, você tem taxa de comunicação garantida de 66Hz, sem colisões.

Rocketmagnet
fonte
2

A comunicação de RF com vários transmissores assíncronos é um problema complicado. Muita reflexão e engenharia foram adotadas nos padrões 802.11 e 802.15 para contornar esses problemas. Se você precisar perguntar aqui, deve manter o hardware de prateleira que implementa um desses padrões.

Observe que, embora ambos sejam úteis e representem muito design cuidadoso, geralmente qualquer aplicativo real ainda precisará implementar uma pilha de protocolos acima desses padrões. Seriam WiFi e TCP acima de 802.11 e WiWi da Zigbee ou Microchip ou alguns outros acima de 802.15.

Mais uma vez, projetar uma rede de rádio multiponto está fora do seu alcance, se você estiver fazendo perguntas básicas aqui. Você passará muito tempo e as coisas nem sempre funcionarão corretamente.

A escolha de 802.11 versus 802.15 depende principalmente dos requisitos de largura de banda e alcance e energia disponível. 802.15 é menor, menor potência, menor largura de banda e menor alcance. Com o software de nível superior certo, um dispositivo 802.15 pode funcionar por muito tempo com baterias, enquanto isso geralmente não é verdade para 802.11.

Olin Lathrop
fonte
2
Tudo depende da aplicação. Na verdade, é bastante difícil, mas ao mesmo tempo muito pode ser aprendido com o exercício. E o que ele aprenderá são leis universais e não alguns detalhes específicos da implementação.
JPC
9
"sair da sua liga" é um pouco duro. Eles estão um pouco loucos e já vi pessoas nesse tipo de posição desperdiçarem um ano com esse tipo de problema ... mas isso não significa que não podem seguir o conselho e fazê-lo funcionar. Como o jpc disse, o sucesso aqui pode significar um salto significativo no entendimento. Se eles fossem um funcionário meu com esta pergunta (e eu tivesse tempo para a lição), eu os incentivaria e espero que aprendessem alguma coisa.
darron
3
É um desserviço quando as pessoas acessam este site procurando respostas para aprender e resolver um problema e são forçadas (por upvotes) a uma solução que não estavam pedindo ou não podem usar.
Joel B
1
Os upvotes do @JoelB não forçam a aceitação de uma resposta.
Chris Stratton
1

Eu concordo em ouvir antes de falar e no sistema de beacon. Mas se você quiser usar um único canal para transmitir dados ao mesmo tempo, poderá usar a técnica de modulação por espectro de propagação de sequência direta (DSSS). Isso pode ajudar a evitar interferências.

Mas para isso, talvez você precise comprar um chip que o implemente, por exemplo, Xbee (baseado em Zigbee). Se você não pode trocar o seu transmissor, deve seguir as outras respostas.

HzJavier
fonte
Muito obrigado por sugestões. Mas, na verdade, nosso principal problema é que nosso sistema funciona em tempo real; portanto, quando e de onde receberemos um sinal é totalmente imprevisível. Deixe-me explicar mais detalhadamente. na verdade, todos os transmissores e receptores são colocados dentro de seu alcance, ou seja, suponha que seu alcance seja de 100 metros e todos estejam presentes dentro de 50 metros, de modo que qualquer sinal que sai de um transmissor possa chegar a todos os nós e novamente qualquer sinal pode surgir a qualquer momento. assim como podemos resolver esse ,, ..
user934070
@ User934070 Os sistemas de telefonia celular e o wifi normalmente usam um espectro de dispersão de algum tipo ou pelo menos tecnologias que seguem os mesmos conceitos básicos. Telefones celulares e laptops são como você descrever "quando e de onde vamos obter um sinal é totalmente imprevisível"
Kellenjb