MavLink Telemetriesender (AirModul) mit 868 Mhz
aktualisiert am 05.03.2015
Status: Projekt neu aufgelegt.


Ergänzungen:

  • 10.10.2013: Das Telemetriemodul von RCTimer hast sich verabschiedet. Als Sender ein RFM12BP-Modul eingesetzt

  • 08.03.2014: Die Versorgungsspannungen (12 und 3 Volt) machen Probleme. Fällt die Spannung des Flugaccu sinkt die Sendeleistung mit.

  • 20.02.2015: Als Sender bzw. Transceiver ein RFM23BP mit 5 Volt Singlespeisung eingebaut


    So ein Quad- oder Multicopter kann nicht segeln. Neigt sich die Accucapazität dem Ende, schalten die Motorenregler oder das Board kurzerhand die Spannung ab oder reduzieren zumindest die Leistung soweit, daß kaum noch eine vernünftige Landung möglich ist.
    Schon mehrfach bin ich mit Schrott vom Flugfeld zurückgekommen. Als muss eine Lösung her um frühzeitig erkennen zu können wann es Zeit zur Landung ist. Klar kann man das auch durch Probieren über die Flugzeit machen. Aber immer nur mit geringer Höhe fliegen, weil die Infos über den Accuzustand fehlt, macht auch keinen Spaß.

    Da gibt es ein tolles System mit der Bezeichnung "MinimOSD" welches die gewünschten Daten in das Videobild des Copters einblendet. Setzt aber voraus, dass ich immer mit viel Technik zu Flugfeld muss. Mindestens ein Videoempfänger oder ein Laptop ist Voraussetztung dafür die Daten angezeigt zu bekommen. Und auch vorausgesetzt, dass am Copter entweder ein Telemetriesender und/oder ein Videosender verbaut wurde. Dann hat man fast die Instrumente eines richtigen Cockpit-Bild vor Augen.
    Dazu kommt noch der recht hohe Kostenauswand. Jeder Hersteller hat seine eigene Technik, versucht mit speziellen und Anschlüssen Protokollen jede Kompatibilität zu vermeiden.
    Einmal ein System von der Firma ABC eigesetzt und es gibt kein Entrinnen auch wenn der Hersteller XYZ ein anderes interessantes Modul auf den Markt bringt.

    Wenn ich aber nur mal ein bisschen fliegen möchte ohne gleich einen riesigen technischen Aufwand treiben zu müssen, muss eine andere Lösung her um die wichtigen Daten über die Stromversorgung, Position und Höhe des Copters zu bekommen.

    Die bisher eigesetzten Module bzw. Sender (Airmodule) sind schneller ausgefallen als ich sie ein- und auslöten konnte oder eignen sich einfach nicht für diesen Anwendungszweck.
    Aus diesm Grunde habe ich noch einmal ganz von vorn begonnen. Neue Tranceiver (Transmitter hätte erst einmal gereicht) als Programmiersprache nun C anstatt Assembler. Dei neuen Transmitter (RFM23BP) lassen zudem eine deutlich höhere Übertragungsrate zu. Der Empfänger bekommt nun ein 5 Zoll Grafik-Display. Diese lässt für die Darstellung der Werte viel mehr Spielraum, die Stromaufnahme des Empfängers konnte ich von 240 mA auf ca. 60 mA senken.

    MavLink bedeutet "Micro Air Vehicle Communication". Dieses kommt auch im Modellbau zum Einsatz. Wer also einen Quadcopter bzw. Multicopter oder Flächenmodell fliegt und die Flugdaten auf seinen Laptop oder Monitor übertragen will, setzt in der Regel dieses Protokoll ein. Meist ohne großes Zutun, da den fertigen Funkmodulen oder dem Boardcontroller dieses Protokoll schon eingepflanzt wurde.

    Also geht es nur noch darum, auf der Empfangsseite (Bodenstation) die Daten zu empfangen und auszuwerten. Alles Weitere bezieht sich nun auf das APM-Board 2.5.

    Prototyp Telemetrie-Sender Der Prototyp des neue Telemtrie-Sender oder auch Airmodul im Aufbau. Mit 60 x 37 mm deutlich kleiner als die Vorgänger und deutlich mehr Sendeleistung. Bis zu 1 Watt (1000 mW) sind möglich. Die Ausgangsleistung kann selbstverständlich eingestellt werden. Zudem sollten vor dem Betrieb die Bestimmungen der Bundesnetzagentur beachtet werden!

    Sobald der Accu an den Copter angeschlossen wird, beginnt das Modul mit den eingestellten Parameter die Daten zu senden. Die rote LED signalisiert Daten vom APM, die blaue LED Daten zum Groundmodul.

    Vorausgesetzt wird natürlich auch, dass dem APM 2.5 auch die Daten über Strom, Spannung usw. bereit gestellt werden. Ich benutze dafür das APM-PowerModul.

    Funktion:

    Dieses ist recht einfach erklärt. Die vom APM 2.5 gelieferten seriellen Daten werden gefiltert, um nur noch die Daten senden zu müssen, die auch tatsächlich ausgewertet bzw. angezeigt werden. Das AMP 2.5 liefert auch Informationen, die für die Telemetrie unwichtig sind. Deshalb filtert der PIC 18F2420 die interessanten Daten raus. Der Transceiver wird vom PIC über eine SPI-Schnittstelle kontrolliert.

    Aber die Telemetrie-Übertragung hat noch einen weiteren Sinn: Sie liefert die Basisdaten für einen zukünftigen Antennentracker.
    Flughöhe, und die Koordinaten erlauben eine Antennennachführung am Boden um die teilweise doch schwachen Signale der Video Bildübertragung zu kompensieren. Diese Daten werden vom Antennentracker ausgewertet um die Empfangsantennen sehr genau zum Flugobjekt ausrichten zu können.
    Dazu später an anderer Stelle mehr....

    Und hier gleich auch noch die Antwort auf die immer wieder gestellte Frage, warum ein Transceiver und kein Transmitter:
    Zum einen habe ich keinen reinen Transmitter mit diesen Funktionen gefunden und zum anderen bleibt so die Option offen, Daten von der "Bodenstation" nach "oben" zu senden. Das ist noch Zukunftsmusik aber Ideen liegen schon in der Schublade......



    Die Hardware:

    Der Hardwareaufwand ist gering.
    Diese besteht aus einem 5 Volt Spannungsregler von TracoPower (TSR 1-2450). Dieser hat einen sehr hohen Wirkungsgrad und "verbrät" die Verlustleistung nicht in Wärme. Er kann Eingangsspannungen von bis zu 36 Volt vertragen und ist somit für alle Accutypen ab 7.2 Volt einsetzbar. Zur 3.3 Volt Speisung des PIC18F2420 wird ein LM1117 dahinter geschaltet. Die geringe Leistungsaufnahme erfordert keinen Leistungstyp.

    Ja, ich weiss. Das APM stellt auch die Versorgungsspannungen bereit. Das erscheint mir aber zu riskant. Bei voller Leistung wird die Stromversorgung des APM kurzzeiting stark belastet. Das Risiko hier Spannungseinbrüche zu riskieren ist einfach zu hoch.
    Dann noch ein PIC 18F2420 und ein RFM23BP-Transceiver. Ein paar Vorspann-Widerstände und ein paar Dioden, die ausschliesslich für die Programmierung des PIC erforderlich sind. Wer den Pic ausserhalb der Schaltung programmiert, kann den Anschluss J1 und die dazugehörigen Verbindungen komplett entfallen lassen. Pin 20 (Vdd) vom PIC kann dann direkt mit 3.3 Volt verbunden werden. Beide Dioden können somit auch entfallen.

    JP2 ist die Verbindung zum APM 2.5:
  • Pin 1 = Vdd 7.5 bis 26 Volt
  • Pin 2 = GND
  • Pin 3 = RX, also serielle Daten VOM APM 2.5 (aus Sicht des PIC 18F2420)
  • Pin 4 = TX, serielle Daten ZUM APM 2.5 (aus Sicht des PIC 18F2420)

    Die Antenne wird am besten direkt am Transceiver angebracht. Man benutzt entweder eine abgestimmte Antenne für 868 Mhz, es reicht aber auch ein stabiler Draht von 8 cm Länge.

    Je genauer die Antenne abgestimmt ist um so geringer kann die Sendeleistung eingestellt werden. Hinweise zur Antenne und eine Berechnung findet sich weiter unten.
    SW1 dient zu Einstellung der Sendeleistung. 3 Schalter erlauben eine 7-stufige Einstellung der Ausgangsleistung. Weitere Infos dazu bitten dem Datenblatt des RFM23BP entnehmen.

    Mit SW2 wird die Frequenz eigestellt. Die Einstellungen dazu befinden sich in der Tabelle weiter unten.

    Die beiden LED´s sind zur Kontrolle von den RS232-Signalen aus dem APM 2.5 und der Sendedaten. Nicht wichtig, nur eine optische Kontrolle.

    das betriebsfertige Airmodul Das fertige Airmodul:

    Oben links die Antennenbuchse, rechts daneben der RFM 23BP Transceiver, rechts oben der TracoPower- Spannungsregler. Unten der PIC 18F2420 und rechts daneben die Jumper. Blau für die Einstellung der Sendeleistung, die weissen für die Frequenzeinstellung.
    Unten links, die blaue Leiste ist ein Widerstandsarray. Damist spart man sich viel Verdrahtungsaufwand und Platz. Selbstverständlich können auch normale Widerstände eingesetzt werden.

    Anstatt der "Mäuseklaviere" habe ich Jumper verbaut. Diese benötigen weniger Platz, sind billiger und verrichten gleich gut ihren Dienst.




    Die Software:

    Ich programmiere ausschließlich PIC-Controller von MicroChip. Sicherlich nicht zur Freude der AVR-Gemeinde. Es ist ein einfaches Projekt und auch Menschen aus dem Paralleluniversum werden damit zurecht kommen. Das fertige HEX-File sende ich auf Anfrage gern zu, da muss keiner mehr Hand anlegen. Außer er möchte die Software ändern bzw. erweitern. Ich setzte den PIC 18F2420 ein, ein 16F-Typ hätte es zwar auch getan aber da wollte ich mir doch die Option der späteren Erweiterung offen halten, ohne gleich wieder einen neuen Chip einsetzten zu müssen.
    Die Daten werden über den RS232-Port empfangen, dekodiert und dann angezeigt. Allerdings kommen einige Werte im 4-Byte-Format, und so musste ich dem PIC einige 32-Bit Mathematik-Routinen gönnen um diese Werte auch anzeigen zu können.

    Die schlimmste Arbeit war das Dekodieren der Protokolldaten. Ich habe kaum verwertbare Dokumentation gefunden und musste aus diesem Grund erst einmal dahinter kommen wie die einzelnen Datensätze aufgebaut sind.

    Datensatzaufbau:
    Byte Name Inhalt Wert
    0 MAVLINK_STX Start-Byte (SyncByte) 0xFE
    1 len Datensatzlänge 0 - 255
    2 seq Datensatz-Nr 0 - 255
    3 SysId ?? 0 - 255
    4 CompId ?? 0 - 255
    5 MsgId Message-Id 0 - 255
    6 PayLoad NutzDaten ??
    7 + len CRC 1 - ??
    8 + len CRC 2 - ??

    Die mit ?? gekennzeichneten Werte konnte ich bisher noch nicht zuordnen bzw. spielen für meine Dekodierung/Auswertung erst einmal keine Rolle.
    Z.Zt. interessieren nur zwei Datensätze:
    - Message-Id 1. Dieser beinhaltet die Werte für Accuspannung, aktuellen Stromverbrauch und Restkapazität des Accu
    - Message-Id 24. Dieser beinhaltet die Werte für Uhrzeit, Höhe, Längengrad, Breitengrad, Satelliten in Sicht und Satfixed-Typ, und weiter Daten.

    Also braucht man nur den Datenstream abzuhören, auf das Startbyte warten, testen ob die Datensatzlänge stimmt und wenn alles passt die Daten zusammenrechnen, da die Werte im 32-Bit-Format kommen, das niederwertigste Byte zuerst.
    Nachdem das klar war, mussten nur noch die Position der Nutzdaten für die einzelnen Werte gefunden werden, was recht fix ging. Es gibt weitere interessante Daten, die ich aber noch nicht ganz verstanden habe und im Moment auch nicht als sonderlich wichtig erachte.


    Die Tabelle für die Sendeleistung:

    TX-Power (db) SW 1-1 SW 1-2 SW 1-3
    +1 close close close
    +7 close close open
    +13 close open close
    +19 close open open
    +25 open close close
    +28 open close open
    +29 open open close
    +30 open open open



    Frequenztabelle:

    Frequenz (Mhz) SW 2-1 SW 2-2 SW 2-3
    867,92 close close close
    867,96 close close open
    868,00 close open close
    868,04 close open open
    868,08 open close close
    868,12 open close open
    868,16 open open close
    869,20 open open open


    Praktische Erfahrungen:

    Im Moment liegen noch keinerlei pratische Erfahrungen vor. Ich weiss aber, dass die Module RFM23BP sehr zuverlässig arbeiten, da diese in meiner Haussteuerung und Wetterstation im Einsatz sind. Allerdings konnte das AirModul noch nicht getestet werden, das die "Bodenstation" noch nicht fertig ist. Diese soll ein 5 Zoll Grafik-Display bekommen. Leider noch nicht da.

    Aber ein Groundtest verlief sehr erfolgreich. Aufgezeichnete Daten eines früheren Fluges habe ich über das Airmodul abgespielt, als Empfänger dient das Groundmodul ohne Display. Die Empfangsdaten habe ich über die Serielle Schnittstelle auf einen Laptop angezeigt. Dann im Auto ein paar Runden gedreht. Im Fahrzeug war der Empfang nicht so gut, da nicht einmal eine Sichteverbindung zum Sender bestand. Aber nachdem ich den Empfänger an der Seitenscheibe befestigt hatte war der Empfang einwandfrei.
    Damit bin ich erst einmal zufrieden.



    Schaltplan:
    Den Schaltplan gibt es hier als PDF.
    Die Software (als Hexfile) sende ich gern auf Anfrage per Mail zu. Da ich immer mal wieder eine Kleinigkeit ändere ist dieser Weg für mich einfacher und muss nicht immer alle Softwaremodule auf dieser Seite aktualisieren.

    Fortsetzung folgt sobald erste Erfahrungen vorliegen......


    -------