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

Pelacakan Penerbangan Akurat dengan Biaya Rendah: Raspberry Pi Zero Wireless, SDR, dan FlightAware

Artikel ini menunjukkan dua cara menggunakan Raspberry Pi Zero Wireless untuk melacak penerbangan di area Anda. Ini juga menunjukkan bagaimana ia dapat mengontrol matriks RGB 64×64.

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

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

Proyek 1: Pelacak Penerbangan Raspberry Pi Zero Wireless

Bagian Biaya Catatan
Raspberry Pi Zero Wireless $10  
Penerima SDR $21 Banyak penerima SDR USB lainnya kemungkinan akan bekerja
Kartu microSD 4GB $6 Kartu yang lebih besar akan bekerja
Adapter USB-ke-MicroUSB $5  
Hub MicroUSB (opsional) $8 Pi Zero hanya memiliki port microUSB; untuk memasang aksesori, Anda perlu hub/koverter
Anten wideband (opsional) $50 Anten harus mencakup 1090 MHz
Filter band-pass 1090 MHz (opsional) $20  

Sumber Daya

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

 

Langkah 1: Siapkan Kartu SD

Unduh Raspbian Jessie terbaru ke komputer Anda.

Tulis image ke kartu SD (ini adalah panduan untuk Linux, Mac OS, dan Windows).

 

Langkah 2: Modifikasi Kartu SD

Buat file bernama "ssh" di direktori root kartu SD. Tanpa ekstensi file, tanpa isi file. File ini mengaktifkan SSH, yang akan memungkinkan Anda untuk mengakses Pi dari jarak jauh.

Buat file bernama "wpa_supplicant.conf" dengan isi berikut. Ubah nilai YourWifiName dan YourWifiPassword menjadi nama dan kata sandi yang Anda gunakan untuk terhubung 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 daya menggunakan port MicroUSB terdekat dengan ujung papan. Tunggu sekitar satu menit untuk Raspberry Pi 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—hal ini dapat dilakukan dengan masuk ke router Anda dan melihat perangkat yang terhubung, atau melalui scanner IP seperti Look@Lan (Windows) atau nmap (Linux dan Mac). Jika perangkat Anda tidak muncul dalam dua atau tiga meni, matikan daya, keluarkan kartu SD dari Pi, dan masukkan kembali ke komputer Anda dan periksa kembali file ssh dan wpa_supplicant.conf.

 

Langkah 5: Hubungkan ke Pi Anda

Windows: Gunakan alat seperti Putty untuk terhubung ke Pi. Unduh dan jalankan program, ketik alamat IP Pi Anda, dan klik "connect". Jendela akan muncul yang meminta Anda tentang sertifikat keamanan—klik "yes".

Linux dan Mac: Buka terminal dan ketik "ssh pi@raspberrypi.local" atau "ssh pi@ipaddress" (misalnya, "ssh pi@192.168.0.52").

Di prompt, nama pengguna default adalah "pi" dan kata sandi default adalah "raspberry".

 

Langkah 6: Konfigurasikan Pi Anda

Ketik "sudo raspi-config" dan tekan enter.

Ubah kata sandi, zona waktu, dan lokalisasi 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 dijebol perangkat Anda. Catatan samping, alih-alih kata sandi, Anda harus menggunakan sertifikat untuk autentikasi, tetapi itu tidak akan dibahas dalam artikel ini.

Kemudian ketik perintah berikut dan biarkan berjalan:

 

wget https://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

Setelah Raspberry Pi selesai proses boot, buka browser web di komputer Anda dan navigasikan ke https://raspberrypi.local:8080 (atau ganti raspberrypi.local dengan alamat IP perangkat Anda). Zoom out dan kemudian zoom ke lokasi Anda saat pesawat mulai muncul dan kemudian menghilang dari layar Anda.

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

 

Pelacakan Penerbangan Akurat dengan Biaya Rendah: Raspberry Pi Zero Wireless, SDR, dan FlightAware

Screenshot penerima PiAware yang menunjukkan area timur Los Angeles, California, pada 3/14/17 (Pi Day!). Jejak linear di bagian atas menunjukkan pesawat siap mendarat di LAX. Juga terlihat pesawat pemerintah yang terbang berputar.

 

Terakhir, buat akun FlightAware.com dan kemudian asosiasikan penerima Anda dengan akun FlightAware.com Anda.

ADS-B, PiAware, dan dump1090

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

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

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

 

Pelacakan Penerbangan Akurat dengan Biaya Rendah: Raspberry Pi Zero Wireless, SDR, dan FlightAware

Ilustrasi oleh John Macneil, www.aopa.org.

 

Semua pesawat harus dilengkapi dengan transponder ADS-B Out pada tanggal 1 Januari 2020. Namun, sampai saat itu, FlightAware menggunakan multilateration untuk menentukan lokasi pesawat yang tidak menyiarkan lintang dan bujur mereka. Multilateration 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 Penerbangan dari FlightAware.com

FlightAware.com memiliki dua Application Program Interfaces (API) yang memungkinkan data untuk 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 kunci API.

 

Sumber Daya:

 

Langkah 1: Uji Konektivitas

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

 

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

 

Jika Anda melihat satu atau dua halaman detail sertifikat, semuanya berjalan dengan baik.

Langkah 2: Dapatkan File dan Data Sampel

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

 

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

 

Ubah bidang username dan apikey agar cocok dengan informasi Anda, lalu keluar ([Ctrl]+[x]) dan simpan.

 

perl example1.pl

 

Anda harus melihat data dalam 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'
        };

Langkah 3: Konfigurasikan Pi Anda untuk Mengumpulkan Data

Firehose diberi nama dengan tepat karena dapat menghasilkan jumlah data yang luar biasa dalam waktu sangat singkat (~1 GB/hari)—mengisi disk Anda dan meningkatkan biaya akun Anda. Jadi saat Anda membuat skrip untuk mengumpulkan informasi, Anda harus memeriksa secara teratur karena Anda dapat dengan cepat mengisi disk dan mengosongkan rekening biaya Anda.

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

Untuk contoh saya, 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 area penerimaan saya.

 

Pelacakan Penerbangan Akurat dengan Biaya Rendah: Raspberry Pi Zero Wireless, SDR, dan FlightAware

Wilayah minat berkisar dari 33° N hingga 35° N dan 117° W hingga 119° W.

 

Kode berikut adalah example1.pl, dengan perubahan pada baris 18 dan 45. Semua baris ditampilkan di bawah ini 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 use strict;
 4 use IO::Socket::SSL;
 5 use JSON::PP;
 6 use IO::Uncompress::Inflate qw($InflateError);
 7 use Data::Dumper;
 8
 9 my $username = 'allaboutcircuits';
10 my $apikey = 'allaboutcircuitsreallylongapikey';
11 my $compression = 0;
12 
13 # Buka koneksi soket TLS ke FlightAware.
14 my $sock = IO::Socket::SSL->new('firehose.flightaware.com:1501') or die $!;
15 # print "Connected!\n";
16 
17 # Kirim perintah inisiasi ke soket terkompresi.
18 my $initcmd = "live version 8.0 user $username password $apikey events \"position\" latlong \"33 -117 35 -119\"";
19 if ($compression) {
20 $initcmd .= " compression compress";
21 }
22 binmode $sock;
23 print $sock "$initcmd\n";
24 
25 # Aktifkan kompresi, jika diminta.
26 my $zsock;
27 if ($compression) {
28 $zsock = new IO::Uncompress::Inflate $sock
29 or die "IO::Uncompress::Inflate failed: $InflateError\n";
30 } else {
31 $zsock = $sock;
32 }
33 
34 # Loop utama, membaca baris JSON dari server.
35 my $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 "Failed to decode 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 close $sock;
48 
49 # print "All done.\n";  

Baris 18 membatasi permintaan ke pesawat di wilayah geografis antara 117° W dan 119° W (ditandai dengan -117 dan -119). Baris 43 dimodifikasi untuk menunjukkan metode untuk menargetkan hanya bidang yang diinginkan. Dalam kasus ini, kita akan menargetkan nomor penerbangan, lintang, bujur, dan ketinggian pesawat. Baris 45 meminta 10 pesawat dari server (baris ini dapat di-komentar dalam skrip akhir).

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

 

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

 

Baris pertama menggunakan superuser untuk menjalankan program perl untuk menjalankan program position.pl dan menambahkan (>>) 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 untuk selesai. Setelah selesai, gunakan [Ctrl]+[c] untuk keluar dari tail. Jika Anda tidak lagi tertarik mengumpulkan data, gunakan fg untuk membawa program position.pl ke latar depan dan berhentikan atau hentikan dengan [Ctrl]+[c].

File .zip di bawah ini berisi program dan output yang dimodifikasi yang diharapkan menunjukkan bagaimana perubahan kecil dalam sintaks dapat membawa informasi yang berbeda ke fokus, bersama dengan output sampel dari program.

File ini dibuat dengan modifikasi kecil pada example1.pl yang disediakan oleh FlightAware. Untuk membuat yang Anda miliki yang hanya menangkap data yang Anda minati, gunakan dokumentasi API Firehose FlightAware untuk meminta informasi yang sesuai dalam format JSON, dan kemudian gunakan sintaks yang benar di dalam file untuk hanya mengeluarkan informasi yang Anda butuhkan.

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

Bagian Biaya Catatan
(2) 2× 32×32 layar matriks RGB + supply daya $75 ($150) Memerlukan empat total 32×32 matriks RGB untuk membuat layar 64×64 piksel
Adafruit RGB matrix HAT + RTC clock $25 Datasheets
Kabel IDC 20-pin (Hub75) $7-$13 Panjang yang diperlukan tergantung pada konfigurasi panel dan jarak ke Pi
Header pria 0.1" (40-pin, 2×20) $1 2,54 mm

Langkah 1: Persiapan Adafruit Matrix HAT

Solder header pria dan female pada Adafruit HAT sesuai petunjuk di Adafruit.com. Kemudian solder kabel atau pasang jumper antara pin 4 dan 18. Untuk proyek ini, Anda tidak perlu memasang DC barrel jack atau konektor terminal skru.

 

Langkah 2: Persiapan Raspberry Pi

Solder header pria 2×20 ke tempat.

 

Langkah 3: Persiapan Matriks RGB

Oriensikan matriks RGB sehingga panah di baris bawah diarahkan ke bawah dan panah di baris atas diarahkan ke atas (lihat gambar di sini). Gunakan kabel IDC 2×10 untuk menghubungkan output Adafruit HAT ke input papan pertama. Kemudian hubungkan output papan pertama ke input papan kedua, output papan kedua ke input papan ketiga, dst.

 

Pelacakan Penerbangan Akurat dengan Biaya Rendah: Raspberry Pi Zero Wireless, SDR, dan FlightAware

Sisi belakang panel matriks RGB. Sinyal berjalan dari papan ke papan dalam bentuk "C".

 

Jika Anda beruntung memiliki pemotong laser atau mesin CNC, saya telah menyertakan gambar untuk pelat belakang yang dapat menahan keempat papan matriks RGB yang digunakan. Lubang pemasangan diganti dengan slot untuk memungkinkan pengaturan dari titik pusat yang sama.

 

Pelacakan Penerbangan Akurat dengan Biaya Rendah: Raspberry Pi Zero Wireless, SDR, dan FlightAware

Template untuk memasang empat panel 32×32 untuk membuat panel besar 64×64; berbagai susunan panel mungkin.

Hughes_4x4RGBMatrix.zip

Dokumentasi Lengkap dan Kode Sumber oleh Hennen Zeller.

Setelah semua koneksi listrik telah dibuat, nyalakan Raspberry Pi. Setelah sekitar satu menit, coba masuk ke Pi dengan Putty atau SSH.

Setelah masuk, ketik berikut untuk menonaktifkan suara di Pi (dokumentasi menunjukkan konflik subsistem hardware dengan suara dan hardware matriks RGB).

 

 cat << EOF | sudo tee /etc/modprobe.d/blacklist-rgb-matrix.conf
blacklist snd_bcm2835
EOF
sudo update-initramfs -u

 

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

 

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 kompile.

 

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

 

Secara opsional, jika Anda juga memiliki kamera yang terhubung ke Pi, Anda dapat menangkap gambar 64×64 piksel dan memberikannya ke layar.

 

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

 

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

Selanjutnya?

Anda sekarang memiliki komputer $10 yang dapat melacak (baik dengan anten dan penerima SDR atau dengan panggilan API) pesawat di sekitar Anda dan menampilkan informasi apa pun yang Anda inginkan tentangnya pada layar 64 piksel x 64 piksel, atau pada output HDMI Raspberry Pi Zero W.

Apa yang Anda lakukan dengan itu terbatas hanya oleh imajinasi Anda.

Karena artikel ini hanya memperkenalkan alat, langkah pertama yang saya rekomendasikan adalah membaca dokumentasi untuk layar dan FlightAware dan kemudian membuka program contoh keduanya untuk lebih memahami kemampuan mereka.

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

Lihat video di bawah ini untuk melihat hasil akhir dari proyek-proyek ini!

Coba proyek ini sendiri! Dapatkan BOM.


Peralatan Industri

  1. Pixus Technologies: Radio Terdefinisi Perangkat Lunak Tangguh Canggih untuk Lingkungan Misi-Kritis
  2. Menghubungkan Beberapa Sensor DS18B20 1-Wire ke Raspberry Pi untuk Pemantauan Suhu yang Akurat
  3. Memantau Suhu Ruangan secara Efisien dengan Raspberry Pi dan Nagios
  4. Pusat Energi Rumah: Pemantauan PV Surya, Panel Termal, dan Suhu Ruangan dengan Raspberry Pi dan Moteino
  5. Membangun Kontroler Rumah Cerdas 433 MHz dengan Sensorflare dan Raspberry Pi
  6. Membaca Sensor Analog dengan Raspberry Pi dan Zabbix: Panduan Langkah demi Langkah
  7. Membangun Proyek IoT Pertama dengan Raspberry Pi, DHT11, dan ThingSpeak
  8. Membangun Sistem Aeroponik Otomatis dengan Raspberry Pi dan Sensor Kelembaban
  9. Membuat Gateway LoRa dengan Modul RAK831 pada Raspberry 3 – Panduan Langkah demi Langkah
  10. Membuat Robot dengan Raspberry Pi dan Python: Panduan Lengkap