Vermeidung von Interferenzen bei der Verwendung von HF-Sendern und -Empfängern

Ich möchte einen "Listen-before-Talk" -Ansatz verwenden, um Daten von Sensoren, die mit einem Sender- und Empfängerpaar verbunden sind, an eine MCU zu übertragen, die mit einem Sender und Empfänger verbunden ist, was bedeutet, dass der Sensor nur dann Daten überträgt, wenn er dazu aufgefordert wurde tun Sie dies über die MCU, aber das Problem, das ich habe, ist, dass meine Empfänger keine Möglichkeit haben, zu wissen, ob die Informationen, die sie empfangen, von einem meiner Sender oder von einem anderen 433-Sender in der Umgebung stammen. Der Empfänger, den ich verwenden möchte hat hier eine Produktbeschreibungwas darauf hinzudeuten scheint, dass es eine Methode zum Koppeln meiner Sender und Empfänger geben könnte, aber wie? Wenn ich Sender-ID-Informationen sende, z. B. wenn der Sender 4 Bits sendet, mache ich die ersten beiden Bits immer zu "11", damit der Empfänger weiß, dass die Informationen von einem der Sender stammen, die er hören sollte, wäre ich dann in der Lage, Daten zu filtern Ich will nicht auf den AVR?

@DaveTweed scheint verwandt zu sein, aber kein Duplikat.
@Kortuk: Schauen Sie sich den Revisionsverlauf der anderen Frage an (und notieren Sie sich die Zeitstempel).
@DaveTweed Ahh ja, der Benutzer dachte, dass Sie gerade weiter bearbeitet haben, um der Frage mehr hinzuzufügen. Das ist viel besser, stellen Sie jede Frage diskret. Danke fürs Erklären!

Antworten (1)

Diese Arten von Sendern und Empfängern arbeiten nur auf einem einzigen Kanal. Die Empfänger verwenden normalerweise eine Form der aktiven Verstärkungsregelung (AGC), erhöhen also die Verstärkung, bis etwas (normalerweise Rauschen) empfangen wird. Die Verstärkung wird auf einen geeigneten Pegel reduziert, wenn eine Übertragung beginnt.

Im Allgemeinen ist die beste Vorgehensweise:

  • Vereinbaren Sie eine Bitrate zwischen den beiden Systemen (zB 4800bps). Im Allgemeinen geben Ihnen Empfänger/Sender-Paare eine Anleitung dazu.
  • Übertragen Sie eine Präambel von 10101010 (im Allgemeinen irgendwo zwischen 8 und 40 Bit), bevor Sie mit der Hauptübertragung beginnen. Dies hat zwei Zwecke – es ermöglicht der AGC, sich an einem guten Punkt einzupendeln, und kann vom Mikrocontroller erkannt werden, sodass er weiß, dass eine Übertragung beginnt.
  • Senden Sie ein Sync-Wort, zB 0xD5F7, und hören Sie nur auf Pakete, die das richtige Sync-Wort haben. Die Länge des Sync-Wortes variiert.
  • Verwenden Sie den Rest des Datenpakets, um die Adresse, Richtung und Daten anzugeben.

Ich habe festgestellt, dass die VirtualWire-Bibliothek für den Arduino eigentlich ein nettes, klares Beispiel dafür ist, wie man vorgeht. Schauen Sie vielleicht mal vorbei, auch wenn Sie mit einer anderen Mikrocontroller-Familie arbeiten.

Eine weitere Überlegung wert ist die Codierung von Bits. Sie können einfach eine 1 als 1 und eine 0 als 0 senden. Es gibt jedoch komplexere Schemata. Die Manchester-Codierung stellt sicher, dass jedes übertragene Datenbit mindestens einen Signalübergang aufweist. Dies hat zwei wesentliche Auswirkungen:

  1. Unabhängig von den gesendeten Daten wird eine gleiche Anzahl von Hochs und Tiefs gesendet. Dies bedeutet, dass die AGC ordnungsgemäß arbeiten kann und das Signal keine DC-Vorspannung aufweist.
  2. Da es für jedes Bit einen Übergang gibt, ist es einfach, den Takt aus dem Signal zurückzugewinnen, selbst wenn er nicht bekannt ist. Das bedeutet wirklich, dass Ihre Sender keinen externen Quarz mehr verwenden müssen - der interne Oszillator ist genau genug.
+1 für die Präambel. Sie können auch eine SOM hinzufügen, wenn Sie möchten.