فهرست مطالب:

هشدار اولیه نور باند تمشک PI با استفاده از داده های نقشه برداری پرواز: 14 مرحله (همراه با تصاویر)
هشدار اولیه نور باند تمشک PI با استفاده از داده های نقشه برداری پرواز: 14 مرحله (همراه با تصاویر)

تصویری: هشدار اولیه نور باند تمشک PI با استفاده از داده های نقشه برداری پرواز: 14 مرحله (همراه با تصاویر)

تصویری: هشدار اولیه نور باند تمشک PI با استفاده از داده های نقشه برداری پرواز: 14 مرحله (همراه با تصاویر)
تصویری: В темно-синем лесу, где трепещут осины ► 3 Прохождение Valheim 2024, جولای
Anonim
هشدار اولیه نور باند تمشک PI با استفاده از داده های نقشه برداری پرواز
هشدار اولیه نور باند تمشک PI با استفاده از داده های نقشه برداری پرواز
هشدار اولیه نور باند تمشک PI با استفاده از داده های نقشه برداری پرواز
هشدار اولیه نور باند تمشک PI با استفاده از داده های نقشه برداری پرواز
هشدار اولیه نور باند تمشک PI با استفاده از داده های نقشه برداری پرواز
هشدار اولیه نور باند تمشک PI با استفاده از داده های نقشه برداری پرواز
هشدار اولیه نور باند تمشک PI با استفاده از داده های نقشه برداری پرواز
هشدار اولیه نور باند تمشک PI با استفاده از داده های نقشه برداری پرواز

این چراغ به دلایل متعددی ایجاد شد زیرا من همیشه به هواپیماهایی که از بالای سر پرواز می کنند علاقه مند هستم و در طول تابستان در تعطیلات آخر هفته اغلب برخی از هواپیماهای بسیار هیجان انگیز در اطراف پرواز می کنند. اگرچه شما فقط تمایل دارید که آنها را هنگام گذراندن بشنوید. سپس دلیل دیگر این است که به نظر می رسد گاهی اوقات مسیر پرواز هواپیماهای خروجی از فرودگاه شهر لندن شنیده می شود و پروازهای بسیار پر سر و صدا در حال انجام است. وقتی در ضبط برخی از ویدئوها برای یوتیوب مشغول کار هستم ، مجبور به حذف یک ضبط به دلیل یک هواپیمای پر سر و صدا ، واقعاً آزاردهنده است. بنابراین من تعجب کردم که آیا اطلاعاتی که در سایت هایی مانند flightradar24 مشاهده می کنید در دسترس عموم است یا خیر ، هنگامی که متوجه شدم چیزی مشابه از شبکه باز وجود دارد ، چراغ هشدار اولیه متولد شد. طولی نکشید که ایده استفاده از یک کپی از چراغ باند برای قرار دادن پروژه به وجود آمد.

شما می توانید در مورد The OpenSky Network در https://www.opensky-network.org اطلاعات بیشتری کسب کنید. من همچنین می خواستم این بار به جای استفاده از PLA شفاف یک لنز رزین خوب بسازم و اگرچه یک گیرنده ADS-B دارم که می خواستم آن را نگه دارم این ساده و ارزان ADS-B همچنین نیاز به آنتن دارد و این برای لامپ در قفسه در دفتر کار نمی کند. بنابراین امیدوارم ساخت شما جالب باشد زیرا شامل چاپ سه بعدی ، قالب گیری رزین و ریاضی و همچنین جهت برآورد موقعیت هواپیماها است که به طور بالقوه ممکن است از بالای سر عبور کنند.

مرحله 1: طراحی مورد

جستجوی گوگل طرح های مختلفی از لامپ باند ارائه می دهد و طراحی این لامپ با استفاده از تأثیرات طراحی از انواع مختلف لامپ های واقعی انجام شده است. همچنین نشستن در اتاق یا قفسه به جای اندازه کامل مقیاس پذیر است ، زیرا در زندگی واقعی بسیار بزرگتر هستند.

طرح ها در Fusion 360 طراحی شده اند و من برخی از عناصر قبلی مانند نگهدارنده تمشک پی صفر را از پروژه های قبلی وارد کردم. توانایی استفاده مجدد از عناصر ، سردرد زیادی را از بین می برد و اصول اولیه را از بین می برد. همچنین می توانید فایل ها را در اینجا بارگیری کنید

مرحله 2: ریختن لنزها - #شکست

ریختن لنزها - #شکست
ریختن لنزها - #شکست
ریختن لنزها - #شکست
ریختن لنزها - #شکست
ریختن لنزها - #شکست
ریختن لنزها - #شکست

مهمترین عنصر طراحی این لامپ قرار بود لنز باشد. بنابراین من ابتدا به این موضوع پرداختم زیرا بدون یک شیشه زیبا و معتبر ، این پروژه به کار خود ادامه می داد. من در اینجا ناکامی هایی را که در تلاش برای دستیابی به آن داشتم ، ثبت می کنم ، نه اینکه در ابتدا تصمیم گرفتم عدسی را کهربا کنم. چراغ های باند به دو رنگ کهربایی و آبی می آیند و تنها پس از اینکه من کهربایی را شروع کردم ، تصمیم خود را تغییر دادم و تصمیم گرفتم که یک چراغ آبی بخواهم.

با توجه به آنچه که می توانم تشخیص دهم کهربا در خط نگهدارنده و رنگ آبی در خط باند استفاده می شود و اینها مواردی هستند که اگر چراغ های باند را جستجو کنید ، نمونه های قدیمی تر هستند. با این حال ، در اینجا اولین تلاش من برای ساخت یک عدسی کهربا است. برای ساختن لنز ، من از رزین شفاف با افزودنی رنگ استفاده می کردم ، و اگرچه قبلاً چند قالب انجام داده بودم که آیا می توانم قالب سه بعدی را چاپ کنم و از آن استفاده کنم. بنابراین من شروع به ساخت قالب شکاف دار به صورت سه بعدی و چاپ آن در PetG کردم. مقادیر مناسب رهاسازی قالب که من متقاعد شده بودم برای برش قالب کافی است. همانطور که معلوم شد با چند بار تلاش ، رزین را مانند چسب به قالب چسباندم و جدا کردن آنها به نظر نمی رسد. اگرچه من مقیاس کامل را که قصد استفاده از آن را داشتم ، نداشتم ، اما تصمیم گرفتم و لنز را چاپ کردم تا از قالبهای سنتی سیلیکون استفاده کنم.

مرحله 3: انواع مختلف رزین

انواع مختلف رزین
انواع مختلف رزین
انواع مختلف رزین
انواع مختلف رزین
انواع مختلف رزین
انواع مختلف رزین
انواع مختلف رزین
انواع مختلف رزین

به عنوان یک نکته سریع ، من از 3 نوع رزین شفاف/رنگی برای این پروژه استفاده کردم.

اولین مورد نوعی بازار سرگرمی به نام Pebeo - Gedeo بود و معمولاً برای محصور کردن اجزای کوچک فروخته می شود و برای جواهرات و کاغذهای رومیزی و غیره استفاده می شود. این بسیار خوب کار کرد و در حدود 24-36 ساعت خوب درمان شد. با این حال نسبت به مبلغی که دریافت می کنید بسیار گران است ، اما مفید است و به راحتی در مغازه های سرگرمی و صنایع دستی در دسترس است. به نسبت 2: 1 مخلوط شده است. دومی رزینی از قبل رنگی بود که در نسبت 10: 1 با سخت کننده مخلوط می شود و این طولانی ترین درمان طول کشید ، صادقانه حدود یک هفته قبل از اینکه کاملاً پخت شود. آخرین مورد رزین شفافی بود که در نسبت 2: 1 نیز مخلوط شده بود و در مدت 2 روز درمان می شد ، می توانید این رنگ را با قطره رنگدانه رنگ آمیزی کنید ، اما باید مطمئن شوید که اگر از رنگ رنگ همیشه استفاده می کنید دسته های جداگانه ای می سازند همچنین مقرون به صرفه ترین کار را انجام می دهد. در نهایت RTV قالب قالب GP-3481 RTV بود و تنظیم آن حدود 24 ساعت طول می کشد و زمان قابلمه ای بسیار طولانی دارد بنابراین شما زمان زیادی برای مخلوط کردن و سپس ریختن آن دارید.

در حال حاضر من دیگ پاییزی ندارم (فعلاً سفارش داده شده است) تا بتوانید در قالب و رزین در حال ریختن حباب باشید. برای این مسئله چندان مهم نیست ، اما با یک لنز شفاف یا مشابه آن ، می خواهید به نحوی به فکر خروج حباب از مخلوط باشید.

مرحله 4: ریختن لنز در قالب سیلیکونی شماره 2

Image
Image
ریختن لنز در قالب سیلیکونی شماره 2
ریختن لنز در قالب سیلیکونی شماره 2
ریختن لنز در قالب سیلیکونی شماره 2
ریختن لنز در قالب سیلیکونی شماره 2

بنابراین این دومین تلاش برای ساختن یک لنز رزین است و اولین مرحله این بود که هم یک لنز در فیوژن 360 ساخته شود و سپس آن را در ABS چاپ کنید و هم یک سطل برای نگه داشتن آن. این اولین مورد برای قالب است و به کاهش مقدار سیلیکون مورد استفاده کمک می کند. شما به راحتی می توانید این را از کارت تهیه کنید ، اما این یک روش متفاوت است. برای اینکه شانس بیشتری برای رها شدن از قالب داشته باشم ، ابتدا آن را لاک زنی کردم و سپس پوشش خوبی از ماده موم زدا را به آن دادم.

سپس مقداری GP-3481 را که حدود RTV ساحل 27 است ریختم و سپس اجازه دادم در 24 ساعت بعدی قبل از جدا شدن تنظیم شود. پس از انجام این کار ، من از رزین شفاف مخلوط با نسبت 2: 1 با حدود 4/5 قطره رنگدانه رنگی استفاده کردم و آن را به مدت چهار دقیقه خوب مخلوط کردم. این را در قالب ریخته و سپس یک شیشه شات داخل رزین قرار دهید تا بعداً یک خالی برای لامپ یا چراغ LED ایجاد شود. پس از حدود 24 ساعت این رزین آماده برداشتن شد و لنز بسیار خوب بیرون آمد. حباب های هوا وجود دارد ، اما هنوز ظرف خلاء ندارم که رزین را قبل از ریختن گاز دهی کند.

مرحله 5: چاپ سه بعدی و آماده سازی

چاپ سه بعدی و آماده سازی
چاپ سه بعدی و آماده سازی
چاپ سه بعدی و آماده سازی
چاپ سه بعدی و آماده سازی
چاپ سه بعدی و آماده سازی
چاپ سه بعدی و آماده سازی

این مدل به گونه ای طراحی شده است که قسمت مرکزی به پایه متصل می شود. این امر برای جلوگیری از ماسک زدن در طول فرایند نقاشی بود. کل مدل در Hatchbox ABS چاپ و سپس سنباده زنی شد. شروع با شن و ماسه 60 تا 800 شن و ماسه سطح خوبی را برای این مدل به ارمغان آورد.

مرحله 6: مونتاژ و رنگ آمیزی

مونتاژ و نقاشی
مونتاژ و نقاشی
مونتاژ و نقاشی
مونتاژ و نقاشی
مونتاژ و نقاشی
مونتاژ و نقاشی

هنگامی که چاپها سنباده می شوند ، سپس با مقداری پرایمر بلند رنگ آمیزی می شود. کمی ماسه بزنید و سپس با پرایمر خاکستری اسپری کنید. قسمتهای اصلی با سیگنال فورد به رنگ زرد رنگ آمیزی شده و سپس برای قسمت پایه از رنگ سبز آبی استفاده شده است. سپس نکات برجسته نقره تامی به پیچ و مهره ها و مقداری کروم نقره ای مالتو بر روی نگهدارنده لنز استفاده شد.

مرحله 7: ابتدا هواپیماها را در محدوده محدود پیدا کنید

با سخت افزار مرتب شده ، نرم افزار نیاز به کار دارد. در حال حاضر چند سایت وجود دارد که ردیابی پرواز را ارائه می دهند ، اما بسیاری از آنها API برای دسترسی به این داده ها ندارند. برخی از آنها این کار را فقط به صورت تجاری انجام می دهند اما خوشبختانه یک سایت به نام https://opensky-network.org وجود دارد که می توانید به صورت رایگان از آن استفاده کنید.

برای دسترسی به این داده ها باید ثبت نام کنید و سپس می توانید از API آنها استفاده کنید ، چندین عملکرد و روش برای کشیدن داده ها را ارائه می دهد. ما به همه پروازهای داخل یک منطقه علاقه مند هستیم و آنها برای آن تماس API زنده دارند. https://opensky-network.org/apidoc/ کادر محدود کننده نامیده می شود. تماس API مستلزم گوشه های جعبه است که شما علاقه مند هستید ، البته Lat/Lon ما به عنوان نقطه مرکزی. می توانید آثار ریاضی را در این سایت بررسی کنید ، که بسته به نوع تایپ شما یک کادر می کشد. https://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)؛ $ radius = 6371؛ $ parallel_radius = $ radius*cos ($ lat)؛ $ 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_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 box box به ما لیستی از هواپیماها ، Lon/lat آنها ، سرعت ، ارتفاع و سرفصل را می دهد. بنابراین ، کار بعدی که باید انجام دهیم این است که سرفصل هر هواپیما را در رابطه با خود بدست آوریم تا بتوانیم مواردی را که حداقل در جهت کلی ما حرکت می کنند ، بیشتر پردازش کنیم. ما می توانیم این کار را همانطور که موقعیت خود را می دانیم انجام دهیم و می توانیم زاویه ای که از ما نسبت به هر صفحه وجود دارد را بسازیم.

برای انجام این کار ، من از یک قطعه کد که در ابتدا در Javascript بود استفاده می کنم ، بنابراین آن را در اینجا به PHP تبدیل کردم ،

* محاسبه (اولیه) تحمل بین دو نقطه * * از: Ed Williams 'Aviation Formulary، 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 = 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 ؛

اگر می خواهید به صفحه ای که نسخه های اصلی جاوا اسکریپت در آن وجود دارد نگاه کنید ، این پیوند است:

در آن کد ، همچنین می توانید زیر روال های مختلف برای هر نوع محاسبه را مشاهده کنید.

مرحله 9: محاسبه یک رهگیر با نگاه کردن به یک دایره

محاسبه یک رهگیر با نگاه کردن به یک دایره
محاسبه یک رهگیر با نگاه کردن به یک دایره

بنابراین ما در حال حاضر هواپیمایی داریم که بار بین آن و مکان ما کمتر از 90 (مثبت یا منفی) است و بنابراین این بدان معناست که احتمال دارد در نزدیکی ما پرواز کند. با استفاده از فرمول هورسین می توانیم با استفاده از Lon/Lat هواپیما و Lon/Lat خانه خود فاصله ای که از ما فاصله دارد را تمرین کنیم.

با نگاه کردن به نمودار ، اگر یک دایره در اطراف خانه خود با شعاع حدود 3 مایل بکشیم ، به ما این شانس را می دهیم که هر چیزی را بر فراز خود ببینیم. ما تفاوت در جهت بین هواپیما و ما را می دانیم ، همچنین فاصله هواپیما را از ما می دانیم ، بنابراین می توانیم مثلث را با استفاده از SOHCAHTOA خوب قدیمی بسازیم و در این مورد با استفاده از رنگ زاویه Tan می توانیم طول طرف مقابل بنابراین اگر این مقدار را با مقدار شعاع دایره در اطراف خانه مقایسه کنیم ، می توانیم دریابیم که آیا هواپیما به اندازه کافی برای دیدن ما پرواز می کند یا خیر. مرحله بعدی که می توانیم انجام دهیم این است که زمان پرواز هواپیما را با استفاده از سرعت هوا و مسافت مشخص کنیم و اگر این مقدار کمتر از 45 ثانیه یا بیشتر باشد ، چراغ را روشن می کنیم. این کمی از کدی است که من برای بررسی احتمال پرواز بر فراز آن استفاده می کنم. من این کار را به این دلیل انجام می دهم که فرودگاه نزدیکی وجود دارد و هنگامی که هواپیماها در حال تاکسی هستند ، ناچار به خانه اشاره می کنند. با این حال ، از آنجا که ارتفاع آنها صفر است و سرعت در حال پیاده روی است ، این نباید زنگ خطر را فعال کند.

تابع get_intercept ($ home_head ، $ plane_head ، $ plane_distance) {

$ flight_angle = abs (abs (abs ($ home_head - $ plane_head) - 180) ؛ $ flight_angle_r = deg2rad ($ flight_angle) ؛ $ flight_angle_t = برنزه ($ flight_angle_r) ؛ $ flight_intercept = $ flight_angle_t * $ plane_distance؛

if (($ flight_angle <90) && ($ flight_intercept <3)) {// امکان پرواز از گذشته

}

بازگشت $ flight_intercept؛

}

مرحله 10: فاصله بین دو نقطه روی نقشه - فرمول هاورسین

فاصله بین دو نقطه روی نقشه - فرمول هاورسین
فاصله بین دو نقطه روی نقشه - فرمول هاورسین

بنابراین باید فاصله بین هواپیما و موقعیت مکانی خود را محاسبه کنیم. در مسافتهای کوتاه روی نقشه می توانید فاصله را تقریباً محاسبه کنید ، اما از آنجا که زمین کروی است ، فرمولی به نام فرمول هورسین وجود دارد که به شما امکان می دهد سطح منحنی را در نظر بگیرید. می توانید فرمول را بیشتر بخوانید:

اکنون با محاسبه مسافت و اطلاع از سرعت هوایی هواپیما ، می توانیم بفهمیم چند ثانیه طول می کشد تا هواپیما روی سر قرار گیرد. بنابراین اگر چیزی در 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 = sin ($ dLat/2) * sin ($ dLat/2) + cos ($ lat1) * cos ($ lat2) * sin ($ dLon/2) * گناه ($ dLon/2) ؛

$ c = 2 * atan2 (sqrt ($ a) ، sqrt (1- $ a)) ؛ $ d = $ R * $ c؛ $ d برگرداند ؛ }

مرحله 11: وارد کردن و تعریف پایگاه داده هواپیما

یکی از قطعات دیگر این است که سایت openky یک پایگاه داده قابل بارگیری از هواپیماها به همراه علائم تماس و علامت آنها را ارائه می دهد. چند صد هزار مدخل آن. بنابراین می توانیم این را بارگیری کرده و به صورت محلی در پایگاه داده MariaDB برای جستجو (MySQL) بارگذاری کنیم. با هر هواپیمایی که در بالای سر ظاهر می شود ، ما جزئیات آن را بازیابی می کنیم و یک شمارنده را به روز می کنیم تا نشان دهیم چند بار دیده شده است.

من همچنین در حال ویرایش پایگاه داده برای برجسته کردن هواپیماهای مورد علاقه خود هستم. عمدتا پرندگان جنگی قدیمی و دیگر هواپیماهای جالب مشابه. تابستان امسال دو بار هواپیمای Mig-15 به پرواز درآمد. بنابراین هدف این است که از یک فیلد هشدار که اضافه کرده ام استفاده کنم و سپس هنگامی که چیز جالبی به سر می برد سریع چشمک بزنم

مرحله 12: بهبود نتایج و ویژگی های جدید

بهبود نتایج و ویژگی های جدید
بهبود نتایج و ویژگی های جدید
بهبود نتایج و ویژگی های جدید
بهبود نتایج و ویژگی های جدید
بهبود نتایج و ویژگی های جدید
بهبود نتایج و ویژگی های جدید

بنابراین در تئوری همه چیز بسیار خوب کار می کند ، اما با داده ها متوجه می شوید هواپیماهایی وجود دارند که بر فراز آن پرواز می کنند و در API ظاهر نمی شوند.

این به این دلیل است که همه هواپیماها از فرستنده ADS-B استفاده نمی کنند و از فرستنده های قدیمی بر اساس MLAT استفاده می کنند. برای به دست آوردن داده های موقعیتی هواپیماها با استفاده از MLAT ، به مجموعه ای از گیرنده های روی زمین نیاز است تا موقعیت خود را مثلث بندی کنند و برخی از سایتها مانند flightradar24 دارای شبکه بزرگتری از مشارکت کنندگان در مقایسه با openky هستند. امیدوارم به مرور زمان پوشش آنها نیز بهبود یابد و من گیرنده MLAT خود را برای افزودن به این داده ها راه اندازی می کنم.

مرحله 13: Codebase

فراموش نکنید که اگر می خواهید از این استفاده کنید ، اگر پایگاه داده هواپیماها را ندارید ، می توانید دستورات SQL را حذف کنید و همچنین مقدار Lon/Lat و کلید API خود را برای دسترسی به داده های پرواز اضافه کنید.

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

define ("INTERVAL" ، (20 * 1))؛ تابع fexp () {$ lat = "عرض جغرافیایی شما"؛ $ lon = "طول جغرافیایی شما"؛ $ side = 15.75؛ $ box = get_bounding_box ($ lat ، $ lon ، $ side) ؛ $ latmin = $ box [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)؛ $ ورودی = FALSE؛ $ num_planes = تعداد ($ data ['state'])؛ if ($ num_planes> 0) {echo "و ما $ num_planes هواپیما / n" را می بینیم ؛ برای ($ x = 0؛ $ x 0) {$ plane_eta = $ distplane/$ air_speed_kmh؛ } else {$ eta = 1؛ } if ((($ intercept) 0)) && ($ distplane0) {$ inbound = TRUE؛ پژواک "---------------------------------------------------- -------------------- / n "؛ echo "$ icao24 - [$ country $ callignign] at [$ geo_altitude_m M - $ geo_altitude_f ft]"؛ پژواک "[speed $ air_speed_kmh kmh and"، round ($ distplane، 1)، "km away] n"؛ پژواک "[در عنوان" ، دور ($ plane_heading ، 1) ، "] [homeangle $ heading_d]"؛ پژواک "[$ عرض جغرافیایی ، $ طول جغرافیایی] n"؛ echo "[flypast in"، decimal_to_time ($ plane_eta)، "now"، round ($ intercept، 1)، "km away / n"؛ پژواک "---------------------------------------------------- -------------------- / n "؛ $ DBi = new mysqli ("127.0.0.1" ، "root" ، "گذرواژه شما" ، "awacs") ؛ $ sql = "select * from databasedatabase where" 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)؛ if ($ rows_getplanedata> 0) {do {echo "callign ="؛ echo $ row_getplanedata ['ثبت نام']؛ پژواک "a" است ؛ echo $ row_getplanedata ['manufacturername']؛ پژواک "" ؛ echo $ row_getplanedata ['model']؛ پژواک "توسط" ؛ echo $ row_getplanedata ['Manufactricao']؛ echo "متعلق به"؛ echo $ row_getplanedata ['مالک']؛ پژواک "دیده شده" ؛ echo $ row_getplanedata ['بازدیدها]؛ پژواک "زمان" ؛ echo "امتیاز ویژه ="؛ echo $ row_getplanedata ['special']؛ پژواک "\ n"؛ $ visit = $ row_getplanedata ['بازدید']+1؛ } while ($ row_getplanedata = mysqli_fetch_assoc ($ getplanedata))؛ mysqli_free_result ($ getplanedata) ؛ $ sqli = "UPDATE databasedatab SET بازدیدها = $ بازدیدها WHERE icao24 = '$ icao24'"؛ mysqli_set_charset ($ DBi ، "utf8") ؛ $ updateplanedata = mysqli_query ($ DBi، $ sqli) یا die (mysqli_error ($ DBi)) ؛ } else {echo "نتوانستم این صفحه را در DB پیدا کنم بنابراین آن را اضافه کنم"؛ $ sqli = "INSERT INTO databasedabase (icao24 ، بازدیدها ، ویژه) VALUES ('$ icao24'، 1، 1)"؛ $ updateplanedata = mysqli_query ($ DBi ، $ sqli) یا die (mysqli_error ($ DBi)) ؛ } echo "--------------------------------------------------- --------------------- / n "؛ } else {// echo "$ callignign"؛ }}} else {echo "و آسمان صاف / n"؛ } if ($ ورودی) {echo "Inbound plane / n"؛ $ command = "pigs w 17 1"؛ execInBackground ($ command) ؛ } else {echo "پروازهای ورودی وجود ندارد / n"؛ $ command = "pigs w 17 0"؛ execInBackground ($ command) ؛ }} تابع decimal_to_time (اعشاری $) {$ offset = 0.002778؛ if (اعشاری $> $ افست) {$ اعشاری = $ اعشاری - 0.002778؛ } $ hours = gmdate ('H' ، طبقه (اعشاری $ 3600)) ؛ $ دقیقه = gmdate ('i' ، طبقه (اعشاری $ 3600)) ؛ ثانیه $ = gmdate ('s' ، طبقه (اعشاری $ 3600)) ؛ بازگشت str_pad ($ hours ، 2 ، "0" ، STR_PAD_LEFT). ":". str_pad ($ دقیقه ، 2 ، "0" ، STR_PAD_LEFT). ":". str_pad ($ ثانیه ، 2 ، "0" ، STR_PAD_LEFT) ؛ }/ * * محاسبه (اولیه) تحمل بین دو نقطه * * از: Ed Williams 'Aviation Formulary ، https://williams.best.vwh.net/avform.htm#Crs * source = instantglobe.com/CRANES/GeoCoordTool. html */ function 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 = 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 ؛ } function get_intercept ($ home_head ، $ plane_head ، $ plane_distance) {$ flight_angle = abs (abs (abs ($ home_head - $ plane_head) - 180) ؛ $ flight_angle_r = deg2rad ($ flight_angle) ؛ $ flight_angle_t = برنزه ($ flight_angle_r) ؛ $ flight_intercept = $ flight_angle_t * $ plane_distance؛ بازگشت $ flight_intercept؛ } /* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - *// * * از فرمول Haversine برای محاسبه فاصله (کیلومتر) بین دو نقطه مشخص شده توسط * عرض/طول جغرافیایی (در درجه های عددی) * * از: فرمول Haversine - RWسینوت ، "فضائل هاورسین" ، * آسمان و تلسکوپ ، جلد 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 و نتیجه فیلدهای فرم هستند * منبع = instantglobe.com/CRANES/GeoCoordTool.html */تابع 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 = sin ($ dLat/2) * sin ($ dLat/2) + cos ($ lat1) * cos ($ lat2) * sin ($ 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)؛ $ radius = 6371؛ # شعاع موازی در عرض جغرافیایی معین ؛ $ parallel_radius = $ radius*cos ($ lat)؛ $ 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_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) ؛ } function execInBackground ($ cmd) {if (substr (php_uname ()، 0، 7) == "Windows") {pclose (popen ("start /B". $ cmd، "r"))؛ } else {exec ($ cmd. "> /dev /null &")؛ }} function checkForStopFlag () {// بازگشت کاملاً اختیاری (TRUE) ؛ } تابع start () {echo "start / n"؛ $ command = "pigs w 17 1"؛ execInBackground ($ command) ؛ $ active = TRUE؛ while ($ active) {usleep (1000)؛ // اختیاری ، اگر می خواهید اگر (microtime (true)> = $ nextTime) {fexp ()؛ $ nextTime = microtime (true) + 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 … می توانید درباره افزودن چراغ برق اینجا بخوانید https://howchoo.com/g/ytzjyzy4m2e/build-a-simple-raspberry-pi-led-power-status- indicator

توصیه شده: