Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Manufacturing Equipment >> Equipo industrial

Seguimiento de vuelos aéreos con una Raspberry Pi Zero Wireless, una radio definida por software y FlightAware

Este artículo muestra dos formas de usar una Raspberry Pi Zero Wireless para rastrear vuelos en su área. También demuestra cómo puede controlar una matriz RGB de 64 × 64.

La Raspberry Pi Zero Wireless es una microcomputadora de 10 dólares capaz de hacer muchas cosas. Este artículo le muestra dos formas de usar este Pi para rastrear vuelos en su área. ¡También demuestra cómo puede controlar una matriz RGB de 64 × 64 para mostrar los números de vuelo!

En este artículo, haré tres proyectos separados usando Raspberry Pi Zero Wireless. En el Proyecto 1, crearé un dispositivo de seguimiento de aviones usando PiAware. En el Proyecto 2, recopilaré datos de dichos aviones. En el Proyecto 3, le mostraré cómo usar el RPi Zero W para controlar una matriz RGB de 64 × 64.

Proyecto 1:Rastreador de planos inalámbrico Raspberry Pi Zero

Part Costo Notas
Raspberry Pi Zero Wireless $ 10
Receptor SDR $ 21 Es probable que funcionen muchos otros receptores USB SDR
Tarjeta microSD de 4GB $ 6 Las tarjetas más grandes funcionarán
Adaptador de USB a MicroUSB $ 5
MicroUSB Hub (opcional) $ 8 El Pi Zero solo tiene puertos microUSB; para colocar accesorios, necesita un concentrador / convertidor
Antena de banda ancha (opcional) $ 50 La antena debe cubrir 1090 MHz
Filtro de paso de banda de 1090 MHz (opcional) $ 20

Recursos

Este experimento se realizó con Raspberry Pi Zero Wireless. Sin embargo, el siguiente código debería funcionar en cualquier Raspberry Pi versión 2 o posterior. Si compra un Pi Zero sin conexión inalámbrica, puede agregarlo con una llave de red USB inalámbrica.

Paso 1:Prepare la tarjeta SD

Descargue la última versión de Raspbian Jessie en su computadora.

Escriba la imagen en su tarjeta SD (aquí hay guías para Linux, Mac OS y Windows).

Paso 2:Modifique la tarjeta SD

Cree un archivo llamado "ssh" en el directorio raíz de la tarjeta SD. Sin extensión de archivo, sin contenido de archivo. Este archivo habilita SSH, lo que le permitirá acceder de forma remota al Pi.

Cree un archivo llamado "wpa_supplicant.conf" con el siguiente contenido. Cambie los valores de YourWifiName y YourWifiPassword por el nombre y la contraseña que usa para conectarse a su red Wi-Fi.

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

Paso 3:instalar y arrancar

Expulsa la tarjeta SD de tu computadora e instálala en la Raspberry Pi Zero Wireless. Conecte la Raspberry Pi a una fuente de alimentación utilizando el puerto MicroUSB más cercano al final de la placa. Espere aproximadamente un minuto para que la Raspberry Pi se inicie y se conecte a Wi-Fi. Con estos archivos de configuración, no es necesario utilizar un teclado, mouse o pantalla con su dispositivo.

Paso 4:Ubique su Pi

Identifique la dirección IP de su Pi; esto se puede lograr iniciando sesión en su enrutador y mirando los dispositivos conectados, o mediante un escáner de IP como Look @ Lan (Windows) o nmap (Linux y Mac). Si su dispositivo no aparece en dos o tres minutos, desconecte la alimentación, retire la tarjeta SD del Pi, vuelva a insertarla en su computadora y vuelva a verificar el ssh y wpa_supplicant.conf archivos.

Paso 5:Conéctese a su Pi

Windows:use una herramienta como Putty para conectarse a su Pi. Descarga y ejecuta el programa, escribe la dirección IP de tu Pi y haz clic en "conectar". Aparecerá una ventana que le preguntará sobre el certificado de seguridad; haga clic en "sí".

Linux y Mac:abre una terminal y escribe "ssh [email protected]" o "ssh pi @ ipaddress" (p. Ej., "Ssh [email protected]").

Cuando se le solicite, el nombre de usuario predeterminado es "pi" y la contraseña predeterminada es "raspberry".

Paso 6:Configure su Pi

Escribe "sudo raspi-config" y presiona Enter.

Cambie su contraseña, zona horaria y localización.

Cuando aparece la solicitud de contraseña, la contraseña actual es "frambuesa"; debe cambiarlo por algo más seguro para que sea al menos un poco difícil piratear su dispositivo. En una nota al margen, en lugar de contraseñas, debe usar certificados para la autenticación, pero eso no se discutirá en este artículo.

Luego, escriba los siguientes comandos y déjelos ejecutar:

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

Una vez que Rapsberry Pi haya finalizado el proceso de arranque, abra un navegador web en su computadora y navegue hasta http://raspberrypi.local:8080 (o reemplace raspberrypi.local con la dirección IP de su dispositivo). Aleje y luego acerque su ubicación a medida que los aviones comienzan a aparecer y luego desaparecen de su pantalla.

Para aumentar la cantidad de aviones, lleve su Pi, SDR y sistema de antena al exterior. Se encuentran más mejoras al agregar el filtro de paso de banda de 1090 MHz y una mejor antena.

Captura de pantalla de P iAware receptor que muestra un área al este de Los Ángeles, California, el 14/3/17 (¡Día Pi!). Las pistas lineales en la parte superior muestran aviones listos para aterrizar en LAX. También se puede ver un avión del gobierno que vuela en círculos.

Finalmente, cree una cuenta FlightAware.com y luego asocie su receptor con su cuenta FlightAware.com.

ADS-B, PiAware y dump1090

Los transpondedores colocados en las aeronaves les permiten transmitir un identificador octal de cuatro dígitos (Modo-A AKA "Squawk") identificador más altitud (Modo-C), un número ICAO único de 24 bits (Modo-S) y el Número de la OACI con información adicional (Señales espontáneas extendidas en Modo S). El último modo también se conoce como ADS-B.

La transmisión automática de vigilancia dependiente (ADS-B) toma la posición de una aeronave (según lo determinado por GPS, GLONASS, etc.), la combina con información de identificación y la transmite a 1090 MHz. A diferencia de los otros códigos de transpondedor, que solo se transmiten como respuesta a una interrogación mediante una señal de radar, ADS-B se transmite aproximadamente dos veces por segundo.

PiAware y dump1090 usan una radio definida por software (SDR) sintonizada a 1090 MHz para recibir y decodificar las transmisiones de todas las aeronaves en las cercanías y enviarlas a los servidores de FlightAware. La información se muestra en una página web alojada en la Raspberry Pi en el puerto 8080.

Ilustración de John Macneil, www.aopa.org.

Todos los aviones deben estar equipados con transpondedores ADS-B Out antes del 1 de enero de 2020. Pero, hasta entonces, FlightAware utiliza la multilateración para determinar la ubicación de los aviones que no transmiten su latitud y longitud. La multilateración utiliza la posición conocida de al menos tres receptores y los tiempos de recepción de un mensaje para calcular la posición de un avión.

Proyecto 2:Uso de Pi Zero Wireless para recopilar datos de aviones de FlightAware.com

FlightAware.com tiene dos interfaces de programa de aplicación (API) que permiten extraer y utilizar datos:FlightXML y Firehose. Elija entre los dos según el tipo de información que necesita y la cantidad de consultas que necesita cada mes. Para este proyecto, All About Circuits obtuvo acceso gratuito durante un mes. Para seguir adelante, deberá comunicarse con FlightAware.com para obtener una clave API.

Recursos:

Paso 1:probar la conectividad

Conéctese a su Pi Zero a través de SSH y pruebe la conectividad a la API de Firehose.

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

Si ve una página o dos de los detalles de la certificación, todo funcionó correctamente.

Paso 2:Obtenga datos y archivos de muestra

FlightAware aloja archivos de muestra en GitHub. Comience descargando y editando los archivos de muestra con su nombre de usuario y clave API.

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

Cambiar el nombre de usuario y apikey campos para que coincidan con su información, luego salga ([Ctrl] + [x]) y guarde.

perl example1.pl

Debería ver los datos en formato de notación de objetos JavaScript (JSON):

$ VAR1 ={
'airplanetype' => 'B738',
'header' => '105',
'pitr' => '1490038420',
'gs' => '334',
'reloj' => '1490038413',
....
'hexid' => 'A44591',
'ident' => ' DAL751 '
' alt '=>' 25100 ',
' lon '=>' -117.38051 ',
' lat '=> '33 .53288'
};

Paso 3:Configure su Pi para recopilar datos

Firehose se llama acertadamente porque puede producir una cantidad abrumadora de datos en un período de tiempo muy corto (~ 1 GB / día), llenando su disco y aumentando los cargos a su cuenta. Entonces, cuando crea un script para recopilar información, debe verificarlo a intervalos regulares, ya que podría llenar rápidamente su disco y vaciar su cuenta de gastos.

Dependiendo del tamaño de su tarjeta MicroSD y lo que espera recopilar, es posible que deba agregar almacenamiento adicional o volver a raspi-config y expandir su sistema de archivos (opción 7, opción A1).

Para mi ejemplo, voy a recopilar datos para un área geográfica de 2 ° × 2 ° que incluye LGB, LAX, ONT, SNA, etc. (34 ° N ± 1 °, 118 ° W ± 1 °). Elegí esta región porque se aproxima a mi área de recepción.

El área de interés varía de 33 ° N a 35 ° N y de 117 ° W a 119 ° W.

El siguiente código es example1.pl, con cambios en la línea 18 y 45. Todas las líneas se muestran a continuación para que los lectores puedan seguir sin tener que descargar el archivo. Cree una copia de example1.pl llamado position.pl y usa nano para editar position.pl.

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

Realice las ediciones necesarias y salga con [Ctrl] + [x].

  1 #! / usr / local / bin / perl 2 3 use estricto; 4 use IO ::Socket ::SSL; 5 use JSON ::PP; 6 use IO ::Uncompress ::Inflate qw ($ InflateError); 7 usa Data ::Dumper; 8 9 my $ username ='allaboutcircuits'; 10 my $ apikey ='allaboutcircuitsreallylongapikey'; 11 mi $ compresión =0; 12 13 # Abra la conexión del socket TLS a FlightAware. 14 my $ sock =IO ::Socket ::SSL-> new ('firehose.flightaware.com:1501') o muere $ !; 15 # imprimir "¡Conectado! \ N"; dieciséis 17 # Envíe el comando de inicio al conector sin comprimir. 18 my $ initcmd ="live version 8.0 user $ username password $ apikey events \" position \ "latlong \" 33-117 35-119 \ ""; 19 if ($ compresión) { 20 $ initcmd. ="Compresión comprimir"; 21} 22 binmode $ calcetín; 23 imprimir $ calcetín "$ initcmd \ n"; 24 25 # Active la compresión, si se solicita. 26 my $ zsock; 27 si ($ compresión) { 28 $ zsock =new IO ::Descomprimir ::Inflar $ sock 29 o muere "IO ::Uncompress ::Inflate falló:$ InflateError \ n"; 30} más { 31 $ zsock =$ calcetín; 32} 33 34 # Bucle principal, leyendo líneas de JSON desde el servidor. 35 mi $ i =1; 36 while (mi $ línea =$ zsock-> getline ()) { 37 #print "LINE $ i \ n"; 38 #print "LINE $ i:", $ línea, "\ n"; 39 40 my $ data =eval {decode_json $ line}; 41 die "No se pudo decodificar JSON:$ line" if! Defined ($ data) || PS 42 43 imprimir $ datos -> {ident}. "\ T". $ Datos -> {lat}. "\ T". $ datos -> {lon}. "\ t". $ datos -> {alt}. "\ n"; 44 45 último si ($ i ++> =10); 46} 47 cerrar $ calcetín; 48 49 # imprime "Todo listo. \ N";  

La línea 18 limita la solicitud a aviones en la región geográfica entre 117 ° W y 119 ° W (indicados por -117 y -119). La línea 43 se modificó para demostrar un método para apuntar solo a los campos de interés. En este caso, apuntaremos al número de vuelo, la latitud, la longitud y la altitud de un avión. La línea 45 solicita 10 planos del servidor (esta línea se puede comentar en un script final).

Los siguientes dos comandos ejecutan el programa y le permiten monitorear el progreso del programa:

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

La primera línea hace que el superusuario use el programa perl para ejecutar el programa position.pl y agregue (>>) la salida al archivo position.txt y el símbolo &hace que el programa se ejecute en segundo plano.

La segunda línea usa el programa tail para seguir (-f) cambios en el archivo position.txt , que le permite supervisar la finalización del comando. Cuando termine, use [Ctrl] + [c] para salir de tail . Si ya no está interesado en recopilar datos, use fg para traer el programa position.pl al primer plano y detenerlo o romperlo con [Ctrl] + [c].

El archivo .zip a continuación contiene programas modificados y resultados que, con suerte, demuestran cómo cambios leves en la sintaxis pueden enfocar información diferente, junto con resultados de muestra de los programas.

Estos archivos se realizaron con modificaciones menores al example1.pl proporcionado por FlightAware. Para crear el suyo que capture solo los datos que le interesan, use la documentación de la API de FlightAware Firehose para solicitar la información adecuada en formato JSON y luego use la sintaxis correcta dentro del archivo para generar solo la información que necesita.

Proyecto 3:Uso de Pi Zero Wireless para controlar una matriz RGB de 64 × 64

Part Costo Notas
(2) Matriz de visualización RGB 2 × 32 × 32 + fuente de alimentación $ 75 ($ 150) Requiere cuatro matrices RGB de 32 × 32 en total para crear una pantalla de 64 × 64 píxeles
Matriz RGB de Adafruit HAT + reloj RTC $ 25 Hojas de datos
Cable IDC de 20 pines (Hub75) $ 7- $ 13 La longitud requerida depende de la configuración de los paneles y la distancia al Pi
Encabezados macho de 0,1 "(40 pines, 2 × 20) $ 1 2,54 mm

Paso 1:Preparación del HAT de la matriz de Adafruit

Suelde los cabezales macho y hembra en Adafruit HAT de acuerdo con las instrucciones en Adafruit.com. Luego suelde un cable o conecte un puente entre los pines 4 y 18. Para este proyecto, no es necesario que conecte el conector de barril de CC ni los conectores de terminal de tornillo.

Paso 2:Preparación de Raspberry Pi

Suelde los conectores macho de 2 × 20 en su lugar.

Paso 3:Preparación de la matriz RGB

Oriente las matrices RGB de modo que las flechas de la fila inferior apunten hacia abajo y las flechas de la fila superior apunten hacia arriba (vea la imagen aquí). Utilice un cable IDC de 2 × 10 para conectar la salida del Adafruit HAT a la entrada de la primera placa. Luego conecte la salida de la primera placa a la entrada de la segunda, la salida de la segunda a la entrada de la tercera, etc.

La parte trasera del panel de matriz RGB. La señal viaja de una placa a otra en forma de "C".

Si tiene la suerte de tener una cortadora láser o una máquina CNC a su disposición, he incluido los dibujos de una placa posterior que puede contener las cuatro placas de matriz RGB utilizadas. Los orificios de montaje se reemplazan con ranuras para permitir la alineación desde un punto central común.

Plantilla para montar cuatro paneles de 32 × 32 para hacer un panel grande de 64 × 64; Son posibles varios arreglos de paneles.

Hughes_4x4RGBMatrix.zip

Documentación completa y código fuente de Hennen Zeller.

Una vez que se hayan realizado todas las conexiones eléctricas, encienda la Raspberry Pi. Después de aproximadamente un minuto, intente iniciar sesión en el Pi con Putty o SSH.

Una vez dentro, escriba lo siguiente para deshabilitar el sonido en el Pi (la documentación indica un conflicto del subsistema de hardware con el sonido y el hardware de la matriz RGB).

gato < lista negra snd_bcm2835
EOF
sudo update-initramfs -u

Luego use apt-get para instalar Python y archivos de imágenes.

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

Obtenga los archivos necesarios para ejecutar la matriz RGB y compílelos.

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

Opcionalmente, si también tiene una cámara conectada a su Pi, puede capturar una imagen de 64 × 64 píxeles y enviarla a la pantalla.

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

Las dos líneas anteriores capturan una imagen de 64 × 64 en la pantalla y usan el programa led-image-viewer (compilado en la sección anterior) para mostrarla en la pantalla grande (-L) para siempre (-f).

¿Qué sigue?

Ahora tiene una computadora de $ 10 que puede rastrear (ya sea con una antena y un receptor SDR o con una llamada API) aviones a su alrededor y mostrar cualquier información sobre los que desee en su pantalla de 64 píxeles por 64 píxeles, o en la Raspberry Salida HDMI de Pi Zero W.

Lo que hagas con él está limitado solo por tu imaginación.

Dado que este artículo solo presenta las herramientas, el primer paso que recomiendo es leer la documentación de la pantalla y FlightAware y luego abrir los programas de ejemplo de ambos para comprender mejor sus capacidades.

Y no olvide que su Raspberry Pi Zero es una instalación de Linux en funcionamiento completa con comandos de uso frecuente como Cron , Grep y Awk . Todo lo que no esté en su Pi es solo una breve instalación de apt-get lejos.

¡Vea el video a continuación para ver la culminación de estos proyectos!

¡Prueba este proyecto por ti mismo! Obtenga la lista de materiales.


Equipo industrial

  1. Pixus:soluciones de radio definidas por software reforzadas
  2. Mide temperaturas con un sensor DS18B20 de 1 cable y Raspberry Pi
  3. Monitoreo de la temperatura ambiente con una Raspberry Pi y Nagios
  4. Monitoreo de la temperatura ambiente con Moteino's y Raspberry Pi
  5. 433MHz Smart Home Controller con Sensorflare y RaspberryPi
  6. Lectura de sensores analógicos con Raspberry Pi y Zabbix Supervisor
  7. Cree su primer IOT con una Raspberry Pi, un sensor DHT11 y Thingspeak.
  8. Aeroponía con Raspberry Pi y sensor de humedad
  9. Introducción a RAK831 LoRa Gateway y RPi3
  10. Creación de robots con Raspberry Pi y Python
  11. Cree su robot de transmisión de video controlado por Internet con Arduino y Raspberry Pi