Antennen Tracker mit RSSI Peilung

    • Hallo Mezzo

      Erfahrungen austauschen ist immer eine gute Idee, also gerne. Berichte zum Einstieg über Deine Lösung für einen RSSI Tracker, oder in welche Richtung Deine Entwicklung geht. Du kannst dafür gerne meinen Thread hier verwenden oder einen neun eigenen Thread eröffnen, was Du lieber magst.
      Ich mag Rechtschreibfehler - besonders in Tattoos.
    • Hallo vodoo,

      baue gerade einen RSSI Tracker auf,
      soweit auch alles OK, bis auf Teile der Software, wo ich nicht ganz durchsteige.

      /* Note: In my case
      * at low RSSI the difference is L=227 R=239 =12 (nachvollziehbar)
      * at high RSSI the difference is L=722 R=745 =23 (nachvollziehbar)
      * --> 7 + (RSSI/45) = correction (YMMV). (woher kommt die 7 ? warum RSSI/45? Berechnungen nicht nachvollziehbar für mich)
      */
      #define RSSI_OFFSET_SCALE 22 (nicht nachvollziehbar für mich)
      #define RSSI_OFFSET_LEFT 1 (Ergebniss aus 7 + (RSSI/45) = correction (YMMV), wenn ich richtig liege)
      #define RSSI_OFFSET_RIGHT 0

      Vieleicht kannst du mir das kurz verständlich machen.

      Gruß Sven
    • Hallo @Svenson

      Bitte entschuldige die sehr späte Antwort. Ich war aus verschiedenen Gründen lange nicht mehr online.

      Ursprung für die Verwirrung ist, dass ich im aktiven Code die Werte immer wieder angepasst habe, das aber dann im Kommentar nicht mehr nachgetragen habe. Das von Dir angenommene Prinzip ist aber im Grundsatz richtig.

      Korrigiert (mit einer positiven Korrektur) wird der gemessene Wert desjenigen Empfängers, der weniger empfindlich ist und deshalb tendenziell immer den tieferen Wert liefert. Das ist in meinem Fall der linke Empfänger. Der rechte Empfänger erhält deshalb die Korrektur RSSI_OFFSET_RIGHT = 0 und wird nicht korrigiert. Wenn man auch RSSI_OFFSET_RIGHT gleichzeitig auf 0 setzt, dann ist die Korrektur gänzlich abgeschaltet.


      Die Korrektur für den linken Empfänger mit RSSI_OFFSET_LEFT=1und RSSI_OFFSET_SCALE 22 ist dann:


      KORREKTUR = RSSI_OFFSET_LEFT + (Gemessener_RSSI_Wert / RSSI_OFFSET_SCALE) oder in Zahlen:

      KORREKTUR = 1 + (Gemessener_RSSI_Wert / 22)


      Das Beispiel im Kommentar auf der Basis meiner ersten Messungen funktionierte wie folgt:


      Der linke Kanal liefert bei tiefem RSSI einen RSSI Wert von 227. Er bekommt einen Zuschlag von 7 + (227 / 45) = 7 + 5 = 12

      und die Addition der Korrektur ergibt 227 + 12 = 239, also den Wert des rechten Empfängers. Man beachte, dass das alles 16-Bit Integer-Arithmetik ist und bei der Division automatisch auf den nächst tieferen ganzzahligen Wert abgerundet wird.


      Gleiche Rechnung für den hohen RSSI-Wert:

      7 + (722 / 45) = 23 also 722 + 23 = 745, was dem Wert des rechten Kanals im Kommentartext entspricht.


      Ich habe dann später im aktiven Code mehrmals andere Konstanten eingesetzt, welche den Verlauf bei den Zwischenwerten und für grössere Entfernungen besser abgebildet haben.

      Die Idee ist folgende: Die Korrektur besteht aus einem konstanten Teil (das ist die Zahl 7 im Kommentar-Beispiel) und einem variablen Teil, der linear mit der Grösse des gemessenen RSSI-Wertes wächst. Die Steilheit des variablen Teils ergibt sich aus dem Divisor RSSI_OFFSET_SCALE und je kleiner der Divisor ist, desto steiler wird die Rampe.
      Den im Beispiel verwendeten Divisor 45 habe ich dann später auf 22 angepasst (d.h. die Rampe steiler gemacht), weshalb auch der konstante Teil angepasst werden musste: 7 --> 1

      Du kannst somit sowohl den konstanten Teil wie auch den Divisor beliebig wählen, wie es für Dich passt. Miss die RSSI Werte für die zwei Kanäle deines Empfängers mit einem gewissen Abstand (10 Meter oder mehr, RSSI sollte nicht mehr am Anschlag bei 100% sein) und wiederhole dann die Messung bei gleichem Abstand mit einem Abschwächer von 30 dB oder besser noch mehr am Sender (zwischen VTX und VTX-Antenne). Das gibt einen ersten Anhaltspunkt für die Bestimmung der zwei Zahlen (Konstante und Divisor). Es kann sein, dass z. Bsp. der linke Empfänger unabhängig von der Stärke des RSSI immer einen um 8 tieferen Wert anzeigt. Dann ist RSSI_OFFSET_LEFT = 8 und RSSI_OFFSET_SCALE = 30000 (oder sonst eine grosse Zahl, aber nicht grösser als 65535), wodurch der variable Teil immer 0 wird.

      Ich denke, dass damit die Frage nach dem Ursprung der beiden Rätselwerte gelöst ist. Man kann (uns muss) sie frei bestimmen.
      Ich mag Rechtschreibfehler - besonders in Tattoos.