Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Manufacturing Equipment >> Industrielle Ausrüstung

Overhead-Flüge verfolgen mit einem Raspberry Pi Zero Wireless, einem Software Defined Radio und FlightAware

Dieser Artikel zeigt Ihnen zwei Möglichkeiten, wie Sie mit einem Raspberry Pi Zero Wireless Flüge in Ihrer Nähe verfolgen können. Es zeigt auch, wie es eine 64×64 RGB-Matrix steuern kann.

Der Raspberry Pi Zero Wireless ist ein 10-Dollar-Mikrocomputer, der sehr viele Dinge kann. Dieser Artikel zeigt Ihnen zwei Möglichkeiten, wie Sie dieses Pi verwenden können, um Flüge in Ihrer Nähe zu verfolgen. Es zeigt auch, wie es eine 64×64 RGB-Matrix steuern kann, um Flugnummern anzuzeigen!

In diesem Artikel werde ich drei separate Projekte mit dem Raspberry Pi Zero Wireless durchführen. In Projekt 1 erstelle ich ein Flugzeug-Tracking-Gerät mit PiAware. In Projekt 2 werde ich Daten von diesen Flugzeugen sammeln. In Projekt 3 zeige ich Ihnen, wie Sie mit dem RPi Zero W eine 64×64 RGB-Matrix steuern.

Projekt 1:Raspberry Pi Zero Wireless Plane Tracker

Teil Kosten Notizen
Raspberry Pi Zero Wireless 10 $
SDR-Empfänger 21 $ Viele andere USB-SDR-Empfänger werden wahrscheinlich funktionieren
4GB microSD-Karte 6 $ Größere Karten funktionieren
USB-zu-MicroUSB-Adapter 5 $
MicroUSB-Hub (optional) 8 $ Der Pi Zero hat nur microUSB-Anschlüsse; um Zubehör anzubringen, benötigen Sie einen Hub/Konverter
Breitbandantenne (optional) 50 $ Antenne muss 1090 MHz abdecken
1090-MHz-Bandpassfilter (optional) 20 $

Ressourcen

Dieses Experiment wurde mit dem Raspberry Pi Zero Wireless durchgeführt. Der folgende Code sollte jedoch auf jedem Raspberry Pi Version 2 oder höher funktionieren. Wenn Sie einen Pi Zero ohne WLAN kaufen, können Sie ihn mit einem WLAN-USB-Netzwerk-Dongle hinzufügen.

Schritt 1:Bereiten Sie die SD-Karte vor

Laden Sie das neueste Raspbian Jessie auf Ihren Computer herunter.

Schreiben Sie das Bild auf Ihre SD-Karte (hier finden Sie Anleitungen für Linux, Mac OS und Windows).

Schritt 2:SD-Karte ändern

Erstellen Sie im Stammverzeichnis der SD-Karte eine Datei namens "ssh". Keine Dateierweiterung, kein Dateiinhalt. Diese Datei aktiviert SSH, wodurch Sie aus der Ferne auf den Pi zugreifen können.

Erstellen Sie eine Datei namens "wpa_supplicant.conf" mit folgendem Inhalt. Ändern Sie die Werte für YourWifiName und YourWifiPassword in den Namen und das Passwort, mit dem Sie sich mit Ihrem Wi-Fi-Netzwerk verbinden.

network={
ssid="IhrWifiName"
psk="IhrWifiPasswort"
key_mgmt=WPA-PSK
}

Schritt 3:Installieren und booten

Werfen Sie die SD-Karte aus Ihrem Computer aus und installieren Sie sie im Raspberry Pi Zero Wireless. Verbinden Sie den Raspberry Pi über den MicroUSB-Anschluss, der sich am nächsten zum Ende der Platine befindet, mit einer Stromquelle. Warten Sie ungefähr eine Minute, bis der Raspberry Pi gestartet und mit dem WLAN verbunden ist. Mit diesen Konfigurationsdateien ist es nicht erforderlich, mit Ihrem Gerät eine Tastatur, Maus oder ein Display zu verwenden.

Schritt 4:Lokalisieren Sie Ihren Pi

Identifizieren Sie die IP-Adresse Ihres Pi – dies kann erreicht werden, indem Sie sich bei Ihrem Router anmelden und die angeschlossenen Geräte betrachten, oder über einen IP-Scanner wie Look@Lan (Windows) oder nmap (Linux und Mac). Wenn Ihr Gerät nicht innerhalb von zwei oder drei Minuten angezeigt wird, trennen Sie die Stromversorgung, entfernen Sie die SD-Karte aus dem Pi, legen Sie sie erneut in Ihren Computer ein und überprüfen Sie das ssh und wpa_supplicant.conf Dateien.

Schritt 5:Verbinden Sie sich mit Ihrem Pi

Windows:Verwenden Sie ein Tool wie Putty, um eine Verbindung zu Ihrem Pi herzustellen. Laden Sie das Programm herunter und führen Sie es aus, geben Sie die IP-Adresse Ihres Pi ein und klicken Sie auf "Verbinden". Es erscheint ein Fenster, das Sie nach dem Sicherheitszertifikat fragt – klicken Sie auf "Ja".

Linux und Mac:Öffnen Sie ein Terminal und geben Sie "ssh [email protected]" oder "ssh pi@ipaddress" ein (z. B. "ssh [email protected]").

An der Eingabeaufforderung lautet der Standardbenutzername "pi" und das Standardpasswort "raspberry".

Schritt 6:Konfigurieren Sie Ihren Pi

Geben Sie "sudo raspi-config" ein und drücken Sie die Eingabetaste.

Ändern Sie Ihr Passwort, Ihre Zeitzone und Ihre Lokalisierung.

Wenn die Passwortabfrage erscheint, ist das aktuelle Passwort "raspberry"; Sie sollten es in etwas Sichereres ändern, um das Hacken Ihres Geräts zumindest geringfügig zu erschweren. Nebenbei bemerkt sollten Sie anstelle von Passwörtern Zertifikate zur Authentifizierung verwenden, aber darauf wird in diesem Artikel nicht eingegangen.

Geben Sie dann die folgenden Befehle ein und lassen Sie sie laufen:

wget http://flightaware.com/adsb/piaware/files/packages/pool/piaware/p/piaware-support/piaware-repository_3.3.0_all.deb
sudo dpkg -i piaware-repository_3.3.0_all. deb
sudo apt-get update
sudo apt-get dist-upgrade -y
sudo apt-get install -y piaware fail2ban libio-socket-ssl-perl
sudo piaware- config Allow-Auto-Updates ja
sudo piaware-config allow-manual-updates ja
sudo apt-get install dump1090-fa -y
sudo reboot

Nachdem der Rapsberry Pi den Bootvorgang abgeschlossen hat, öffnen Sie einen Webbrowser auf Ihrem Computer und navigieren Sie zu http://raspberrypi.local:8080 (oder ersetzen Sie raspberrypi.local durch die IP-Adresse Ihres Geräts). Zoomen Sie heraus und zoomen Sie dann in Ihren Standort hinein, während Flugzeuge auftauchen und dann von Ihrem Bildschirm verschwinden.

Um die Anzahl der Flugzeuge zu erhöhen, nehmen Sie Ihr Pi-, SDR- und Antennensystem mit nach draußen. Weitere Verbesserungen werden durch das Hinzufügen des 1090-MHz-Bandpassfilters und einer besseren Antenne erreicht.

Screenshot von P iAware -Empfänger, der am 14.03.17 (Pi Day!) ein Gebiet östlich von Los Angeles, Kalifornien, zeigt. Lineare Spuren oben zeigen Flugzeuge, die bereit sind, am LAX zu landen. Ebenfalls zu sehen ist ein im Kreis fliegendes Regierungsflugzeug.

Erstellen Sie abschließend ein FlightAware.com-Konto und verknüpfen Sie Ihren Empfänger mit Ihrem FlightAware.com-Konto.

ADS-B, PiAware und dump1090

An Flugzeugen angebrachte Transponder ermöglichen es ihnen, eine vierstellige oktale Kennung (Mode-A AKA "Squawk") plus Flughöhe (Modus-C), eine 24-Bit-eindeutige ICAO-Nummer (Modus-S) und die 24-Bit . auszusenden ICAO-Nummer mit Zusatzinformationen (Mode S Extended Squitter). Der letzte Modus wird auch als ADS-B bezeichnet.

Automatic Dependent Surveillance-Broadcast (ADS-B) nimmt die Position eines Flugzeugs (wie durch GPS, GLONASS usw. bestimmt), kombiniert sie mit Identifizierungsinformationen und sendet sie mit 1090 MHz. Im Gegensatz zu den anderen Transpondercodes, die nur als Antwort auf eine Abfrage durch ein Radarsignal gesendet werden, wird ADS-B etwa zweimal pro Sekunde gesendet.

PiAware und dump1090 verwenden ein auf 1090 MHz abgestimmtes Software Defined Radio (SDR), um die Sendungen aller Flugzeuge in der Nähe zu empfangen, zu dekodieren und an die Server von FlightAware zu senden. Die Informationen werden auf einer Webseite angezeigt, die auf dem Raspberry Pi an Port 8080 gehostet wird.

Illustration von John Macneil, www.aopa.org.

Bis zum 1. Januar 2020 müssen alle Flugzeuge mit ADS-B Out-Transpondern ausgestattet sein. Bis dahin verwendet FlightAware jedoch Multilateration, um den Standort von Flugzeugen zu bestimmen, die ihren Breiten- und Längengrad nicht übertragen. Multilateration verwendet die bekannte Position von mindestens drei Empfängern und die Empfangszeiten einer Nachricht, um die Position eines Flugzeugs zu berechnen.

Projekt 2:Verwenden des Pi Zero Wireless zum Sammeln von Flugzeugdaten von FlightAware.com

FlightAware.com verfügt über zwei Application Program Interfaces (API), die das Mining und die Nutzung von Daten ermöglichen:FlightXML und Firehose. Wählen Sie je nach Art der benötigten Informationen und der Anzahl der Abfragen, die Sie jeden Monat benötigen, zwischen den beiden aus. Für dieses Projekt wurde All About Circuits für einen Monat kostenloser Zugang gewährt. Um mitzumachen, müssen Sie FlightAware.com kontaktieren, um einen API-Schlüssel zu erhalten.

Ressourcen:

Schritt 1:Konnektivität testen

Stellen Sie über SSH eine Verbindung zu Ihrem Pi Zero her und testen Sie die Verbindung zur Firehose-API.

openssl s_client -host firehose.flightaware.com -port 1501 -tls1

Wenn Sie eine oder zwei Seiten mit Zertifizierungsdetails sehen, hat alles richtig funktioniert.

Schritt 2:Beispieldateien und -daten abrufen

FlightAware hostet Beispieldateien in GitHub. Beginnen Sie damit, die Beispieldateien mit Ihrem Benutzernamen und API-Schlüssel herunterzuladen und zu bearbeiten.

git clone http://github.com/flightaware/firehose_examples.git
cd firehose_examples/perl/example1
sudo nano example1.pl

Ändern Sie den Benutzernamen und apikey Felder mit Ihren Informationen übereinstimmen, dann beenden ([Strg]+[x]) und speichern.

Perl-Beispiel1.pl

Sie sollten Daten im Format JavaScript Object Notation (JSON) sehen:

$VAR1 ={
'aircrafttype' => 'B738',
'heading' => '105',
'pitr' => '1490038420',
'gs' => '334',
'Uhr' => '1490038413',
....
'hexid' => 'A44591',
'ident' => ' DAL751'
'alt' => '25100',
'lon' => '-117.38051',
'lat' => '33.53288'
};

Schritt 3:Konfigurieren Sie Ihren Pi zum Sammeln von Daten

Firehose trägt den treffenden Namen, weil es in sehr kurzer Zeit (~1 GB/Tag) eine überwältigende Datenmenge produzieren kann – Ihre Festplatte füllt und die Belastung Ihres Kontos erhöht. Wenn Sie also ein Skript zum Sammeln von Informationen erstellen, sollten Sie es in regelmäßigen Abständen überprüfen, da Sie Ihre Festplatte sehr schnell füllen und Ihr Spesenkonto leeren könnten.

Abhängig von der Größe Ihrer MicroSD-Karte und dem, was Sie sammeln möchten, müssen Sie möglicherweise zusätzlichen Speicherplatz hinzufügen oder zu raspi-config zurückkehren und Ihr Dateisystem erweitern (Option 7, Option A1).

In meinem Beispiel werde ich Daten für ein geografisches Gebiet von 2° × 2° sammeln, das LGB, LAX, ONT, SNA usw. umfasst (34° N ± 1°, 118° W ± 1°). Ich habe diese Region gewählt, weil sie meinem Empfangsgebiet am nächsten kommt.

Der Interessenbereich reicht von 33° N bis 35° N und 117° W bis 119° W.

Der folgende Code ist example1.pl, mit Änderungen in den Zeilen 18 und 45. Alle Zeilen werden unten angezeigt, damit die Leser mitlesen können, ohne die Datei herunterladen zu müssen. Erstellen Sie eine Kopie von example1.pl genannt position.pl und verwende Nano bearbeiten position.pl.

cp example1.pl position.pl
sudo nano position.pl

Nehmen Sie die erforderlichen Änderungen vor und beenden Sie mit [Strg]+[x].

 1 #!/usr/local/bin/perl 2 3 verwenden Sie streng; 4 IO::Socket::SSL verwenden; 5 JSON::PP verwenden; 6 use IO::Uncompress::Inflate qw($InflateError); 7 Daten verwenden::Kipper; 8 9 mein $username ='allaboutcircuits'; 10 my $apikey ='allaboutcircuitsreallylongapikey'; 11 my $komprimierung =0; 12 13 # Öffnen Sie die TLS-Socket-Verbindung zu FlightAware. 14 my $sock =IO::Socket::SSL->new('firehose.flightaware.com:1501') or die $!; 15 # print "Verbunden!\n"; 16 17 # Senden Sie den Initiierungsbefehl an den unkomprimierten Socket. 18 my $initcmd ="Live-Version 8.0 Benutzer $Benutzername Passwort $apikey events \"position\" latlong \"33 -117 35 -119\""; 19 if ($komprimierung) { 20 $initcmd .="Kompression komprimieren"; 21 } 22 binmode $sock; 23 print $sock "$initcmd\n"; 24 25 # Komprimierung aktivieren, falls angefordert. 26 mein $zsock; 27 if ($komprimierung) { 28 $zsock =new IO::Uncompress::Inflate $sock 29 oder sterben "IO::Uncompress::Inflate failed:$InflateError\n"; 30} sonst { 31 $zsock =$sock; 32 } 33 34 # Hauptschleife, liest Zeilen von JSON vom Server. 35 mein $i =1; 36 while (meine $line =$zsock->getline()) { 37 #print "LINE $i\n"; 38 #print "LINE $i:", $line, "\n"; 39 40 my $data =eval { decode_json $line }; 41 die "Fehler beim Decodieren von JSON:$line" if !defined($data) || $@; 42 43 print $data->{ident}." \t".$data->{lat}." \t " . $data->{lon} . " \T". $data->{alt}." \n"; 44 45 letztes if ($i++>=10); 46 } 47 $socke schließen; 48 49 # print "Alles erledigt.\n"; 

Zeile 18 beschränkt die Anfrage auf Flugzeuge in der geografischen Region zwischen 117° W und 119° W (gekennzeichnet mit -117 und -119). Zeile 43 wird modifiziert, um ein Verfahren zu demonstrieren, mit dem nur die interessierenden Felder gezielt werden. In diesem Fall zielen wir auf die Flugnummer, den Breitengrad, den Längengrad und die Höhe eines Flugzeugs ab. Zeile 45 fordert 10 Flugzeuge vom Server an (diese Zeile kann in einem endgültigen Skript auskommentiert werden).

Die nächsten beiden Befehle führen das Programm aus und ermöglichen Ihnen, den Fortschritt des Programms zu überwachen:

sudo perl position.pl>> position.txt &
tail -f position.txt

In der ersten Zeile verwendet der Superuser das Programm perl zum Ausführen des Programms position.pl und hänge (>>) die Ausgabe an die Datei position.txt und das &-Symbol bewirkt, dass das Programm im Hintergrund läuft.

Die zweite Zeile verwendet das Programm tail folgen (-f) Änderungen an der Datei position.txt , mit dem Sie die Ausführung des Befehls überwachen können. Wenn Sie fertig sind, verwenden Sie [Strg]+[c], um tail zu verlassen . Wenn Sie nicht mehr daran interessiert sind, Daten zu sammeln, verwenden Sie fg das Programm position.pl zu bringen in den Vordergrund und stoppen oder unterbrechen mit [Strg]+[c].

Die folgende .zip-Datei enthält modifizierte Programme und Ausgaben, die hoffentlich zeigen, wie geringfügige Änderungen in der Syntax verschiedene Informationen in den Fokus rücken können, zusammen mit Beispielausgaben der Programme.

Diese Dateien wurden mit geringfügigen Änderungen an der von FlightAware bereitgestellten example1.pl erstellt. Um Ihre eigenen zu erstellen, die nur die Daten erfassen, die Sie interessieren, verwenden Sie die FlightAware Firehose API-Dokumentation, um die entsprechenden Informationen im JSON-Format anzufordern, und verwenden Sie dann die richtige Syntax in der Datei, um nur die Informationen auszugeben, die Sie benötigen.

Projekt 3:Verwenden des Pi Zero Wireless zur Steuerung einer 64×64-RGB-Matrix

Teil Kosten Notizen
(2) 2× 32×32 RGB-Display-Matrix + Netzteil 75 $ (150 $) Benötigt insgesamt vier 32×32 RGB-Matrix, um eine 64×64-Pixel-Anzeige zu erstellen
Adafruit RGB-Matrix-HAT + RTC-Uhr 25 $ Datenblätter
20-poliges IDC-Kabel (Hub75) $7–$13 Die erforderliche Länge hängt von der Konfiguration der Paneele und dem Abstand zum Pi ab
0,1" Stiftleisten (40-polig, 2×20) $1 2,54 mm

Schritt 1:Adafruit Matrix HAT-Vorbereitung

Löten Sie die Stift- und Buchsenleisten am Adafruit HAT gemäß den Anweisungen auf Adafruit.com. Löten Sie dann einen Draht oder bringen Sie eine Brücke zwischen den Pins 4 und 18 an. Für dieses Projekt müssen Sie weder die DC-Buchse noch die Schraubklemmen anschließen.

Schritt 2:Vorbereitung des Raspberry Pi

Löten Sie die 2 × 20 Stiftleisten an ihren Platz.

Schritt 3:Vorbereitung der RGB-Matrix

Richten Sie die RGB-Matrizen so aus, dass die Pfeile in der unteren Reihe nach unten und die Pfeile in der oberen Reihe nach oben zeigen (siehe Bild hier). Verwenden Sie ein 2×10 IDC-Kabel, um den Ausgang des Adafruit HAT mit dem Eingang des ersten Boards zu verbinden. Verbinden Sie dann den Ausgang der ersten Karte mit dem Eingang der zweiten, den Ausgang der zweiten mit dem Eingang der dritten usw.

Die Rückseite des RGB-Matrix-Panels. Das Signal wandert von Brett zu Brett in einer "C"-Form.

Wenn Sie das Glück haben, einen Laserschneider oder eine CNC-Maschine zur Verfügung zu haben, habe ich die Zeichnungen für eine Rückplatte beigefügt, die alle vier verwendeten RGB-Matrixplatten aufnehmen kann. Die Befestigungslöcher werden durch Schlitze ersetzt, um eine Ausrichtung von einem gemeinsamen Mittelpunkt aus zu ermöglichen.

Vorlage für die Montage von vier 32×32-Panels zu einem großen 64×64-Panel; Verschiedene Plattenanordnungen sind möglich.

Hughes_4x4RGBMatrix.zip

Vollständige Dokumentation und Quellcode von Hennen Zeller.

Sobald alle elektrischen Verbindungen hergestellt sind, schalten Sie den Raspberry Pi ein. Versuchen Sie nach ungefähr einer Minute, sich mit Putty oder SSH beim Pi anzumelden.

Geben Sie nach der Eingabe Folgendes ein, um den Ton auf dem Pi zu deaktivieren (die Dokumentation weist auf einen Konflikt des Hardware-Subsystems mit dem Ton und der RGB-Matrix-Hardware hin).

Katze <blacklist snd_bcm2835
EOF
sudo update-initramfs -u

Verwenden Sie dann apt-get, um Python und Imaging-Dateien zu installieren.

sudo apt-get install -y build-essential libconfig++-dev python-dev python-imaging libgraphicsmagick++-dev libio-socket-ssl-perl

Holen Sie sich die notwendigen Dateien, um die RGB-Matrix auszuführen und sie zu kompilieren.

git-Klon https://github.com/hzeller/rpi-rgb-led-matrix
cd rpi-rgb-led-matrix
HARDWARE_DESC=adafruit-hat-pwm make -C Beispiele-api-use
sudo-Beispiele-api-use/demo -L -D0
cd utils/
HARDWARE_DESC=adafruit-hat-pwm make

Wenn Sie auch eine Kamera an Ihren Pi angeschlossen haben, können Sie optional ein 64×64-Pixel-Bild aufnehmen und an das Display füttern.

raspistill -w 64 -h 64 -o myimg.png
sudo ./led-image-viewer -L -f myimg.png

Die vorherigen beiden Zeilen erfassen ein 64×64-Bild auf dem Display und verwenden das Programm led-image-viewer (zusammengestellt im vorherigen Abschnitt), um es für immer auf dem großen Display (-L) anzuzeigen (-f).

Wie geht es weiter?

Sie haben jetzt einen 10-Dollar-Computer, der Flugzeuge um sich herum verfolgen kann (entweder mit einer Antenne und einem SDR-Empfänger oder mit einem API-Aufruf) und alle Informationen über die gewünschten auf Ihrem 64-Pixel-für-64-Pixel-Display oder auf dem Raspberry anzeigen kann HDMI-Ausgang des Pi Zero W.

Was Sie damit machen, ist nur durch Ihre Vorstellungskraft begrenzt.

Da dieser Artikel nur die Tools vorstellt, empfehle ich als ersten Schritt, die Dokumentation für das Display und FlightAware zu lesen und dann die Beispielprogramme beider zu öffnen, um deren Fähigkeiten besser zu verstehen.

Und vergessen Sie nicht, dass es sich bei Ihrem Raspberry Pi Zero um eine funktionierende Linux-Installation mit häufig verwendeten Befehlen wie Cron handelt , Grep , und Awk . Alles, was noch nicht auf Ihrem Pi ist, ist nur eine kurze apt-get install weg.

Schauen Sie sich das Video unten an, um den Höhepunkt dieser Projekte zu sehen!

Probieren Sie dieses Projekt selbst aus! Holen Sie sich die Stückliste.


Industrielle Ausrüstung

  1. Pixus:robuste softwaredefinierte Funklösungen
  2. Messen Sie Temperaturen mit einem 1-Draht-DS18B20-Sensor und Raspberry Pi
  3. Überwachen der Raumtemperaturen mit einem Raspberry Pi und Nagios
  4. Überwachen der Raumtemperaturen mit Moteinos und Raspberry Pi
  5. 433 MHz Smart Home Controller mit Sensorflare und einem RaspberryPi
  6. Auslesen von analogen Sensoren mit Raspberry Pi und Zabbix Supervisor
  7. Erstellen Sie Ihr erstes IOT mit einem Raspberry Pi, einem DHT11-Sensor und Thingspeak.
  8. Aeroponik mit Raspberry Pi und Feuchtigkeitssensor
  9. Erste Schritte mit dem RAK831 LoRa Gateway und RPi3
  10. Roboter bauen mit Raspberry Pi und Python