Je travaille sur un système de communication sans fil. Nous utilisons environ 10 paires d'émetteurs et de récepteurs. Nous utilisons le microcontrôleur atmega16 pour l'encodage et le décodage par les ports USART.
Maintenant, nous sommes en mesure de transmettre les données et de les recevoir du côté du récepteur, mais il y a un problème majeur, lorsque nous trouvons les 2 données d'émetteur venant en même temps. Le récepteur ne peut pas l'obtenir en raison d'interférences.
Supposons qu'un émetteur envoie "SENDA" en même temps qu'un autre émetteur envoie "GETTS", à ce moment le récepteur ne peut pas recevoir les données appropriées. Comme tous les émetteurs et récepteurs fonctionnent à la même fréquence, cette interférence se produit. Comment puis-je résoudre ce problème?
la source
Réponses:
Le développement d'un protocole de communication RF réalisable est susceptible d'être un exercice délicat mais éducatif. Quelques points supplémentaires à considérer au-delà de ce qui a été dit:
Le problème du consensus peut être particulièrement vexant si l'on essaie d'économiser de l'énergie en éteignant les récepteurs lorsqu'ils ne sont pas nécessaires. Supposons que deux P et Q sont censés communiquer une fois toutes les 10 secondes, donc ils se mettent sous tension et P envoie à Q un paquet. Q reçoit le paquet, envoie son accusé de réception et - sachant que P n'enverra rien pendant près de dix secondes, s'éteint. Si P ne reçoit pas la reconnaissance de Q, il retransmettra; puisque Q dort, cependant, il n'entendra pas la retransmission de P. Du point de vue de Q, cela n'aurait pas d'importance (il a déjà reçu ses données), mais cela signifie que peu importe le nombre de tentatives de P, il n'aura aucun moyen de savoir que Q a reçu son paquet (du moins pas avant le prochain rendez-vous dans environ dix secondes).
Comme dit précédemment, un protocole de communication RF réalisable est susceptible d'être un exercice délicat. Pourtant, je m'attends à ce que vous appreniez probablement beaucoup de cette expérience.
la source
Si vous n'utilisez pas de protocole standard pour cela, vous devrez en concevoir et en implémenter un, par exemple un exemple simple:
Donc, ce qui se passe, c'est que vous essayez d'abord d'éviter le "brouillage" en écoutant d'abord, puis si un bourrage se produit toujours, vous le détectez via un manque d'acquittement du nœud récepteur, puis réessayez après un délai aléatoire - les deux émetteurs de brouillage utiliser différents retards aléatoires, minimisant les risques de deuxième collision.
la source
Voici deux options courantes
1) Implémentez un algorithme Listen Before Talk (LBT), qui vérifie s'il y a une transmission en cours avant de démarrer le vôtre, et si oui, recule pendant un certain temps. La période doit contenir une longueur fixe et une longueur aléatoire afin qu'elles ne reculent pas toutes pendant la même période. De nombreux protocoles radio standard incluent cette procédure, voir ETSI EN 300-220-1.
2) Mettre en œuvre un système de balise où les transmissions sont chronométrées à partir de la balise. Chaque émetteur a son propre créneau temporel. Vous devez normalement utiliser des numéros de série dans les appareils pour déterminer leur emplacement et disposer d'un système pour déterminer qui envoie la balise. Étant donné que cela dépend de tous les émetteurs ayant un emplacement différent, ce n'est pas une bonne idée de laisser à l'utilisateur d'identifier de manière unique tous les émetteurs, sauf si vous avez une procédure solide pour cela.
la source
Si je comprends bien des commentaires, etc., l'alimentation n'est pas un problème, mais la vitesse de communication l'est. Voici donc ma suggestion de protocole.
Numérotez tous les nœuds, 0..n-1. Faites savoir à chaque nœud de quel numéro il s'agit. Le nœud 0 sera le maître.
Toutes les 15 ms, le nœud 0 envoie un message: "0HELO".
1 ms plus tard, le nœud 1 envoie un message: "1DATA".
1 ms plus tard, le nœud 2 envoie un message: "2NICE".
1 ms plus tard, le nœud 3 envoie un message: "3". (Ce nœud n'a rien à dire)
1 ms plus tard, le nœud 4 envoie un message: "2CATS".
...
1 ms plus tard, le nœud 9 envoie un message: "9MICE".
Il y a ensuite une pause de 5 ms.
Les nœuds envoient toujours leurs messages dans leurs créneaux horaires corrects, même s'ils n'ont rien à dire. De cette façon, vous êtes assuré d'un taux de communication de 66 Hz, sans collision.
la source
La communication RF avec plusieurs émetteurs asynchrones est un problème délicat. Beaucoup de réflexion et d'ingénierie ont été consacrées aux normes 802.11 et 802.15 pour contourner ces problèmes. Si vous devez demander ici, vous devez vous en tenir au matériel standard qui met en œuvre l'une de ces normes.
Notez que bien que les deux soient utiles et représentent beaucoup de conception soignée, généralement toute application réelle devra toujours implémenter une pile de protocoles au-dessus de ces normes. Ce serait WiFi et TCP au-dessus de 802.11 et Zigbee ou WiWi de Microchip ou d'autres au-dessus de 802.15.
Encore une fois, la conception d'un réseau radio multipoint est bien loin de votre ligue si vous posez des questions aussi fondamentales ici. Vous passerez juste beaucoup de temps et les choses ne fonctionneront pas toujours correctement.
Le choix entre 802.11 et 802.15 dépend principalement de vos besoins en bande passante et en portée et en puissance disponible. Le 802.15 est plus petit, une puissance inférieure, une bande passante inférieure et une plage plus petite. Avec le bon logiciel de niveau supérieur, un périphérique 802.15 peut fonctionner longtemps à partir des batteries, alors que ce n'est généralement pas le cas pour le 802.11.
la source
Je suis d'accord avec l'écoute avant de parler et le système de balise. Mais si vous souhaitez utiliser un seul canal pour transmettre des données en même temps, vous pouvez utiliser la technique de modulation à spectre étalé à séquence directe (DSSS). Cela pourrait vous aider à éviter les interférences.
Mais pour cela, vous devrez peut-être acheter une puce qui le met en œuvre, par exemple Xbee (basé sur Zigbee). Si vous ne pouvez pas changer votre émetteur, vous devez vous en tenir aux autres réponses.
la source