Manufaktur industri
Industri Internet of Things | bahan industri | Pemeliharaan dan Perbaikan Peralatan | Pemrograman industri |
home  MfgRobots >> Manufaktur industri >  >> Manufacturing Equipment >> Peralatan Industri

Lacak Penerbangan Overhead dengan Raspberry Pi Zero Wireless, Software Defined Radio, dan FlightAware

Artikel ini menunjukkan dua cara menggunakan Raspberry Pi Zero Wireless untuk melacak penerbangan di wilayah Anda. Ini juga menunjukkan cara mengontrol matriks 64x64 RGB.

Raspberry Pi Zero Wireless adalah komputer mikro seharga $10 yang mampu melakukan banyak hal. Artikel ini menunjukkan dua cara menggunakan Pi ini untuk melacak penerbangan di wilayah Anda. Ini juga menunjukkan bagaimana ia dapat mengontrol matriks 64x64 RGB untuk menampilkan nomor penerbangan!

Pada artikel ini, saya akan melakukan tiga proyek terpisah menggunakan Raspberry Pi Zero Wireless. Di Proyek 1, saya akan membuat perangkat pelacak pesawat menggunakan PiAware. Di Proyek 2, saya akan mengumpulkan data dari pesawat tersebut. Di Proyek 3, saya akan menunjukkan cara menggunakan RPi Zero W untuk mengontrol matriks 64x64 RGB.

Proyek 1:Pelacak Pesawat Nirkabel Raspberry Pi Zero

Bagian Biaya Catatan
Nirkabel Raspberry Pi Zero $10
Penerima SDR $21 Banyak penerima USB SDR lainnya kemungkinan besar akan berfungsi
Kartu microSD 4GB $6 Kartu yang lebih besar akan berfungsi
Adaptor USB-ke-MicroUSB $5
MicroUSB Hub (opsional) $8 Pi Zero hanya memiliki port microUSB; untuk memasang aksesori, Anda memerlukan hub/konverter
Antena pita lebar (opsional) $50 Antena harus mencakup 1090 MHz
Filter band-pass 1090 MHz (opsional) $20

Sumber daya

Percobaan ini dilakukan dengan menggunakan Raspberry Pi Zero Wireless. Namun, kode berikut harus berfungsi pada Raspberry Pi versi 2 atau yang lebih baru. Jika Anda membeli Pi Zero tanpa nirkabel, Anda dapat menambahkannya dengan dongle jaringan USB nirkabel.

Langkah 1:Siapkan kartu SD

Unduh Raspbian Jessie terbaru ke komputer Anda.

Tulis gambar ke kartu SD Anda (berikut adalah panduan untuk Linux, Mac OS, dan Windows).

Langkah 2:Ubah kartu SD

Buat file bernama "ssh" di direktori root kartu SD. Tidak ada ekstensi file, tidak ada konten file. File ini mengaktifkan SSH, yang memungkinkan Anda mengakses Pi dari jarak jauh.

Buat file bernama "wpa_supplicant.conf" dengan isi sebagai berikut. Ubah nilai YourWifiName dan YourWifiPassword menjadi nama dan sandi yang Anda gunakan untuk menyambung ke jaringan Wi-Fi Anda.

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

Langkah 3:Instal dan Boot

Keluarkan kartu SD dari komputer Anda dan pasang di Raspberry Pi Zero Wireless. Hubungkan Raspberry Pi ke sumber listrik menggunakan port MicroUSB yang paling dekat dengan ujung papan. Tunggu kira-kira satu menit hingga Raspberry Pi melakukan boot dan terhubung ke Wi-Fi. Dengan file konfigurasi ini, tidak perlu menggunakan keyboard, mouse, atau layar dengan perangkat Anda.

Langkah 4:Temukan Pi Anda

Identifikasi alamat IP Pi Anda—ini dapat dilakukan dengan masuk ke router Anda dan melihat perangkat yang terpasang, atau melalui pemindai IP seperti Look@Lan (Windows) atau nmap (Linux dan Mac). Jika perangkat Anda tidak muncul dalam dua atau tiga menit, putuskan sambungan daya, cabut kartu SD dari Pi, dan masukkan kembali ke komputer Anda dan periksa kembali ssh dan wpa_supplicant.conf file.

Langkah 5:Hubungkan ke Pi Anda

Windows:Gunakan alat seperti Putty untuk terhubung ke Pi Anda. Unduh dan jalankan program, ketik alamat IP Pi Anda, dan klik "sambungkan". Sebuah jendela akan muncul yang menanyakan tentang sertifikat keamanan—klik "ya".

Linux dan Mac:Buka terminal dan ketik "ssh [email protected]" atau "ssh pi@ipaddress" (mis., "ssh [email protected]").

Saat diminta, nama pengguna default adalah "pi" dan kata sandi default adalah "raspberry".

Langkah 6:Konfigurasikan Pi Anda

Ketik "sudo raspi-config" dan tekan enter.

Ubah sandi, zona waktu, dan pelokalan Anda.

Ketika prompt kata sandi muncul, kata sandi saat ini adalah "raspberry"; Anda harus mengubahnya menjadi sesuatu yang lebih aman untuk membuatnya setidaknya sedikit sulit untuk meretas perangkat Anda. Sebagai catatan, alih-alih kata sandi, Anda harus menggunakan sertifikat untuk otentikasi, tetapi itu tidak akan dibahas dalam artikel ini.

Kemudian ketik perintah berikut dan biarkan berjalan:

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

Setelah Rapsberry Pi menyelesaikan proses boot, buka browser web di komputer Anda dan navigasikan ke http://raspberrypi.local:8080 (atau ganti raspberrypi.local dengan alamat IP perangkat Anda). Perkecil lalu perbesar lokasi Anda saat pesawat mulai muncul dan kemudian menghilang dari layar Anda.

Untuk menambah jumlah pesawat, bawa Pi, SDR, dan sistem antena Anda ke luar. Perbaikan lebih lanjut ditemukan dengan menambahkan filter band-pass 1090 MHz dan antena yang lebih baik.

Tangkapan layar P iAware penerima yang menunjukkan area timur Los Angeles, California, pada 14/3/17 (Hari Pi!). Trek linier di bagian atas menunjukkan pesawat yang siap mendarat di LAX. Juga terlihat pesawat pemerintah yang terbang berputar-putar.

Terakhir, buat akun FlightAware.com, lalu kaitkan penerima dengan akun FlightAware.com Anda.

ADS-B, PiAware, dan dump1090

Transponder yang ditempelkan ke pesawat memungkinkan mereka untuk menyiarkan pengenal oktal empat digit (Mode-A AKA "Squawk") pengenal ditambah ketinggian (Mode-C), nomor ICAO unik 24-bit (Mode-S), dan 24-bit Nomor ICAO dengan informasi tambahan (Mode S Extended Squitter). Mode terakhir juga dikenal sebagai ADS-B.

Automatic Dependent Surveillance-Broadcast (ADS-B) mengambil posisi pesawat (sebagaimana ditentukan oleh GPS, GLONASS, dll.), menggabungkannya dengan informasi pengenal, dan menyiarkannya pada 1090 MHz. Tidak seperti kode transponder lainnya, yang hanya ditransmisikan sebagai jawaban atas interogasi oleh sinyal radar, ADS-B ditransmisikan kira-kira dua kali per detik.

PiAware dan dump1090 menggunakan Software Defined Radio (SDR) yang disetel ke 1090 MHz untuk menerima dan memecahkan kode siaran semua pesawat di sekitar dan mengirimkannya ke server FlightAware. Informasi ditampilkan di halaman web yang dihosting di Raspberry Pi di port 8080.

Ilustrasi oleh John Macneil, www.aopa.org.

Semua pesawat harus sudah dilengkapi dengan transponder ADS-B Out paling lambat 1 Januari 2020. Namun, hingga saat itu, FlightAware menggunakan multilaterasi untuk menentukan lokasi pesawat yang tidak menyiarkan lintang dan bujurnya. Multilaterasi menggunakan posisi yang diketahui dari setidaknya tiga penerima dan waktu penerimaan pesan untuk menghitung posisi pesawat.

Proyek 2:Menggunakan Pi Zero Wireless untuk Mengumpulkan Data Pesawat dari FlightAware.com

FlightAware.com memiliki dua Antarmuka Program Aplikasi (API) yang memungkinkan data ditambang dan digunakan:FlightXML dan Firehose. Pilih di antara keduanya berdasarkan jenis informasi yang Anda butuhkan dan berapa banyak kueri yang Anda butuhkan setiap bulan. Untuk proyek ini, All About Circuits diberikan akses gratis selama satu bulan. Untuk mengikuti, Anda perlu menghubungi FlightAware.com untuk mendapatkan kunci API.

Sumber daya:

Langkah 1:Uji Konektivitas

Hubungkan ke Pi Zero Anda melalui SSH dan uji konektivitas ke Firehose API.

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

Jika Anda melihat satu atau dua halaman detail sertifikasi, semuanya berfungsi dengan benar.

Langkah 2:Dapatkan File dan Data Contoh

FlightAware menghosting file sampel di GitHub. Mulailah dengan mengunduh dan mengedit file sampel dengan nama pengguna dan kunci API Anda.

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

Ubah nama pengguna dan apikey untuk mencocokkan informasi Anda, lalu keluar ([Ctrl]+[x]) dan simpan.

contoh perl1.pl

Anda akan melihat data dalam format JavaScript Object Notation (JSON):

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

Langkah 3:Konfigurasikan Pi Anda untuk Mengumpulkan Data

Firehose dinamai dengan tepat karena dapat menghasilkan sejumlah besar data dalam waktu yang sangat singkat (~1 GB/hari)—mengisi disk Anda dan meningkatkan biaya ke akun Anda. Jadi ketika Anda membuat skrip untuk mengumpulkan informasi, Anda harus memeriksanya secara berkala karena Anda dapat dengan cepat mengisi disk dan mengosongkan akun pengeluaran Anda.

Bergantung pada ukuran kartu MicroSD Anda dan apa yang ingin Anda kumpulkan, Anda mungkin perlu menambahkan penyimpanan tambahan atau kembali ke raspi-config dan memperluas sistem file Anda (opsi 7, opsi A1).

Sebagai contoh, saya akan mengumpulkan data untuk area geografis 2° × 2° yang mencakup LGB, LAX, ONT, SNA, dll. (34° N ± 1°, 118° W ± 1°). Saya memilih wilayah ini karena mendekati wilayah penerimaan saya.

Area yang diminati berkisar dari 33° LU hingga 35° LU dan 117° BB hingga 119° BB.

Kode berikut adalah example1.pl, dengan perubahan pada baris 18 dan 45. Semua baris ditampilkan di bawah sehingga pembaca dapat mengikuti tanpa harus mengunduh file. Buat salinan example1.pl disebut position.pl dan gunakan nano untuk mengedit position.pl.

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

Lakukan pengeditan yang diperlukan dan keluar dengan [Ctrl]+[x].

 1 #!/usr/local/bin/perl 2 3 gunakan ketat; 4 gunakan IO::Socket::SSL; 5 gunakan JSON::PP; 6 gunakan IO::Uncompress::Inflate qw($InflateError); 7 menggunakan Data::Dumper; 8 9 my $username ='allaboutcircuits'; 10 my $apikey ='allaboutcircuitsreallylongapikey'; 11 $kompresi saya =0; 12 13# Buka koneksi soket TLS ke FlightAware. 14 my $sock =IO::Socket::SSL->new('firehose.flightaware.com:1501') or die $!; 15 # print "Tersambung!\n"; 16 17 # Kirim perintah inisiasi ke soket yang tidak terkompresi. 18 my $initcmd ="live version 8.0 user $username password $apikey events \"position\" latlong \"33 -117 35 -119\""; 19 if ($kompresi) { 20 $initcmd .=" kompres kompresi"; 21 } 22 binmode $kaus kaki; 23 print $sock "$initcmd\n"; 24 25 # Aktifkan kompresi, jika diminta. 26 $zsock saya; 27 if ($kompresi) { 28 $zsock =IO baru::Uncompress::Inflate $sock 29 atau mati "IO::Uncompress::Inflate gagal:$InflateError\n"; 30 } lain { 31 $zkaus kaki =$kaus kaki; 32 } 33 34 # Main loop, membaca baris JSON dari server. 35 saya $i =1; 36 while ($line saya =$zsock->getline()) { 37 #cetak "GARIS $i\n"; 38 #print "GARIS $i:", $baris, "\n"; 39 40 my $data =eval { decode_json $line }; 41 die "Gagal mendekode JSON:$line" if !defined($data) || $@; 42 43 print $data->{ident}." \t".$data->{lat}." \t " . $data->{lon} . " \T". $data->{alt}." \n"; 44 45 terakhir jika ($i++>=10); 46 } 47 tutup $sock; 48 49 # print "Selesai.\n"; 

Baris 18 membatasi permintaan untuk pesawat di wilayah geografis antara 117° W dan 119° W (dilambangkan dengan -117 dan -119). Baris 43 dimodifikasi untuk mendemonstrasikan metode untuk menargetkan hanya bidang yang diminati. Dalam hal ini, kami akan menargetkan nomor penerbangan, garis lintang, garis bujur, dan ketinggian pesawat. Baris 45 meminta 10 pesawat dari server (baris ini dapat dikomentari dalam skrip akhir).

Dua perintah berikutnya menjalankan program dan memungkinkan Anda untuk memantau kemajuan program:

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

Baris pertama memiliki superuser menggunakan program perl untuk menjalankan program position.pl dan tambahkan (>>) output ke file position.txt dan simbol &menyebabkan program berjalan di latar belakang.

Baris kedua menggunakan program tail untuk mengikuti (-f) perubahan pada file position.txt , yang memungkinkan Anda memantau perintah hingga selesai. Setelah selesai, gunakan [Ctrl]+[c] untuk keluar dari ekor . Jika Anda tidak tertarik lagi untuk mengumpulkan data, gunakan fg untuk membawa program position.pl ke latar depan dan hentikan atau hancurkan dengan [Ctrl]+[c].

File .zip di bawah ini berisi program dan keluaran yang dimodifikasi yang diharapkan menunjukkan betapa sedikit perubahan dalam sintaks dapat membawa informasi yang berbeda menjadi fokus, bersama dengan contoh keluaran dari program.

File-file ini dibuat dengan sedikit modifikasi pada example1.pl yang disediakan oleh FlightAware. Untuk membuat milik Anda sendiri yang hanya menangkap data yang Anda minati, gunakan dokumentasi FlightAware Firehose API untuk meminta informasi yang sesuai dalam format JSON, lalu gunakan sintaks yang benar di dalam file untuk hanya menampilkan informasi yang Anda butuhkan.

Proyek 3:Menggunakan Nirkabel Pi Zero untuk Mengontrol Matriks RGB 64×64

Bagian Biaya Catatan
(2) 2× 32×32 matriks tampilan RGB + catu daya $75 ($150) Membutuhkan empat matriks 32x32 RGB total untuk membuat tampilan 64x64 piksel
Adafruit RGB matrix HAT + jam RTC $25 Lembar Data
Kabel IDC 20-pin (Hub75) $7-$13 Panjang yang dibutuhkan tergantung pada konfigurasi panel dan jarak ke Pi
0,1" header laki-laki (40-pin, 2×20) $1 2,54 mm

Langkah 1:Persiapan HAT Matriks Adafruit

Solder header jantan dan betina pada HAT Adafruit sesuai petunjuk di Adafruit.com. Kemudian solder kawat atau pasang jumper antara pin 4 dan 18. Untuk proyek ini, Anda tidak perlu memasang jack barel DC atau konektor terminal sekrup.

Langkah 2:Persiapan Raspberry Pi

Solder header pria 2×20 pada tempatnya.

Langkah 3:Persiapan Matriks RGB

Arahkan matriks RGB sehingga panah di baris bawah mengarah ke bawah dan panah di baris atas mengarah ke atas (lihat gambar di sini). Gunakan kabel IDC 2x10 untuk menghubungkan output HAT Adafruit ke input papan pertama. Kemudian hubungkan keluaran papan pertama ke masukan papan kedua, keluaran papan kedua ke masukan papan ketiga, dst.

Bagian belakang panel matriks RGB. Sinyal bergerak dari papan ke papan dalam bentuk "C".

Jika Anda cukup beruntung memiliki pemotong laser atau mesin CNC yang Anda inginkan, saya telah menyertakan gambar untuk pelat belakang yang dapat menampung keempat pelat matriks RGB yang digunakan. Lubang pemasangan diganti dengan slot untuk memungkinkan penyelarasan dari titik tengah yang sama.

Templat untuk memasang empat panel 32×32 untuk membuat panel 64×64 besar; Berbagai pengaturan panel dimungkinkan.

Hughes_4x4RGBMatrix.zip

Dokumentasi Lengkap dan Kode Sumber oleh Hennen Zeller.

Setelah semua sambungan listrik dibuat, hidupkan Raspberry Pi. Setelah kira-kira satu menit, coba masuk ke Pi dengan Putty atau SSH.

Setelah masuk, ketik perintah berikut untuk menonaktifkan suara pada Pi (dokumentasi menunjukkan konflik subsistem perangkat keras dengan suara dan perangkat keras matriks RGB).

kucing <daftar hitam snd_bcm2835
EOF
sudo update-initramfs -u

Kemudian gunakan apt-get untuk menginstal Python dan file pencitraan.

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

Dapatkan file yang diperlukan untuk menjalankan matriks RGB dan kompilasi.

git clone https://github.com/hzeller/rpi-rgb-led-matrix
cd rpi-rgb-led-matrix
HARDWARE_DESC=adafruit-hat-pwm make -C contoh-api-use
Sudo contoh-api-use/demo -L -D0
cd utils/
HARDWARE_DESC=adafruit-hat-pwm make

Secara opsional, jika Anda juga memiliki kamera yang terhubung ke Pi, Anda dapat mengambil gambar 64x64 piksel dan memasukkannya ke layar.

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

Dua baris sebelumnya menangkap gambar 64x64 ke layar dan menggunakan program led-image-viewer (dikompilasi di bagian sebelumnya) untuk menampilkannya di layar Besar (-L) selamanya (-f).

Apa Selanjutnya?

Anda sekarang memiliki komputer seharga $10 yang dapat melacak (baik dengan antena dan penerima SDR atau dengan panggilan API) di sekitar Anda dan menampilkan informasi apa pun tentang pesawat yang Anda inginkan di layar 64-piksel kali 64-piksel, atau di Raspberry Keluaran HDMI Pi Zero W.

Apa yang Anda lakukan dengannya hanya dibatasi oleh imajinasi Anda.

Karena artikel ini hanya memperkenalkan alat, langkah pertama yang saya sarankan adalah membaca dokumentasi untuk tampilan dan FlightAware, lalu membuka contoh program dari keduanya untuk lebih memahami kemampuannya.

Dan jangan lupa bahwa Raspberry Pi Zero Anda adalah instalasi Linux yang berfungsi lengkap dengan perintah yang sering digunakan seperti Cron , Gep , dan Awk . Apa pun yang belum ada di Pi Anda hanyalah apt-get install short singkat pergi.

Lihat video di bawah untuk melihat kulminasi dari proyek-proyek ini!

Cobalah proyek ini sendiri! Dapatkan BOM.


Peralatan Industri

  1. Pixus:solusi radio yang ditentukan oleh perangkat lunak yang kokoh
  2. Ukur suhu dengan sensor DS18B20 1-kawat dan Raspberry Pi
  3. Memantau Suhu Kamar dengan Raspberry Pi dan Nagios
  4. Memantau Suhu Kamar dengan Moteino dan Raspberry Pi
  5. 433MHz Smart Home Controller dengan Sensorflare dan RaspberryPi
  6. Membaca Sensor Analog dengan Raspberry Pi dan Zabbix Supervisor
  7. Bangun IOT Pertama Anda dengan Raspberry Pi, sensor DHT11, dan Thingspeak.
  8. Aeroponik dengan Raspberry Pi dan sensor kelembapan
  9. Memulai RAK831 LoRa Gateway dan RPi3
  10. Membuat robot dengan Raspberry Pi dan Python