433-MHz-HF-Rauschprobleme

Ich weiß, das ist eine Art Noob-Frage. Ich versuche, eine drahtlose Kommunikation zwischen zwei 8051-Mikrocontrollern mit einem 433-MHz-HF-Modul herzustellen. Aber da 433 MHz eine recht verrauschte Frequenz ist, fängt der Empfänger sofort an, den Müll einzusammeln. Würde in diesem Fall die Implementierung eines Softwarefilters ausreichen, um die Datenmüll zu beseitigen, oder werden meine Daten auf dem Weg vollständig gestört? Vielen Dank im Voraus.

Können Sie die beteiligten Geräuschquellen charakterisieren?
Tatsächlich sende ich ASCII-Zeichen von einem Mikrocontroller zum anderen und zeige sie dann auf dem LCD an. Aber die Zeichen, die auf dem LCD angezeigt werden, sind nicht wie erwartet. Ich weiß nicht, ob dies auf das Rauschen zurückzuführen ist, das die Daten beschädigt, oder ob es sich nur um ein Übertragungsproblem mit der von mir verwendeten Hardware handelt. Was die Quelle der Geräusche betrifft, kann ich keine bestimmte Quelle angeben, die 433 MHz für die Kommunikation in der Umgebung verwendet, die mein Modul dominiert.

Antworten (4)

Verwenden Sie solche Module?

Geben Sie hier die Bildbeschreibung ein

Wenn ja, dann erwarten Sie nicht, dass sie ohne geeignete Software-Rauschfilteralgorithmen funktionieren. Dieses Modul gibt Daten am Rx-Ausgang aus, selbst wenn kein anderer Sender mit 433 MHz arbeitet. Dies liegt daran, dass dieses Gerät mit OOK (On-Off Keying) und AGC (automatische Verstärkungsregelung) arbeitet. Wenn also Rx für einige Zeit kein Signal erkennt, wird es automatisch den Schwellenwert reduzieren, und sobald der Schwellenwert sich dem Rauschpegel nähert, wird das Rauschen als der Bitstrom von interpretiert 1 's und 0 'S.

Um Ihre Pakete richtig zu identifizieren, fügen Sie jedem der von Ihnen übertragenen Frames 3-4 Identifikationsbytes hinzu. Das Hinzufügen einer größeren Anzahl von Identifikationsbytes verringert die Wahrscheinlichkeit, dass das Rauschen als Ihr Paket interpretiert wird. Normalerweise sind 3-4 Bytes ausreichend.

Außerdem dauert es einige Zeit (wenige Bitdauern), bis der Schwellenwert an den Sendesignalpegel angepasst ist. Wenn Sie also nicht kontinuierlich senden, ist es besser, 1 oder 2 Junk-Bytes zu senden, bevor Sie einen Frame übertragen (da die Anfangsbits einige haben Beschädigungsgefahr aufgrund eines falschen Anfangsschwellenwerts).

Hardwarelösung: Ein üblicher Chipsatz, der in einem solchen Empfängermodul verwendet wird, ist PT4317. Wenn Sie das Datenblatt überprüfen , können Sie sehen, dass die Daten-Slicer-Eingänge außerhalb des Chips verfügbar sind. Somit kann der Slicing-Schwellenwert manuell eingestellt werden, indem dem DSN-Pin die Schwellenspannung richtig zugewiesen wird. Dies beeinträchtigt jedoch die Empfindlichkeit des Empfängers und damit die größte Reichweite, mit der er arbeiten kann. Sie müssen mit verschiedenen Werten der Spannung dieses Pins und dem von ihm erzeugten Bereich experimentieren.

Ja und genau das ist der Fall. Wenn ich zum Beispiel 6 Bytes Daten sende, kommen die letzten Bytes immer sicher an und erscheinen auf dem LCD, aber die ersten beiden Bytes sind sehr inkonsistent, sie können wahr oder falsch sein. Danke für deinen Rat.

Es muss nicht die Umgebung sein, die laut ist, es ist auch der Empfänger selbst, der Geräusche erzeugt. Wie das in den meisten 433-MHz-Geräten gelöst wird, ist die Verwendung der Codierung der Daten . Die Datenpakete bestehen also aus den Daten selbst plus zusätzlichem Code, damit das Mikro die Datenpakete erkennen und vom Rauschen unterscheiden kann.

Für Arduino gibt es Bibliotheken für die Datenübertragung über 433 (oder 315) MHz. Ein Beispiel ist die Virtualwire- Bibliothek. Ich schlage vor, Sie schauen sich diese an, um zu sehen, wie es gemacht wird.

Erwarten Sie nur keinen "freien" Kanal, wenn Sie keine Daten senden. 433-MHz-Kommunikation funktioniert so nicht. Sie sind mit extrem einfachen (und billigen) Empfängern und Sendern mit OOK-Modulation (ebenfalls einfach) ausgestattet, das "clevere" Bit wird dann in Software durch Korrelation, Mustererkennung usw. erledigt. Da es sich um niedrige Datenraten handelt, kann dies sogar durchgeführt werden in einem einfachen Mikrocontroller.

Es gibt nichts am 433-MHz-Band, das es besonders laut macht, obwohl es gelegentliche Störungen durch andere Benutzer des Bands geben kann, das ist wahrscheinlich nicht das, was Sie sehen.

Einfache Empfänger können die Verstärkung in Abwesenheit eines Signals hochdrehen, bis ihr eigenes internes Rauschen als Störsignale decodiert wird, und das ist wahrscheinlich das, was Sie sehen: Softwarefilterung ist wahrscheinlich keine Lösung.

Überprüfen Sie das Datenblatt Ihres Empfängers: Möglicherweise gibt es einen RSSI-Ausgang - (Received Signal Strength Indicator) - normalerweise eine analoge Spannung, die die eingehende Signalstärke darstellt (und nicht sehr genau).

Ein Ansatz besteht darin, dies in einem analogen (ADC) Kanal zu lesen und die Empfängerausgabe zu ignorieren, wenn der RSSI unter einem bestimmten Pegel liegt. Wenn Sie nicht versuchen, die maximale Reichweite zu erreichen, können Sie diesen Pegel ziemlich hoch einstellen, sodass Sie nur ein starkes Signal mit wenigen Fehlern decodieren.

Andernfalls müssen Sie möglicherweise mit einem anderen Fehlerminderungsschema kombinieren - beispielsweise das erneute Übertragen fehlerhafter Nachrichten oder Fehlerkorrekturcodes - Details sind viel zu umfangreich für eine einfache Frage und Antwort, aber wie ein bestimmtes Serviceziel erreicht werden kann, ist möglicherweise eine bessere Frage.

Billige 433-MHz-Empfänger sind typischerweise regenerative Designs, die im Wesentlichen immer etwas „empfangen“ und nur leiser werden, wenn ein qualifizierendes Signal vorhanden ist. Dies ähnelt vage einer hyperaktiven AGC auf einem besseren Empfänger, ist jedoch etwas anders und weitaus primitiver.
@ChrisStratton Das ist richtig (obwohl ich denke, du meinst superregenerativ). Und nicht alle haben RSSI: Es ist besser, einen zu finden, der dies tut.

Gedankenexperiment: Empfängerantenne entfernen, durch Kurzschluss vom Antennenanschluss auf der Platine zur Masse auf der Platine ersetzen. Platzieren Sie den Empfänger in einem perfekten Faraday-Käfig, und nur wenn Sie ihn auf deutlich nahe dem absoluten Nullpunkt abkühlen, ist die automatische Verstärkungsregelung im Empfänger nicht empfindlich genug, um Rauschen aufzunehmen und zu verstärken.

Dies sind typischerweise regenerative Empfänger, es handelt sich also nicht nur um Rauschen, sondern um das tatsächliche Verhalten des Empfängers selbst bei fehlendem Signal.