Mündəricat:

Uçuş Xəritəçiliyi Məlumatlarından istifadə edərək Moruq PI Pist İşığı: 14 Addım (Şəkillərlə)
Uçuş Xəritəçiliyi Məlumatlarından istifadə edərək Moruq PI Pist İşığı: 14 Addım (Şəkillərlə)

Video: Uçuş Xəritəçiliyi Məlumatlarından istifadə edərək Moruq PI Pist İşığı: 14 Addım (Şəkillərlə)

Video: Uçuş Xəritəçiliyi Məlumatlarından istifadə edərək Moruq PI Pist İşığı: 14 Addım (Şəkillərlə)
Video: Contra - Uçuş 2024, Iyul
Anonim
Uçuş Xəritəçiliyi Məlumatlarından istifadə edərək Erkən Xəbərdarlıq Raspberry PI Pist İşığı
Uçuş Xəritəçiliyi Məlumatlarından istifadə edərək Erkən Xəbərdarlıq Raspberry PI Pist İşığı
Uçuş Xəritəçəkmə Məlumatlarından istifadə edərək Erkən Xəbərdarlıq Raspberry PI Pist İşığı
Uçuş Xəritəçəkmə Məlumatlarından istifadə edərək Erkən Xəbərdarlıq Raspberry PI Pist İşığı
Uçuş Xəritəçiliyi Məlumatlarından istifadə edərək Erkən Xəbərdarlıq Raspberry PI Pist İşığı
Uçuş Xəritəçiliyi Məlumatlarından istifadə edərək Erkən Xəbərdarlıq Raspberry PI Pist İşığı
Uçuş Xəritəçiliyi Məlumatlarından istifadə edərək Erkən Xəbərdarlıq Raspberry PI Pist İşığı
Uçuş Xəritəçiliyi Məlumatlarından istifadə edərək Erkən Xəbərdarlıq Raspberry PI Pist İşığı

Bu lampa bir neçə səbəbdən yarandı, çünki həmişə yuxarıda uçan təyyarələrlə maraqlanıram və həftə sonları yayda çox vaxt ətrafda uçan olduqca həyəcanlı olanlar olur. Baxmayaraq ki, onları yalnız keçərkən eşidirsən. Başqa bir səbəb, London City hava limanından gedən təyyarələrin uçuş yolunun bəzən eşidiləcəyi və olduqca səs -küylü uçuşların olduğu görünür. YouTube üçün bəzi videolar yazarkən çox səs -küylü bir təyyarə olduğu üçün bir yazını silmək əslində əsəbidir. Flyinghtradar24 kimi saytlarda gördüyünüz məlumatların ictimaiyyətə açıq olub olmadığını düşündüm, açılan şəbəkədən oxşar bir şeyin mövcud olduğunu kəşf etdikdən sonra erkən xəbərdarlıq lampasının doğulduğunu düşündüm. Layihəni yerləşdirmək üçün bir pist işığının bir nüsxəsini istifadə etmək fikri ilə tanış olmaq çox uzun çəkmədi.

OpenSky Şəbəkəsi haqqında daha çox məlumatı https://www.opensky-network.org saytından əldə edə bilərsiniz. Mən də bu dəfə şəffaf PLA istifadə etmək əvəzinə gözəl bir qatran linzası düzəltmək istədim və saxlamaq istədiyim bir ADS-B qəbuledicim olsa da bu sadə və ucuz. ADS-B-nin də antenaya ehtiyacı var və bu, lampanın ofisdəki rəfə çıxması üçün heç bir şey etməz. Ümid edirik ki, 3D çap, Reçine qəlibləmə və riyaziyyatı əhatə etdiyi üçün quruluşu, üstəlik keçə biləcək təyyarələrin mövqelərini ekstrapolyasiya etmək üçün maraqlı tapacaqsınız.

Addım 1: Davanın dizaynı

Google axtarışında bir çox fərqli pist lampası dizaynı var və bunun dizaynı bir çox fərqli markalı həqiqi lampaların dizayn təsirlərindən istifadə etməklə hazırlanmışdır. Həqiqi həyatda daha böyük olmağa meylli olduqları üçün tam ölçüdə deyil, bir otaqda və ya rəfdə oturmaq da miqyaslıdır.

Dizaynlar Fusion 360 -da tərtib edildi və əvvəlki layihələrdən moruq pi sıfır tutucu kimi əvvəlki elementləri idxal etdim. Elementləri yenidən istifadə edə bilmək, əsasları öyrənməkdən çox baş ağrısı çəkir. Faylları buradan da yükləyə bilərsiniz

Addım 2: Lensləri Tökmə - #uğursuz

Linzaların tökülməsi - #uğursuz
Linzaların tökülməsi - #uğursuz
Linzaların yayılması - #uğursuz
Linzaların yayılması - #uğursuz
Linzaların tökülməsi - #uğursuz
Linzaların tökülməsi - #uğursuz

Bu lampanın ən əhəmiyyətli dizayn elementi lens olacaqdı. Layihənin işləyəcəyi gözəl bir orijinal görünüşlü şüşə olmadan əvvəlcə bunu həll etdim. Mən buna nail olmağa çalışdığım uğursuzluqları sənədləşdirirəm, əvvəlcə lensi kəhrəba etmək qərarına gəldiyimə baxmayaraq. Pist işıqları həm kəhrəba, həm də mavi rəngdə gəlir və yalnız kəhrəba rəngini yaratmağa başladıqdan sonra fikrimi dəyişdim və mavi işıq istədiyimə qərar verdim.

Anladığım nəticəyə görə, kəhrəba olanları gözləmə xəttində, mavi olanlar isə uçuş zolağını sıralamaq üçün istifadə olunur və bunlar uçuş -enmə zolağı işıqlarını axtarsanız tapılanların daha çox arxetipik olduğu görünür. Ancaq burada kəhrəba lens etmək üçün ilk cəhdimdir. Obyektivi düzəltmək üçün rəng qatqısı olan şəffaf qatran istifadə edəcəkdim və bir 3D qəlib çap edib ondan istifadə etməyin mümkün olub -olmadığını düşünməmişdən əvvəl bir neçə qəlib hazırlamışdım. Beləliklə, 3D -də parçalanmış bir qəlib hazırlamağa və PetG -də çap etməyə başladım. Kalıp boşaltmaq üçün kifayət qədər miqdarda qəlib çıxarmaq üçün kifayət edəcəyinə inandım. Bir neçə cəhddə göründüyü kimi, qatranı yapışqan kimi qəlibə yapışdırdım və onları ayırmaq mümkün görünmədi. İstifadə edəcəyim tam miqyaslı bir ölçüyə sahib olsam da, buna qarşı qərar verdim və ənənəvi silikon qəlibləmə ilə istifadə etmək üçün lensi çap etdim.

Addım 3: Müxtəlif növ qatranlar

Fərqli qatran növləri
Fərqli qatran növləri
Fərqli qatran növləri
Fərqli qatran növləri
Fərqli qatran növləri
Fərqli qatran növləri
Fərqli qatran növləri
Fərqli qatran növləri

Bu layihə üçün 3 növ şəffaf/rəngli qatran istifadə etdim.

Birincisi, Pebeo - Gedeo adlanan bir hobbi bazar növü idi və normal olaraq kiçik əşyaları kapsulyasiya etmək üçün satılır və zərgərlik və stolüstü kağız çəkiləri üçün istifadə olunur. Aldığınız məbləğə görə olduqca bahalıdır, ancaq hobbi və sənətkarlıq mağazalarında əlverişlidir. 2: 1 nisbətində qarışdırılır. İkincisi, sertleştirici ilə 10: 1 nisbətində qarışdırılan əvvəlcədən rənglənmiş bir qatran idi və bu, tam müalicə olunana qədər dürüst olmaq üçün təxminən bir həftə uzun müddət müalicə olunur. Sonuncusu 2: 1 nisbətində qarışdırılan və təxminən 2 gün ərzində müalicə olunan aydın bir qatran idi, bunu piqment damcıları ilə rəngləyə bilərsiniz, ancaq hər zaman eyni rəng nisbətini istifadə etdiyinizə əmin olmalısınız. ayrı partiyalar hazırlayırlar. Həm də ən səmərəli şəkildə işləyir. Nəhayət, kalıp üçün RTV bir GP-3481 RTV idi və bunun qurulması təxminən 24 saat çəkir və kifayət qədər uzun bir qazana malikdir, buna görə qarışdırmaq və sonra tökmək üçün çox vaxtınız var.

Hal -hazırda boş bir qazana sahib deyiləm (hazırda sifarişdədir) ki, həm qəlibdə, həm də qatranda tökülən baloncuklar sizi əhatə etsin. Bunun üçün çox problem deyil, ancaq aydın bir lens və ya bənzəri ilə, qarışıqlardan baloncukları çıxarmaq üçün bir şəkildə düşünmək istərdiniz.

Addım 4: Lensi 2 nömrəli Silikon Kalıpına Tökmə

Image
Image
Lensin Silikon Kalıp #2 -də tökülməsi
Lensin Silikon Kalıp #2 -də tökülməsi
Lensin Silikon Kalıp #2 -də tökülməsi
Lensin Silikon Kalıp #2 -də tökülməsi

Bu, Resin lensi hazırlamağın ikinci cəhdidir və birinci mərhələ həm Fusion 360 -da bir lens düzəltmək, həm də ABS -də çap etmək və onu tutmaq üçün bir kova etmək idi. Bu kalıp üçün birincisi olardı və istifadə ediləcək silikon miqdarını azaltmağa kömək edir. Bunu kartdan asanlıqla edə bilərsiniz, ancaq fərqli bir yanaşma. Kalıpdan azad olma şansını artırmaq üçün əvvəlcə lakladım və sonra yaxşı bir mum buraxma maddəsi ilə örtdüm.

Daha sonra 27 RTV sahilində olan bir GP-3481 tökdüm və sonra sökmədən əvvəl 24 saat ərzində qurmasına icazə verdim. Bunu etdikdən sonra 2: 1 nisbətində təxminən 4/5 damcı rəng piqmenti ilə qarışdırılmış şəffaf qatranı istifadə etdim və yaxşı dörd dəqiqə yaxşıca qarışdırdım. Bunu qəlibə tökdü və daha sonra ya lampa, ya da LED -lər üçün boşluq təmin etmək üçün qatrana bir şüşə də qoydu. Təxminən 24 saat sonra bu qatran çıxarmağa hazır idi və lens olduqca yaxşı çıxdı. Hava kabarcıkları var, amma hələ də tökmədən əvvəl qatranı qazdan təmizləyən vakuum qabım yoxdur.

Addım 5: 3D Çap və Hazırlıq

3D çap və hazırlıq
3D çap və hazırlıq
3D çap və hazırlıq
3D çap və hazırlıq
3D çap və hazırlıq
3D çap və hazırlıq

Model, mərkəzi hissənin bazaya bağlanacağı şəkildə dizayn edilmişdir. Bu, boyama prosesində maskalanmamaq üçün idi. Bütün model Hatchbox ABS -də çap edildi və sonra zımpara edildi. 60 grit ilə başlayaraq təxminən 800 grit bu model üçün kifayət qədər yaxşı bir səth verdi.

Addım 6: Montaj və Rəsm

Rəsm və montaj
Rəsm və montaj
Rəsm və montaj
Rəsm və montaj
Rəsm və montaj
Rəsm və montaj

Çaplar zımpara edildikdən sonra, bəzi yüksək keyfiyyətli astarla boyanmışdır. Yüngül zımpara və sonra boz astarla püskürtülür. Əsas hissələr ford siqnalı ilə sarı rəngə boyanmış və sonra baza üçün istifadə olunan brooklands yaşıl rəngə boyanmışdır. sonra tamiya gümüşü vurğuları boltlara və lens tutucusunda istifadə olunan bəzi molotow gümüş xromlara tətbiq edildi.

Addım 7: Əvvəlcə bir sərhəd zonasında təyyarələr tapın

Təchizat sıralananda proqram üzərində işləmək lazım idi. Uçuş izləmə təmin edən bir neçə sayt var, ancaq bu məlumatlara daxil olmaq üçün bir API təmin edən çox deyil. Bəziləri bunu yalnız kommersiya məqsədi ilə edirlər, amma xoşbəxtlikdən pulsuz istifadə edə biləcəyiniz https://opensky-network.org adlı bir sayt var.

Bu məlumatlara daxil olmaq üçün qeydiyyatdan keçməlisiniz və sonra onların API -dən istifadə edə bilərsiniz, məlumatları çəkməyin bir neçə funksiyası və yolunu təqdim edir. Bir bölgədəki bütün uçuşlarla maraqlanırıq və bunun üçün Live API çağırışı var. https://opensky-network.org/apidoc/ sərhəd qutusu adlanır. API çağırışı, maraqlandığınız qutunun künclərini tələb edir, əlbəttə ki, Lat/Lon mərkəz nöqtəsi olaraq. Yazdığınız şeydən asılı olaraq bir qutu çəkən bu saytda riyaziyyat işlərini yoxlaya bilərsiniz. Http://tools.geofabrik.de, lakin hələlik aşağıdakı skript API -yə qoşulmağımız lazım olan nöqtələri verir.

get_bounding_box funksiyası ($ latitude_in_degrees, $ longitude_in_degrees, $ half_side_in_miles) {$ half_side_in_km = $ half_side_in_miles * 1.609344; $ lat = deg2rad ($ latitude_in_degrees); $ lon = deg2rad ($ longitude_in_degrees); $ radius = 6371; $ parallel_radius = $ radius*cos ($ lat); $ lat_min = $ lat - $ half_side_in_km/$ radius; $ lat_max = $ lat + $ half_side_in_km/$ radius; $ lon_min = $ lon - $ half_side_in_km/$ parallel_radius; $ lon_max = $ lon + $ half_side_in_km/$ parallel_radius; $ box_lat_min = rad2deg ($ lat_min); $ box_lon_min = rad2deg ($ lon_min); $ box_lat_max = rad2deg ($ lat_max); $ box_lon_max = rad2deg ($ lon_max); qaytarma dizisi ($ box_lat_min, $ box_lon_min, $ box_lat_max, $ box_lon_max);

Kodunuzu sınamaq istəyirsinizsə, lat/lon daxil edə biləcəyiniz və xəritədə nəticələrini görə biləcəyiniz bir sayt var: Xəritədə bir sərhəd qutusu nümunəsinə baxın

Addım 8: Bizimlə əlaqəli Təyyarələrin Başlıqlarının Hesablanması

Təyyarələrin Başlıqlarının Bizimlə Əlaqəli Hesablanması
Təyyarələrin Başlıqlarının Bizimlə Əlaqəli Hesablanması

API zənginin məhdudlaşdırıcı qutusundan alınan nəticələr bizə təyyarələrin siyahısını, uzunluq/uzunluq, sürət, yüksəklik və başlıq verir. Beləliklə, etməli olduğumuz növbəti şey, ən azından ümumi istiqamətimizə gedənləri daha da inkişaf etdirmək üçün bizimlə əlaqəli hər bir təyyarənin başlığını əldə etməkdir. Bunu mövqeyimizi bildiyimiz üçün edə bilərik və bizdən hər bir təyyarəyə bucağı işlədə bilərik.

Bunu etmək üçün əvvəlcə Javascript -də olan bir kod parçası istifadə edirəm və onu PHP -yə çevirdim.

* iki nöqtə arasında yatağı hesablayın (*): Ed Williams'ın Aviasiya Formulu, https://williams.best.vwh.net/avform.htm#Crs * mənbə = instantglobe.com/CRANES/GeoCoordTool.html */ get_bearing funksiyası ($ home_lat, $ home_lon, $ təyyarə_lat, $ təyyarə_lon) {$ lat1 = deg2rad ($ home_lat); $ lat2 = deg2rad ($ təyyarə_lat);

$ dLon = deg2rad ($ təyyarə_lon- $ ev_lon);

$ y = sin ($ dLon) * cos ($ lat2);

$ x = cos ($ lat1)*sin ($ lat2) - sin ($ lat1)*cos ($ lat2)*cos ($ dLon); $ z = atan2 ($ y, $ x); $ zz = (rad2deg ($ z) +360)% 360; $ zz qaytarmaq;

Orijinal javascript versiyalarının olduğu səhifəyə baxmaq istəyirsinizsə, bu link:

bu kod daxilində, hər bir hesablama növü üçün müxtəlif alt rutinləri görə bilərsiniz.

Addım 9: Bir dairəyə baxaraq kəsilmənin hesablanması

Bir dairəyə baxaraq kəsilmənin hesablanması
Bir dairəyə baxaraq kəsilmənin hesablanması

Beləliklə, indi bizimlə yerləşdiyimiz yer arasındakı məsafənin 90 -dan az olduğu bir təyyarəmiz var (ya müsbət, ya da mənfi) və bu, yaxınlıqda uçmaq şansının olduğu deməkdir. Haversine formulundan istifadə edərək, təyyarənin Lon/Lat və evimizin Lon/Lat istifadə edərək bizdən uzaq olan məsafəni də işlədə bilərik.

Diaqrama baxsaq, təxminən 3 mil radiusda evimizin ətrafında bir dairə çəksək, bu, üzərimizdən uçan hər şeyi görmək şansı verir. Təyyarə ilə aramızda gediş fərqini bilirik, təyyarənin bizdən olan məsafəsini də bilirik, buna görə də yaxşı köhnə SOHCAHTOA istifadə edərək üçbucağı işlədə bilərik və bu vəziyyətdə əldə edə biləcəyimiz bucağın Tanını istifadə edirik. qarşı tərəfin uzunluğu. Beləliklə, bu dəyəri evin ətrafındakı dairənin radius dəyəri ilə müqayisə etsək, təyyarənin onu görə biləcəyimiz qədər yaxın uçub uçmayacağını öyrənə bilərik. Növbəti edə biləcəyimiz şey, hava sürətini və məsafəni istifadə edərək təyyarənin uçacağı vaxtı təyin etməkdir və bu, təxminən 45 saniyədən azdırsa, işığı yandırırıq. Bu, uçmaq şansını işlətmək üçün istifadə etdiyim kodun bir hissəsidir. Bunu yaxınlıqdakı bir hava limanı olduğu üçün edirəm və təyyarələr taksi sürərkən qaçılmaz olaraq evə işarə edirlər. Lakin onların hündürlüyü sıfıra bərabərdir və sürət sürətlə getdiyindən bu həyəcanı tetiklememelidir.

get_intercept funksiyası ($ home_head, $ təyyarə_head, $ təyyarə_distance) {

$ flight_angle = abs (abs ($ home_head - $ təyyarə_head) - 180); $ flight_angle_r = deg2rad ($ flight_angle); $ flight_angle_t = tan ($ flight_angle_r); $ flight_intercept = $ flight_angle_t * $ təyyarə_distance;

if (($ flight_angle <90) && ($ flight_intercept <3)) {// uçmaq mümkün

}

$ flight_intercept qaytarın;

}

Addım 10: Xəritədə iki nöqtə arasındakı məsafə - Haversine Formulu

Xəritədə iki nöqtə arasındakı məsafə - Haversine Formulu
Xəritədə iki nöqtə arasındakı məsafə - Haversine Formulu

Təyyarə ilə yerləşdiyimiz yer arasındakı məsafəni hesablamalıyıq. Xəritədə qısa məsafələrdə təxminən məsafəni hesablaya bilərdiniz, ancaq yer kürə şəklində olduğundan, əyri səthi nəzərə almağa imkan verən haversine formulu adlanan bir düstur var. Formula daha çox oxuya bilərsiniz:

İndi hesablanmış məsafə ilə və təyyarənin hava sürətini bildiyimiz zaman, təyyarənin havaya qalxmasından əvvəl neçə saniyə olacağını öyrənə bilərik. Beləliklə, uçuşdan 30 saniyə sonra bir şey olarsa işıq yanacaq və nəhayət xəbərdarlıq işığımız var.

* instantglobe.com/CRANES/GeoCoordTool.html ünvanında 0n JS -ə əsaslanır və PHP -ə çevrilir */

get_distHaversine funksiyası ($ home_lat, $ home_lon, $ təyyarə_lat, $ təyyarə_lon) {$ R = 6371; // yerin orta radiusu km ilə $ dLat = deg2rad ($ təyyarə_lat- $ home_lat); $ dLon = deg2rad ($ təyyarə_lon- $ ev_lon); $ lat1 = deg2rad ($ home_lat); $ lat2 = deg2rad ($ təyyarə_lat);

$ a = sin ($ dLat/2) * sin ($ dLat/2) + cos ($ lat1) * cos ($ lat2) * sin ($ dLon/2) * sin ($ dLon/2);

$ c = 2 * atan2 (sqrt ($ a), sqrt (1- $ a)); $ d = $ R * $ c; $ d qaytarmaq; }

Addım 11: Təyyarə Veritabanının İdxal Edilməsi və Müəyyən edilməsi

Digər hissələrdən biri də, openski saytının zəng işarələri və identləri ilə birlikdə yüklənə bilən təyyarələr bazası təqdim etməsidir. Onun bir neçə yüz min girişi var. Beləliklə, bunu yükləyə və yerli olaraq axtarış üçün MariaDB verilənlər bazasına yükləyə bilərik (MySQL). Yuxarıda görünən hər bir təyyarə ilə onun detallarını alırıq və neçə dəfə göründüyünü göstərmək üçün sayğacı yeniləyirik.

Mən də hazırda maraqlandığım təyyarələri vurğulamaq üçün verilənlər bazasını düzəldirəm. Əsasən köhnə döyüş quşları və digər oxşar maraqlı təyyarələr. Bu yay bir neçə dəfə bir Mig-15 uçdu. buna görə də məqsəd əlavə etdiyim bir xəbərdarlıq sahəsindən istifadə etmək və sonra maraqlı bir şey keçəndə işığı sürətlə yandırmaqdır

Addım 12: Nəticələrin və Yeni Xüsusiyyətlərin Təkmilləşdirilməsi

Nəticələrin və Yeni Xüsusiyyətlərin Təkmilləşdirilməsi
Nəticələrin və Yeni Xüsusiyyətlərin Təkmilləşdirilməsi
Nəticələrin və Yeni Xüsusiyyətlərin Təkmilləşdirilməsi
Nəticələrin və Yeni Xüsusiyyətlərin Təkmilləşdirilməsi
Nəticələrin və Yeni Xüsusiyyətlərin Təkmilləşdirilməsi
Nəticələrin və Yeni Xüsusiyyətlərin Təkmilləşdirilməsi

Teorik olaraq hər şey olduqca yaxşı işləyir, ancaq API -də görünməyən uçan təyyarələrin olduğunu məlumatlarla tapa bilərsiniz.

Bunun səbəbi, bütün təyyarələrin ADS-B transponderindən istifadə etməməsi və MLAT əsasında köhnə transponderlərdən istifadə etməməsidir. MLAT -dan istifadə edərək təyyarələrdə mövqe məlumatları əldə etmək üçün yerdəki bir sıra alıcıların mövqelərini üçbucaqlandırmaq lazımdır və Flightradar24 kimi bəzi saytlar opensky ilə müqayisədə bunu edən daha böyük töhfə verən şəbəkəsinə malikdir. İnşallah zaman keçdikcə onların əhatə dairəsi də yaxşılaşacaq və bu məlumatlara əlavə etmək üçün öz MLAT qəbuledicimi qururam.

Addım 13: Kod bazası

Unutmayın ki, bundan istifadə edəcəksinizsə, təyyarə məlumat bazanız yoxdursa, SQL məlumatlarını silmək və uçuş məlumatlarına daxil olmaq üçün öz Lon/Lat dəyərinizi və API açarınızı əlavə etmək istəyə bilərsiniz.

github.com/ajax-jones/runway-light-awacs

müəyyən edin ("INTERVAL", (20 * 1)); fexp () {$ lat = "enleminiz" funksiyası; $ lon = "boylam"; $ tərəf = 15.75; $ box = get_bounding_box ($ lat, $ lon, $ side); $ latmin = $ qutusu [0]; $ lonmin = $ qutusu [1]; $ latmax = $ qutusu [2]; $ lonmax = $ qutusu [3]; $ flyurl = "https://opensky-network.org/api/states/all?lamin=$latmin&lomin=$lonmin&lamax=$latmax&lomax=$lonmax"; echo "SKY taranır"; $ start_time = microtime (doğru); $ json = file_get_contents ($ flyurl); $ data = json_decode ($ json, TRUE); $ gələn = FALSE; $ num_planes = say ($ data ['dövlətlər]); if ($ num_planes> 0) {echo "və biz $ num_planes təyyarələrini görə bilərik / n"; üçün ($ x = 0; $ x 0) {$ təyyarə_eta = $ distplane/$ air_speed_kmh; } başqa {$ eta = 1; } if ((($ intercept) 0)) && ($ distplane0) {$ inbound = TRUE; yankı "------------------------------------------------ -------------------- / n "; echo "[$ geo_altitude_m M - $ geo_altitude_f ft] at $ icao24 - [$ country $ callsign]" "; echo "[speed $ air_speed_kmh kmh and", round ($ distplane, 1), "km away] n"; echo "[bir başlıqda", yuvarlaq ($ təyyarə_başlığı, 1), "] [homeangle $ heading_d]"; echo "[$ enlik, $ uzunluq] n"; echo "[flypast in", decimal_to_time ($ təyyarə_eta), "indi", yuvarlaq ($ kəsmə, 1), "km uzaqda / n"; yankı "------------------------------------------------ -------------------- / n "; $ DBi = yeni mysqli ("127.0.0.1", "kök", "parolunuz", "awacs"); $ sql = "təyyarə verilənlər bazasından seçin * burada icao24` = '$ icao24'"; mysqli_set_charset ($ DBi, "utf8"); $ getplanedata = mysqli_query ($ DBi, $ sql) və ya öl (mysqli_error ($ DBi)); $ row_getplanedata = mysqli_fetch_assoc ($ getplanedata); $ rows_getplanedata = mysqli_num_rows ($ getplanedata); if ($ rows_getplanedata> 0) {do {echo "callsign ="; echo $ row_getplanedata ['qeydiyyat']; echo "bir" dir; echo $ row_getplanedata ['istehsalçı adı']; əks -səda ""; echo $ row_getplanedata ['model']; echo "by"; echo $ row_getplanedata ['Manufacturicao']; echo "sahibi"; echo $ row_getplanedata ['sahibi']; echo "görüldü"; echo $ row_getplanedata ['ziyarətlər]; echo "dəfə"; echo "xüsusi reytinq ="; echo $ row_getplanedata ['xüsusi']; echo "\ n"; $ ziyarət = $ row_getplanedata ['ziyarət']+1; } while ($ row_getplanedata = mysqli_fetch_assoc ($ getplanedata)); mysqli_free_result ($ getplanedata); $ sqli = "Təyyarə verilənlər bazasını SET ziyarətlərini YENİLƏN = = $ ziyarət WHERE icao24 = '$ icao24'"; mysqli_set_charset ($ DBi, "utf8"); $ updateplanedata = mysqli_query ($ DBi, $ sqli) və ya ölmək (mysqli_error ($ DBi)); } else {echo "Bu təyyarəni DB -də tapa bilmədikdən sonra əlavə etdim"; $ sqli = "INSERT INTO təyyarə bazasına (icao24, ziyarətlər, xüsusi) VALUES ('$ icao24', 1, 1)"; $ updateplanedata = mysqli_query ($ DBi, $ sqli) və ya ölmək (mysqli_error ($ DBi)); } echo "----------------------------------------------- --------------------- / n "; } başqa {// echo "$ zəng işarəsi"; }}} başqa {echo "və göylər açıqdır / n"; } if ($ inbound) {echo "Gələn təyyarə / n"; $ command = "donuzlar w 17 1"; execInBackground ($ əmri); } başqa {echo "gələn uçuş yoxdur / n"; $ command = "donuzlar 17 0 0"; execInBackground ($ əmri); }} funksiyası decimal_to_time ($ decimal) {$ ofset = 0.002778; if ($ decimal> $ offset) {$ decimal = $ decimal - 0.002778; } $ saat = gmdate ('H', mərtəbə ($ decimal * 3600)); $ dəqiqə = gmdate ('i', mərtəbə ($ decimal * 3600)); $ seconds = gmdate ('s), mərtəbə ($ decimal * 3600)); qayıt str_pad ($ saat, 2, "0", STR_PAD_LEFT). ":". str_pad ($ dəqiqə, 2, "0", STR_PAD_LEFT). ":". str_pad ($ saniyə, 2, "0", STR_PAD_LEFT); }/ * * iki nöqtə arasında * hesablama (ilkin) hesablama * * dan: Ed Williams'ın Aviasiya Formulu, https://williams.best.vwh.net/avform.htm#Crs * source = instantglobe.com/CRANES/GeoCoordTool. html */ get_bearing funksiyası ($ home_lat, $ home_lon, $ təyyarə_lat, $ təyyarə_lon) {$ lat1 = deg2rad ($ home_lat); $ lat2 = deg2rad ($ təyyarə_lat); $ dLon = deg2rad ($ təyyarə_lon- $ ev_lon); $ y = sin ($ dLon) * cos ($ lat2); $ x = cos ($ lat1)*sin ($ lat2) - sin ($ lat1)*cos ($ lat2)*cos ($ dLon); $ z = atan2 ($ y, $ x); $ zz = (rad2deg ($ z) +360)% 360; $ zz qaytarmaq; } get_intercept funksiyası ($ home_head, $ təyyarə_başı, $ təyyarə_distance) {$ flight_angle = abs (abs ($ home_head - $ təyyarə_beyi) - 180); $ flight_angle_r = deg2rad ($ flight_angle); $ flight_angle_t = tan ($ flight_angle_r); $ flight_intercept = $ flight_angle_t * $ təyyarə_distance; $ flight_intercept qaytarın; } /* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ---- - *// * * Haversine düsturundan istifadə edərək * Enlem/Boylam (rəqəmsal dərəcə ilə) * * ilə təyin olunan iki nöqtə arasındakı məsafəni (km ilə) hesablayın: Haversine formulu - RWSinnott, "Haversinanın Fəzilətləri", * Göy və Teleskop, cild 68, 2, 1984 * https://williams.best.vwh.net/avform.htm#Crs * * Formadan istifadə nümunəsi: * result.value = LatLon.distHaversine (lat1.value.parseDeg (), long1.value.parseDeg (), * lat2.value.parseDeg (), long2.value.parseDeg ()); * burada lat1, long1, lat2, long2 və nəticə forma sahələridir * source = instantglobe.com/CRANES/GeoCoordTool.html */function get_distHaversine ($ home_lat, $ home_lon, $ təyyarə_lat, $ təyyarə_lon) {$ R = 6371; // yerin orta radiusu km ilə $ dLat = deg2rad ($ təyyarə_lat- $ home_lat); $ dLon = deg2rad ($ təyyarə_lon- $ ev_lon); $ lat1 = deg2rad ($ home_lat); $ lat2 = deg2rad ($ təyyarə_lat); $ a = sin ($ dLat/2) * sin ($ dLat/2) + cos ($ lat1) * cos ($ lat2) * sin ($ dLon/2) * sin ($ dLon/2); $ c = 2 * atan2 (sqrt ($ a), sqrt (1- $ a)); $ d = $ R * $ c; $ d qaytarmaq; } funksiyası get_bounding_box ($ latitude_in_degrees, $ longitude_in_degrees, $ half_side_in_miles) {$ half_side_in_km = $ half_side_in_miles * 1.609344; $ lat = deg2rad ($ latitude_in_degrees); $ lon = deg2rad ($ longitude_in_degrees); $ radius = 6371; # Verilən enlikdə paralelin yarıçapı; $ parallel_radius = $ radius*cos ($ lat); $ lat_min = $ lat - $ half_side_in_km/$ radius; $ lat_max = $ lat + $ half_side_in_km/$ radius; $ lon_min = $ lon - $ half_side_in_km/$ parallel_radius; $ lon_max = $ lon + $ half_side_in_km/$ parallel_radius; $ box_lat_min = rad2deg ($ lat_min); $ box_lon_min = rad2deg ($ lon_min); $ box_lat_max = rad2deg ($ lat_max); $ box_lon_max = rad2deg ($ lon_max); qaytarma dizisi ($ box_lat_min, $ box_lon_min, $ box_lat_max, $ box_lon_max); } funksiyası execInBackground ($ cmd) {if (substr (php_uname (), 0, 7) == "Windows") {pclose (popen ("start /B". $ cmd, "r")); } başqa {exec ($ cmd. "> /dev /null &"); }} function checkForStopFlag () {// tamamilə isteğe bağlı qaytarma (TRUE); } function start () {echo "başlayaraq / n"; $ command = "donuzlar w 17 1"; execInBackground ($ əmri); $ aktiv = TRUE; while ($ active) {usleep (1000); // isteğe bağlı, diqqətli olmaq istəyirsinizsə (microtime (true)> = $ nextTime) {fexp (); $ nextTime = microtime (true) + INTERVAL; } $ active = checkForStopFlag (); }} fexp (); başlamaq(); ?>

Addım 14: LED və Kapatma Şalterinin naqilləri

LED və bağlama açarının naqilləri
LED və bağlama açarının naqilləri

Bu layihənin naqilləri daha sadə ola bilməz. Pin 17 və yerə 270R müqavimət xətti ilə qoşulmuş yalnız bir LED var.

TXd məlumat pinindən çıxan bir güc LED ilə birlikdə bir bağlama və açma düyməsini də daxil edirəm. Https://github.com/Howchoo/pi-power-button.git saytında bağlanma funksiyası və tələb olunan kod haqqında daha çox məlumatı https://howchoo.com/g/mwnlytk3zmm/how-to- saytından oxuya bilərsiniz. add-a-pow … Güc işığı əlavə etmək haqqında burada oxuya bilərsiniz

Tövsiyə: