Ich arbeite an einem drahtlosen Kommunikationssystem. Wir verwenden ungefähr 10 Paare von Sendern und Empfängern. Wir verwenden atmega16 Mikrocontroller zum Kodieren und Dekodieren von USART-Ports.
Jetzt sind wir in der Lage, die Daten zu senden und auf der Empfängerseite zu empfangen, aber es gibt ein großes Problem, wenn wir feststellen, dass die 2 Senderdaten gleichzeitig kommen. Der Empfänger kann es aufgrund von Störungen nicht empfangen.
Angenommen, ein Sender sendet "SENDA", während ein anderer Sender "GETTS" sendet. Zu diesem Zeitpunkt kann der Empfänger keine korrekten Daten empfangen. Da alle Sender und Empfänger auf derselben Frequenz arbeiten, tritt diese Störung auf. Wie kann ich dieses Problem beheben?
wireless
interference
user934070
quelle
quelle
Antworten:
Die Entwicklung eines funktionsfähigen RF-Kommunikationsprotokolls ist eine schwierige, aber lehrreiche Aufgabe. Ein paar zusätzliche Punkte, die über das Gesagte hinausgehen sollten:
Das Konsensproblem kann besonders ärgerlich sein, wenn versucht wird, Energie zu sparen, indem Empfänger ausgeschaltet werden, wenn sie nicht benötigt werden. Angenommen, zwei P und Q sollen einmal alle 10 Sekunden kommunizieren, also schalten sie sich ein und P sendet Q ein Paket. Q empfängt das Paket, sendet seine Bestätigung und - in dem Wissen, dass P fast zehn Sekunden lang nichts sendet, schaltet es ab. Wenn P die Bestätigung von Q nicht erhält, sendet er erneut. da Q jedoch schläft, hört er die erneute Übertragung von P nicht. Aus Qs Sicht spielt das keine Rolle (er hat seine Daten bereits erhalten), aber es bedeutet, dass er unabhängig davon, wie oft P es wiederholt, nicht wissen kann, ob Q sein Paket erhalten hat (zumindest nicht bis zum nächsten Rendezvous in etwa zehn Sekunden).
Wie gesagt, ein funktionsfähiges RF-Kommunikationsprotokoll kann eine schwierige Aufgabe sein. Trotzdem würde ich erwarten, dass Sie wahrscheinlich viel aus dieser Erfahrung lernen werden.
quelle
Wenn Sie hierfür kein Standardprotokoll verwenden, müssen Sie eines entwerfen und implementieren, z. B. ein einfaches Beispiel:
Was also passiert, ist, dass Sie zuerst versuchen, ein "Stören" zu vermeiden, indem Sie zuerst zuhören. Wenn dann immer noch ein Stau auftritt, erkennen Sie dies durch eine fehlende Bestätigung vom empfangenden Knoten und versuchen es dann nach einer zufälligen Verzögerung erneut - die beiden störenden Sender werden es tun Verwenden Sie verschiedene zufällige Verzögerungen, um die Wahrscheinlichkeit einer zweiten Kollision zu minimieren.
quelle
Hier sind zwei gebräuchliche Optionen
1) Implementieren Sie einen LBT-Algorithmus (Listen Before Talk), der prüft, ob gerade eine Übertragung stattfindet, bevor Sie Ihre eigene starten. In diesem Fall wird die Übertragung für einen bestimmten Zeitraum unterbrochen. Der Zeitraum sollte eine feste Länge und eine zufällige Länge enthalten, damit nicht alle für den gleichen Zeitraum zurücktreten. Viele Standard-Funkprotokolle enthalten dieses Verfahren, siehe ETSI EN 300-220-1.
2) Implementieren Sie ein Beacon-System, bei dem die Übertragungen vom Beacon zeitgesteuert sind. Jeder Sender erhält einen eigenen Zeitschlitz. Normalerweise verwenden Sie Seriennummern in den Geräten, um deren Steckplatz zu bestimmen, und verfügen über ein System, um zu bestimmen, wer die Bake sendet. Da dies davon abhängt, dass alle Sender einen anderen Steckplatz haben, ist es nicht ratsam, es dem Benutzer zu überlassen, alle Sender eindeutig zu identifizieren, es sei denn, Sie verfügen über ein solides Verfahren dafür.
quelle
Wie aus den Kommentaren usw. hervorgeht, ist die Stromversorgung kein Problem, die Kommunikationsgeschwindigkeit jedoch. Also, hier ist mein Vorschlag für ein Protokoll.
Nummerieren Sie alle Knoten mit 0..n-1. Teilen Sie jedem Knoten mit, um welche Nummer es sich handelt. Knoten 0 wird der Master sein.
Alle 15 ms sendet der Knoten 0 eine Nachricht: "0HELO".
1ms später sendet Knoten 1 eine Nachricht: "1DATA".
1ms später sendet Knoten 2 eine Nachricht: "2NICE".
1 ms später sendet Knoten 3 eine Nachricht: "3". (Dieser Knoten hat nichts zu sagen)
1ms später sendet Knoten 4 eine Nachricht: "2CATS".
...
1ms später sendet Knoten 9 eine Nachricht: "9MICE".
Dann gibt es eine Pause von 5ms.
Die Knoten senden ihre Nachrichten immer in den richtigen Zeitfenstern, auch wenn sie nichts zu sagen haben. Auf diese Weise wird eine Kommunikationsrate von 66 Hz ohne Kollisionen garantiert.
quelle
Die HF-Kommunikation mit mehreren asynchronen Sendern ist ein schwieriges Problem. Viele Überlegungen und technische Maßnahmen haben sich mit den Standards 802.11 und 802.15 befasst, um diese Probleme zu umgehen. Wenn Sie hier nachfragen müssen, sollten Sie sich an die Standardhardware halten, die einen dieser Standards implementiert.
Beachten Sie, dass beides zwar nützlich ist und viel Sorgfalt erfordert, in der Regel jedoch in jeder realen Anwendung ein Protokollstapel implementiert werden muss, der über diesen Standards liegt. Dies wären WiFi und TCP über 802.11 und Zigbee oder Microchips WiWi oder einige andere über 802.15.
Das Entwerfen eines Mehrpunkt-Funknetzwerks ist ein Ausweg aus Ihrer Liga, wenn Sie hier solche grundlegenden Fragen stellen. Sie verbringen einfach viel Zeit und die Dinge werden immer noch nicht immer richtig funktionieren.
Die Wahl zwischen 802.11 und 802.15 hängt hauptsächlich von Ihren Bandbreiten- und Reichweitenanforderungen und der verfügbaren Leistung ab. 802.15 ist kleiner, hat eine geringere Leistung, eine geringere Bandbreite und eine geringere Reichweite. Mit der richtigen Software der höheren Ebene kann ein 802.15-Gerät eine lange Zeit mit Batterien betrieben werden, wohingegen dies für 802.11 im Allgemeinen nicht zutrifft.
quelle
Ich bin damit einverstanden, dass ich zuhöre, bevor ich spreche, und mit dem Beacon-System. Wenn Sie jedoch gleichzeitig einen einzelnen Kanal für die Datenübertragung verwenden möchten, können Sie die DSSS-Modulationstechnik (Direct Sequence Spread Spectrum) verwenden. Dies kann Ihnen helfen, Störungen zu vermeiden.
Aber dafür müssen Sie vielleicht einen Chip kaufen, der ihn implementiert, zum Beispiel Xbee (basierend auf Zigbee). Wenn Sie Ihren Sender nicht wechseln können, sollten Sie sich an die anderen Antworten halten.
quelle