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?
wireless
interference
user934070
fonte
fonte
Respostas:
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:
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).
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.
fonte
Se você não estiver usando um protocolo padrão para isso, precisará criar e implementar um, por exemplo, um exemplo simples:
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.
fonte
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.
fonte
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.
fonte
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.
fonte
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.
fonte