Manufaturação industrial
Internet das coisas industrial | Materiais industriais | Manutenção e reparo de equipamentos | Programação industrial |
home  MfgRobots >> Manufaturação industrial >  >> Manufacturing Equipment >> Equipamento industrial

Rastreie voos aéreos com Raspberry Pi Zero Wireless, um rádio definido por software e FlightAware

Este artigo mostra duas maneiras de usar um Raspberry Pi Zero Wireless para rastrear voos em sua área. Ele também demonstra como pode controlar uma matriz RGB 64 × 64.


O Raspberry Pi Zero Wireless é um microcomputador de US $ 10 capaz de muitas coisas. Este artigo mostra duas maneiras de usar este Pi para rastrear voos em sua área. Ele também demonstra como pode controlar uma matriz RGB 64 × 64 para exibir os números dos voos!

Neste artigo, farei três projetos separados usando o Raspberry Pi Zero Wireless. No Projeto 1, criarei um dispositivo de rastreamento de avião usando PiAware. No Projeto 2, vou coletar dados desses aviões. No Projeto 3, mostrarei como usar o RPi Zero W para controlar uma matriz RGB 64 × 64.

Projeto 1:Raspberry Pi Zero Wireless Plane Tracker

Parte Custo Notas
Raspberry Pi Zero Wireless $ 10
Receptor SDR $ 21 Muitos outros receptores SDR USB provavelmente funcionarão
Cartão microSD de 4 GB $ 6 Cartões maiores funcionarão
Adaptador USB para MicroUSB $ 5
MicroUSB Hub (opcional) $ 8 O Pi Zero possui apenas portas microUSB; para conectar acessórios, você precisa de um hub / conversor
Antena de banda larga (opcional) $ 50 A antena deve cobrir 1090 MHz
Filtro passa-banda de 1090 MHz (opcional) $ 20

Recursos


Este experimento foi feito usando o Raspberry Pi Zero Wireless. No entanto, o código a seguir deve funcionar em qualquer Raspberry Pi versão 2 ou posterior. Se você comprar um Pi Zero sem fio, poderá adicioná-lo com um dongle de rede USB sem fio.


Etapa 1:Prepare o cartão SD


Baixe o Raspbian Jessie mais recente para o seu computador.

Grave a imagem em seu cartão SD (aqui estão os guias para Linux, Mac OS e Windows).


Etapa 2:modificar o cartão SD


Crie um arquivo chamado "ssh" no diretório raiz do cartão SD. Sem extensão de arquivo, sem conteúdo de arquivo. Este arquivo habilita SSH, o que permitirá que você acesse remotamente o Pi.

Crie um arquivo denominado "wpa_supplicant.conf" com o seguinte conteúdo. Altere os valores de YourWifiName e YourWifiPassword para o nome e a senha que você usa para se conectar à sua rede Wi-Fi.


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

Etapa 3:instalar e inicializar


Ejete o cartão SD do seu computador e instale-o no Raspberry Pi Zero Wireless. Conecte o Raspberry Pi a uma fonte de alimentação usando a porta MicroUSB mais próxima do final da placa. Aguarde aproximadamente um minuto para que o Raspberry Pi seja inicializado e se conecte ao Wi-Fi. Com esses arquivos de configuração, não há necessidade de usar teclado, mouse ou monitor com o dispositivo.


Etapa 4:Localize seu Pi


Identifique o endereço IP de seu Pi - isso pode ser feito fazendo login em seu roteador e olhando os dispositivos conectados, ou por meio de um scanner de IP como Look @ Lan (Windows) ou nmap (Linux e Mac). Se o dispositivo não aparecer em dois ou três minutos, desconecte a alimentação, remova o cartão SD do Pi e reinsira-o no computador e verifique novamente o ssh e wpa_supplicant.conf arquivos.


Etapa 5:Conecte-se ao seu Pi


Windows:use uma ferramenta como o Putty para se conectar ao seu Pi. Baixe e execute o programa, digite o endereço IP do seu Pi e clique em "conectar". Uma janela aparecerá perguntando sobre o certificado de segurança - clique em "sim".

Linux e Mac:abra um terminal e digite "ssh [email protected]" ou "ssh pi @ ipaddress" (por exemplo, "ssh [email protected]").

No prompt, o nome de usuário padrão é "pi" e a senha padrão é "raspberry".


Etapa 6:Configure seu Pi


Digite "sudo raspi-config" e pressione Enter.

Altere sua senha, fuso horário e localização.

Quando a solicitação de senha for exibida, a senha atual é "raspberry"; você deve alterá-lo para algo mais seguro para tornar pelo menos um pouco difícil de hackear seu dispositivo. Em uma nota lateral, em vez de senhas, você deve usar certificados para autenticação, mas isso não será discutido neste artigo.

Em seguida, digite os seguintes comandos e permita que eles sejam executados:


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 sim
sudo piaware-config allow-manual-updates sim
sudo apt-get install dump1090-fa -y
sudo reboot
Depois que o Rapsberry Pi terminar o processo de inicialização, abra um navegador da web em seu computador e navegue até http://raspberrypi.local:8080 (ou substitua raspberrypi.local pelo endereço IP do seu dispositivo). Diminua o zoom e, em seguida, amplie sua localização conforme os aviões começam a aparecer e depois desaparecem de sua tela.

Para aumentar o número de aviões, leve seu Pi, SDR e sistema de antena para fora. Outras melhorias são encontradas adicionando o filtro passa-banda de 1090 MHz e uma antena melhor.




Captura de tela de P iAware receptor que mostra uma área a leste de Los Angeles, Califórnia, em 14/03/17 (dia do Pi!). As faixas lineares nos principais aviões mostram os aviões prontos para pousar em LAX. Também visível é um avião do governo voando em círculos.



Finalmente, crie uma conta FlightAware.com e então associe seu receptor à sua conta FlightAware.com.

ADS-B, PiAware e dump1090


Os transponders afixados nas aeronaves permitem que elas transmitam um identificador octal de quatro dígitos (Modo-A, também conhecido como "Squawk"), identificador mais altitude (Modo-C), um número ICAO exclusivo de 24 bits (Modo-S) e o de 24 bits Número ICAO com informações adicionais (Modo S Extended Squitter). O último modo também é conhecido como ADS-B.

A Transmissão de Vigilância Dependente Automática (ADS-B) toma a posição de uma aeronave (conforme determinado pelo GPS, GLONASS, etc.), combina-a com as informações de identificação e as transmite a 1090 MHz. Ao contrário dos outros códigos transponder, que são transmitidos apenas em resposta a uma interrogação por um sinal de radar, o ADS-B é transmitido aproximadamente duas vezes por segundo.

PiAware e dump1090 usam um Rádio Definido por Software (SDR) ajustado para 1090 MHz para receber e decodificar as transmissões de todas as aeronaves nas proximidades e enviá-las aos servidores da FlightAware. As informações são exibidas em uma página da web hospedada no Raspberry Pi na porta 8080.



Ilustração de John Macneil, www.aopa.org.



Todas as aeronaves devem estar equipadas com transponders ADS-B Out até 1º de janeiro de 2020. Mas, até então, a FlightAware usa a multilateração para determinar a localização dos aviões que não transmitem sua latitude e longitude. A multilateração usa a posição conhecida de pelo menos três receptores e os tempos de recepção de uma mensagem para calcular a posição de um avião.

Projeto 2:Usando o Pi Zero Wireless para coletar dados do avião em FlightAware.com


FlightAware.com tem duas interfaces de programa de aplicativo (API) que permitem que os dados sejam extraídos e utilizados:FlightXML e Firehose. Escolha entre os dois com base no tipo de informação que você precisa e quantas consultas você precisa a cada mês. Para este projeto, o All About Circuits teve acesso gratuito por um mês. Para acompanhar, você precisará entrar em contato com FlightAware.com para obter uma chave API.


Recursos:



Etapa 1:Teste a conectividade


Conecte-se ao seu Pi Zero por SSH e teste a conectividade com a API Firehose.


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


Se você vir uma ou duas páginas de detalhes da certificação, tudo funcionou corretamente.

Etapa 2:Obter arquivos e dados de amostra


FlightAware hospeda arquivos de amostra no GitHub. Comece baixando e editando os arquivos de amostra com seu nome de usuário e chave de API.


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


Altere o nome de usuário e apikey campos para corresponder às suas informações, em seguida, saia ([Ctrl] + [x]) e salve.


perl example1.pl


Você deve ver os dados no formato JavaScript Object Notation (JSON):

$ VAR1 ={
'aeronavetype' => 'B738',
'cabeçalho' => '105',
'pitr' => '1490038420',
'gs' => '334',
'clock' => '1490038413',
....
'hexid' => 'A44591',
'ident' => ' DAL751 '
' alt '=>' 25100 ',
' lon '=>' -117.38051 ',
' lat '=> '33 .53288'
};

Etapa 3:Configurar seu Pi para coletar dados


Firehose é apropriadamente nomeado porque pode produzir uma enorme quantidade de dados em um período de tempo muito curto (~ 1 GB / dia) - enchendo seu disco e aumentando as cobranças em sua conta. Portanto, ao criar um script para coletar informações, você deve verificá-lo em intervalos regulares, pois pode rapidamente preencher seu disco e esvaziar sua conta de despesas.

Dependendo do tamanho do seu cartão MicroSD e do que você espera coletar, pode ser necessário adicionar armazenamento adicional ou voltar para raspi-config e expandir seu sistema de arquivos (opção 7, opção A1).

Para o meu exemplo, irei coletar dados para uma área geográfica 2 ° × 2 ° que inclui LGB, LAX, ONT, SNA, etc. (34 ° N ± 1 °, 118 ° W ± 1 °). Escolhi esta região porque se aproxima da minha área de recepção.



A área de interesse varia de 33 ° N a 35 ° N e 117 ° W a 119 ° W.



O código a seguir é example1.pl, com alterações nas linhas 18 e 45. Todas as linhas são mostradas abaixo para que os leitores possam acompanhar sem precisar baixar o arquivo. Crie uma cópia de example1.pl chamado position.pl e usar nano para editar position.pl.


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


Faça as edições necessárias e saia com [Ctrl] + [x].
  1 #! / usr / local / bin / perl 2 3 use estrito; 4 use IO ::Socket ::SSL; 5 use JSON ::PP; 6 use IO ::Uncompress ::Inflate qw ($ InflateError); 7 use Data ::Dumper; 8 9 meu $ username ='allaboutcircuits'; 10 my $ apikey ='allaboutcircuitsreallylongapikey'; 11 meu $ compressão =0; 12 13 # Abra a conexão do soquete TLS com o FlightAware. 14 my $ sock =IO ::Socket ::SSL-> new ('firehose.flightaware.com:1501') or die $ !; 15 # print "Conectado! \ N"; 16 17 # Envia o comando de iniciação ao socket descompactado. 18 my $ initcmd ="versão ao vivo 8.0 usuário $ nome de usuário senha $ apikey events \" position \ "latlong \" 33 -117 35 -119 \ ""; 19 if ($ compressão) { 20 $ initcmd. ="Compressão de compressão"; 21} 22 binmode $ sock; 23 imprimir $ sock "$ initcmd \ n"; 24 25 # Ative a compactação, se solicitado. 26 meu $ zsock; 27 if ($ compressão) { 28 $ zsock =new IO ::Descompactar ::Inflar $ sock 29 ou morrer "IO ::Uncompress ::Inflate falhou:$ InflateError \ n"; 30} else { 31 $ zsock =$ sock; 32} 33 34 # Loop principal, lendo linhas de JSON do servidor. 35 meu $ i =1; 36 while (my $ line =$ zsock-> getline ()) { 37 #print "LINE $ i \ n"; 38 #print "LINE $ i:", $ line, "\ n"; 39 40 meu $ data =eval {decode_json $ line}; 41 die "Falha ao decodificar JSON:$ line" if! Defined ($ data) || $ @; 42 43 imprimir $ data -> {ident}. "\ T". $ Data -> {lat}. "\ T". $ data -> {lon}. "\ t". $ data -> {alt}. "\ n"; 44 45 por último se ($ i ++> =10); 46} 47 fechar $ sock; 48 49 # print "Tudo feito. \ N";  

A linha 18 limita a solicitação a aviões na região geográfica entre 117 ° W e 119 ° W (denotados por -117 e -119). A linha 43 foi modificada para demonstrar um método que visa apenas os campos de interesse. Nesse caso, vamos ter como alvo o número de voo, latitude, longitude e altitude de um avião. A linha 45 solicita 10 aviões do servidor (esta linha pode ser comentada em um script final).

Os próximos dois comandos executam o programa e permitem que você monitore o progresso do programa:


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


A primeira linha faz com que o superusuário use o programa perl para executar o programa position.pl e anexar (>>) a saída ao arquivo position.txt e o símbolo &faz com que o programa seja executado em segundo plano.

A segunda linha usa o programa tail para seguir (-f) mudanças no arquivo position.txt , que permite monitorar o comando para conclusão. Quando terminar, use [Ctrl] + [c] para sair do tail . Se você não estiver mais interessado em coletar dados, use fg para trazer o programa position.pl para o primeiro plano e pare-o ou quebre-o com [Ctrl] + [c].

O arquivo .zip abaixo contém programas modificados e saída que demonstram como pequenas mudanças na sintaxe podem trazer informações diferentes em foco, junto com a saída de amostra dos programas.

Esses arquivos foram feitos com pequenas modificações no example1.pl fornecido pela FlightAware. Para fazer o seu próprio que captura apenas os dados de seu interesse, use a documentação da API FlightAware Firehose para solicitar as informações apropriadas no formato JSON e, em seguida, use a sintaxe correta dentro do arquivo para produzir apenas as informações de que você precisa.

Projeto 3:Usando o Pi Zero Wireless para controlar uma matriz RGB 64 × 64

Parte Custo Notas
(2) Matriz de exibição RGB 2 × 32 × 32 + fonte de alimentação $ 75 ($ 150) Requer quatro matrizes totais de 32 × 32 RGB para criar uma exibição de 64 × 64 pixels
Matriz Adafruit RGB HAT + relógio RTC $ 25 Folhas de dados
Cabo IDC de 20 pinos (Hub75) US $ 7 a US $ 13 O comprimento necessário depende da configuração dos painéis e da distância até o Pi
cabeçalhos masculinos de 0,1 "(40 pinos, 2 × 20) $ 1 2,54 mm

Etapa 1:Preparação de Adafruit Matrix HAT


Solde os cabeçotes masculino e feminino no HAT Adafruit de acordo com as instruções em Adafruit.com. Em seguida, solde um fio ou conecte um jumper entre os pinos 4 e 18. Para este projeto, você não precisa conectar o conector de barril CC ou os conectores de terminal de parafuso.


Etapa 2:Preparação de Raspberry Pi


Solde os cabeçotes 2 × 20 machos no lugar.


Etapa 3:Preparação da matriz RGB


Oriente as matrizes RGB de forma que as setas da linha inferior estejam apontadas para baixo e as setas da linha superior apontadas para cima (veja a imagem aqui). Use um cabo IDC 2 × 10 para conectar a saída do Adafruit HAT à entrada da primeira placa. Em seguida, conecte a saída da primeira placa à entrada da segunda, a saída da segunda à entrada da terceira, etc.



Parte traseira do painel de matriz RGB. O sinal viaja de placa para placa em forma de "C".



Se você tiver a sorte de ter um cortador a laser ou máquina CNC à sua disposição, incluí os desenhos de uma placa traseira que pode conter todas as quatro placas de matriz RGB usadas. Os orifícios de montagem são substituídos por ranhuras para permitir o alinhamento a partir de um ponto central comum.



Modelo para montar quatro painéis de 32 × 32 para fazer um grande painel de 64 × 64; Vários arranjos de painel são possíveis.

Hughes_4x4RGBMatrix.zip

Documentação completa e código-fonte de Hennen Zeller.

Assim que todas as conexões elétricas forem feitas, ligue o Raspberry Pi. Após aproximadamente um minuto, tente fazer logon no Pi com Putty ou SSH.

Depois de entrar, digite o seguinte para desativar o som no Pi (a documentação indica um conflito de subsistema de hardware com o som e o hardware de matriz RGB).


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


Em seguida, use apt-get para instalar Python e arquivos de imagem.


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


Obtenha os arquivos necessários para executar a matriz RGB e compilá-los.


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, se você também tiver uma câmera conectada ao seu Pi, pode capturar uma imagem de 64 × 64 pixels e enviá-la para o monitor.


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


As duas linhas anteriores capturam uma imagem de 64 × 64 para a tela e usam o programa visualizador de imagens led (compilado na seção anterior) para exibi-la na tela Grande (-L) para sempre (-f).

O que vem a seguir?


Agora você tem um computador de US $ 10 que pode rastrear (com uma antena e receptor SDR ou com uma chamada de API) aeronaves ao seu redor e exibir qualquer informação sobre aquelas que você deseja em sua tela de 64 x 64 pixels ou no Raspberry Saída HDMI de Pi Zero W.

O que você faz com ele é limitado apenas pela sua imaginação.

Como este artigo apenas apresenta as ferramentas, a primeira etapa que recomendo é ler a documentação do monitor e do FlightAware e, em seguida, abrir os programas de exemplo de ambos para entender melhor seus recursos.

E não se esqueça de que o Raspberry Pi Zero é uma instalação Linux funcional, completa com comandos usados ​​com frequência, como Cron , Grep e Awk . Qualquer coisa que ainda não esteja em seu Pi é apenas um breve apt-get install um jeito.

Confira o vídeo abaixo para ver o culminar desses projetos!

Experimente você mesmo este projeto! Obtenha o BOM.

Equipamento industrial

  1. Pixus:soluções de rádio definidas por software robustas
  2. Meça temperaturas com um sensor DS18B20 de 1 fio e Raspberry Pi
  3. Monitoramento da temperatura ambiente com Raspberry Pi e Nagios
  4. Monitoramento da temperatura ambiente com Moteino e Raspberry Pi
  5. Controlador Smart Home de 433 MHz com Sensorflare e RaspberryPi
  6. Sensores analógicos lendo com Raspberry Pi e Zabbix Supervisor
  7. Crie sua primeira IOT com um Raspberry Pi, sensor DHT11 e Thingspeak.
  8. Aeroponia com Raspberry Pi e sensor de umidade
  9. Primeiros passos com o RAK831 LoRa Gateway e RPi3
  10. Construindo robôs com Raspberry Pi e Python