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

Houd overheadvluchten bij met een Raspberry Pi Zero Wireless, een Software Defined Radio en FlightAware

Dit artikel laat je twee manieren zien om een ​​Raspberry Pi Zero Wireless te gebruiken om vluchten in jouw regio te volgen. Het laat ook zien hoe het een 64×64 RGB-matrix kan besturen.

De Raspberry Pi Zero Wireless is een microcomputer van $ 10 die tot heel veel dingen in staat is. Dit artikel laat je twee manieren zien om deze Pi te gebruiken om vluchten in jouw regio te volgen. Het laat ook zien hoe het een 64×64 RGB-matrix kan besturen om vluchtnummers weer te geven!

In dit artikel doe ik drie afzonderlijke projecten met de Raspberry Pi Zero Wireless. In Project 1 maak ik een vliegtuigvolgapparaat met PiAware. In Project 2 verzamel ik gegevens van die vliegtuigen. In Project 3 laat ik je zien hoe je de RPi Zero W gebruikt om een ​​64×64 RGB-matrix te besturen.

Project 1:Raspberry Pi Zero draadloze vliegtuigtracker

Deel 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
USB-naar-MicroUSB-adapter $5
MicroUSB-hub (optioneel) $8 De Pi Zero heeft alleen microUSB-poorten; om accessoires te bevestigen heb je een hub/converter nodig
Breedbandantenne (optioneel) $50 Antenne moet 1090 MHz dekken
1090 MHz banddoorlaatfilter (optioneel) $20

Bronnen

  • Raspbian Jessie (installatiegids)
  • PiAware-installatie

Dit experiment is gedaan met de Raspberry Pi Zero Wireless. De volgende code zou echter moeten werken op elke Raspberry Pi-versie 2 of hoger. Als je een Pi Zero koopt zonder draadloos, kun je deze toevoegen met een draadloze USB-netwerkdongle.

Stap 1:Bereid de SD-kaart voor

Download de nieuwste Raspbian Jessie naar je computer.

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

Stap 2:wijzig de SD-kaart

Maak een bestand met de naam "ssh" in de hoofdmap van de SD-kaart. Geen bestandsextensie, geen bestandsinhoud. Dit bestand schakelt SSH in, waarmee u op afstand toegang kunt krijgen tot de Pi.

Maak een bestand met de naam "wpa_supplicant.conf" met de volgende inhoud. Wijzig de waarden voor YourWifiName en YourWifiPassword in de naam en het wachtwoord die je gebruikt om verbinding te maken met je wifi-netwerk.

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

Stap 3:Installeren en opstarten

Werp de SD-kaart uit uw computer en installeer deze in de Raspberry Pi Zero Wireless. Sluit de Raspberry Pi aan op een stroombron met behulp van de MicroUSB-poort die zich het dichtst bij het uiteinde van het bord bevindt. Wacht ongeveer een minuut totdat de Raspberry Pi is opgestart en verbinding heeft gemaakt met wifi. Met deze configuratiebestanden is het niet nodig om een ​​toetsenbord, muis of beeldscherm te gebruiken met uw apparaat.

Stap 4:Zoek je Pi

Identificeer het IP-adres van uw Pi - dit kan worden bereikt door in te loggen op uw router en naar aangesloten apparaten te kijken, of via een IP-scanner zoals Look@Lan (Windows) of nmap (Linux en Mac). Als uw apparaat niet binnen twee of drie minuten verschijnt, koppelt u de stroom los, verwijdert u de SD-kaart uit de Pi en plaatst u deze opnieuw in uw computer en controleert u nogmaals de ssh en wpa_supplicant.conf bestanden.

Stap 5:maak verbinding met uw Pi

Windows:gebruik een tool zoals Putty om verbinding te maken met je Pi. Download en voer het programma uit, typ het IP-adres van uw Pi en klik op "verbinden". Er verschijnt een venster waarin u wordt gevraagd naar het beveiligingscertificaat - klik op "ja".

Linux en Mac:Open een terminal en typ "ssh [email protected]" of "ssh pi@ipaddress" (bijv. "ssh [email protected]").

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

Stap 6:Configureer je Pi

Typ "sudo raspi-config" en druk op enter.

Wijzig uw wachtwoord, tijdzone en lokalisatie.

Wanneer de wachtwoordprompt verschijnt, is het huidige wachtwoord "framboos"; je moet het veranderen in iets veiligers om het op zijn minst marginaal moeilijk te maken om je apparaat te hacken. Even terzijde, in plaats van wachtwoorden moet je certificaten gebruiken voor authenticatie, maar dat wordt niet besproken in dit artikel.

Typ vervolgens de volgende opdrachten en laat ze uitvoeren:

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

Nadat de Rapsberry Pi het opstartproces heeft voltooid, opent u een webbrowser op uw computer en navigeert u naar http://raspberrypi.local:8080 (of vervangt u raspberrypi.local door het IP-adres van uw apparaat). Zoom uit en zoom vervolgens in op uw locatie terwijl vliegtuigen verschijnen en vervolgens van uw scherm verdwijnen.

Om het aantal vliegtuigen te vergroten, neem je je Pi-, SDR- en antennesysteem mee naar buiten. Verdere verbeteringen zijn gevonden door toevoeging van het 1090 MHz banddoorlaatfilter en een betere antenne.

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

Maak tot slot een FlightAware.com-account en koppel vervolgens uw ontvanger aan uw FlightAware.com-account.

ADS-B, PiAware en dump1090

Met transponders die aan vliegtuigen zijn bevestigd, kunnen ze een viercijferig octaal identificatienummer (Mode-A AKA "Squawk") plus hoogte (Mode-C), een 24-bits uniek ICAO-nummer (Mode-S) en de 24-bits ICAO-nummer met aanvullende informatie (Mode S Extended Squitter). De laatste modus is ook bekend als ADS-B.

Automatic Dependent Surveillance-Broadcast (ADS-B) neemt de positie van een vliegtuig in (zoals bepaald door GPS, GLONASS, enz.), combineert deze met identificerende informatie en zendt deze uit op 1090 MHz. In tegenstelling tot de andere transpondercodes, die alleen worden verzonden als antwoord op een ondervraging door een radarsignaal, wordt ADS-B ongeveer twee keer per seconde verzonden.

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 deze naar de servers van FlightAware te sturen. De informatie wordt weergegeven op een webpagina die wordt gehost op de Raspberry Pi op poort 8080.

Illustratie door John Macneil, www.aopa.org.

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

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

FlightAware.com heeft twee Application Program Interfaces (API) waarmee gegevens kunnen worden gedolven en gebruikt:FlightXML en Firehose. Kies tussen de twee op basis van het type informatie dat u nodig heeft en hoeveel zoekopdrachten u elke maand nodig heeft. Voor dit project kreeg All About Circuits een maand gratis toegang. Om mee te doen, moet u contact opnemen met FlightAware.com voor een API-sleutel.

Bronnen:

  • Flight Aware Firehose-documentatie

Stap 1:Test de connectiviteit

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

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

Als je een paar pagina's met certificeringsdetails ziet, werkte alles correct.

Stap 2:Voorbeeldbestanden en gegevens ophalen

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

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

Wijzig de gebruikersnaam en apikey velden die overeenkomen met uw informatie, sluit dan af ([Ctrl]+[x]) en sla op.

perl voorbeeld1.pl

U zou gegevens moeten zien in JavaScript Object Notation (JSON)-indeling:

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

Stap 3:Configureer uw Pi om gegevens te verzamelen

Firehose heeft de toepasselijke naam omdat het in een zeer korte tijd (~ 1 GB/dag) een overweldigende hoeveelheid gegevens kan produceren - waardoor uw schijf wordt gevuld en uw account wordt belast. Dus als u een script maakt om informatie te verzamelen, moet u het regelmatig controleren, omdat u uw schijf heel snel kunt vullen en uw onkostenrekening kunt legen.

Afhankelijk van de grootte van uw MicroSD-kaart en wat u hoopt te verzamelen, moet u mogelijk extra opslagruimte toevoegen of teruggaan naar raspi-config en uw bestandssysteem uitbreiden (optie 7, optie A1).

Voor mijn voorbeeld ga ik gegevens verzamelen voor een geografisch gebied van 2 ° × 2 ° dat LGB, LAX, ONT, SNA, enz. omvat (34 ° N ± 1 °, 118 ° W ± 1 °). Ik heb deze regio gekozen omdat deze mijn ontvangstgebied benadert.

Het interessegebied varieert van 33° N tot 35° N en 117° W tot 119° W.

De volgende code is example1.pl, met wijzigingen in regel 18 en 45. Alle regels worden hieronder weergegeven, 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

cp voorbeeld1.pl position.pl
sudo nano position.pl

Breng de nodige wijzigingen aan en sluit af met [Ctrl]+[x].

 1 #!/usr/local/bin/perl 2 3 gebruik strikt; 4 gebruiken IO::Socket::SSL; 5 gebruik JSON::PP; 6 gebruik IO::Uncompress::Inflate qw ($ InflateError); 7 gebruiksgegevens::Dumper; 8 9 mijn $gebruikersnaam ='allaboutcircuits'; 10 my $apikey ='allaboutcircuitsreallylongapikey'; 11 mijn $compressie =0; 12 13 # Open de TLS-socketverbinding met FlightAware. 14 mijn $sock =IO::Socket::SSL->new('firehose.flightaware.com:1501') of die $!; 15 # print "Verbonden!\n"; 16 17 # Stuur het initiatiecommando naar de niet-gecomprimeerde socket. 18 my $initcmd ="live versie 8.0 gebruiker $gebruikersnaam wachtwoord $apikey events \"position\" latlong \"33 -117 35 -119\""; 19 als ($ compressie) { 20 $initcmd .=" compressiekompres"; 21 } 22 binmode $sok; 23 print $sok "$initcmd\n"; 24 25 # Activeer compressie, indien gevraagd. 26 mijn $zsock; 27 als ($ compressie) { 28 $zsock =nieuwe IO::Decomprimeren::Inflate $sock 29 of sterven "IO::Uncompress::Inflate mislukt:$InflateError\n"; 30 } anders { 31 $zsock =$sok; 32 } 33 34 # Hoofdlus, JSON-regels van de server lezen. 35 mijn $i =1; 36 while (mijn $line =$zsock->getline()) { 37 #print "LINE $i\n"; 38 #print "LINE $i:", $line, "\n"; 39 40 mijn $data =eval {decode_json $line}; 41 sterven "Kan JSON niet decoderen:$line" if !defined($data) || $@; 42 43 print $data->{ident}." \t".$data->{lat}." \t " . $data->{lon} . " \t". $data->{alt}." \n"; 44 45 laatste als ($i++>=10); 46 } 47 sluit $sok; 48 49 # print "Alles klaar.\n"; 

Regel 18 beperkt het verzoek tot vliegtuigen in het geografische gebied tussen 117° W en 119° W (aangeduid met -117 en -119). Regel 43 is aangepast om een ​​methode te demonstreren om alleen de interessegebieden te targeten. In dit geval richten we ons op het vluchtnummer, de breedtegraad, de lengtegraad en de hoogte van een vliegtuig. Regel 45 vraagt ​​om 10 vliegtuigen van de server (deze regel kan in een definitief script worden becommentarieerd).

De volgende twee commando's voeren het programma uit en stellen u in staat om de voortgang van het programma te volgen:

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 voeg (>>) de uitvoer toe 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 , waarmee u de opdracht kunt controleren op voltooiing. Als u klaar bent, gebruikt u [Ctrl]+[c] om tail af te sluiten . Als u niet langer geïnteresseerd bent in het verzamelen van gegevens, gebruik dan fg om het programma position.pl . te brengen naar de voorgrond en stop het of verbreek het met [Ctrl]+[c].

Het onderstaande .zip-bestand bevat aangepaste programma's en uitvoer die hopelijk laten zien hoe kleine veranderingen in de syntaxis verschillende informatie in beeld kunnen brengen, samen met voorbeelduitvoer van de programma's.

  • arrivals.pl geeft JSON-uitvoer voor vliegtuigen die net zijn geland (aankomend of vertrekkend LAX)
  • test_landing.pl geeft leesbare output (bijv. AAL1155 geland op 21-03-2017 22:00:01)
  • position.pl geeft JSON-uitvoer voor alle vlakken 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 aanpassingen aan voorbeeld1.pl geleverd door FlightAware. Om uw eigen gegevens te maken die alleen de gegevens vastleggen die u interesseren, gebruikt u de FlightAware Firehose API-documentatie om de juiste informatie in JSON-indeling op te vragen en gebruikt u vervolgens de juiste syntaxis in 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

Deel Kosten Opmerkingen
(2) 2× 32×32 RGB-beeldschermmatrix + voeding $75 ($150) Vereist in totaal vier 32×32 RGB-matrixen om een ​​64×64 pixelweergave te creëren
Adafruit RGB-matrix HAT + RTC-klok $25 Gegevensbladen
20-pins IDC-kabel (Hub75) $7-$13 De vereiste lengte hangt af van de configuratie van de panelen en de afstand tot de Pi
0,1" mannelijke headers (40-pins, 2×20) $1 2,54 mm

Stap 1:Voorbereiding Adafruit Matrix HAT

Soldeer de mannelijke en vrouwelijke headers op de Adafruit HAT volgens de instructies op Adafruit.com. Soldeer vervolgens een draad of bevestig een jumper tussen pin 4 en 18. Voor dit project hoeft u de DC-cilinderaansluiting of de schroefklemconnectoren niet te bevestigen.

Stap 2:Raspberry Pi-voorbereiding

Soldeer de 2×20 mannelijke headers op hun plaats.

Stap 3:RGB-matrixvoorbereiding

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 uitgang van de Adafruit HAT aan te sluiten op de ingang van het eerste bord. Verbind vervolgens de uitgang van het eerste bord met de ingang van de tweede, de uitgang van de tweede met de ingang van de derde, enz.

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

Als je het geluk hebt een lasersnijder of CNC-machine tot je beschikking te hebben, heb ik de tekeningen bijgevoegd voor een achterplaat die alle vier de gebruikte RGB-matrixplaten kan bevatten. De montagegaten zijn vervangen door sleuven om uitlijning vanuit een gemeenschappelijk middelpunt mogelijk te maken.

Sjabloon voor het monteren van vier 32×32 panelen om een ​​groot 64×64 paneel te maken; Er zijn verschillende paneelopstellingen mogelijk.

Hughes_4x4RGBMatrix.zip

Volledige documentatie en broncode door Hennen Zeller.

Zodra alle elektrische verbindingen zijn gemaakt, zet u de Raspberry Pi aan. Probeer na ongeveer een minuut in te loggen op de Pi met Putty of SSH.

Eenmaal binnen, typt u het volgende om het geluid op de Pi uit te schakelen (documentatie geeft een hardwaresubsysteem aan dat conflicteert met geluid en de RGB-matrixhardware).

kat <blacklist snd_bcm2835
EOF
sudo update-initramfs -u

Gebruik vervolgens apt-get om Python en beeldbestanden te installeren.

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

Haal de benodigde bestanden op om de RGB-matrix uit te voeren 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 voorbeelden-api-use
sudo voorbeelden-api-use/demo -L -D0
cd utils/
HARDWARE_DESC=adafruit-hat-pwm make

Optioneel, als je ook een camera hebt aangesloten op je Pi, kun je een afbeelding van 64×64 pixels vastleggen en deze naar het scherm sturen.

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

De vorige twee regels leggen een 64×64-afbeelding vast op het scherm en gebruiken het programma led-image-viewer (gecompileerd in de vorige sectie) om het voor altijd op het grote scherm (-L) (-f) weer te geven.

Wat nu?

Je hebt nu een computer van $ 10 die vliegtuigen om je heen kan volgen (ofwel met een antenne en SDR-ontvanger of met een API-aanroep) en alle informatie weergeeft over degenen die je wilt op je 64-pixel bij 64-pixel display, of op de Raspberry Pi Zero W's HDMI-uitgang.

Wat je ermee doet, wordt alleen beperkt door je verbeeldingskracht.

Aangezien dit artikel alleen de tools introduceert, raad ik aan om eerst de documentatie voor het display en FlightAware te lezen en vervolgens de voorbeeldprogramma's van beide te openen om hun mogelijkheden beter te begrijpen.

En vergeet niet dat je Raspberry Pi Zero een werkende Linux-installatie is, compleet met veelgebruikte commando's zoals Cron , Grep , en Awk . Alles wat nog niet op je Pi staat, is slechts een korte apt-get install weg.

Bekijk de video hieronder om het hoogtepunt van deze projecten te zien!

Probeer dit project zelf eens! De stuklijst ophalen.


Industrieel materiaal

  1. Pixus:robuuste softwaregedefinieerde radio-oplossingen
  2. Meet temperaturen met een 1-draads DS18B20-sensor en Raspberry Pi
  3. Kamertemperaturen bewaken met een Raspberry Pi en Nagios
  4. Kamertemperaturen bewaken met Moteino's en Raspberry Pi
  5. 433MHz Smart Home Controller met Sensorflare en een RaspberryPi
  6. Analoge sensoren lezen met Raspberry Pi en Zabbix Supervisor
  7. Bouw je eerste IOT met een Raspberry Pi, DHT11-sensor en Thingspeak.
  8. Aerocultuur met Raspberry Pi en vochtigheidssensor
  9. Aan de slag met de RAK831 LoRa Gateway en RPi3
  10. Botten bouwen met Raspberry Pi en Python
  11. Bouw uw internetgestuurde videostreamingrobot met Arduino en Raspberry Pi