Агуулгын хүснэгт:

Нислэгийн зураглалын өгөгдлийг ашиглан бөөрөлзгөнө PI гүйлтийн зурвасын гэрэл: 14 алхам (зурагтай)
Нислэгийн зураглалын өгөгдлийг ашиглан бөөрөлзгөнө PI гүйлтийн зурвасын гэрэл: 14 алхам (зурагтай)

Видео: Нислэгийн зураглалын өгөгдлийг ашиглан бөөрөлзгөнө PI гүйлтийн зурвасын гэрэл: 14 алхам (зурагтай)

Видео: Нислэгийн зураглалын өгөгдлийг ашиглан бөөрөлзгөнө PI гүйлтийн зурвасын гэрэл: 14 алхам (зурагтай)
Видео: Architecture Kata #1 - Разбор с экспертом [Как работает настоящий Solution Architect] #ityoutubersru 2024, Долдугаар сарын
Anonim
Нислэгийн зураглалын өгөгдлийг ашиглан бөөрөлзгөнө PI гүйлтийн зурвасын гэрэл
Нислэгийн зураглалын өгөгдлийг ашиглан бөөрөлзгөнө PI гүйлтийн зурвасын гэрэл
Нислэгийн зураглалын өгөгдлийг ашиглан бөөрөлзгөнө PI гүйлтийн зурвасын гэрэл
Нислэгийн зураглалын өгөгдлийг ашиглан бөөрөлзгөнө PI гүйлтийн зурвасын гэрэл
Нислэгийн зураглалын өгөгдлийг ашиглан бөөрөлзгөнө PI зурвасын гэрэл
Нислэгийн зураглалын өгөгдлийг ашиглан бөөрөлзгөнө PI зурвасын гэрэл
Нислэгийн зураглалын өгөгдлийг ашиглан бөөрөлзгөнө PI гүйлтийн зурвасын гэрэл
Нислэгийн зураглалын өгөгдлийг ашиглан бөөрөлзгөнө PI гүйлтийн зурвасын гэрэл

Энэхүү чийдэн нь хэд хэдэн шалтгаанаас үүдэлтэй бөгөөд би дээгүүрээ нисдэг онгоцыг үргэлж сонирхож байдаг бөгөөд зуны улиралд амралтын өдрүүдэд эргэн тойронд нисдэг хөөрхөн онгоцнууд байдаг. Хэдийгээр та тэднийг өнгөрөхөд л сонсох хандлагатай байдаг. Нөгөө нэг шалтгаан нь Лондон хотын нисэх онгоцны буудлаас гарах нисэх онгоцны нислэгийн замыг заримдаа сонсож, нэлээд чимээ шуугиантай нислэг үйлддэг бололтой. YouTube -д зориулж зарим видео бичлэг хийж байхдаа дуу чимээ ихтэй онгоцны улмаас бичлэгийг хусах нь үнэхээр ууртай байдаг. Тиймээс, би flyhtradar24 гэх мэт сайтуудаас олж авсан мэдээлэл олон нийтэд нээлттэй байдаг уу гэж би гайхаж байсан юм. Төслийг байрлуулахын тулд зурвасын гэрлийн хуулбарыг ашиглах санаа гарч ирэхэд төдийлөн удсангүй.

Та OpenSky Сүлжээний талаар илүү ихийг https://www.opensky-network.org дээрээс олж мэдэх боломжтой бөгөөд энэ удаад би тунгалаг PLA ашиглахын оронд сайн давирхай линз хийхийг хүсч байсан бөгөөд надад хадгалахыг хүссэн ADS-B хүлээн авагч байгаа ч гэсэн. энэ энгийн бөгөөд хямдхан. ADS-B-д антен хэрэгтэй бөгөөд энэ нь чийдэнг оффисын тавиур дээр байрлуулахад огт хэрэггүй болно. 3D хэвлэх, давирхай хэлбэржүүлэлт, математикийг хамарч, дээрээс нь нисэх боломжтой онгоцны байрлалыг тооцоолоход танд сонирхолтой байх болно гэж найдаж байна.

Алхам 1: Хэргийн загвар гаргах

Google хайлт нь хөөрөх зурвасын олон янзын загварыг гаргаж ирдэг бөгөөд түүний загварыг олон төрлийн жинхэнэ чийдэнгийн дизайны нөлөөг ашиглан хийсэн болно. Бодит амьдрал дээр илүү том хэмжээтэй байдаг тул өрөө эсвэл тавиур дээр бүрэн хэмжээгээр биш харин суух нь масштабтай байдаг.

Загварыг Fusion 360 дээр боловсруулсан бөгөөд би өмнөх төслүүдээс бөөрөлзгөнө pi тэг эзэмшигч гэх мэт өмнөх элементүүдийг оруулж ирсэн. Элементүүдийг дахин ашиглах чадвартай байх нь үндсэн ойлголтуудыг олж авахаас ихээхэн толгой өвдөхөд хүргэдэг. Та мөн файлуудыг эндээс татаж авах боломжтой

Алхам 2: Линз цацах - #амжилтгүй боллоо

Линзийг цутгах - #амжилтгүй боллоо
Линзийг цутгах - #амжилтгүй боллоо
Линзийг цутгах - #амжилтгүй боллоо
Линзийг цутгах - #амжилтгүй боллоо
Линзийг цутгах - #амжилтгүй боллоо
Линзийг цутгах - #амжилтгүй боллоо

Энэхүү чийдэнгийн дизайны хамгийн чухал элемент бол линз байх болно. Тиймээс би үүнийг үнэхээр анхны шилэн аягагүй, төсөл ажиллах гэж байгаа юм шиг шийдсэн. Би үүнд хүрэх гэж оролдож байсан бүтэлгүйтлээ энд тэмдэглэж байна. Гүйлтийн зурвас нь улбар шар, цэнхэр өнгөтэй байдаг бөгөөд зөвхөн хув хийж эхэлсний дараа л би бодлоо өөрчилж, цэнхэр гэрэл авахыг хүссэн юм.

Миний олж мэдсэнээс харахад хув нь бариулах шугамд, цэнхэр нь нислэгийн зурвасыг байрлуулахад ашиглагддаг бөгөөд хэрэв та нисэх зурвасын гэрэл хайх юм бол эдгээр нь илүү архетип хэлбэртэй байдаг. Гэсэн хэдий ч энд хув линз хийх анхны оролдлого минь байна. Линз хийхийн тулд би өнгөт нэмэлт бүхий тунгалаг давирхай ашиглах гэж байсан бөгөөд хэдийгээр 3D хэв хэвлээд үүнийг ашиглах боломжтой болов уу гэж бодсоноосоо өмнө хэд хэдэн хэв хийсэн. Тиймээс би 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 линзийг цутгаж байна

Тиймээс энэ бол давирхайн линз хийх хоёр дахь оролдлого бөгөөд эхний үе шат нь Fusion 360 дээр линзийг хоёуланг нь хийж, дараа нь ABS дээр хэвлэх, хувин барих явдал байв. Энэ нь хөгцний анхны хэлбэр байх бөгөөд хэрэглэх силикон хэмжээг багасгахад тусалдаг. Та үүнийг картаар хялбархан хийж болно, гэхдээ энэ бол арай өөр арга юм. Мөөгөнцөрөөс гарах илүү сайн боломж олгохын тулд эхлээд лакаар будаж, дараа нь лав ялгаруулагч бодисыг сайн бүрхэв.

Дараа нь би 27 RTV эрэг орчим GP-3481 цутгаж, дараа нь буулгахаасаа өмнө дараагийн 24 цагийн турш тавина. Үүнийг хийсний дараа би 2: 1 харьцаатай хольсон тунгалаг давирхайг 4/5 дусал өнгийн пигментээр хольж, дөрвөн минутын турш сайтар хольсон. Үүнийг хэвэнд хийнэ, дараа нь чийдэн эсвэл LED -ийн аль алинд нь хоосон зай гаргахын тулд давирхай руу шилэн шил байрлуулна. Ойролцоогоор 24 цагийн дараа энэ давирхайг арилгахад бэлэн болсон бөгөөд линз маш сайн гарч ирэв. Агаарын бөмбөлгүүд байдаг, гэхдээ одоогоор надад давирхайг цутгахаас өмнө хий арилгах вакуум сав байхгүй байна.

Алхам 5: 3D хэвлэх ба бэлтгэл ажил

3D хэвлэх, бэлтгэх
3D хэвлэх, бэлтгэх
3D хэвлэх, бэлтгэх
3D хэвлэх, бэлтгэх
3D хэвлэх, бэлтгэх
3D хэвлэх, бэлтгэх

Энэхүү загвар нь төв хэсэг нь сууринд залгагдахаар хийгдсэн байв. Энэ нь будах явцад маск хийхээс зайлсхийх явдал байв. Загварыг бүхэлд нь Hatchbox ABS дээр хэвлээд дараа нь зүлгэжээ. 60 гритээс эхлэн 800 орчим грит хүртэл энэ загварт хангалттай сайн өнгөлгөө өгсөн.

Алхам 6: Угсрах, будах

Уран зураг, угсралт
Уран зураг, угсралт
Уран зураг, угсралт
Уран зураг, угсралт
Уран зураг, угсралт
Уран зураг, угсралт

Хэвийг зүлгэж дууссаны дараа өндөр чанартай праймераар будсан болно. Бага зэрэг зүлгэж, дараа нь саарал праймераар цацна. Гол хэсгүүдийг форд дохиогоор шараар будаж, дараа нь суурийн зориулалтаар ашигладаг brooklands ногоон өнгөтэй байв. Тамиа мөнгөний онцлох зүйлийг боолт, линз эзэмшигч дээр ашигладаг зарим молотов мөнгөн хром дээр хэрэглэв.

Алхам 7: Эхлээд хил хязгаарын бүсэд байгаа онгоцуудыг олоорой

Тоног төхөөрөмжийг ангилсан тул програм хангамж дээр ажиллах шаардлагатай байв. Нислэгийн хяналтыг хийдэг хэд хэдэн сайт байдаг боловч эдгээр өгөгдөлд хандах API өгдөг олон сайт байдаггүй. Зарим нь үүнийг зөвхөн арилжааны зорилгоор хийдэг боловч аз болоход та үнэгүй ашиглах боломжтой https://opensky-network.org гэсэн нэг сайт байдаг.

Энэ өгөгдөлд хандахын тулд та бүртгүүлэх ёстой бөгөөд дараа нь та тэдгээрийн API -г ашиглаж болно, энэ нь өгөгдлийг татах хэд хэдэн функц, арга замыг өгдөг. Бид тухайн бүс нутаг дахь бүх нислэгийг сонирхож байгаа бөгөөд тэд үүнийг хийхийн тулд Live API дуудлага хийх боломжтой. https://opensky-network.org/apidoc/ гэж хязгаарлах хайрцаг гэж нэрлэдэг. API дуудлага хийхдээ таны сонирхож буй хайрцгийн булан шаардлагатай болно. Та энэ сайтын математикийн ажлыг шалгаж болно, энэ нь таны бичсэн зүйлээс хамаарч хайрцаг зурдаг. Http://tools.geofabrik.de гэхдээ одоогоор дараах скрипт нь API -д залгахад шаардлагатай цэгүүдийг өгч байна.

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 = $ лат + $ half_side_in_km/$ радиус; $ 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); буцах массив ($ box_lat_min, $ box_lon_min, $ box_lat_max, $ box_lon_max);

Хэрэв та кодоо туршиж үзэхийг хүсвэл lat/lon хаягийг оруулаад үр дүнг нь газрын зураг дээрээс харах боломжтой сайт байдаг: Газрын зураг дээрх хязгаарлагдмал хайрцгийн жишээг үзнэ үү.

Алхам 8: Бидэнтэй холбоотой онгоцны чиглэлийг тооцоолох

Бидэнтэй холбоотой онгоцны чиглэлийг тооцоолох
Бидэнтэй холбоотой онгоцны чиглэлийг тооцоолох

Хязгаарлагдмал API дуудлагын үр дүн нь онгоцны жагсаалт, тэдгээрийн Lon/lat, хурд, өндөр, чиглэлийг бидэнд өгдөг. Дараагийн хийх ёстой зүйл бол нисэх онгоц бүрийн толгойг бидэнтэй харьцуулж олж авах бөгөөд ингэснээр бид дор хаяж бидний ерөнхий чиглэлд явж буй онгоцнуудыг боловсруулж чадна. Бид үүнийг байр сууриа мэдэж, биднээс онгоц тус бүрийн өнцгийг тодорхойлж чаддаг тул үүнийг хийж чадна.

Үүнийг хийхийн тулд би анх Javascript дээр байсан нэг кодыг ашигладаг байсан тул үүнийг энд PHP болгон хөрвүүлсэн.

* хоёр онооны хоорондох өгөгдлийг тооцоолох get_bearing функц ($ home_lat, $ home_lon, $ онгоцны_лат, $ онгоцны_лон) {$ lat1 = deg2rad ($ home_lat); $ lat2 = deg2rad ($ онгоцны_лат);

$ dLon = deg2rad ($ онгоцны_лон- $ home_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 буцаах;

Хэрэв та javascript -ийн анхны хувилбарууд байгаа хуудсыг үзэхийг хүсвэл энэ линкийг үзнэ үү:

Энэ кодын хүрээнд та тооцооллын төрөл бүрийн дэд хэвшлийг харж болно.

Алхам 9: Тойрог харах замаар хөндлөн огтлолыг тооцоолох

Тойрог харах замаар хөндлөн огтлолыг тооцоолох
Тойрог харах замаар хөндлөн огтлолыг тооцоолох

Тиймээс одоо бидэнд байршил хоёрын хоорондох даац 90 -ээс бага (эерэг ба сөрөг аль аль нь байгаа) онгоц байгаа бөгөөд энэ нь ойролцоо нисэх магадлал байгаа гэсэн үг юм. Хаверсины томъёог ашиглан бид онгоцны Лон/Лат, манай байшингийн Лон/Латыг биднээс хол зайд ашиглах боломжтой.

Диаграмыг харвал, хэрэв бид байшингийнхаа эргэн тойронд 3 милийн радиуст тойрог зурвал энэ нь нисч буй зүйлийг харах боломжийг бидэнд олгоно. Бид онгоц ба бидний хоорондох нислэгийн ялгааг мэддэг бөгөөд биднээс онгоцны зайг мэддэг тул хуучин SOHCAHTOA -ийг ашиглан гурвалжинг гаргаж, энэ тохиолдолд олж авах боломжтой өнцгийн Тан -г ашиглана. эсрэг талын урт. Хэрэв бид энэ утгыг байшингийн эргэн тойронд байгаа тойргийн радиусын утгатай харьцуулж үзвэл онгоц бидэнд ойрхон нисэх эсэхийг мэдэх боломжтой болно. Дараагийн хийх зүйл бол агаарын хурд, зайг ашиглан нисэх онгоцны нисэх хугацааг тооцоолох, хэрэв энэ нь ойролцоогоор 45 секундээс бага байвал бид гэрлээ асаана. Энэ бол нисэх магадлалыг тооцоолоход ашигладаг жаахан код юм. Ойролцоох нисэх онгоцны буудал байдаг тул би үүнийг хийдэг бөгөөд онгоцууд таксигаар явж байхдаа гэр рүүгээ гарцаагүй зааж өгдөг. Гэсэн хэдий ч тэдний өндөр нь тэг, хурд нь алхаж байгаа тул дохиоллыг асаах ёсгүй.

get_intercept функц ($ home_head, $ flat_head, $ flat_distance) {

$ flight_angle = abs (abs ($ home_head - $ онгоцны_ толгой) - 180); $ flight_angle_r = deg2rad ($ flight_angle); $ flight_angle_t = tan ($ flight_angle_r); $ flight_intercept = $ flight_angle_t * $ онгоцны_зай;

if (($ flight_angle <90) && ($ flight_intercept <3)) {// нисэх боломжтой

}

$ flight_intercept -ийг буцаах;

}

Алхам 10: Газрын зураг дээрх хоёр цэгийн хоорондох зай - Хаверсайн томъёо

Газрын зураг дээрх хоёр цэгийн хоорондох зай - Хаверсайн томъёо
Газрын зураг дээрх хоёр цэгийн хоорондох зай - Хаверсайн томъёо

Тиймээс бид онгоц болон байршил хоорондын зайг тооцоолох ёстой. Газрын зураг дээрх богино зайд та ойролцоогоор зайг тооцоолж болно, гэхдээ дэлхий бөмбөрцөг хэлбэртэй байдаг тул муруй гадаргууг анхаарч үзэх боломжийг олгодог haversine томъёо гэж нэрлэдэг томъёо байдаг. Та томъёог цааш нь унших боломжтой:

Одоо тооцоолсон зайг тооцоолоод онгоцны нислэгийн хурдыг мэдэж авснаар онгоцны дээгүүр гарахаас хэдэн секундын өмнө гарч болохыг тооцоолж болно. Хэрэв нисэх буудлаас 30 секундын дотор ямар нэгэн зүйл байвал бид гэрэл асах болно.

* instantglobe.com/CRANES/GeoCoordTool.html дээрх 0n JS дээр суурилсан бөгөөд PHP болж хувирсан */

get_distHaversine функц ($ home_lat, $ home_lon, $ онгоцны_лат, $ онгоц_лон) {$ R = 6371; // дэлхийн дундаж радиус км-т $ dLat = deg2rad ($ онгоцны_лат- $ home_lat); $ dLon = deg2rad ($ онгоцны_лон- $ home_lon); $ lat1 = deg2rad ($ home_lat); $ lat2 = deg2rad ($ онгоцны_лат);

$ 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 буцаах; }

Алхам 11: Онгоцны мэдээллийн санг импортлох, тодорхойлох

Бусад хэсгүүдийн нэг бол openky сайт нь нисэх онгоцны дуудлага, таних тэмдгийн хамт татаж авах боломжтой мэдээллийн санг санал болгодог явдал юм. Энэ нь хэдэн зуун мянган оруулга юм. Тиймээс бид үүнийг татаж аваад хайлт хийх зорилгоор MySQL -ийн MariaDB мэдээллийн санд байршуулж болно. Дээш гарч ирэх онгоц бүр дээр бид түүний дэлгэрэнгүй мэдээллийг авч, тоолуурыг хэдэн удаа үзсэнийг харуулдаг.

Би одоо бас мэдээллийн баазыг сонирхож буй онгоцнуудаа тодруулахын тулд засварлаж байна. Голчлон хуучин дайны шувууд болон бусад ижил төстэй сонирхолтой онгоцууд. Энэ зун хэд хэдэн удаа Миг-15 онгоц ниссэн. Тиймээс зорилго бол миний нэмж оруулсан сэрэмжлүүлгийн талбарыг ашиглах бөгөөд дараа нь сонирхолтой зүйл ойртох үед гэрлийг хурдан асаах явдал юм

Алхам 12: Үр дүн, шинэ боломжуудыг сайжруулах

Үр дүн, шинэ боломжуудыг сайжруулах
Үр дүн, шинэ боломжуудыг сайжруулах
Үр дүн, шинэ боломжуудыг сайжруулах
Үр дүн, шинэ боломжуудыг сайжруулах
Үр дүн, шинэ боломжуудыг сайжруулах
Үр дүн, шинэ боломжуудыг сайжруулах

Онолын хувьд бүх зүйл маш сайн ажилладаг, гэхдээ та API дээр харагдахгүй нисдэг онгоцнууд байдаг гэдгийг олж мэдэх болно.

Учир нь бүх онгоц ADS-B транспондер ашигладаггүй бөгөөд MLAT дээр суурилсан хуучин транспондер ашигладаг. MLAT ашиглан нисэх онгоцны байрлалын мэдээллийг олж авахын тулд газар дээрх хэд хэдэн хүлээн авагчийг байрлалыг нь гурвалжин байрлуулах шаардлагатай байдаг бөгөөд flyhtradar24 гэх мэт зарим сайтууд нь openky -тэй харьцуулахад үүнийг хийдэг хувь нэмэр оруулагчдын илүү том сүлжээтэй байдаг. Цаг хугацаа өнгөрөх тусам тэдний хамрах хүрээ сайжирна гэж найдаж байна, би энэ өгөгдлийг нэмэхийн тулд өөрийн MLAT хүлээн авагчийг тохируулж байна.

Алхам 13: Codebase

Хэрэв та үүнийг ашиглах гэж байгаа бол онгоцны мэдээллийн сан байхгүй бол нислэгийн өгөгдөлд хандахын тулд өөрийн Lon/Lat утга болон API түлхүүрийг нэмж оруулбал SQL мэдэгдлийг устгахыг хүсч магадгүйг бүү мартаарай.

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 = микро цаг (үнэн); $ json = file_get_contents ($ flyurl); $ өгөгдөл = json_decode ($ json, ҮНЭН); $ орж ирсэн = ХУДАЛ; $ num_planes = тоо ($ өгөгдөл ['муж']); if ($ num_planes> 0) {echo "мөн бид $ num_planes онгоцыг харж болно / n"; for ($ x = 0; $ x 0) {$ təyyarə_eta = $ нисэх онгоц/$ air_speed_kmh; } өөр {$ eta = 1; } if ((($ intercept) 0)) && ($ distplane0) {$ inbound = TRUE; цуурай "------------------------------------------------ -------------------- / n "; echo "$ icao24 - [$ country $ callsign] дээр [$ geo_altitude_m M - $ geo_altitude_f ft]"; echo "[speed $ air_speed_kmh kmh and", round ($ distplane, 1), "km away] n"; echo "[гарчиг дээр", тойрог ($ онгоцны_ толгой, 1), "] [homeangle $ heading_d]"; цуурай "[$ өргөрөг, $ уртраг] n"; echo "[flypast in", decimal_to_time ($ онгоцны_ета), "одоо", дугуй ($ таслах, 1), "км хол / n"; цуурай "------------------------------------------------ -------------------- / n "; $ DBi = шинэ mysqli ("127.0.0.1", "root", "таны нууц үг", "awacs"); $ sql = "icao24` = '$ icao24' гэсэн онгоцны мэдээллийн баазаас * сонгох *;"; mysqli_set_charset ($ DBi, "utf8"); $ getplanedata = mysqli_query ($ DBi, $ sql) эсвэл үхэх (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 ['бүртгэл']; цуурай "бол"; echo $ row_getplanedata ['үйлдвэрлэгчийн нэр']; цуурай ""; цуурай $ row_getplanedata ['загвар']; цуурай "by"; цуурай $ row_getplanedata ['үйлдвэрлэгч]; echo "эзэмшдэг"; цуурай $ row_getplanedata ['эзэмшигч']; цуурай "харсан"; цуурай $ row_getplanedata ['зочилсон']; цуурай "цаг"; echo "тусгай үнэлгээ ="; цуурай $ row_getplanedata ['онцгой']; цуурай "\ n"; $ айлчлал = $ row_getplanedata ['айлчлал']+1; } байхад ($ row_getplanedata = mysqli_fetch_assoc ($ getplanedata)); mysqli_free_result ($ getplanedata); $ sqli = "Нисэх онгоцны мэдээллийн баазын SET зочлолтыг шинэчлэх = $ зочлох WHERE icao24 = '$ icao24'"; mysqli_set_charset ($ DBi, "utf8"); $ updateplanedata = mysqli_query ($ DBi, $ sqli) эсвэл үхэх (mysqli_error ($ DBi)); } else {echo "Энэ онгоцыг DB дээрээс олж чадаагүй тул нэмж орууллаа"; $ sqli = "INSERT INTO онгоцны мэдээллийн бааз (icao24, айлчлал, онцгой) ҮНЭ ЦЭНЭ ('$ icao24', 1, 1)"; $ updateplanedata = mysqli_query ($ DBi, $ sqli) эсвэл үхэх (mysqli_error ($ DBi)); } цуурай "----------------------------------------------- --------------------- / n "; } өөр {// echo "$ callsign"; }}} өөр {echo ", тэнгэр цэлмэг байна / n"; } if ($ inbound) {echo "Inbound онгоц / n"; $ command = "гахай w 17 1"; execInBackground ($ тушаал); } өөр {echo "ирж буй нислэг байхгүй / n"; $ command = "гахай w 17 0"; execInBackground ($ тушаал); }} функц decimal_to_time ($ аравтын бутархай) {$ офсет = 0.002778; if ($ decimal> $ offset) {$ decimal = $ decimal - 0.002778; } $ цаг = gmdate ('H', шал ($ аравтын * 3600)); $ минут = gmdate ('i', шал ($ аравтын * 3600)); $ seconds = gmdate ('s', шал ($ аравтын * 3600)); str_pad буцах ($ цаг, 2, "0", STR_PAD_LEFT). ":". str_pad ($ минут, 2, "0", STR_PAD_LEFT). ":". str_pad ($ секунд, 2, "0", STR_PAD_LEFT); }/ * * хоёр цэгийн хоорондох өгөгдлийг тооцоолох. html */ функц get_bearing ($ home_lat, $ home_lon, $ онгоцны_лат, $ онгоцны_лон) {$ lat1 = deg2rad ($ home_lat); $ lat2 = deg2rad ($ онгоцны_лат); $ dLon = deg2rad ($ онгоцны_лон- $ гэрийн_лон); $ 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 буцаах; } функц get_intercept ($ home_head, $ онгоцны_хүрээ, $ онгоцны_зай) {$ flight_angle = abs (abs ($ home_head - $ онгоцны_хээр) - 180); $ flight_angle_r = deg2rad ($ flight_angle); $ flight_angle_t = tan ($ flight_angle_r); $ flight_intercept = $ flight_angle_t * $ онгоцны_зай; $ flight_intercept -ийг буцаах; } /* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - *// * * Haversine томъёог ашиглан * өргөрөг/уртраг (тоон хэмээр) * * заасан хоёр цэгийн хоорондох зайг (км -ээр) тооцоолохдоо: Haversine formula - RWSinnott, "Haversine -ийн ариун журам", * Тэнгэр ба телескоп, боть 68, № 2, 1984 * https://williams.best.vwh.net/avform.htm#Crs * * маягтаас жишээ ашиглах: * result.value = 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, $ онгоцны_лат, $ онгоцны_лон) {$ R = 6371; // дэлхийн дундаж радиус км-т $ dLat = deg2rad ($ онгоцны_лат- $ home_lat); $ dLon = deg2rad ($ онгоцны_лон- $ гэрийн_лон); $ lat1 = deg2rad ($ home_lat); $ lat2 = deg2rad ($ онгоцны_лат); $ 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 буцаах; } функц 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 = $ лат + $ half_side_in_km/$ радиус; $ 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); буцах массив ($ 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")); } өөр {exec ($ cmd. "> /dev /null &"); }} функц checkForStopFlag () {// бүрэн нэмэлт өгөөж (ҮНЭН); } функц эхлэх () {echo "эхлэх / n"; $ command = "гахай w 17 1"; execInBackground ($ тушаал); $ идэвхтэй = ҮНЭН; while ($ active) {usleep (1000); // сонголттой, хэрэв та анхааралтай байхыг хүсч байвал (microtime (true)> = $ nextTime) {fexp (); $ nextTime = microtime (үнэн) + INTERVAL; } $ идэвхтэй = checkForStopFlag (); }} fexp (); эхлэх (); ?>

Алхам 14: LED ба унтраах унтраалгыг холбоно уу

LED болон унтраах унтраалгыг холбож байна
LED болон унтраах унтраалгыг холбож байна

Энэ төслийн утас холболт нь тийм ч хялбар биш байж магадгүй юм. Зөвхөн 17 -р зүү, 270R резистортой газардуулгатай холбогдсон ганц LED байна.

Би бас унтраах, асаах товчлуур, TXd өгөгдлийн зүүг унтраасан тэжээлийн LED -ийг багтаасан болно. Та унтраах функц болон шаардлагатай кодын талаар илүү ихийг https://github.com/Howchoo/pi-power-button.git дээрээс https://howchoo.com/g/mwnlytk3zmm/how-to- сайтаас уншиж болно. add-a-pow … Та цахилгаан гэрэл нэмэх талаар эндээс уншиж болно

Зөвлөмж болгож буй: