Ich übertrage kontinuierlich mit 9600 bps unter Verwendung der Standardkonfigurationen für meine beiden XBees XB24-B. Die Kommunikation erfolgt nur in eine Richtung, der Sender ist mit dem ATMega328 UART verbunden und der Empfänger ist über USB (FTDI) mit dem PC verbunden. Hier ist die tatsächliche Datenrate für ein bestimmtes Programm:
Warum das? Kann ich etwas tun, um diese Quoten zu verbessern?
Bearbeiten Für höhere Baudraten (115200) erhalte ich noch schlechtere Paketverlustraten:
Bearbeiten Wenn ich den Koordinator dazu bringe, das Endgerät zu adressieren, fällt die Paketverlustrate auf das normale Niveau (6800 bps), was nicht ideal ist, aber besser als das vorherige Szenario
Sie können [die verworfenen Pakete auf Null reduzieren][1], indem Sie die richtige Zieladresse zuweisen, bevor Sie mit der Übertragung beginnen.
Wie sieht die Signalstärke und Geschwindigkeit der WLAN-Verbindung aus? Überprüfen Sie die XBee API-Dokumentation, Sie sollten auf diese Informationen zugreifen können. Welche Antennen verwendest du?
Die Rohdatenrate von Zigbee beträgt nur 250 kbit/s im 2,4-GHz-Band und es ist ein Protokoll mit sehr hohem Overhead. Bei nahezu perfekter Signalstärke und aktivierter Verschlüsselung sollten Sie nur einen maximalen Datendurchsatz von ~20-25 kbit/s erwarten, ohne den Stack anzupassen, etwas mehr ohne Verschlüsselung. Das Zigbee-Protokoll unterstützt wirklich nur das Senden von Daten, die in ein einzelnes Paket passen, das meiner Meinung nach ungefähr 100 Bytes groß ist. Wenn Sie einen Datenstrom senden, muss die Anwendungsschicht diese Daten in Pakete aufteilen und zusätzliche Informationen in den Datenraum des Pakets aufnehmen, damit sie wieder zusammengesetzt werden können. Dieser Vorgang kann ziemlich langsam sein und den Datendurchsatz weiter beeinträchtigen.
Der Digimesh-Stack von Digi ist etwas schneller, da er den Overhead reduziert und größere Pakete zulässt.
Ich bin mir nicht sicher, was Ihre beabsichtigte endgültige Anwendung hier ist, aber Zigbee ist überhaupt nicht für das Streamen von Daten ausgelegt. Es dient zum Senden kleiner Informationen, Sensormesswerte, Anweisungen usw., die in ein einziges Paket passen. Möglicherweise haben Sie einfach das falsche Protokoll für Ihre Anwendung ausgewählt.
UPDATE: Angesichts der jüngsten Erkenntnis, dass Zigbee nicht für das Streamen von Daten geeignet ist, würde ich vorschlagen, es in den Müll zu werfen und einen besseren Transceiver mit mehr Funktionalität, mehr Durchsatz und etwa 1/4 des Preises zu kaufen
Ich empfehle dringend, nach Möglichkeit die Flusskontrolle zu verwenden, um die verlorenen Pakete zu adressieren. Es besteht die Möglichkeit, dass ein Gerät in kleinen, aber erheblichen Zeiträumen, in denen es verarbeitet, nicht auf seine UART-Pins schaut und daher Bits / Bytes verpasst und Dinge aufhängen kann. Durch die Implementierung der Hardware-Flusskontrolle (RTS- und CTS-Pins) kann jedes Gerät dem anderen mitteilen, wann es für weitere Daten bereit ist oder nicht.
Sobald Sie die Flusskontrolle angeschlossen haben, werden Sie meiner Meinung nach den höheren Durchsatz erreichen, den Sie suchen =)
Ich arbeite mit Bluetooth-OBD-Geräten, die meine Android-App mit Fahrzeugnetzwerken verbinden, also arbeite ich ziemlich viel mit Wireless/Bluetooth.
Jader Dias
Jader Dias
Jader Dias
Jader Dias