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

Günstiges Flugtracking: Raspberry Pi Zero Wireless, SDR und FlightAware

Dieser Artikel zeigt Ihnen zwei Wege, einen Raspberry Pi Zero Wireless zu nutzen, um Flüge in Ihrer Gegend zu tracken. Er demonstriert auch, wie er eine 64×64 RGB Matrix steuern kann.

Der Raspberry Pi Zero Wireless ist ein $10 Mikrocomputer, fähig zu vielen Dingen. Dieser Artikel zeigt Ihnen zwei Wege, diesen Pi zu nutzen, um Flüge in Ihrer Area zu tracken. Er demonstriert auch, wie er eine 64×64 RGB Matrix steuern kann, um Flugnummern anzuzeigen!

In diesem Artikel mache ich drei separate Projekte mit dem Raspberry Pi Zero Wireless. In Projekt 1 erstelle ich ein Plane-Tracking Device usando PiAware. In Projekt 2 sammle ich Daten von besagten Planes. In Projekt 3 zeige ich, wie man den RPi Zero W nutzt, um eine 64×64 RGB Matrix zu steuern.

Projekt 1: Raspberry Pi Zero Wireless Plane Tracker

PartCostNotes
Raspberry Pi Zero Wireless$10
SDR Receiver$21Viele andere USB SDR Receiver werden wahrscheinlich funktionieren
4GB microSD Card$6Größere Cards werden funktionieren
USB-to-MicroUSB Adapter$5
MicroUSB Hub (optional)$8Der Pi Zero hat nur MicroUSB Ports; um Accessoires anzuschließen, brauchen Sie Hub/Converter
Wideband Antenne (optional)$50Antenna muss 1090 MHz abdecken
1090 MHz Bandpass Filter (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 später funktionieren. Wenn Sie einen Pi Zero ohne Wireless kaufen, können Sie es mit einem Wireless USB Network Dongle hinzufügen.

Schritt 1: SD Karte vorbereiten

Laden Sie das neueste Raspbian Jessie auf Ihren Computer herunter.

Schreiben Sie das Image auf Ihre SD Karte (Guides für Linux, Mac OS und Windows).

Schritt 2: SD Karte modifizieren

Erstellen Sie eine Datei namens „ssh“ im Root Directory der SD Karte. Keine File Extension, keine File Contents. Diese Datei aktiviert SSH, was Remote Access zum Pi erlaubt.

Erstellen Sie eine Datei namens „wpa_supplicant.conf“ mit folgendem Inhalt. Ändern Sie die Werte für YourWifiName und YourWifiPassword zu Name und Passwort, die Sie nutzen, um zu Ihrem Wi-Fi Netzwerk zu verbinden.

network={
    ssid="YourWifiName"
    psk="YourWifiPassword"
    key_mgmt=WPA-PSK
}

Schritt 3: Installieren und Booten

Ejecten Sie die SD Karte von Ihrem Computer und installieren Sie sie im Raspberry Pi Zero Wireless. Verbinden Sie den Raspberry Pi mit einer Stromquelle über den MicroUSB Port, der dem Boardende am nächsten ist. Warten Sie ca. eine Minute, bis der Raspberry Pi gebootet und mit Wi-Fi connected ist. Mit diesen Konfigurationsdateien ist kein Keyboard, Mouse oder Display mit Ihrem Device nötig.

Schritt 4: Ihren Pi Locaten

Identifizieren Sie die IP Adresse Ihres Pi – dies kann accomplished werden, indem Sie sich in Ihren Router einloggen und Attached Devices ansehen, oder durch einen IP Scanner wie Look@Lan (Windows) oder nmap (Linux und Mac). Wenn Ihr Device nicht innerhalb von zwei bis drei Minuten erscheint, trennen Sie Power, entfernen Sie die SD Karte vom Pi, und reinserten Sie sie in Ihren Computer und double-check die ssh und wpa_supplicant.conf Files.

Schritt 5: Mit Ihrem Pi Verbinden

Windows: Nutzen Sie ein Tool wie Putty, um zu Ihrem Pi zu verbinden. Downloaden und starten Sie das Programm, tippen Sie die IP Adresse Ihres Pi ein, und klicken Sie „connect“. Ein Fenster erscheint, das nach Security Certificate fragt – klicken Sie „yes“.

Linux und Mac: Öffnen Sie ein Terminal und tippen Sie „ssh pi@raspberrypi.local“ oder „ssh pi@ipaddress“ (z. B. „ssh pi@192.168.0.52“).

An der Prompt, Default Username ist „pi“ und Default Password ist „raspberry“.

Schritt 6: Ihren Pi Konfigurieren

Tippen Sie „sudo raspi-config“ und drücken Sie Enter.

Ändern Sie Ihr Passwort, Timezone und Localization.

Wenn der Passwort Prompt erscheint, ist das aktuelle Passwort „raspberry“; Sie sollten es zu etwas Sichererem ändern, um es zumindest marginal schwierig zu machen, Ihr Device zu hacken. Als Side Note: Statt Passwörtern sollten Sie Zertifikate für Authentication nutzen, aber das wird in diesem Artikel nicht diskutiert.

Dann tippen Sie folgende Commands und erlauben Sie ihnen zu laufen:

wget https://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 yes
sudo piaware-config allow-manual-updates yes
sudo apt-get install dump1090-fa -y
sudo reboot

Nachdem der Raspberry Pi den Boot Prozess beendet hat, öffnen Sie einen Webbrowser auf Ihrem Computer und navigieren Sie zu https://raspberrypi.local:8080 (oder ersetzen Sie raspberrypi.local mit der IP Adresse Ihres Devices). Zoomen Sie aus und dann in Ihre Location, während Planes anfangen zu erscheinen und dann von Ihrem Screen zu verschwinden.

Um die Anzahl der Planes zu erhöhen, nehmen Sie Ihren Pi, SDR und Antenna System nach draußen. Weitere Verbesserungen finden sich durch Hinzufügen des 1090 MHz Bandpass Filters und einer besseren Antenne.

Günstiges Flugtracking: Raspberry Pi Zero Wireless, SDR und FlightAware

Screenshot von PiAware Receiver, zeigt ein Gebiet östlich von Los Angeles, Kalifornien, am 3/14/17 (Pi Day!). Lineare Tracks oben zeigen Planes, bereit zu landen bei LAX. Auch sichtbar ist ein Regierungsplane, der in Kreisen fliegt.

Schließlich, erstellen Sie einen FlightAware.com Account und assoziieren Sie dann Ihren Receiver mit Ihrem FlightAware.com Account.

ADS-B, PiAware und dump1090

Transponder, an Aircraft affixed, erlauben ihnen, einen vierstelligen oktalen Identifier (Mode-A AKA „Squawk“) Identifier plus Altitude (Mode-C), eine 24-bit einzigartige ICAO Nummer (Mode-S) und die 24-bit ICAO Nummer mit zusätzlicher Information (Mode S Extended Squitter) zu broadcasten. Der letzte Mode ist auch als ADS-B bekannt.

Automatic Dependent Surveillance-Broadcast (ADS-B) nimmt eine Aircraft Position (wie bestimmt durch GPS, GLONASS, etc.), kombiniert sie mit identifizierender Information, und broadcastet sie bei 1090 MHz. Im Gegensatz zu den anderen Transponder Codes, die nur als Reply auf eine Interrogation durch ein Radar Signal transmitted werden, wird ADS-B approximativ zweimal pro Sekunde gesendet.

PiAware und dump1090 nutzen ein Software Defined Radio (SDR) getunt auf 1090 MHz, um Broadcasts aller Aircraft in der Nähe zu empfangen und zu decoden und sie an FlightAware's Server zu senden. Die Information wird auf einer Web Page gehostet auf dem Raspberry Pi an Port 8080 displayed.

Günstiges Flugtracking: Raspberry Pi Zero Wireless, SDR und FlightAware

Illustration von John Macneil, www.aopa.org.

Alle Aircraft müssen bis January 1, 2020 mit ADS-B Out Transpondern ausgestattet sein. Aber bis dahin nutzt FlightAware Multilateration, um die Location von Planes zu bestimmen, die ihre Latitude und Longitude nicht broadcasten. Multilateration nutzt die bekannte Position von mindestens drei Receivern und die Empfangszeiten einer Message, um die Position eines Planes zu berechnen.

Projekt 2: Pi Zero Wireless nutzen, um Plane Data von FlightAware.com zu sammeln

FlightAware.com hat zwei Application Program Interfaces (API), die Data Mining und Utilization erlauben: FlightXML und Firehose. Wählen Sie zwischen den beiden basierend auf der Art der Information, die Sie benötigen, und wie viele Queries Sie monatlich brauchen. Für dieses Projekt erhielt All About Circuits kostenlosen Zugang für einen Monat. Um mitzumachen, müssen Sie FlightAware.com für einen API Key kontaktieren.

Ressourcen:

Schritt 1: Connectivity Testen

Verbinden Sie zu Ihrem Pi Zero über SSH und testen Sie Connectivity zum Firehose API.

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

Wenn Sie eine oder zwei Seiten Certification Details sehen, hat alles korrekt funktioniert.

Schritt 2: Sample Files und Data Holen

FlightAware hostet Sample Files auf GitHub. Beginnen Sie mit Downloaden und Editieren der Sample Files mit Ihrem Username und API Key.

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

Ändern Sie die username und apikey Felder zu matchen Ihre Information, dann Exit ([Ctrl]+[x]) und Save.

perl example1.pl

Sie sollten Data in JavaScript Object Notation (JSON) Format sehen:

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

Schritt 3: Ihren Pi Konfigurieren, um Data zu Sammeln

Firehose ist aptly named, da es eine überwältigende Menge Data in sehr kurzer Zeit produzieren kann (~1 GB/Tag) – füllt Ihren Disk und erhöht Charges zu Ihrem Account. Also, wenn Sie ein Script erstellen, um Information zu sammeln, sollten Sie es in regelmäßigen Intervallen checken, da Sie sehr schnell Ihren Disk füllen und Ihr Expense Account leeren könnten.

Abhängig von der Größe Ihrer MicroSD Card und was Sie zu sammeln hoffen, könnten Sie Additional Storage hinzufügen oder zurück zu raspi-config und Expand Your Filesystem (Option 7, Option A1) gehen.

Für mein Beispiel werde ich Data für ein 2° × 2° Geographic Area sammeln, das LGB, LAX, ONT, SNA, etc. inkludiert (34° N ± 1°, 118° W ± 1°). Ich wählte diese Region, weil sie mein Empfangsbereich approximiert.

Günstiges Flugtracking: Raspberry Pi Zero Wireless, SDR und FlightAware

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

Der folgende Code ist example1.pl, mit Änderungen an Line 18 und 45. Alle Lines sind unten gezeigt, damit Leser folgen können, ohne die File herunterladen zu müssen. Erstellen Sie eine Kopie von example1.pl namens position.pl und nutzen Sie nano zu Edit position.pl.

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

Machen Sie die notwendigen Edits und Exit mit [Ctrl]+[x].

 1 #!/usr/local/bin/perl
 2 
 3 use strict;
 4 use IO::Socket::SSL;
 5 use JSON::PP;
 6 use IO::Uncompress::Inflate qw($InflateError);
 7 use Data::Dumper;
 8 
 9 my $username = 'allaboutcircuits';
10 my $apikey = 'allaboutcircuitsreallylongapikey';
11 my $compression = 0;
12 
13 # Open the TLS socket connection to FlightAware.
14 my $sock = IO::Socket::SSL->new('firehose.flightaware.com:1501') or die $!;
15 # print "Connected!\n";
16 
17 # Send the initiation command to the uncompressed socket.
18 my $initcmd = "live version 8.0 user $username password $apikey events \"position\" latlong \"33 -117 35 -119\"";
19 if ($compression) {
20 $initcmd .= " compression compress";
21 }
22 binmode $sock;
23 print $sock "$initcmd\n";
24 
25 # Activate compression, if requested.
26 my $zsock;
27 if ($compression) {
28 $zsock = new IO::Uncompress::Inflate $sock
29 or die "IO::Uncompress::Inflate failed: $InflateError\n";
30 } else {
31 $zsock = $sock;
32 }
33 
34 # Main loop, reading lines of JSON from the server.
35 my $i = 1;
36 while (my $line = $zsock->getline()) {
37 #print "LINE $i\n";
38 #print "LINE $i: ", $line, "\n";
39
40 my $data = eval { decode_json $line };
41 die "Failed to decode JSON: $line" if !defined($data) || $@;
42
43 print $data->{ident}." \t".$data->{lat}." \t " . $data->{lon} . " \t". $data->{alt}." \n";
44
45 last if ($i++ >= 10);
46 }
47 close $sock;
48
49 # print "All done.\n"; 

Line 18 limitiert den Request auf Planes in der Geographic Region zwischen 117° W und 119° W (denoted by -117 und -119). Line 43 ist modifiziert, um eine Methode zu demonstrieren, nur die Fields of Interest zu targeten. In diesem Fall targeten wir Flugnummer, Latitude, Longitude und Altitude eines Planes. Line 45 requested 10 Planes vom Server (diese Line kann in einem finalen Script commented out werden).

Die nächsten zwei Commands execute das Programm und erlauben Ihnen, den Progress zu monitoren:

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

Die erste Line hat den Superuser das Programm perl nutzen lassen, um position.pl zu starten und Output an die File position.txt zu appenden (>>) und das & Symbol veranlasst das Programm, im Background zu laufen.

Die zweite Line nutzt das Programm tail, um (-f) Changes an der File position.txt zu folgen, was Ihnen erlaubt, das Command für Completion zu monitoren. Wenn Done, nutzen Sie [Ctrl]+[c] zum Exit tail. Wenn Sie nicht mehr an Datensammlung interessiert sind, nutzen Sie fg, um das Programm position.pl in den Foreground zu bringen und zu stoppen oder mit [Ctrl]+[c] zu breaken.

Die unten .zip File enthält modifizierte Programme und Output, die hoffentlich demonstrieren, wie slight Changes in Syntax unterschiedliche Information in Focus bringen können, entlang mit Sample Output von den Programmen.

Diese Files wurden mit Minor Modifications an example1.pl von FlightAware gemacht. Um Ihre eigene zu machen, die nur Data captures, die Sie interessieren, nutzen Sie FlightAware Firehose API Documentation, um die appropriate Information in JSON Format zu requesten, und dann die korrekte Syntax inside der File zu nutzen, um nur die Information zu Outputen, die Sie brauchen.

Projekt 3: Pi Zero Wireless nutzen, um eine 64×64 RGB Matrix zu steuern

PartCostNotes
(2) 2× 32×32 RGB Display Matrix + Power Supply$75 ($150)Erfordert vier total 32×32 RGB Matrix zu 64×64 Pixel Display erstellen
Adafruit RGB Matrix HAT + RTC Clock$25Datasheets
20-pin IDC Cable (Hub75)$7-$13Die benötigte Länge hängt von Konfiguration der Panels und Distanz zum Pi ab
0.1" Male Headers (40-pin, 2×20)$12,54 mm

Schritt 1: Adafruit Matrix HAT Preparation

Löten Sie Male und Female Headers auf dem Adafruit HAT gemäß Instruktionen auf Adafruit.com. Dann löten Sie einen Wire oder attachen einen Jumper zwischen Pins 4 und 18. Für dieses Projekt benötigen Sie weder DC Barrel Jack noch Screw Terminal Konnektoren anzuschließen.

Schritt 2: Raspberry Pi Preparation

Löten Sie die 2×20 Male Headers in Place.

Schritt 3: RGB Matrix Preparation

Orientieren Sie die RGB Matrizen so, dass die Pfeile auf der Bottom Row nach unten zeigen und die Pfeile auf der Top Row nach oben (see Image hier). Nutzen Sie ein 2×10 IDC Cable, um den Output des Adafruit HAT zum Input des First Board zu verbinden. Dann verbinden Sie Output des First Board zum Input des Second, Output des Second zum Input des Third, etc.

Günstiges Flugtracking: Raspberry Pi Zero Wireless, SDR und FlightAware

Die Rückseite des RGB Matrix Panels. Das Signal reist von Board zu Board in einer „C“ Form.

Wenn Sie das Glück haben, einen Laser Cutter oder CNC Machine zu Ihrer Verfügung zu haben, habe ich Drawings für eine Back Plate inkludiert, die alle vier RGB Matrix Plates halten kann. Die Mounting Holes sind mit Slots ersetzt, um Alignment von einem Common Center Point zu erlauben.

Günstiges Flugtracking: Raspberry Pi Zero Wireless, SDR und FlightAware

Template für Mounting vier 32×32 Panels zu einem Large 64×64 Panel; Various Panel Arrangements sind möglich.

Hughes_4x4RGBMatrix.zip

Full Documentation und Source Code von Hennen Zeller.

Once alle elektrischen Verbindungen gemacht wurden, Power On den Raspberry Pi. Nach approximativ einer Minute, Attempt to Log onto den Pi mit Putty oder SSH.

Once In, tippen Sie Folgendes, um Sound auf dem Pi zu disable (Documentation indicates a Hardware Subsystem Conflict mit Sound und RGB Matrix Hardware).

cat << EOF | sudo tee /etc/modprobe.d/blacklist-rgb-matrix.conf
blacklist snd_bcm2835
EOF
sudo update-initramfs -u

Dann nutzen Sie apt-get, um Python und Imaging Files zu installieren.

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

Holen Sie die notwendigen Files, um die RGB Matrix zu runnen und compilieren Sie sie.

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

Optional, wenn Sie auch eine Camera an Ihrem Pi connected haben, können Sie ein 64×64 Pixel Image capture und es zum Display feeden.

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

Die vorherigen zwei Lines capture ein 64×64 Image zum Display und nutzen das Programm led-image-viewer (compiled in der vorherigen Section) um es auf dem Large Display (-L) Forever (-f) anzuzeigen.

Was kommt als Nächstes?

Sie haben nun einen $10 Computer, der (entweder mit Antenne und SDR Receiver oder mit einem API Call) Aircraft um Sie herum tracken und jede Information über jene auf Ihrem 64-Pixel by 64-Pixel Display oder auf dem Raspberry Pi Zero W HDMI Output anzeigen kann.

Was Sie damit machen, ist nur durch Ihre Imagination limitiert.

Da dieser Artikel nur die Tools introduced, ist der erste Step, den ich empfehle, die Documentation für das Display und FlightAware zu lesen und dann die Example Programme von beiden zu öffnen, um ihre Capabilities besser zu verstehen.

Und vergessen Sie nicht, dass Ihr Raspberry Pi Zero eine funktionierende Linux Installation ist, komplett mit oft-used Commands wie Cron, Grep und Awk. Alles, was nicht bereits auf Ihrem Pi ist, ist nur ein kurzer apt-get install weg.

Checken Sie das Video unten, um die Krönung dieser Projekte zu sehen!

Probieren Sie dieses Projekt selbst aus! Holen Sie die BOM.

Industrielle Ausrüstung

  1. Pixus Technologies: State-of-the-Art Ruggedized SDRs für Mission-Critical Environments
  2. Mehrere DS18B20 1-Wire Sensoren an Raspberry Pi anschließen für präzises Temperaturmonitoring
  3. Raumeffizient Temperaturen mit Raspberry Pi und Nagios überwachen
  4. Home Energy Centre: Solar PV, Thermische Panels & Raumtemperaturen mit Raspberry Pi & Moteino überwachen
  5. 433 MHz Smart-Home-Controller mit Sensorflare und Raspberry Pi selbst bauen
  6. Analoge Sensoren mit Raspberry Pi und Zabbix auslesen – Schritt-für-Schritt-Anleitung
  7. Erstes IoT-Projekt mit Raspberry Pi, DHT11 und ThingSpeak bauen
  8. Automatisiertes Aeroponik-System mit Raspberry Pi und Feuchtigkeitssensor bauen
  9. LoRa-Gateway mit RAK831-Modul auf Raspberry Pi 3 bauen – Schritt-für-Schritt-Anleitung
  10. Roboter mit Raspberry Pi und Python bauen: Komplette Anleitung