Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Manufacturing Equipment >> Industrieel materiaal

Accurate vlucht-tracking op budget: Raspberry Pi Zero Wireless, SDR en FlightAware

Dit artikel toont twee manieren om een Raspberry Pi Zero Wireless te gebruiken voor het tracken van vluchten in uw omgeving. Het demonstreert ook hoe het een 64×64 RGB-matrix kan besturen.

De Raspberry Pi Zero Wireless is een $10 microcomputer capabel van veel dingen. Dit artikel toont twee manieren om deze Pi te gebruiken voor het tracken van vluchten in uw omgeving. Het demonstreert ook hoe het een 64×64 RGB-matrix kan besturen om vluchtnummers te tonen!

In dit artikel doe ik drie afzonderlijke projecten met de Raspberry Pi Zero Wireless. In Project 1 maak ik een vliegtuig-tracking-apparaat met PiAware. In Project 2 verzamel ik data van die vliegtuigen. In Project 3 laat ik zien hoe de RPi Zero W een 64×64 RGB-matrix kan besturen.

Project 1: Raspberry Pi Zero Wireless Vliegtuig-tracker

Onderdeel Kosten Opmerkingen
Raspberry Pi Zero Wireless $10  
SDR-ontvanger $21 Veel andere USB SDR-ontvangers zullen waarschijnlijk werken
4GB microSD-kaart $6 Grotere kaarten werken ook
USB-naar-MicroUSB-adapter $5  
MicroUSB-hub (optioneel) $8 De Pi Zero heeft alleen microUSB-poorten; om accessoires aan te sluiten, heb je een hub/converter nodig
Wideband-antenne (optioneel) $50 Antenne moet 1090 MHz dekken
1090 MHz band-pass filter (optioneel) $20  

Bronnen

  • Raspbian Jessie (Installatiegids)
  • PiAware-installatie

Dit experiment werd gedaan met de Raspberry Pi Zero Wireless. De volgende code zou echter op elke Raspberry Pi versie 2 of later moeten werken. Als u een Pi Zero zonder wireless koopt, kunt u het toevoegen met een draadloze USB-netwerk-dongle.

Stap 1: De SD-kaart voorbereiden

Download de nieuwste Raspbian Jessie naar uw computer.

Schrijf de image naar uw SD-kaart (hier zijn gidsen voor Linux, Mac OS en Windows).

Stap 2: De SD-kaart wijzigen

Maak een bestand genaamd "ssh" in de root-directory van de SD-kaart. Geen bestandsextensie, geen bestandsinhoud. Dit bestand activeert SSH, wat u in staat stelt om de Pi remote te benaderen.

Maak een bestand genaamd "wpa_supplicant.conf" met de volgende inhoud. Wijzig de waarden voor YourWifiName en YourWifiPassword naar de naam en het wachtwoord die u gebruikt om verbinding te maken met uw Wi-Fi-netwerk.

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

Stap 3: Installeren en Opstarten

Eject de SD-kaart van uw computer en installeer het in de Raspberry Pi Zero Wireless. Verbind de Raspberry Pi met een voedingsbron via de MicroUSB-poort dichtst bij het einde van het bord. Wacht ongeveer één minuut voor de Raspberry Pi om op te starten en verbinding te maken met Wi-Fi. Met deze configuratiebestanden is er geen behoefte aan toetsenbord, muis of display met uw apparaat.

Stap 4: Uw Pi lokaliseren

Identificeer het IP-adres van uw Pi – dit kan bereikt worden door in te loggen op uw router en te kijken naar aangesloten apparaten, of via een IP-scanner zoals Look@Lan (Windows) of nmap (Linux en Mac). Als uw apparaat niet verschijnt binnen twee of drie minuten, koppel de stroom, haal de SD-kaart uit de Pi, en steek hem weer in uw computer en controleer de ssh en wpa_supplicant.conf bestanden dubbel.

Stap 5: Verbinden met uw Pi

Windows: Gebruik een tool zoals Putty om verbinding te maken met uw Pi. Download en start het programma, typ het IP-adres van uw Pi, en klik op "connect". Er verschijnt een venster dat vraagt om het beveiligingscertificaat – klik op "yes".

Linux en Mac: Open een terminal en typ "ssh pi@raspberrypi.local" of "ssh pi@ipadres" (bijv. "ssh pi@192.168.0.52").

Bij de prompt is de standaard-gebruikersnaam "pi" en het standaard-wachtwoord "raspberry".

Stap 6: Uw Pi configureren

Typ "sudo raspi-config" en druk enter.

Wijzig uw wachtwoord, tijdzone en localisatie.

Wanneer de wachtwoord-prompt verschijnt, is het huidige wachtwoord "raspberry"; u moet het wijzigen in iets veiliger om het ten minste marginaal moeilijker te maken om uw apparaat te hacken. Als bijkomstigheid, in plaats van wachtwoorden, zou u certificaten voor authenticatie moeten gebruiken, maar dat zal niet in dit artikel besproken worden.

Voer daarna de volgende commando's uit en laat ze lopen:

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

Nadat de Raspberry Pi het opstartproces heeft voltooid, open een webbrowser op uw computer en navigeer naar https://raspberrypi.local:8080 (of vervang raspberrypi.local door het IP-adres van uw apparaat). Zoom uit en zoom dan in op uw locatie terwijl vliegtuigen beginnen te verschijnen en vervolgens weer verdwijnen van uw scherm.

Om het aantal vliegtuigen te vergroten, neem uw Pi, SDR en antennesysteem mee naar buiten. Verdere verbeteringen worden gevonden door de 1090 MHz band-pass-filter en een betere antenne toe te voegen.

Accurate vlucht-tracking op budget: Raspberry Pi Zero Wireless, SDR en FlightAware

Screenshot van PiAware ontvanger die een gebied oostelijk van Los Angeles, Californië, toont op 3/14/17 (Pi-dag!). Lineaire sporen bovenaan tonen vliegtuigen klaar om te landen op LAX. Ook zichtbaar is een overheidsvliegtuig dat in cirkels vliegt.

Ten slotte maak een FlightAware.com-account en koppel uw ontvanger aan uw FlightAware.com-account.

ADS-B, PiAware en dump1090

Transponders bevestigd aan vliegtuigen stellen hen in staat om een viercijferige octale identifier (Mode-A AKA "Squawk") identifier plus hoogte (Mode-C), een 24-bit uniek ICAO-nummer (Mode-S), en het 24-bit ICAO-nummer met additionele informatie (Mode S Extended Squitter) uit te zenden. De laatste modus is ook bekend als ADS-B.

Automatic Dependent Surveillance-Broadcast (ADS-B) neemt een vliegtuigpositie (zoals bepaald door GPS, GLONASS, etc.), combineert het met identificerende informatie, en zendt het uit op 1090 MHz. In tegenstelling tot de andere transponder-codes, die alleen verzonden worden als antwoord op een interrogatie door een radarsignaal, wordt ADS-B ongeveer tweemaal per seconde uitgezonden.

PiAware en dump1090 gebruiken een Software Defined Radio (SDR) afgestemd op 1090 MHz om de uitzendingen van alle vliegtuigen in de buurt te ontvangen en te decoderen en ze naar FlightAware's servers te sturen. De informatie wordt getoond op een webpagina gehost op de Raspberry Pi op poort 8080.

Accurate vlucht-tracking op budget: Raspberry Pi Zero Wireless, SDR en FlightAware

Illustratie door John Macneil, www.aopa.org.

Alle vliegtuigen moeten voor 1 januari 2020 uitgerust zijn met ADS-B Out-transponders. Maar tot die tijd gebruikt FlightAware multilateratie om de locatie van vliegtuigen te bepalen die hun breedte- en lengtegraad niet uitzenden. Multilateratie gebruikt de bekende positie van ten minste drie ontvangers en de ontvangsttijden van een bericht om de positie van een vliegtuig te berekenen.

Project 2: De Pi Zero Wireless gebruiken om vliegtuigdata te verzamelen van FlightAware.com

FlightAware.com heeft twee Application Program Interfaces (API) die data toestaan te minen en te gebruiken: FlightXML en Firehose. Kies tussen de twee op basis van het type informatie dat u nodig heeft en hoeveel queries u per maand nodig heeft. Voor dit project werd All About Circuits gratis toegang verleend voor één maand. Om mee te doen, moet u FlightAware.com contacteren voor een API-sleutel.

Bronnen:

  • Flight Aware Firehose-documentatie

Stap 1: Connectiviteit testen

Verbind met uw Pi Zero via SSH en test connectiviteit met de Firehose API.

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

Als u een pagina of twee certificeringsdetails ziet, werkte alles correct.

Stap 2: Voorbeeldbestanden en data ophalen

FlightAware host voorbeeldbestanden op GitHub. Begin met het downloaden en bewerken van de voorbeeldbestanden met uw gebruikersnaam en API-sleutel.

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

Wijzig de username en apikey velden om uw informatie te matchen, sluit dan af ([Ctrl]+[x]) en bewaar.

perl example1.pl

U zou data in JavaScript Object Notation (JSON) formaat moeten zien:

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

Stap 3: Uw Pi configureren om data te verzamelen

Firehose is terecht zo genoemd in dat het een overweldigende hoeveelheid data in een heel korte periode kan produceren (~1 GB/dag) – wat uw schijf vult en de kosten voor uw account verhoogt. Dus wanneer u een script maakt om informatie te verzamelen, moet u het op regelmatige intervallen controleren want u kunt uw schijf heel snel vullen en uw uitgavenrekening leegmaken.

Afhankelijk van de grootte van uw MicroSD-kaart en wat u wilt verzamelen, moet u misschien additionele opslag toevoegen of teruggaan naar raspi-config en uw bestandssysteem uitbreiden (optie 7, optie A1).

Voor mijn voorbeeld ga ik data verzamelen voor een 2° × 2° geografisch gebied dat LGB, LAX, ONT, SNA, etc. omvat (34° N ± 1°, 118° W ± 1°). Ik koos deze regio omdat het mijn ontvangstgebied benadert.

Accurate vlucht-tracking op budget: Raspberry Pi Zero Wireless, SDR en FlightAware

Het interessegebied strekt zich uit van 33° N tot 35° N en 117° W tot 119° W.

De volgende code is example1.pl, met wijzigingen op regel 18 en 45. Alle regels worden hieronder getoond zodat lezers kunnen volgen zonder het bestand te hoeven downloaden. Maak een kopie van example1.pl genaamd position.pl en gebruik nano om position.pl te bewerken.

 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 de TLS-socket-verbinding naar FlightAware.
14 my $sock = IO::Socket::SSL->new('firehose.flightaware.com:1501') or die $!;
15 # print "Connected!\n";
16 
17 # Stuur het init-commando naar de ongecomprimeerde 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 # Activeer compressie, indien gevraagd.
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 # Hoofd-lus, JSON-regels lezen van de 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"; 

Regel 18 beperkt de aanvraag tot vliegtuigen in de geografische regio tussen 117° W en 119° W (aangeduid door -117 en -119). Regel 43 is gewijzigd om een methode te demonstreren om alleen de velden van belang te targeten. In dit geval zullen we een vliegtuig's vluchtnummer, breedtegraad, lengtegraad en hoogte targeten. Regel 45 vraagt 10 vliegtuigen van de server (deze regel kan in een definitief script uitgecommentarieerd worden).

De volgende twee commando's voeren het programma uit en laten u de voortgang monitoren:

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

De eerste regel laat de superuser het programma perl gebruiken om het programma position.pl uit te voeren en de output toe te voegen (>>) aan het bestand position.txt en het &-symbool zorgt ervoor dat het programma op de achtergrond draait.

De tweede regel gebruikt het programma tail om (-f) wijzigingen in het bestand position.txt te volgen, wat u in staat stelt het commando te monitoren op voltooiing. Wanneer klaar, gebruik [Ctrl]+[c] om tail te verlaten. Als u niet meer geïnteresseerd bent in data verzamelen, gebruik fg om het programma position.pl naar de voorgrond te brengen en te stoppen of te breken met [Ctrl]+[c].

Het onderstaande .zip-bestand bevat gewijzigde programma's en output die hopelijk demonstreren hoe lichte wijzigingen in de syntax verschillende informatie in focus kunnen brengen, samen met voorbeeldoutput van de programma's.

  • arrivals.pl geeft JSON-output voor vliegtuigen die net zijn geland (ofwel aankomend of vertrekkend LAX)
  • test_landing.pl geeft leesbare output (bijv., AAL1155 geland op 03/21/2017 22:00:01)
  • position.pl geeft JSON-output voor alle vliegtuigen in de geografische rechthoek (34° N ± 1°, 118° W ± 1°)
  • test_overhead.pl geeft vluchtidentificatie, breedtegraad, lengtegraad en hoogte (N721PP 34.36011 -118.37837 18100)

Deze bestanden zijn gemaakt met kleine wijzigingen aan het example1.pl geleverd door FlightAware. Om uw eigen te maken dat alleen de data vastlegt die u interesseert, gebruik de FlightAware Firehose API-documentatie om de juiste informatie in JSON-formaat aan te vragen, en gebruik dan de correcte syntax binnen het bestand om alleen de informatie uit te voeren die u nodig hebt.

Project 3: De Pi Zero Wireless gebruiken om een 64×64 RGB-matrix te besturen

Onderdeel Kosten Opmerkingen
(2) 2× 32×32 RGB-displaymatrix + voeding $75 ($150) Vereist vier totaal 32×32 RGB-matrix om 64×64-pixel display te maken
Adafruit RGB-matrix HAT + RTC-klok $25 Datasheets
20-pin IDC-kabel (Hub75) $7-$13 De benodigde lengte hangt af van configuratie van panelen en afstand tot de Pi
0.1" male headers (40-pin, 2×20) $1 2.54 mm

Stap 1: Adafruit Matrix HAT voorbereiding

Soldeer de male en female headers op de Adafruit HAT volgens de instructies op Adafruit.com. Soldeer dan een draad of bevestig een jumper tussen pinnen 4 en 18. Voor dit project hoeft u noch de DC-barrel-jack noch de schroefterminal-connectors te bevestigen.

Stap 2: Raspberry Pi voorbereiding

Soldeer de 2×20 male headers op hun plaats.

Stap 3: RGB-matrix voorbereiding

Oriënteer de RGB-matrices zodat de pijlen op de onderste rij naar beneden wijzen en de pijlen op de bovenste rij naar boven wijzen (zie afbeelding hier). Gebruik een 2×10 IDC-kabel om de output van de Adafruit HAT te verbinden met de input van het eerste bord. Verbinden dan de output van het eerste bord met de input van het tweede, de output van het tweede met de input van de derde, etc.

Accurate vlucht-tracking op budget: Raspberry Pi Zero Wireless, SDR en FlightAware

De achterkant van het RGB-matrixpaneel. Het signaal reist van bord naar bord in een "C"-vorm.

Als u gelukkig genoeg bent om een lasersnijder of CNC-machine te hebben, heb ik de tekeningen voor een achterplaat opgenomen die alle vier de RGB-matrixplaten kan houden. De montagegaten zijn vervangen door sleuven om uitlijning vanaf een gemeenschappelijk centrumpunt toe te staan.

Accurate vlucht-tracking op budget: Raspberry Pi Zero Wireless, SDR en FlightAware

Sjabloon voor het monteren van vier 32×32-panelen om een groot 64×64-paneel te maken; Verschillende paneelarrangementen zijn mogelijk.

Hughes_4x4RGBMatrix.zip

Volledige documentatie en broncode door Hennen Zeller.

Zodra alle elektrische verbindingen gemaakt zijn, zet de Raspberry Pi aan. Na ongeveer één minuut, probeer in te loggen op de Pi met Putty of SSH.

Eenmaal ingelogd, typ het volgende om het geluid op de Pi uit te schakelen (documentatie wijst op een hardware-subsysteem-conflict met geluid en de RGB-matrix-hardware).

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

Gebruik dan apt-get om Python en imaging-bestanden te installeren.

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

Haal de benodigde bestanden op om de RGB-matrix te draaien en compileer ze.

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

Optioneel, als u ook een camera aan uw Pi hebt aangesloten, kunt u een 64×64-pixel-afbeelding vastleggen en deze aan het display voeden.

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

Wat nu?

U heeft nu een $10-computer die kan tracken (ofwel met een antenne en SDR-ontvanger ofwel met een API-aanroep) vliegtuigen om u heen en elke informatie over die vliegtuigen weergeven op uw 64-pixel bij 64-pixel display, of op de HDMI-uitgang van de Raspberry Pi Zero W.

Wat u ermee doet, wordt alleen beperkt door uw verbeelding.

Aangezien dit artikel alleen de tools introduceert, is de eerste stap die ik aanbeveel het lezen van de documentatie voor het display en FlightAware en dan de voorbeeldprogramma's van beide openen om hun capaciteiten beter te begrijpen.

En vergeet niet dat uw Raspberry Pi Zero een functionele Linux-installatie is, compleet met vaak-gebruikte commando's zoals Cron, Grep en Awk. Alles wat nog niet op uw Pi staat, is slechts een korte apt-get install verwijderd.

Bekijk de video hieronder om de culminatie van deze projecten te zien!

Probeer dit project zelf! Haal de BOM.


Industrieel materiaal

  1. Meerdere DS18B20 1-Wire Sensoren Aan Een Raspberry Pi Koppelen Voor Nauwkeurige Temperatuurmonitoring
  2. Efficiënt Kamertemperaturen Monitoren Met Raspberry Pi En Nagios
  3. Home Energy Centre: Zonnepanelen, thermische panelen en kamertemperaturen monitoren met Raspberry Pi en Moteino
  4. Een 433 MHz Slimme Huiscounter Bouwen met Sensorflare en Raspberry Pi
  5. Analoge Sensoren Uitlezen met Raspberry Pi en Zabbix: Een Stapsgewijze Handleiding
  6. Bouw je eerste IoT-project met Raspberry Pi, DHT11 en ThingSpeak
  7. Een geautomatiseerd aeroponisch systeem bouwen met Raspberry Pi en vochtigheidssensor
  8. Bouw een LoRa Gateway met de RAK831 Module op Raspberry Pi 3 – Stap-voor-Stap Gids
  9. Een Robot Bouwen met Raspberry Pi en Python: Een Complete Gids
  10. Bouw een Internet-gecontroleerde Video-streamende Robot met Arduino & Raspberry Pi
  11. Pixus Technologies: cutting‑edge ruggedized software‑defined radios voor missie‑kritieke omgevingen