Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Manufacturing Equipment >> Équipement industriel

Suivre les vols aériens avec un Raspberry Pi Zero Wireless, une radio définie par logiciel et FlightAware

Cet article vous montre deux façons d'utiliser un Raspberry Pi Zero Wireless pour suivre les vols dans votre région. Il montre également comment il peut contrôler une matrice RVB 64 × 64.

Le Raspberry Pi Zero Wireless est un micro-ordinateur à 10 $ capable de beaucoup de choses. Cet article vous montre deux façons d'utiliser ce Pi pour suivre les vols dans votre région. Il montre également comment il peut contrôler une matrice RVB 64×64 pour afficher les numéros de vol !

Dans cet article, je vais réaliser trois projets distincts en utilisant le Raspberry Pi Zero Wireless. Dans le projet 1, je vais créer un appareil de suivi d'avion à l'aide de PiAware. Dans le projet 2, je collecterai des données sur ces avions. Dans le projet 3, je vais vous montrer comment utiliser le RPi Zero W pour contrôler une matrice RVB 64×64.

Projet 1 : Traqueur d'avion sans fil Raspberry Pi Zero

Pièce Coût Remarques
Raspberry Pi Zero sans fil 10 $
Récepteur SDR 21 $ De nombreux autres récepteurs USB SDR fonctionneront probablement
Carte microSD de 4 Go 6 $ Des cartes plus grandes fonctionneront
Adaptateur USB vers MicroUSB 5 $
Concentrateur MicroUSB (facultatif) 8 $ Le Pi Zero n'a que des ports microUSB ; pour attacher des accessoires, vous avez besoin d'un concentrateur/convertisseur
Antenne large bande (en option) 50 $ L'antenne doit couvrir 1090 MHz
Filtre passe-bande 1090 MHz (optionnel) 20 $

Ressources

Cette expérience a été réalisée avec le Raspberry Pi Zero Wireless. Cependant, le code suivant devrait fonctionner sur n'importe quel Raspberry Pi version 2 ou ultérieure. Si vous achetez un Pi Zero sans fil, vous pouvez l'ajouter avec un dongle réseau USB sans fil.

Étape 1 :Préparez la carte SD

Téléchargez la dernière version de Raspbian Jessie sur votre ordinateur.

Écrivez l'image sur votre carte SD (voici des guides pour Linux, Mac OS et Windows).

Étape 2 :Modifiez la carte SD

Créez un fichier nommé "ssh" dans le répertoire racine de la carte SD. Aucune extension de fichier, aucun contenu de fichier. Ce fichier active SSH, ce qui vous permettra d'accéder à distance au Pi.

Créez un fichier nommé "wpa_supplicant.conf" avec le contenu suivant. Remplacez les valeurs de YourWifiName et YourWifiPassword par le nom et le mot de passe que vous utilisez pour vous connecter à votre réseau Wi-Fi.

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

Étape 3 :Installer et démarrer

Éjectez la carte SD de votre ordinateur et installez-la dans le Raspberry Pi Zero Wireless. Connectez le Raspberry Pi à une source d'alimentation en utilisant le port MicroUSB le plus proche de l'extrémité de la carte. Attendez environ une minute que le Raspberry Pi démarre et se connecte au Wi-Fi. Avec ces fichiers de configuration, il n'est pas nécessaire d'utiliser un clavier, une souris ou un écran avec votre appareil.

Étape 4 :Localisez votre Pi

Identifiez l'adresse IP de votre Pi - cela peut être accompli en vous connectant à votre routeur et en regardant les périphériques connectés, ou via un scanner IP tel que Look@Lan (Windows) ou nmap (Linux et Mac). Si votre appareil n'apparaît pas dans les deux ou trois minutes, débranchez l'alimentation, retirez la carte SD du Pi, réinsérez-la dans votre ordinateur et revérifiez le ssh et wpa_supplicant.conf fichiers.

Étape 5 :Connectez-vous à votre Pi

Windows :utilisez un outil tel que Putty pour vous connecter à votre Pi. Téléchargez et exécutez le programme, tapez l'adresse IP de votre Pi et cliquez sur « connecter ». Une fenêtre apparaîtra vous demandant le certificat de sécurité - cliquez sur "oui".

Linux et Mac :ouvrez un terminal et tapez "ssh [email protected]" ou "ssh pi@ipaddress" (par exemple, "ssh [email protected]").

À l'invite, le nom d'utilisateur par défaut est "pi" et le mot de passe par défaut est "raspberry".

Étape 6 :Configurez votre Pi

Tapez "sudo raspi-config" et appuyez sur Entrée.

Modifiez votre mot de passe, votre fuseau horaire et votre localisation.

Lorsque l'invite de mot de passe apparaît, le mot de passe actuel est « framboise » ; vous devriez le remplacer par quelque chose de plus sûr pour qu'il soit au moins légèrement difficile de pirater votre appareil. En passant, au lieu de mots de passe, vous devez utiliser des certificats pour l'authentification, mais cela ne sera pas abordé dans cet article.

Tapez ensuite les commandes suivantes et laissez-les s'exécuter :

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

Une fois que le Rapsberry Pi a terminé le processus de démarrage, ouvrez un navigateur Web sur votre ordinateur et accédez à http://raspberrypi.local:8080 (ou remplacez raspberrypi.local par l'adresse IP de votre appareil). Effectuez un zoom arrière, puis zoomez sur votre position lorsque les avions commencent à apparaître puis disparaissent de votre écran.

Pour augmenter le nombre d'avions, sortez votre Pi, votre SDR et votre système d'antenne. D'autres améliorations sont trouvées en ajoutant le filtre passe-bande 1090 MHz et une meilleure antenne.

Capture d'écran de P iAware récepteur qui montre une zone à l'est de Los Angeles, Californie, le 14/03/17 (Pi Day !). Des pistes linéaires au sommet montrent des avions prêts à atterrir à LAX. Un avion du gouvernement qui vole en rond est également visible.

Enfin, créez un compte FlightAware.com, puis associez votre récepteur à votre compte FlightAware.com.

ADS-B, PiAware et dump1090

Les transpondeurs apposés sur les avions leur permettent de diffuser un identifiant octal à quatre chiffres (Mode-A AKA "Squawk") plus l'altitude (Mode-C), un numéro OACI unique de 24 bits (Mode-S) et le code 24 bits Numéro OACI avec informations supplémentaires (Mode S Extended Squitter). Le dernier mode est également connu sous le nom d'ADS-B.

La surveillance dépendante automatique en mode diffusion (ADS-B) prend la position d'un aéronef (telle que déterminée par GPS, GLONASS, etc.), la combine avec des informations d'identification et la diffuse à 1090 MHz. Contrairement aux autres codes transpondeurs, qui ne sont transmis qu'en réponse à une interrogation par un signal radar, l'ADS-B est transmis environ deux fois par seconde.

PiAware et dump1090 utilisent une radio définie par logiciel (SDR) réglée sur 1090 MHz pour recevoir et décoder les émissions de tous les avions à proximité et les envoyer aux serveurs de FlightAware. Les informations sont affichées sur une page Web hébergée sur le Raspberry Pi au port 8080.

Illustration de John Macneil, www.aopa.org.

Tous les avions doivent être équipés de transpondeurs ADS-B Out d'ici le 1er janvier 2020. Mais, d'ici là, FlightAware utilise la multilatération pour déterminer l'emplacement des avions qui ne diffusent pas leur latitude et leur longitude. La multilatération utilise la position connue d'au moins trois récepteurs et les heures de réception d'un message pour calculer la position d'un avion.

Projet 2 :Utilisation du Pi Zero Wireless pour collecter des données d'avion à partir de FlightAware.com

FlightAware.com dispose de deux interfaces de programme d'application (API) qui permettent d'exploiter et d'utiliser les données :FlightXML et Firehose. Choisissez entre les deux en fonction du type d'informations dont vous avez besoin et du nombre de requêtes dont vous avez besoin chaque mois. Pour ce projet, All About Circuits a obtenu un accès gratuit pendant un mois. Pour suivre, vous devrez contacter FlightAware.com pour obtenir une clé API.

Ressources :

Étape 1 :Tester la connectivité

Connectez-vous à votre Pi Zero via SSH et testez la connectivité à l'API Firehose.

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

Si vous voyez une page ou deux de détails sur la certification, tout a fonctionné correctement.

Étape 2 :Obtenez des exemples de fichiers et de données

FlightAware héberge des exemples de fichiers dans GitHub. Commencez par télécharger et éditer les exemples de fichiers avec votre nom d'utilisateur et votre clé API.

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

Changer le nom d'utilisateur et apikey correspondant à vos informations, puis quittez ([Ctrl]+[x]) et enregistrez.

perl exemple1.pl

Vous devriez voir les données au format JavaScript Object Notation (JSON) :

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

Étape 3 :Configurez votre Pi pour collecter des données

Firehose porte bien son nom car il peut produire une quantité écrasante de données en très peu de temps (environ 1 Go/jour), remplissant votre disque et augmentant les frais de votre compte. Ainsi, lorsque vous créez un script pour collecter des informations, vous devez le vérifier à intervalles réguliers car vous pourriez très rapidement remplir votre disque et vider votre compte de dépenses.

Selon la taille de votre carte MicroSD et ce que vous espérez collecter, vous devrez peut-être ajouter du stockage supplémentaire ou revenir à raspi-config et étendre votre système de fichiers (option 7, option A1).

Pour mon exemple, je vais collecter des données pour une zone géographique de 2° × 2° qui comprend LGB, LAX, ONT, SNA, etc. (34° N ± 1°, 118° W ± 1°). J'ai choisi cette région car elle se rapproche de ma zone d'accueil.

La zone d'intérêt s'étend de 33° N à 35° N et de 117° W à 119° W.

Le code suivant est example1.pl, avec des modifications aux lignes 18 et 45. Toutes les lignes sont affichées ci-dessous afin que les lecteurs puissent suivre sans avoir à télécharger le fichier. Créez une copie de example1.pl appelé position.pl et utilisez nano pour éditer position.pl.

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

Apportez les modifications nécessaires et quittez avec [Ctrl]+[x].

1 #!/usr/local/bin/perl 2 3 utilisation stricte ; 4 utiliser IO::Socket::SSL; 5 utilisez JSON::PP; 6 use IO::Uncompress::Inflate qw($InflateError); 7 données d'utilisation : : Dumper ; 8 9 my $username ='allaboutcircuits'; 10 my $apikey ='allaboutcircuitsreallylongapikey'; 11 ma $compression =0 ; 12 13 # Ouvrez la connexion socket TLS à FlightAware. 14 my $sock =IO::Socket::SSL->new('firehose.flightaware.com:1501') ou mourir $!; 15 # print "Connecté !\n" ; 16 17 # Envoie la commande d'initiation au socket non compressé. 18 my $initcmd ="live version 8.0 user $username password $apikey events \"position\" latlong \"33 -117 35 -119\""; 19 si ($compression) { 20 $initcmd .=" compression compresse"; 21 } 22 chaussettes en mode bin ; 23 print $sock "$initcmd\n" ; 24 25 # Activer la compression, si demandé. 26 mon $zsock ; 27 si ($compression) { 28 $zsock =new IO::Uncompress::Inflate $sock 29 ou mourir "IO::Uncompress::Inflate failed:$InflateError\n" ; 30 } autre { 31 $zsock =$sock ; 32 } 33 34 # Boucle principale, lecture des lignes de JSON depuis le serveur. 35 mon $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 "Impossible de décoder 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 fermer $ chaussette ; 48 49 # print "Tout est fait.\n" ;

La ligne 18 limite la demande aux avions dans la zone géographique comprise entre 117° W et 119° W (notée -117 et -119). La ligne 43 est modifiée pour démontrer une méthode pour cibler uniquement les champs d'intérêt. Dans ce cas, nous ciblerons le numéro de vol, la latitude, la longitude et l'altitude d'un avion. La ligne 45 demande 10 avions au serveur (cette ligne peut être commentée dans un script final).

Les deux commandes suivantes exécutent le programme et vous permettent de surveiller la progression du programme :

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

La première ligne demande au superutilisateur d'utiliser le programme perl pour exécuter le programme position.pl et ajoutez (>>) la sortie au fichier position.txt et le symbole &provoque l'exécution du programme en arrière-plan.

La deuxième ligne utilise le programme tail pour suivre (-f) les modifications du fichier position.txt , qui vous permet de surveiller l'exécution de la commande. Une fois terminé, utilisez [Ctrl]+[c] pour quitter tail . Si vous n'êtes plus intéressé par la collecte de données, utilisez fg apporter le programme position.pl au premier plan et l'arrêter ou le casser avec [Ctrl]+[c].

Le fichier .zip ci-dessous contient des programmes et des sorties modifiés qui, espérons-le, démontrent comment de légers changements dans la syntaxe peuvent mettre en évidence différentes informations, ainsi qu'un exemple de sortie des programmes.

  • arrivals.pl fournit une sortie JSON pour les avions qui viennent d'atterrir (à l'arrivée ou au départ de LAX)
  • test_landing.pl donne une sortie lisible (par exemple, AAL1155 a atterri le 21/03/2017 22:00:01)
  • position.pl donne une sortie JSON pour tous les plans du rectangle géographique (34° N ± 1°, 118° W ± 1°)
  • test_overhead.pl donne l'identification du vol, la latitude, la longitude et l'altitude (N721PP 34.36011 -118.37837 18100)

Ces fichiers ont été créés avec des modifications mineures au fichier example1.pl fourni par FlightAware. Pour créer le vôtre qui ne capture que les données qui vous intéressent, utilisez la documentation de l'API FlightAware Firehose pour demander les informations appropriées au format JSON, puis utilisez la syntaxe correcte à l'intérieur du fichier pour n'afficher que les informations dont vous avez besoin.

Projet 3 :Utilisation du Pi Zero Wireless pour contrôler une matrice RVB 64 × 64

Pièce Coût Remarques
(2) 2× matrice d'affichage RVB 32×32 + alimentation 75 $ (150 $) Nécessite quatre matrices RVB 32 x 32 au total pour créer un affichage de 64 x 64 pixels
Adafruit RVB matrice HAT + horloge RTC 25 $ Fiches techniques
Câble IDC 20 broches (Hub75) 7 $ à 13 $ La longueur requise dépend de la configuration des panneaux et de la distance au Pi
Embases mâles 0,1" (40 broches, 2×20) 1 $ 2,54 mm

Étape 1 :Préparation de la matrice Adafruit HAT

Soudez les en-têtes mâle et femelle sur le chapeau Adafruit selon les instructions sur Adafruit.com. Ensuite, soudez un fil ou attachez un cavalier entre les broches 4 et 18. Pour ce projet, vous n'avez pas besoin d'attacher la prise cylindrique CC ou les connecteurs à bornes à vis.

Étape 2 :Préparation du Raspberry Pi

Soudez les connecteurs mâles 2×20 en place.

Étape 3 :Préparation de la matrice RVB

Orientez les matrices RVB de manière à ce que les flèches de la rangée du bas soient dirigées vers le bas et les flèches de la rangée du haut soient dirigées vers le haut (voir l'image ici). Utilisez un câble IDC 2 × 10 pour connecter la sortie de l'Adafruit HAT à l'entrée de la première carte. Reliez ensuite la sortie de la première carte à l'entrée de la seconde, la sortie de la seconde à l'entrée de la troisième, etc.

L'arrière du panneau matriciel RVB. Le signal se déplace d'une planche à l'autre en forme de « C ».

Si vous avez la chance de disposer d'une découpeuse laser ou d'une machine CNC, j'ai inclus les dessins d'une plaque arrière pouvant contenir les quatre plaques matricielles RVB utilisées. Les trous de montage sont remplacés par des fentes pour permettre l'alignement à partir d'un point central commun.

Modèle pour le montage de quatre panneaux 32×32 pour faire un grand panneau 64×64 ; Différents agencements de panneaux sont possibles.

Hughes_4x4RGBMatrix.zip

Documentation complète et code source par Hennen Zeller.

Une fois toutes les connexions électriques effectuées, mettez le Raspberry Pi sous tension. Après environ une minute, essayez de vous connecter au Pi avec Putty ou SSH.

Une fois dedans, tapez ce qui suit pour désactiver le son sur le Pi (la documentation indique un conflit de sous-système matériel avec le son et le matériel de la matrice RVB).

chat <blacklist snd_bcm2835
EOF
sudo update-initramfs -u

Ensuite, utilisez apt-get pour installer Python et les fichiers d'imagerie.

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

Obtenez les fichiers nécessaires pour exécuter la matrice RVB et compilez-les.

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

En option, si vous avez également une caméra connectée à votre Pi, vous pouvez capturer une image de 64 × 64 pixels et la transmettre à l'écran.

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

Les deux lignes précédentes capturent une image 64 × 64 à l'écran et utilisent le programme led-image-viewer (compilé dans la section précédente) pour l'afficher sur le grand écran (-L) pour toujours (-f).

Et ensuite ?

Vous disposez maintenant d'un ordinateur à 10 $ qui peut suivre (soit avec une antenne et un récepteur SDR, soit avec un appel API) les avions autour de vous et afficher toutes les informations sur ceux que vous souhaitez sur votre écran 64 pixels par 64 pixels, ou sur le Raspberry Sortie HDMI du Pi Zero W.

Ce que vous en faites n'est limité que par votre imagination.

Étant donné que cet article ne présente que les outils, la première étape que je recommande est de lire la documentation de l'affichage et de FlightAware, puis d'ouvrir les exemples de programmes des deux pour mieux comprendre leurs capacités.

Et n'oubliez pas que votre Raspberry Pi Zero est une installation Linux fonctionnelle complète avec des commandes souvent utilisées telles que Cron , Grep , et Awk . Tout ce qui n'est pas déjà sur votre Pi est juste une courte apt-get install loin.

Regardez la vidéo ci-dessous pour voir l'aboutissement de ces projets !

Essayez ce projet par vous-même ! Obtenez la nomenclature.


Équipement industriel

  1. Pixus :solutions radio robustes définies par logiciel
  2. Mesure des températures avec un capteur DS18B20 1 fil et Raspberry Pi
  3. Surveillance de la température ambiante avec un Raspberry Pi et Nagios
  4. Surveillance de la température ambiante avec Moteino's et Raspberry Pi
  5. Contrôleur Smart Home 433MHz avec Sensorflare et RaspberryPi
  6. Lecture de capteurs analogiques avec Raspberry Pi et Zabbix Supervisor
  7. Créez votre premier IOT avec un Raspberry Pi, un capteur DHT11 et Thingspeak.
  8. Aéroponie avec Raspberry Pi et capteur d'humidité
  9. Premiers pas avec la passerelle LoRa RAK831 et RPi3