Բովանդակություն:

Վաղ նախազգուշացում Ազնվամորու PI թռիչքուղու լույս ՝ օգտագործելով թռիչքի քարտեզագրման տվյալները. 14 քայլ (նկարներով)
Վաղ նախազգուշացում Ազնվամորու PI թռիչքուղու լույս ՝ օգտագործելով թռիչքի քարտեզագրման տվյալները. 14 քայլ (նկարներով)

Video: Վաղ նախազգուշացում Ազնվամորու PI թռիչքուղու լույս ՝ օգտագործելով թռիչքի քարտեզագրման տվյալները. 14 քայլ (նկարներով)

Video: Վաղ նախազգուշացում Ազնվամորու PI թռիչքուղու լույս ՝ օգտագործելով թռիչքի քարտեզագրման տվյալները. 14 քայլ (նկարներով)
Video: Այս գեղեցիկ ծաղիկները ձեզ կազատեն մոլախոտերից 2024, Հուլիսի
Anonim
Վաղ նախազգուշացում Ազնվամորու PI թռիչքուղու լույս ՝ օգտագործելով թռիչքի քարտեզագրման տվյալները
Վաղ նախազգուշացում Ազնվամորու PI թռիչքուղու լույս ՝ օգտագործելով թռիչքի քարտեզագրման տվյալները
Վաղ նախազգուշացում Ազնվամորու PI թռիչքուղու լույս ՝ օգտագործելով թռիչքի քարտեզագրման տվյալները
Վաղ նախազգուշացում Ազնվամորու PI թռիչքուղու լույս ՝ օգտագործելով թռիչքի քարտեզագրման տվյալները
Վաղ նախազգուշացում Ազնվամորու PI թռիչքուղու լույս ՝ օգտագործելով թռիչքի քարտեզագրման տվյալները
Վաղ նախազգուշացում Ազնվամորու PI թռիչքուղու լույս ՝ օգտագործելով թռիչքի քարտեզագրման տվյալները
Վաղ նախազգուշացում Ազնվամորու PI թռիչքուղու լույս ՝ օգտագործելով թռիչքի քարտեզագրման տվյալները
Վաղ նախազգուշացում Ազնվամորու PI թռիչքուղու լույս ՝ օգտագործելով թռիչքի քարտեզագրման տվյալները

Այս լամպը առաջացել է մի քանի պատճառներով, որովհետև ինձ միշտ հետաքրքրում են ինքնաթիռները, որոնք թռչում են վերևում, իսկ ամառվա ընթացքում հանգստյան օրերին հաճախ լինում են բավականին հուզիչ ինքնաթիռներ: Չնայած դուք հակված եք լսել դրանք միայն այն ժամանակ, երբ նրանք անցնում են: Հետո մյուս պատճառն այն է, որ, թվում է, Լոնդոնի Սիթիի օդանավակայանից արտագնա ինքնաթիռների թռիչքի ուղին երբեմն կլսվի, և նրանց սպասվում են բավականին աղմկոտ թռիչքներ: YouTube- ի համար որոշ տեսանյութեր ձայնագրելիս դժվարանում եմ ձայնագրությունը ջնջել ՝ աղմկոտ ինքնաթիռի պատճառով: Հետևաբար, ես հետաքրքրվեցի, թե արդյոք այն տվյալները, որոնք դուք տեսնում եք թռիչքի նման կայքերում, հասանելի են հանրությանը, երբ հայտնաբերեցի, որ բացօթյա ցանցից նմանատիպ ինչ -որ բան հասանելի է, վաղ նախազգուշացման լամպը ծնվեց: Շատ երկար չպահանջվեց, որպեսզի այնուհետև միտք ծագի ՝ նախագիծը տեղավորելու համար օգտագործել թռիչքուղու լուսարձակի կրկնօրինակը:

Դուք կարող եք ավելին իմանալ OpenSky ցանցի մասին https://www.opensky-network.org կայքում ՝ ես նաև ցանկանում էի, որ այս անգամ կիսաթափանցիկ PLA- ի փոխարեն գեղեցիկ խեժ ոսպնյակ պատրաստեմ, և չնայած ունեմ ADS-B ընդունիչ, որը ցանկանում էի պահել այս պարզ և էժան: ADS-B- ին նույնպես անհրաժեշտ է ալեհավաք, և դա չի կարող անել, որ լամպը գրասենյակում պահի: Հուսանք, որ կառուցվածքը հետաքրքիր կգտնեք, քանի որ այն ընդգրկում է 3D տպագրություն, խեժերի ձևավորում և մաթեմատիկա, ինչպես նաև ինքնաթիռների այն դիրքերը, որոնք հնարավոր է վերևից անցնեն:

Քայլ 1: Գործի ձևավորում

Google- ի որոնումը գալիս է թռիչքուղու լամպի շատ տարբեր դիզայններով, և այս դիզայնը կատարվել է իրական լամպերի տարբեր մակնիշների դիզայնի ազդեցության միջոցով: Նաև չափված է սենյակում կամ դարակում նստելը, այլ ոչ թե ամբողջ չափսերը, քանի որ դրանք իրական կյանքում շատ ավելի մեծ են:

Նախագծերը կազմվել են Fusion 360 -ում, և ես ներմուծել եմ որոշ նախկին տարրեր, օրինակ `ազնվամորու pi զրո կրողը նախորդ նախագծերից: Տարրերը նորից օգտագործելու ունակությունը շատ բան է պահանջում գլխացավից ՝ հիմքերը թուլացնելու համար: Ֆայլերը կարող եք ներբեռնել նաև այստեղ ՝

Քայլ 2: Ոսպնյակների ձուլում - #ձախողում

Ոսպնյակների ձուլում - #ձախողում
Ոսպնյակների ձուլում - #ձախողում
Ոսպնյակների ձուլում - #ձախողում
Ոսպնյակների ձուլում - #ձախողում
Ոսպնյակների ձուլում - #ձախողում
Ոսպնյակների ձուլում - #ձախողում

Այս լամպի նախագծման ամենակարևոր տարրը լիներ ոսպնյակը: Այսպիսով, ես առաջին հերթին անդրադարձա դրան, քանի որ առանց գեղեցիկ իսկական տեսք ունեցող ապակու նախագիծը կաշխատի: Ես այստեղ վավերագրում եմ այն ձախողումները, որոնք ես ունեի դրան հասնելու համար, չդիմանալով, որ ես նույնպես սկզբում որոշեցի ոսպնյակը սաթ անել: Թռիչքուղու լույսերը գալիս են ինչպես սաթ, այնպես էլ կապույտ գույնով, և միայն այն բանից հետո, երբ ես սկսեցի պատրաստել սաթը, ես փոխեցի միտքս և որոշեցի, որ ուզում եմ կապույտ:

Ինչքանով որ ես կարող եմ պարզել, սաթերը օգտագործվում են պահման գծում, իսկ կապույտները `թռիչքուղու վրա, և դրանք այնպիսիներն են, որոնք, թվում է, ավելի արխետիպային են, եթե թռիչքուղու լույսեր եք փնտրում: Այնուամենայնիվ, ահա սաթե ոսպնյակ պատրաստելու իմ առաջին փորձը: Ոսպնյակը պատրաստելու համար ես պատրաստվում էի օգտագործել թափանցիկ խեժ ՝ գունային հավելումով, և չնայած ես մի քանի կաղապար եմ արել մինչ այդ, երբ մտածում էի, արդյոք հնարավոր կլինի տպել 3D ձև և օգտագործել այն: Այսպիսով, ես սկսեցի եռաչափ բորբոս պատրաստել և տպել այն PetG- ում: Ես համոզված էի, որ բորբոսի արտանետման ողջամիտ քանակությունը բավարար կլինի բորբոսը քերծելու համար: Ինչպես պարզվեց, մի քանի անգամ ես խեժը սոսնձի պես կպցրեցի բորբոսին, և պարզապես հնարավոր չէր թվում դրանք առանձնացնել: Չնայած ես ունեի լիարժեք մասշտաբը, որը ես պատրաստվում էի օգտագործել, ես որոշեցի դեմ լինել այն և տպեցի ոսպնյակը, որն օգտագործվում էր ավանդական սիլիկոնային ձուլման համար:

Քայլ 3. Խեժի տարբեր տեսակներ

Խեժի տարբեր տեսակներ
Խեժի տարբեր տեսակներ
Խեժի տարբեր տեսակներ
Խեժի տարբեր տեսակներ
Խեժի տարբեր տեսակներ
Խեժի տարբեր տեսակներ
Խեժի տարբեր տեսակներ
Խեժի տարբեր տեսակներ

Այս նախագծի համար ես օգտագործեցի 3 տեսակի թափանցիկ/գունավոր խեժեր:

Առաջինը հոբբի շուկայի տեսակ էր, որը կոչվում էր Pebeo - Gedeo և սովորաբար վաճառվում է փոքր իրեր պարունակելու համար և օգտագործվում է ոսկերչական իրերի և գրասեղանի համար և այլն: Այնուամենայնիվ, այն բավականին թանկ է ձեր ստացած գումարի համար, բայց հարմար է և հեշտությամբ հասանելի է հոբբիի և արհեստների խանութներում: Այն խառնվում է 2: 1 հարաբերակցությամբ: Երկրորդը նախապես գունավոր խեժ էր, որը խառնվում է կարծրացուցիչի հետ 10: 1 հարաբերակցությամբ, և դրա բուժումը տևեց ամենաերկարը ՝ անկեղծ ասած, մոտ մեկ շաբաթ, մինչև այն ամբողջությամբ բուժվելը: Վերջինը պարզ խեժ էր, որը նույնպես խառնվել էր 2: 1 հարաբերակցության մեջ և բուժվել մոտ 2 օրվա ընթացքում: Դուք կարող եք այն ներկել պիգմենտի կաթիլներով, բայց դուք պետք է համոզվեք, որ միշտ օգտագործում եք նույն գույնի հարաբերակցությունը, եթե պատրաստում են առանձին խմբաքանակներ: Այն նաև աշխատում է առավել ծախսարդյունավետ: Վերջապես, կաղապարի համար RTV- ն GP-3481 RTV էր, և դրա պատրաստումը տևում է մոտ 24 ժամ և ունի բավականին երկար ժամանակ, այնպես որ դուք շատ ժամանակ ունեք այն խառնելու և լցնելու համար:

Ներկայումս ես չունեմ թափվող կաթսա (ներկայումս պատվիրված է), որպեսզի կարողանաք պղպջակների միջով լցվել և բորբոսում, և խեժը լցնելիս: Սա այնքան էլ խնդիր չէ, բայց պարզ ոսպնյակի կամ նմանատիպի դեպքում դուք կցանկանայիք ինչ -որ կերպ մտածել խառնուրդներից պղպջակները հանելու մասին:

Քայլ 4. Ոսպնյակի ձուլումը սիլիկոնե բորբոսում #2

Image
Image
Ոսպնյակի ձուլում սիլիկոնե բորբոսում #2
Ոսպնյակի ձուլում սիլիկոնե բորբոսում #2
Ոսպնյակի ձուլում սիլիկոնե բորբոսում #2
Ոսպնյակի ձուլում սիլիկոնե բորբոսում #2

Այսպիսով, սա Resin ոսպնյակ պատրաստելու երկրորդ փորձն է, և առաջին փուլը Fusion 360- ում ոսպնյակ պատրաստելն էր, այնուհետև այն ABS- ով տպելը, ինչպես նաև այն պահելը: Սա առաջինը կլինի բորբոսի համար և օգնում է նվազեցնել օգտագործվող սիլիկոնի քանակը: Դուք կարող եք դա հեշտությամբ պատրաստել քարտից, բայց դա այլ մոտեցում է: Կաղապարից ազատվելու ավելի լավ հնարավորություն տալու համար ես սկզբում այն լաքապատեցի, այնուհետև նրան տվեցի լավ ծածկույթ `մոմ արձակող նյութով:

Այնուհետև ես լցրեցի GP-3481- ը, որը մոտ 27 RTV ափին է, այնուհետև թույլ տվեցի, որ այն ամրացվի հաջորդ 24 ժամվա ընթացքում, նախքան ապամոնտաժվելը: Երբ դա արվեց, ես օգտագործեցի 2: 1 հարաբերությամբ թափանցիկ խեժը ՝ գունավոր պիգմենտի մոտ 4/5 կաթիլով և լավ խառնեցի լավ չորս րոպե: Լցնել այն ձուլվածքի մեջ, այնուհետև կրակված ապակին տեղադրել խեժի մեջ, որպեսզի հետագայում դատարկություն լինի լամպի կամ լուսադիոդների համար: Մոտ 24 ժամ անց այս խեժը պատրաստ էր հեռացնել, և ոսպնյակը բավականին լավ դուրս եկավ: Կան օդային պղպջակներ, բայց ես դեռ չունեմ վակուումային անոթ, որը պետք է յուղազերծի խեժը նախքան թափելը:

Քայլ 5. 3D տպագրություն և պատրաստում

Եռաչափ տպագրություն և պատրաստում
Եռաչափ տպագրություն և պատրաստում
Եռաչափ տպագրություն և պատրաստում
Եռաչափ տպագրություն և պատրաստում
Եռաչափ տպագրություն և պատրաստում
Եռաչափ տպագրություն և պատրաստում

Մոդելը նախագծվել է այնպես, որ կենտրոնական հատվածը միացված է հիմքին: Սա պետք է լիներ ներկման գործընթացում դիմակազերծումից խուսափելու համար: Ամբողջ մոդելը տպագրվել է Hatchbox ABS- ով, այնուհետև հղկվել: Սկսած 60 մանրախիճից մինչև մոտ 800 մանրախիճ, այս մոդելի համար բավականաչափ մակերեսային երանգ էր տրվում:

Քայլ 6: Հավաքում և ներկում

Հավաքում և ներկում
Հավաքում և ներկում
Հավաքում և ներկում
Հավաքում և ներկում
Հավաքում և ներկում
Հավաքում և ներկում

Երբ տպումները մանրացված են, այնուհետև այն ներկվում է բարձրորակ նախաներկով: Թեթև հղկված, այնուհետև ցողված մոխրագույն այբբենարանով: Հիմնական մասերը ներկված են եղել ford ազդանշանի դեղին գույնով, իսկ այնուհետև կանաչի համար օգտագործվել են հիմքի համար: Տամիյա արծաթի կարևորագույն տարրերն այնուհետև կիրառվեցին պտուտակներին և ոսպնյակի ամրակի վրա օգտագործված որոշ մոլոտով արծաթե քրոմ:

Քայլ 7. Նախ գտեք ինքնաթիռներ սահմանափակ տարածության մեջ

Սարքավորումը դասավորված լինելով ՝ ծրագրային ապահովման վրա անհրաժեշտ էր աշխատել: Այժմ կան մի քանի կայքեր, որոնք ապահովում են թռիչքների հետևում, բայց ոչ շատերը, որոնք տրամադրում են այդ տվյալներին մուտք գործելու API: Ոմանք դա անում են, դա անում են միայն առևտրային հիմունքներով, բայց բարեբախտաբար կա մեկ կայք ՝ https://opensky-network.org, որը կարող եք անվճար օգտագործել:

Այս տվյալներին մուտք գործելու համար պետք է գրանցվել, այնուհետև կարող եք օգտագործել դրանց API- ն, այն տրամադրում է մի քանի գործառույթ և տվյալներ քաշելու եղանակներ: Մենք հետաքրքրված ենք բոլոր թռիչքներով մեկ տարածքում և նրանք դրա համար ունեն կենդանի API զանգ: https://opensky-network.org/apidoc/ կոչվում է սահմանափակող տուփ: API- ի զանգը պահանջում է տուփի այն անկյունները, որոնք ձեզ հետաքրքրում են, իհարկե, մեր Lat/Lon- ը որպես կենտրոնական կետ: Դուք կարող եք ստուգել մաթեմատիկական աշխատանքները այս կայքում, որը նկարում է տուփ ՝ կախված այն բանից, թե ինչ եք մուտքագրում »:

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); $ շառավիղ = 6371; $ parallel_radius = $ շառավիղ*cos ($ լատ); $ lat_min = $ lat - $ half_side_in_km/$ շառավղով; $ lat_max = $ lat + $ half_side_in_km/$ շառավիղ; $ lon_min = $ lon - $ half_side_in_km/$ parallel_radius; $ lon_max = $ lon + $ half_side_inmkm/$ 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); վերադարձի զանգված ($ box_lat_min, $ box_lon_min, $ box_lat_max, $ box_lon_max);

Եթե ցանկանում եք ստուգել ձեր ծածկագիրը, կա կայք, որտեղ կարող եք մուտքագրել լատ/լոնը և արդյունքները տեսնել քարտեզի վրա.

Քայլ 8. Ինքնաթիռների վերնագրի հաշվարկը մեզ հետ կապված

Ինքնաթիռների վերնագրի հաշվարկը մեզ հետ կապված
Ինքնաթիռների վերնագրի հաշվարկը մեզ հետ կապված

Սահմանափակող տուփի API զանգի արդյունքները մեզ տալիս են ինքնաթիռների ցանկ, դրանց Lon/lat, արագությունը, բարձրությունը և ուղղությունը: Հետևաբար, հաջորդ բանը, որ մենք պետք է անենք, յուրաքանչյուր ինքնաթիռի վերնագիրն է մեր նկատմամբ, որպեսզի մենք կարողանանք հետագայում մշակել դրանք, որոնք գոնե գնում են մեր ընդհանուր ուղղությամբ: Մենք կարող ենք դա անել, քանի որ մենք գիտենք մեր դիրքը և կարող ենք մշակել անկյունը մեզանից յուրաքանչյուր հարթության նկատմամբ:

Դա անելու համար ես օգտագործում եմ կոդի մի կտոր, որից սկզբնապես Javascript- ում էր, ուստի այն այստեղ փոխակերպեցի PHP- ի, * հաշվարկել (սկզբնական) երկու կետերի միջև * * ՝ Էդ Ուիլյամսի ավիացիոն բանաձևից, https://williams.best.vwh.net/avform.htm#Crs * source = instantglobe.com/CRANES/GeoCoordTool.html */ գործառույթ get_bearing ($ home_lat, $ home_lon, $ plane_lat, $ plane_lon) {$ lat1 = deg2rad ($ home_lat); $ lat2 = deg2rad ($ plane_lat);

$ dLon = deg2rad ($ plane_lon- $ home_lon);

$ y = մեղք ($ dLon) * cos ($ lat2);

$ x = cos ($ lat1)*մեղք ($ lat2) - մեղք ($ lat1)*cos ($ lat2)*cos ($ dLon); $ z = atan2 ($ y, $ x); $ zz = (rad2deg ($ z) +360)% 360; վերադարձնել $ zz;

Եթե ցանկանում եք նայել այն էջին, որտեղ գտնվում են javascript- ի բնօրինակ տարբերակները, սա հղումն է ՝

Այդ ծածկագրի ներսում կարող եք տեսնել նաև յուրաքանչյուր ենթահաշվարկի տարբեր ենթակարգեր:

Քայլ 9. Ընդհատման հաշվարկ ՝ շրջագծին նայելով

Ընդհատման հաշվարկ ՝ շրջագծին նայելով
Ընդհատման հաշվարկ ՝ շրջագծին նայելով

Այսպիսով, մենք այժմ ունենք ինքնաթիռ, որտեղ նրա և մեր գտնվելու վայրի միջև կապը 90 -ից փոքր է (դրական կամ բացասական), և դա նշանակում է, որ հավանականություն կա, որ այն կարող է թռչել մոտակայքում: Օգտագործելով հերսինի բանաձևը, մենք կարող ենք նաև աշխատել ՝ օգտագործելով ինքնաթիռի Lon/Lat և մեր տան Lon/Lat հեռավորությունը, որը այն մեզանից հեռու է:

Նայելով գծապատկերին, եթե մենք մեր տան շուրջը գծենք ասենք մոտ 3 մղոն շառավղով, դա մեզ հնարավորություն է տալիս ինչ -որ բան թռչել վերևում: Մենք գիտենք ինքնաթիռի և մեր միջև ուղղության տարբերությունը, մենք նաև գիտենք ինքնաթիռի հեռավորությունը մեզանից, որպեսզի կարողանանք եռանկյունը մշակել հին և լավ SOHCAHTOA- ի միջոցով, և այս դեպքում անկյունի Tan- ի միջոցով կարող ենք ստանալ հակառակ կողմի երկարությունը: Այսպիսով, եթե մենք համեմատենք այս արժեքը տան շուրջ շրջանագծի շառավիղի արժեքի հետ, ապա կարող ենք պարզել, թե արդյոք ինքնաթիռը բավականաչափ մոտ կթռչի, որպեսզի մենք այն տեսնենք: Հաջորդ բանը, որ մենք կարող ենք անել, այն է, որ մշակենք այն ժամանակը, երբ ինքնաթիռը կթռչի անցյալով ՝ օգտագործելով օդի արագությունը և հեռավորությունը, և եթե դա ավելի քիչ է, քան մոտ 45 վայրկյանը, մենք միացնում ենք լույսը: Սա մի փոքր այն ծածկագիրն է, որը ես օգտագործում եմ թռիչքի հավանականությունը պարզելու համար: Ես դա անում եմ, քանի որ կա մոտակա օդանավակայան, և երբ ինքնաթիռները տաքսիով շրջում են, նրանք անխուսափելիորեն ցույց են տալիս տունը: Այնուամենայնիվ, քանի որ նրանց բարձրությունը զրո է, և արագությունը քայլում է, դա չպետք է ազդանշան տա:

գործառույթ get_intercept ($ home_head, $ plane_head, $ plane_distance) {

$ flight_angle = abs (abs ($ home_head - $ plane_head) - 180); $ flight_angle_r = deg2rad ($ flight_angle); $ flight_angle_t = tan ($ flight_angle_r); $ flight_intercept = $ flight_angle_t * $ plane_distance;

եթե (($ flight_angle <90) && ($ flight_intercept <3)) {// հնարավոր է անցնել

}

վերադարձնել $ flight_intercept;

}

Քայլ 10. Քարտեզի երկու կետերի միջև հեռավորությունը `Haversine բանաձև

Քարտեզի երկու կետերի միջև հեռավորությունը `Haversine բանաձև
Քարտեզի երկու կետերի միջև հեռավորությունը `Haversine բանաձև

Այսպիսով, մենք պետք է հաշվարկենք ինքնաթիռի և մեր գտնվելու վայրի միջև հեռավորությունը: Քարտեզի կարճ հեռավորությունների վրա կարող եք մոտավորապես հաշվարկել հեռավորությունը, բայց քանի որ երկիրը գնդաձև է, կա մի բանաձև, որը կոչվում է հերսին բանաձև, որը թույլ է տալիս հաշվի առնել կոր մակերեսը: Կարող եք կարդալ բանաձևի մեջ ՝

Այժմ, երբ հաշվարկվում է հեռավորությունը և մենք գիտենք ինքնաթիռի օդային արագությունը, կարող ենք պարզել, թե քանի վայրկյան կլինի այն մինչև ինքնաթիռի վերևը բարձրանալը: Այսպիսով, լույսը կբացվի, եթե թռիչքի անցումից 30 վայրկյանում ինչ -որ բան լինի, և մենք վերջապես ունենանք մեր նախազգուշական լույսը:

* հիմնված 0n JS- ի վրա instantglobe.com/CRANES/GeoCoordTool.html և վերածված PHP */

գործառույթ get_distHaversine ($ home_lat, $ home_lon, $ plane_lat, $ plane_lon) {$ R = 6371; // երկրի միջին շառավիղը կմ-ում $ dLat = deg2rad ($ plane_lat- $ home_lat); $ dLon = deg2rad ($ plane_lon- $ home_lon); $ lat1 = deg2rad ($ home_lat); $ lat2 = deg2rad ($ plane_lat);

$ a = մեղք ($ dLat/2) * մեղք ($ dLat/2) + cos ($ lat1) * cos ($ lat2) * մեղք ($ dLon/2) * մեղք ($ dLon/2);

$ c = 2 * atan2 (sqrt ($ a), sqrt (1- $ a)); $ d = $ R * $ c; վերադարձնել $ d; }

Քայլ 11. Ինքնաթիռի տվյալների շտեմարանի ներմուծում և սահմանում

Մյուս կտորներից մեկն այն է, որ openky կայքը առաջարկում է ինքնաթիռների ներբեռնվող տվյալների շտեմարան ՝ իրենց անվանումների և նշանների հետ միասին: Դրա մի քանի հարյուր հազար գրառում: Այսպիսով, մենք կարող ենք ներբեռնել սա և տեղում բեռնել այն MariaDB տվյալների բազայում ՝ որոնման համար (MySQL): Վերևում հայտնվող յուրաքանչյուր ինքնաթիռի հետ մենք վերցնում ենք դրա մանրամասները և թարմացնում հաշվիչը ՝ ցույց տալու համար, թե քանի անգամ է այն տեսել:

Ես նաև ներկայումս խմբագրում եմ տվյալների շտեմարանը `ինձ հետաքրքրող ինքնաթիռները լուսաբանելու համար: Հիմնականում հին մարտական թռչուններ և նման այլ հետաքրքիր ինքնաթիռներ: Այս ամռանը մի քանի անգամ Միգ -15 ինքնաթիռ է թռչել: ուստի նպատակն է օգտագործել իմ ավելացրած ահազանգման դաշտը և այնուհետև արագ լուսավորել լույսը, երբ ինչ -որ հետաքրքիր բան ավարտվում է

Քայլ 12. Արդյունքների բարելավում և նոր հնարավորություններ

Արդյունքների բարելավում և նոր հնարավորություններ
Արդյունքների բարելավում և նոր հնարավորություններ
Արդյունքների բարելավում և նոր հնարավորություններ
Արդյունքների բարելավում և նոր հնարավորություններ
Արդյունքների բարելավում և նոր հնարավորություններ
Արդյունքների բարելավում և նոր հնարավորություններ

Այսպիսով, տեսականորեն ամեն ինչ բավականին լավ է աշխատում, բայց տվյալների հետ դուք կգտնեք, որ կան ինքնաթիռներ, որոնք թռչում են դրա վրայով և API- ում չեն հայտնվում:

Դա պայմանավորված է նրանով, որ ոչ բոլոր ինքնաթիռներն են օգտագործում ADS-B հաղորդիչ և օգտագործում են ավելի հին հաղորդիչներ ՝ հիմնված MLAT- ի վրա: MLAT- ով օգտագործվող ինքնաթիռների դիրքի տվյալներ ստանալու համար անհրաժեշտ է, որ գետնին մի շարք ընդունիչներ եռանկյունացնեն իրենց դիրքը, և որոշ կայքեր, ինչպիսիք են flightradar24- ը, ունեն ավելի մեծ ներդրողների ցանց `բացվածի համեմատ: Հուսով եմ, որ ժամանակի ընթացքում նրանց ծածկույթը նույնպես կբարելավվի, և ես ստեղծում եմ իմ սեփական MLAT ընդունիչը `այս տվյալներին ավելացնելու համար:

Քայլ 13: Codebase

Մի մոռացեք, եթե պատրաստվում եք օգտագործել սա, գուցե ցանկանաք հեռացնել SQL հայտարարությունները, եթե չունեք ինքնաթիռների տվյալների շտեմարան, ինչպես նաև ավելացրեք ձեր սեփական Lon/Lat արժեքը և API բանալին ՝ թռիչքի տվյալներին մուտք գործելու համար:

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

սահմանել ("INTERVAL", (20 * 1)); գործառույթը fexp () {$ lat = "ձեր լայնությունը"; $ lon = "ձեր երկայնությունը"; $ կողմ = 15.75; $ box = get_bounding_box ($ lat, $ lon, $ side); $ latmin = $ տուփ [0]; $ lonmin = $ տուփ [1]; $ latmax = $ տուփ [2]; $ lonmax = $ տուփ [3]; $ flyurl = "https://opensky-network.org/api/states/all?lamin=$latmin&lomin=$lonmin&lamax=$latmax&lomax=$lonmax"; արձագանք «ՍԿԱՆԻ ՍԿԱՆԻ»; $ start_time = microtime (ճշմարիտ); $ json = file_get_contents ($ flyurl); $ data = json_decode ($ json, TRUE); $ ներգնա = ԿԵSE; $ num_planes = հաշվել ($ data ['States']); if ($ num_planes> 0) {echo "և մենք կարող ենք տեսնել $ num_planes ինքնաթիռ / n"; ($ x = 0; $ x 0) {$ plane_eta = $ distplane/$ air_speed_kmh; } այլ {$ eta = 1; } if ((((intercept) 0)) && ($ distplane0) {$ մուտքային = UEՇՄԱՐՏ; արձագանք »---------------------------------------------------- -------------------- / n "; արձագանք "$ icao24 - [$ country $ callign] at [$ geo_altitude_m M - $ geo_altitude_f ft]"; արձագանք "[արագություն $ air_speed_kmh կմ / ժ և", կլոր ($ distplane, 1), "կմ հեռավորության վրա] n"; արձագանք «[վերնագրի վրա», կլոր ($ plane_heading, 1), "] [homeangle $ heading_d]"; արձագանք "[$ լայնություն, $ երկայնություն] n"; արձագանք "[flypast in", decimal_to_time ($ plane_eta), "now", round ($ intercept, 1), "km away / n"; արձագանք »---------------------------------------------------- -------------------- / n "; $ DBi = new mysqli («127.0.0.1», «արմատ», «ձեր գաղտնաբառը», «awacs»); $ sql = "ընտրել * օդանավի տվյալների շտեմարանից, որտեղ` icao24` = "$ icao24" "; mysqli_set_charset ($ DBi, "utf8"); $ getplanedata = mysqli_query ($ DBi, $ sql) կամ die (mysqli_error ($ DBi)); $ row_getplanedata = mysqli_fetch_assoc ($ getplanedata); $ rows_getplanedata = mysqli_num_rows ($ getplanedata); եթե ($ rows_getplanedata> 0) {անել {echo "callign ="; echo $ row_getplanedata ['գրանցում']; արձագանք «է ա»; echo $ row_getplanedata ['manufacturername']; արձագանք ""; echo $ row_getplanedata ['մոդել']; արձագանք «ըստ»; echo $ row_getplanedata ['Manufactricao']; արձագանք «պատկանում է»; echo $ row_getplanedata ['սեփականատեր']; արձագանք «տեսել»; echo $ row_getplanedata ['այցելություններ']; արձագանք «ժամանակներ»; արձագանք «հատուկ գնահատական =»; echo $ row_getplanedata ['հատուկ']; արձագանք "\ n"; $ այցեր = $ row_getplanedata ['այցելություններ']+1; } while ($ row_getplanedata = mysqli_fetch_assoc ($ getplanedata)); mysqli_free_result ($ getplanedata); $ sqli = "ԹԱՐՄԱՆԵԼ ինքնաթիռի տվյալների շտեմարանի SET այցելություններ = $ այցելություններ ՈՐՏԵica icao24 = '$ icao24'"; mysqli_set_charset ($ DBi, "utf8"); $ updateplanedata = mysqli_query ($ DBi, $ sqli) կամ die (mysqli_error ($ DBi)); } else {echo "Չհաջողվեց գտնել այս ինքնաթիռը DB- ում` ավելացնելով այն "; $ sqli = "ՄՏԱԵԼ Օդանավի տվյալների շտեմարան (icao24, այցելություններ, հատուկ) ԱՐUԵՔՆԵՐ ('$ icao24', 1, 1)"; $ updateplanedata = mysqli_query ($ DBi, $ sqli) կամ die (mysqli_error ($ DBi)); } արձագանք "--------------------------------------------------- --------------------- / n "; } else {// արձագանք «$ callignign»; }}} այլ {echo "և երկինքը պարզ է / n"; } if ($ inbound) {echo "Inbound plane / n"; $ հրաման = "խոզեր w 17 1"; execInBackground ($ հրաման); } else {echo "մուտքային թռիչքներ չկան / n"; $ հրաման = "խոզեր w 17 0"; execInBackground ($ հրաման); }} տասնորդական_տ_աշխատանք (տասնորդական դոլար) {$ օֆսեթ = 0,002778; եթե ($ տասնորդական> $ օֆսեթ) {$ տասնորդական = $ տասնորդական - 0.002778; } $ ժամ = gmdate ('H', հատակ ($ տասնորդական * 3600)); $ րոպե = gmdate ('i', հատակ ($ տասնորդական * 3600)); $ վայրկյան = gmdate ('s', հատակ ($ տասնորդական * 3600)); վերադարձնել str_pad ($ ժամ, 2, "0", STR_PAD_LEFT): ":". str_pad ($ րոպե, 2, "0", STR_PAD_LEFT): ":". str_pad ($ վայրկյան, 2, "0", STR_PAD_LEFT); }/ * * հաշվարկել (սկզբնական) երկու կետերի միջև * * ՝ Էդ Ուիլյամսի ավիացիոն բանաձևից, https://williams.best.vwh.net/avform.htm#Crs * source = instantglobe.com/CRANES/GeoCoordTool: html */ գործառույթը get_bearing ($ home_lat, $ home_lon, $ plane_lat, $ plane_lon) {$ lat1 = deg2rad ($ home_lat); $ lat2 = deg2rad ($ plane_lat); $ dLon = deg2rad ($ plane_lon- $ home_lon); $ y = մեղք ($ dLon) * cos ($ lat2); $ x = cos ($ lat1)*մեղք ($ lat2) - մեղք ($ lat1)*cos ($ lat2)*cos ($ dLon); $ z = atan2 ($ y, $ x); $ zz = (rad2deg ($ z) +360)% 360; վերադարձնել $ zz; } գործառույթը get_intercept ($ home_head, $ plane_head, $ plane_distance) {$ flight_angle = abs (abs ($ home_head - $ plane_head) - 180); $ flight_angle_r = deg2rad ($ flight_angle); $ flight_angle_t = tan ($ flight_angle_r); $ flight_intercept = $ flight_angle_t * $ plane_distance; վերադարձնել $ flight_intercept; } /* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - *// * * Օգտագործեք Haversine բանաձևը ՝ * լայնության/երկայնության (թվային աստիճաններով) * երկու * կետերի միջև հեռավորությունը (կմ) հաշվարկելու համար * * - ից ՝ Haversine բանաձևից - RWՍիննոթ, «Հավերսինի առաքինությունները», * Երկինք և աստղադիտակ, հատոր 68, թիվ 2, 1984 թ. = LatLon.distHaversine (lat1.value.parseDeg (), long1.value.parseDeg (), * lat2.value.parseDeg (), long2.value.parseDeg ()); * որտեղ lat1, long1, lat2, long2 և արդյունքը ձևի դաշտեր են * source = instantglobe.com/CRANES/GeoCoordTool.html */function get_distHaversine ($ home_lat, $ home_lon, $ plane_lat, $ plane_lon) {$ R = 6371; // երկրի միջին շառավիղը կմ-ում $ dLat = deg2rad ($ plane_lat- $ home_lat); $ dLon = deg2rad ($ plane_lon- $ home_lon); $ lat1 = deg2rad ($ home_lat); $ lat2 = deg2rad ($ plane_lat); $ a = մեղք ($ dLat/2) * մեղք ($ dLat/2) + cos ($ lat1) * cos ($ lat2) * մեղք ($ dLon/2) * մեղք ($ dLon/2); $ c = 2 * atan2 (sqrt ($ a), sqrt (1- $ a)); $ d = $ R * $ c; վերադարձնել $ d; } գործառույթ 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); $ շառավիղ = 6371; # Theուգահեռի շառավիղ տվյալ լայնության վրա; $ parallel_radius = $ շառավիղ*cos ($ լատ); $ lat_min = $ lat - $ half_side_in_km/$ շառավղով; $ lat_max = $ lat + $ half_side_in_km/$ շառավիղ; $ lon_min = $ lon - $ half_side_in_km/$ parallel_radius; $ lon_max = $ lon + $ half_side_inmkm/$ 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); վերադարձի զանգված ($ box_lat_min, $ box_lon_min, $ box_lat_max, $ box_lon_max); } գործառույթը execInBackground ($ cmd) {if (substr (php_uname (), 0, 7) == "Windows") {pclose (popen ("start /B". $ cmd, "r")); } else {exec ($ cmd. "> /dev /null &"); }} գործառույթը checkForStopFlag () {// ամբողջովին կամընտիր վերադարձ (TRUE); } գործառույթի սկիզբ () {echo "start / n"; $ հրաման = "խոզեր w 17 1"; execInBackground ($ հրաման); $ ակտիվ = UEԻՇՏ; while ($ active) {usleep (1000); // ըստ ցանկության, եթե ցանկանում եք հաշվի առնել if (microtime (true)> = $ nextTime) {fexp (); $ nextTime = միկրո ժամանակ (ճշմարիտ) + INTERVAL; } $ active = checkForStopFlag (); }} fexp (); սկսել (); ?>

Քայլ 14: LED- ի և անջատման անջատիչի միացում

LED- ի և անջատման անջատիչի միացում
LED- ի և անջատման անջատիչի միացում

Այս նախագծի միացումն իսկապես ավելի պարզ չէր կարող լինել: Կա միայն մեկ LED, որը միացված է 17 -ի կապակցիչին և գետնին `270R ռեզիստորի ներսում:

Ես նաև ներառում եմ անջատման և սնուցման կոճակ, ինչպես նաև էներգիայի LED, որը դուրս է գալիս TXd տվյալների քորոցից: Դուք կարող եք ավելին կարդալ անջատման գործառույթի և պահանջվող ծածկագրի մասին ՝ https://github.com/Howchoo/pi-power-button.git կայքում ՝ https://howchoo.com/g/mwnlytk3zmm/how-to- add-a-pow… Էլեկտրական լամպ ավելացնելու մասին կարող եք կարդալ այստեղ

Խորհուրդ ենք տալիս: