Flightradar24 feeder

Flightradar24 ADS-B

Projektbeschreibung

Grundlage ist das Image für den Raspberry pi von Flightradar24. Über einen entsprechenden Empfänger plus Antenne empfängt diese die ADS-B-Messages der Flugzeuge in einem standortabhängigen Umkreis. Diese Daten werden an den Server von FR24 übermittelt und dort verarbeitet. Der Feeder läuft 24h am Tag, sieben Tage pro Woche. Ein Monitor am Pi ist nicht zwingend notwendig. Um die Funktion kontrollieren zu können, soll daher eine Statusmail versendet werden.

 

Gesendet wird diese Mail, wenn:

  • Die CPU-Temperatur über 90°C steigt, bevor der Pi heruntergefahren wird.
  • Als Antwort auf eine empfangene Mail mit dem Betreff "status" von einer definierten Absender-Adresse
  • Ein Knopf (kapazitiver Berührungssensor) an der Frontplatte der Ground Station gedrückt wird.
  • Weitere "Trigger" falls notwendig. 

Inhalt der Statusmail: 

  • Zeitstempel
  • CPU-Temperatur, GPU-Temperatur
  • CPU-Spannung, Spannung der drei SDRAm-Bänke
  • Zeit seit Neustart
  • Status des FR24-Feeders
  • Die letzten 10 Buffer, welche auf Port 30003 empfangen wurden
  • Übersicht der IP-Einstellungen

Weitere Zusatzfunktionen, welche implementiert sind:

  • Anzeige vorhandener Flugzeuge im Empfangsbereich über eine LED an der Frontplatte der Ground Station (blaue LED im "Radar"
  • Lüftersteuerung über PWM mit Notabschaltung bei Überhitzung. Kennlinie voll parametrierbar.
  • Reboot und Shutdown als Reaktion auf eine empfangene Mail mit dem Betreff "shutdown" bzw. "reboot" von einer definierten Absender-Adresse

 

Genutzte Pins des Raspberry Pi 3b+:

  • 12 = PWM Lüfter
  • 24 = LED "Traffic detected"
  • 25 = LED "Abruf E-Mail-Server"
  • 23 = LED "Lifebeat"

 

Achtung: Die Programme sind noch im Prototypenstatus. An manchen Stellen fehlen noch Mechanismen, um Fehler abzufangen. 

Grundlage ist das Image für den Raspberry pi von Flightradar24. Über einen entsprechenden Empfänger plus Antenne empfängt diese die ADS-B-Messages der Flugzeuge in einem standortabhängigen Umkreis. Diese Daten werden an den Server von FR24 übermittelt und dort verarbeitet. Der Feeder läuft 24h am Tag, sieben Tage pro Woche. Ein Monitor am Pi ist nicht zwingend notwendig. Um die Funktion kontrollieren zu können, soll daher eine Statusmail versendet werden.

 

Gesendet wird diese Mail wenn:

  • Die CPU-Temperatur über 90°C steigt, bevor der Pi heruntergefahren wird.
  • Als Antwort auf eine empfangene Mail mit dem Betreff "status" von einer definierten Absender-Adresse
  • Ein Knopf (Kapazitiver Berührungssensor) an der Frontplatte der Groundstation gedrückt wird.
  • Weitere "Trigger" falls notwendig. 

Inhalt der Statusmail: 

  • Zeitstempel
  • CPU-Temperatur, GPU-Temperatur
  • CPU-Spannung, Spannungen der drei SRAM-Bänke
  • Zeit seit Neustart, durchschnittliche Auslastung
  • Status des FR24-Feeders
  • Die letzten 10 Buffer, welche auf Port 30003 empfangen wurden
  • Übersicht der IP-Einstellungen

Weitere Zusatzfunktionen, welche implementiert sind:

  • Anzeige vorhandener Flugzeuge im Empfangsbereich über eine LED an der Frontplatte der Groundstation
  • Lüftersteuerung über PWM mit Notabschaltung bei Überhitzung.
  • Reboot und Shutdown als Reaktion auf eine empfangene Mail mit dem Betreff "reboot" bzw. "shutdown" von einer definierten Absender-Adresse

 

Genutzte Pins des Raspberry Pi 3b+:

  • 12 = PWM Lüfter
  • 24 = LED "Traffic detected"
  • 25 = LED "Abruf E-Mail-Server"
  • 23 = LED "Lifebeat"
  • 17 = Taster "Infomail senden"

 

Achtung: Die Programme sind noch im Prototypenstatus. An manchen Stellen fehlen noch Mechanismen, um Fehler abzufangen. 

ADS-B Grundlagen

This file is licensed under the Creative Commons Attribution-Share Alike 4.0 International license.

ADS-B Receiver

ADS-B Receiver auf Grundlage des Images von Flightradar24. Der verwendetet Pi ist ein 3B+. Der Empfänger ist ein FlightStick von Radarbox. Die zugehörige 1090MHz-Antenne wurde ebenfalls von Radarbox geliefert.  

 


Auszug Wikipedia zu ADS-B:

Primär wird ADS-B von der Flugsicherung eingesetzt zur Ortung und Überwachung von Luftfahrzeugen zur Erhöhung der Sicherheit durch verbesserte Informationen für den Piloten über die Flugzeugumgebung. ADS-B verursacht dabei geringere Kosten als konventionelles Radar und erhöht die Qualität der Ortung von Luftfahrzeugen durch eine im Vergleich zum Radar höhere Update-Rate. ADS-B wird heute in Regionen benutzt, in denen es keine flächendeckende Radarüberwachung gibt, z. B. Alaska oder Australien. Ein weiterer Einsatzbereich ist die Verwendung als Ersatz für das Bodenradar zur Überwachung der Luftfahrzeuge, sowie auch gleichzeitig von Bodenfahrzeugen auf dem Vorfeld und den Rollbahnen von Flughäfen.

Einige Webdienste wie z. B. Flightradar24 werten diese Daten ebenfalls aus.

Heutzutage gehören ADS-B-Transponder zur verpflichtenden Grundausstattung von Verkehrsflugzeugen und den meisten Businessjets.

Jeder Iridium-NEXT-Satellit wird mit einem ADS-B-Empfänger ausgestattet. Satellitengestütztes ADS-B ermöglicht die Flugverkehrskontrolle in Regionen, die heute nicht durch ein Flugsicherungsradar abgedeckt werden. Durch die ADS-B-Empfänger auf den Iridium-NEXT-Satelliten ist der weltweite, lückenlose Empfang von ADS-B-Signalen möglich.

Als Folge der Flugzeugabstürze MH370 und AH447 verlangen Flugsicherheitsbehörden, wie die EASA, von den Fluggesellschaften die stetige Überwachung ihrer Flugzeuge und deren aktuellen Positionen.[2] Einige Fluggesellschaften verwenden für die Erfüllung dieser Vorgaben satellitengestütztes ADS-B. Die Flugsicherheitsbehörde EASA fordert die Übermittlung der aktuellen Position des Flugzeugs im Zyklus von 15 Minuten. Damit soll bei einem allfälligen Flugzeugabsturz ohne Notruf/Notsignal das erforderliche Suchgebiet stark verkleinert werden, was den Rettungseinsatz der SAR-Einsatzkräfte beschleunigt.


Der Empfangsbereich an einem sonnigen Tag. 

Hildmannsfeld liegt zwischen den Vogesen und dem Schwarzwald. Daher begrenzen diese beiden Erhebungen die Reichweite des Empfängers in Richtung Westen und Osten, der Bereich in Nord-Südausdehnung ist deutlich größer.

Die Antenne

 

Die Antenne ist am höchsten Punkt des Dachbodens montiert. Der Kamin behindert den Empfang Richtung Osten. Dies  kann momentan nicht behoben werden.


Die eingehenden RAW-Daten an Port 30003

Hinter den Rohdaten:


Die "kleine" Station (Radar T-EDSB183)

Flightradar24 FR24 ADS-B

 Basestation im Raspberry-Gehäuse.

Ich plane bis zu vier weitere Basestations, verteilt auf meine Verwandtschaft, aufzustellen. Der Platzbedarf für die erste Version ist schon recht groß. Daher plane ich alle Funktionen der vorliegenden Version in dem offiziellen Gehäuse von Raspberry unterzubringen. Alle Features sollen vorhanden sein:

  • Lüfter (30x30mm) mit entsprechender Steuerung (On/Off)
  • Anzeige von vorhandenem Traffic auf Port 30003 über eine blaue LED
  • Mailversand mit dem Status der Basestation auf Knopfdruck
  • Anzeige des Mailcheck per LED
  • Eine Lifebeat-LED, die von der Funtionsüberwachung gesteuert wird

Um den Aufbau einfacher und stabiler zu machen, habe ich eine Leiterplatte erstellt, welche Treiber für die LED's und den Lüfter enthält. Der Schaltplan kann hier heruntergeladen werden:

Download
Schaltplan Driver-PCB
LED-PCB3.pdf
Adobe Acrobat Dokument 64.3 KB

Platzierung im Gehäuse:

 

Die Leiterplatte passt exakt in den Bereich des Gehäuses, der in die Öffnung im Gehäuseunterteil sitzt. 

 

Für die Verdrahtung zum Raspberry Pi nutze ich Drähte aus einem alten Patchkabel. Diese sind entweder günstig zu bekommen oder liegen oft ungenutzt herum.  Einen entsprechenden Gegenstecker für die Stiftleiste bekommt man online. 

 

Die Leiterplatte wird nur von den LED's gehalten. Diese habe ich zuvor mit entsprechendem Klebstoff in den Löchern verklebt. 

 

Der Lüfter und der Touch-Sensor werden ebenfalls verklebt. Beim Lüfter ist darauf zu achten, dass alle Kanten dicht verklebt sind. Sowohl für den Lüfter als auch für den Sensor sind entsprechende Anschlüsse auf der Leiterplatte vorgesehen.

 

Natürlich kann die Leiterplatte auch für andere Projekte genutzt werden.

 

Note: Das Bild links zeigt die Leiterplatte in einer "Durchsicht-Darstellung". Die Bauteile befinden sich tatsächlich auf der Rückseite, wenn man von oben auf die Front des Gehäuses schaut.


Beispielwarenkorb
Beispielwarenkorb

Zuzüglich Leiterplatte. Ich habe normalerweise welche vorrätig. Schreib mich an, wenn du eine benötigst. (7,00€ pro Leiterplatte. Ich mache keinen Gewinn damit)



Die "große" Station - für raue Umgebungen (Radar T-EDSB186)

Materialliste ADS-B Groundstation:

BOM

Menge Artikel Lieferant Preis
1 Raspberry Pi 3B+ Beliebig 80€
1 AirNav ADS-B 1090 MHz Outdoor-Antenne Amazon  70€
1 AirNav RadarBox FlightStick Amazon 25€
1 Wifehelper Motortreiberplatine Amazon 1,70€
1 Duttek Micro USB Panel Amazon 11€
1 Kleiner Schaltschrank Schaltschrank UNI-mini Amazon 35€
1 RJ45 Durchführung  Reichelt 11€
 1 Axiallüfter, 40x40x10mm, 5V, 13,9m3/h, 28,2dBA Reichelt  2,50€
    Kleinmaterial (LED's, Widerstände....) Reichelt  
       
     Summe  236,0€

Natürlich kann man ein normales Gehäuse verwenden und die Durchführungen weglassen. Aufgrund der Location, an der das Gerät betrieben wird, hat sich dieses Gehäuse angeboten. Bei einem Betrieb ohne Lüfter auf einem warmen Dachboden o.ä. sollte die Temperatur überwacht werden. 



"Traffic Detected" Remote Unit

Mein "großer" feeder hängt im Treppenaufgang zum Dachboden. Ich habe also keine Möglichkeit, den Traffic und die Funktion über die Traffic-LED des fedders zu überwachen. Eine kleine "remote-unit", welche den Stream auf Port 30003 des feeders über WLAN überwacht, spiegelt die Funktion der Traffic-LED in jeden Raum der Wohnung. Eine kleine grüne LED zeigt eine vorhandene WLAN-Verbinung an. Das Gehäuse hat die Abmessungen (BxHxT) 3,5cm x 2,5cm x 6cm Basierend auf einem ESP32 in einem kleinen Gehäuse für Kosten unter 10€. 

Geplante Features:

  • Zeitsteuerung, um die LED nachts auszuschalten.
  • Anzeige nur, wenn bestimmte Airlines überfliegen.
  • Mini-Display, welches das Callsign des überfliegenden Fliegers anzeigt.
Artikel Preis
ESP32 WROOM 6,33€
Gehäuse 0,95€
2 Stk. LED (blau & grün) 0,16€
2 Stk. Widerstand 470Ohm 0,72€
Summe 8,15€
Download
Small Tutorial how to bild your own.
Traffic Detected Remote Unit.pdf
Adobe Acrobat Dokument 660.3 KB


Die Programme [FUN-TIME] :-)

ACHTUNG: Ich bin KEIN professioneller Programmierer. Die Programme dienen der Problemlösung. Es geht mir nur darum, Probleme zu lösen und um den Spaß am Programmieren. Ich übernehme natürlich keine Verantwortung, sollte die Anwendung meiner Programme in deinen Projekten Schaden anrichten. Du hast Probleme mit meiner Art zu programmieren? Wenn du dich nur darüber aufregen möchtest, behalte deine Meinung gerne für dich. Für Leute, die sich prinzipiell über alles aufregen, habe ich keine Zeit. 

 

Hilfsprogramme für den Raspberry pi 3b+:

 


Lüftersteuerung für den Raspberry pi

Der Lüfter für die Groundstation wird anhand der CPU-Temperatur gesteuert (nicht geregelt). Unterhalb von "cpuTemp_null"  bleibt der Lüfter aus. Null bezieht sich auf den PWM. Unterhalb eines gewissen Tastverhältnisses würde der Lüfter nicht starten. Dieses Tastverhältnisses ist von Lüfter zu Lüfter unterschiedlich. Daher wird, bei Erreichen der Temperatur "cpuTemp_null", der Lüfter sanft auf 100% gefahren und bleibt für zwei Sekunden auf voller Leistung an. Diese Eckdaten der Steuerung können im Bereich "Setup" des Programms hinterlegt werden.

Danach wird der PWM auf das, über die Formel ermittelte Tastverhältnis heruntergefahren. Das kleinste Tastverhältnisses ist in "MinDuty" hinterlegt. Sollte es notwendig sein, kann das maximale Tastverhältnis von 100% auf einen anderen Wert geändert werden.  Ab der hinterlegten Temperatur von "cpuTemp_null" springt der PWM-Ausgang also auf den in "MinDuty" hinterlegten Wert. Alle Eckwerte der Kennlinie können über Konstanten eingestellt werden.

  

Steigt die Temperatur weiter, wird die Drehzahl im Bereich zwischen cpuTemp_null und cpuTemp_hundred von MinDuty bis 100% gesteuert. Hierfür ist folgende Formel im Programm hinterlegt:

        SMath-File steht über Git zum Download bereit.                CPU-Temp darf sich zwischen cpuTemp_null und cpuTemp_hundred bewegen.

Als Python-Code: FanOutput = (Temp - cpuTemp_null) * ((100.0-MinDuty) / (cpuTemp_hudred - cpuTemp_null)) + MinDuty

Temperaturen oberhalb und unterhalb der hinterlegten Grenzen werden für den PWM auf 0% bzw. 100% begrenzt. Im Grenzbereich ergibt sich ein bedarfsgerechtes Ein- bzw. Ausschalten des Lüfters. Höhere, gleichbleibende, Umgebungstemperaturen können zu einem stabilen Zustand führen. Eine Plausibilitätsprüfung fängt unzulässige Eingaben ab und setzt Standardwerte ein. Erreicht die CPU-Temperatur 90°C, wird der Pi heruntergefahren.

 

 

Fehlinformationen auf vielen Webseiten: CPU-Temperatur

 

Vorsicht: Der Befehl „vcgencmd measure_temp“ liest die Temperatur der GPU (graphics processing unit), nicht die Temperatur der CPU (central processing unit, also des eigentlichen Prozessors, zurück. Daher sucht das liest das Programm beide Temperaturen aus und stellt fest, welcher Wert der größere ist. Dieser wird dann zur Steuerung des Lüfters verwendet.


Der Schaltplan

Das Modul mit dem ULN2003A mus "nur" verdrahtet werden. Ich habe alle Drähte unter dem Modul an den entsprechenden angelötet und durch ein Loch auf der Basisplatte geführt. So sind keine Drähte sichtbar. Ich habe kleine Probleme festgestellt. In dem Moment, in dem der Lüfter läuft, flackern auch LED's, die normal AUS sein sollten. Ich kenne solche Effekte vom ULN2003A. Hier können Pull-Down-Widerstände an den Eingängen Abhilfe schaffen. Auch der Parallel-Widerstand zur LED (3k3) verhindert ein "glimmen" der LED bei kleinen Vorwärtsströmen. 

 

Treiber für Lüfter und LED's:

 

Normalerweise baslte ich kleine Schaltungen schnell selbst. Um die Nachbaubarkeit zu erleichtern nutze ich diese Baugruppe. Im Internet fertig aufgebaut für wenig Geld verfügbar. Der ULN2003A treibt als Open-Collector-Treiber sowohl die drei LED's als auch den Lüfter.


Mails per "Knopfdruck" versenden:

 

Berührt man den Aufkleber "Info Mail" an der Front, wird eine Mail an die hinterlegte Mailadresse gesendet.



Die Lüftersteuerung:


Streamüberwachung (Port 30003)

Empfangene ADS-B Messages werden vom Feeder über den Port 30003 als RAW-Daten ausgegeben. Siehe hierzu weiter oben den Screenshot aus PuttY. Das vorliegende Programm überwacht den Stream und schaltet, wenn Daten vorhanden sind, eine LED ein. 


Statusmail versenden

Der Feeder läuft 24/7 einfach vor sich hin. Keiner weiß, wie es ihm gerade geht. Die Idee ist, auf Knopfdruck oder einen anderen Trigger, eine Status-Mail zu versenden. Zunächst sammle ich alle Daten in einer Textdatei. Diese Datei besteht aus:

  • Header
  • Zeitstempel
  • CPU-Temperatur, GPU-Temperatur
  • CPU-Spannung, Spannung der drei SDRAm-Bänke
  • Laufzeit seit Neustart des Pi
  • Status des Fr24-Feeders (Ausgabe des Befehls fr24feed-status)
  • Übersicht IP-Adresse und Netzwerkeinstellungen

Die Textdatei wird im Anschluss als Anhang per Mail versendet. Hierzu habe ich eigens eine Mailadresse angelegt. 


Inhalt der versendeten Text-Datei:


Der Quellcode zur Erstellung der Textdatei:

Achtung: Der HOST muss die IP-Adresse des Raspberry sein.


Abfrage auf eingehende Mails über POP3:

Der Pi soll verschiedene Aktionen als Reaktion auf eingehende Mails von einer bestimmten Mailadresse ausführen. Die Unterscheidung der Befehle erfolgt anhand des Textes im Betreff der Mail.  Bisher wurden folgende Funktionen implementiert:

  • Betreff: status            => Befehl: Statusmail zusammenstellen und an hinterlegte Adresse senden
  • Betreff: shutdown   => Befehl: Der Pi fährt sofort herunter
  • Betreff: restart          => Befehl: Der Pi startet neu

Statusmail mit Anhang versenden

Die zusammengestellte Textdatei wird von diesem Programm versendet


Abfrage des Tasters

Die Abfrage des Tasters gestaltet sich denkbar einfach und erklärt sich fast von alleine.


Autostart über crontab

Die Programme werden nach dem booten über crontab gestartet. CheckMails.py braucht eine Internetverbindung. Bis diese steht wird vor dem Start weitere 60 Sekunden gewartet.


Laufende Kosten

Bei einem Strompreis von 38ct pro kWh ergeben sich 19,97€ Stromkosten für den Betrieb pro Jahr.



ToDo

Zur Komplettierung werden noch zwei Bauteile aus dem 3D-Drucker benötigt:

  • Eine Luftführung, welche die vom Lüfter angesaugte Luft durch das Gehäuse des Raspberry Pi zieht, um diesen gezielt zu kühlen.
  • Ein Halter für einen zusätzlichen Temperatursensor, montiert am Flight-Stick, um dessen Temperatur zu überwachen.