Мазмұны:

Raspberry PI ұшу -қону жолағының алдын ала ескертуі, ұшу картасының деректерін қолданады: 14 қадам (суреттермен)
Raspberry PI ұшу -қону жолағының алдын ала ескертуі, ұшу картасының деректерін қолданады: 14 қадам (суреттермен)

Бейне: Raspberry PI ұшу -қону жолағының алдын ала ескертуі, ұшу картасының деректерін қолданады: 14 қадам (суреттермен)

Бейне: Raspberry PI ұшу -қону жолағының алдын ала ескертуі, ұшу картасының деректерін қолданады: 14 қадам (суреттермен)
Бейне: MSC Meraviglia Full Ship Tour Tips Tricks & Review Award Winning Cruise Ship Vista Project 2024, Шілде
Anonim
Ерте ескерту Raspberry PI ұшу -қону жолағының жарығы ұшу картасының деректерін қолданады
Ерте ескерту Raspberry PI ұшу -қону жолағының жарығы ұшу картасының деректерін қолданады
Ерте ескерту Raspberry PI ұшу -қону жолағының жарығы ұшу картасының деректерін қолданады
Ерте ескерту Raspberry PI ұшу -қону жолағының жарығы ұшу картасының деректерін қолданады
Ерте ескерту Raspberry PI ұшу -қону жолағының жарығы ұшу картасының деректерін қолданады
Ерте ескерту Raspberry PI ұшу -қону жолағының жарығы ұшу картасының деректерін қолданады
Ерте ескерту Raspberry PI ұшу -қону жолағының жарығы ұшу картасының деректерін қолданады
Ерте ескерту Raspberry PI ұшу -қону жолағының жарығы ұшу картасының деректерін қолданады

Бұл лампа бірнеше себептерге байланысты пайда болды, себебі мені үнемі ұшатын ұшақтар қызықтырады, ал жазда демалыс күндері айналасында өте қызықты ұшатын ұшақтар болады. Сіз оларды өткен кезде ғана естуге бейім боласыз. Басқа себеп - Лондон Сити әуежайынан шығатын ұшақтардың ұшу жолы кейде естілетін сияқты және оларда өте шулы рейстер бар. Мен YouTube -те бірнеше бейне жазумен айналысатын болсам, ұшақтың шуылына байланысты жазбаны алып тастау өте ыңғайсыз. Сонымен, мен сіз flyhtradar24 сияқты сайттарда көретін деректер көпшілікке қол жетімді ме деп ойладым. Жобаны орналастыру үшін ұшу -қону жолағының жарығының көшірмесін қолдану идеясын ойластыру көп уақытты қажет етпеді.

Сіз OpenSky желісі туралы толығырақ https://www.opensky-network.org сайтынан біле аласыз, сонымен қатар мен бұл жолы мөлдір ПЛА пайдаланудың орнына жақсы линза жасағым келді, бірақ менде ADS-B қабылдағышы бар. бұл қарапайым және арзан. ADS-B-ге антенна да қажет, бұл офистегі сөреде лампа жүруі үшін қажет емес. Сізге 3D басып шығару, шайыр қалыптау және математиканы қамтитын, сонымен қатар жоғарыдан өтуі мүмкін ұшақтардың позицияларын экстраполяциялауға арналған құрылым қызықты болады деп үміттенемін.

1 -қадам: Істің дизайны

Google іздеуде ұшу -қону жолағы шамының әр түрлі конструкциясы бар және оның дизайны нағыз лампалардың әр түрлі маркасының дизайнерлік әсерлерін қолдану арқылы жасалған. Толық емес, бөлмеде немесе сөреде отыру масштабты, себебі олар нақты өмірде әлдеқайда үлкен.

Дизайн Fusion 360 -та жасалды, мен алдыңғы жобалардан таңқурай pi нөл ұстағыш сияқты кейбір алдыңғы элементтерді импорттадым. Элементтерді қайта қолдана білу көп нәрсені басынан алып тастайды. Сіз сонымен қатар файлдарды мына жерден жүктей аласыз

2 -қадам: линзаларды құю - #сәтсіз

Линзаларды құю - #сәтсіз
Линзаларды құю - #сәтсіз
Линзаларды құю - #сәтсіз
Линзаларды құю - #сәтсіз
Линзаларды құю - #сәтсіз
Линзаларды құю - #сәтсіз

Бұл шамның ең маңызды дизайн элементі линза болды. Мен мұны бірінші кезекте шештім, өйткені шынайы көрінетін әйнексіз жоба жұмыс істейтін болды. Мен осында қол жеткізуге тырысқан сәтсіздіктерді құжаттаймын, бірақ мен бастапқыда объективті сары түске айналдыруға шешім қабылдағаныма қарамастан. Ұшу -қону жолағының жарығы кәріптаспен де, көкпен де келеді және мен янтарьды жасай бастағаннан кейін ғана мен өз шешімімді өзгерттім және көк түс алғым келді деп шештім.

Менің түсінуімше, кәріптас ұшақтар ұшу -қону жолағында қолданылады, ал көк түстер ұшу -қону жолағының бойында қолданылады, ал егер сіз ұшу -қону жолағының жарығын іздесеңіз, олар архетиптік болып табылады. Дегенмен, мұнда кәріптас линзаны жасаудағы бірінші әрекетім. Линзаны жасау үшін мен түс қоспасы бар мөлдір шайырды қолданатын болдым, бірақ мен 3D пішінді басып шығарып, оны қолдануға болады ма деп ойламай тұрып, бірнеше қалыптар жасағанмын. Сондықтан мен 3D форматында бөлінген қалып жасап, оны PetG -де басып шығаруды бастадым. Көгерудің жеткілікті мөлшерде болуы мен көгеру үшін жеткілікті болатынына сенімді болдым. Белгілі болғандай, мен шайырды желім тәрізді қалыпқа жабыстырдым, бірақ оларды ажырату мүмкін болмады. Менде қолданатын толық масштабты болғанымен, мен оған қарсы шешім қабылдадым және дәстүрлі силиконмен қалыптау үшін линзаны басып шығардым.

3 -қадам: шайырдың әр түрлі түрлері

Әр түрлі шайыр түрлері
Әр түрлі шайыр түрлері
Әр түрлі шайыр түрлері
Әр түрлі шайыр түрлері
Әр түрлі шайыр түрлері
Әр түрлі шайыр түрлері
Әр түрлі шайыр түрлері
Әр түрлі шайыр түрлері

Мен бұл жоба үшін мөлдір/түсті шайырлардың 3 түрін қолдандым.

Біріншісі - бұл Pebeo - Gedeo деп аталатын хобби нарығы, ол әдетте ұсақ заттарды капсулалау үшін сатылады, зергерлік бұйымдар мен үстелдің қағаз салмағына қолданылады. Бұл өте жақсы жұмыс істеді және шамамен 24-36 сағат ішінде жақсы емделді. Бұл сіз алатын сомаға өте қымбат, бірақ ыңғайлы және әуесқойлық пен қолөнер дүкендерінде оңай қол жетімді. Ол 2: 1 қатынасында араласады. Екіншісі-алдын ала боялған шайыр, оны қатайтқышпен 10: 1 қатынасында араластырады және оны емдеуге ең ұзақ уақыт кетеді, шынымды айтсам, толық емделмес бұрын. Соңғысы таза шайыр болды, ол 2: 1 пропорциясында араласқан және ол шамамен 2 күнде емделді, сіз оны пигментті тамшылармен бояй аласыз, бірақ егер сіз әрқашан бірдей түс пропорциясын қолданатындығыңызға сенімді болуыңыз керек. бөлек партиялар жасайды. Бұл сонымен қатар ең тиімдісі болып табылады. Ақырында, қалыпқа арналған RTV GP-3481 RTV болды және оны орнатуға шамамен 24 сағат кетеді және ұзақ уақыт кетеді, сондықтан оны араластырып, содан кейін құюға көп уақытыңыз болады.

Қазіргі уақытта менде кастрюль жоқ (қазір тапсырыс бойынша), сондықтан сіз қалыпта да, шайырда да көпіршіктермен қоршаласыз. Бұл мәселе тым көп емес, бірақ мөлдір линзамен немесе соған ұқсас көпіршіктерді қоспалардан шығару туралы ойланғыңыз келеді.

4 -қадам: линзаны №2 силиконнан құю

Image
Image
No2 силиконды қалыптағы объективті құю
No2 силиконды қалыптағы объективті құю
No2 силиконды қалыптағы объективті құю
No2 силиконды қалыптағы объективті құю

Бұл - шайыр линзаны жасаудың екінші әрекеті, ал бірінші кезең - Fusion 360 -да объективті жасап, содан кейін оны ABS -те басып шығару үшін шелек. Бұл көгеру үшін бірінші болар еді және қолданылатын силикон мөлшерін азайтуға көмектеседі. Сіз мұны картадан оңай жасай аласыз, бірақ бұл басқа әдіс. Пішіннен босатылу мүмкіндігін жақсарту үшін мен оны алдымен лакпен боядым, содан кейін балауыз шығаратын затты жақсы жабамын.

Содан кейін мен 27 RTV жағалауында орналасқан бірнеше GP-3481 құйдым, содан кейін оны демонтаж алдында келесі 24 сағат ішінде орнатуға рұқсат бердім. Бұл аяқталғаннан кейін мен 2: 1 пропорциясында 4/5 тамшы түсті пигментті араластырылған мөлдір шайырды қолдандым және оны жақсы төрт минут бойы жақсылап араластырдым. Мұны қалыпқа құйыңыз, содан кейін шамға немесе жарық диодты жарықтандыруға арналған бос шыны шайырға салыңыз. Шамамен 24 сағаттан кейін бұл шайыр кетіруге дайын болды және линза өте жақсы шықты. Ауа көпіршіктері бар, бірақ менде шайырды төгер алдында газсыздандыратын вакуумды ыдыс жоқ.

5 -қадам: 3D басып шығару және дайындау

3D басып шығару және дайындау
3D басып шығару және дайындау
3D басып шығару және дайындау
3D басып шығару және дайындау
3D басып шығару және дайындау
3D басып шығару және дайындау

Модель орталық бөлік негізге қосылатын етіп жасалған. Бұл бояу процесінде маскировкадан аулақ болу үшін болды. Барлық модель Hatchbox ABS -те басып шығарылды, содан кейін тегістелді. 60 гриттен бастап шамамен 800 гритке дейін бұл модельге жақсы беттік қабат берді.

6 -қадам: құрастыру және бояу

Кескіндеме және құрастыру
Кескіндеме және құрастыру
Кескіндеме және құрастыру
Кескіндеме және құрастыру
Кескіндеме және құрастыру
Кескіндеме және құрастыру

Басып шығарулар тегістелгеннен кейін ол жоғары конструкциялы праймермен боялған. Аздап тегістелген, содан кейін сұр праймермен себілген. Негізгі бөліктер форд сигналына сары түске боялған, содан кейін негіз үшін жасыл түсті бруклендтер пайдаланылған. Тамия күмісінің ерекшеліктері болттарға және линзаның ұстағышында қолданылатын молотов күміс хромына қолданылды.

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 = $ лат - $ 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 ($ лат_мин); $ 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 қоңырауларының шектеу нәтижелері бізге ұшақтардың тізімін береді, олардың ұзақтығы, жылдамдығы, биіктігі мен бағыты. Ендігі кезекте, біз кем дегенде біздің жалпы бағытта жүретіндерді одан әрі өңдей алатындай етіп, әрбір ұшақтың өз атауын алуымыз керек. Біз мұны өз позициямызды біле отырып жасай аламыз және бізден әр жазықтыққа бұрышты анықтай аламыз.

Мұны істеу үшін мен бастапқыда Javascript -те болған кодты қолданамын, сондықтан оны PHP -ге түрлендірдім, * екі нүкте арасындағы (бастапқы) бағаны есептеу get_bearing функциясы ($ home_lat, $ home_lon, $ plan_lat, $ plan_lon) {$ lat1 = deg2rad ($ home_lat); $ lat2 = deg2rad ($ plan_lat);

$ dLon = deg2rad ($ plan_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 қайтару;

Егер сіз JavaScript -тің түпнұсқалары бар бетті қарағыңыз келсе, мына сілтеме:

сол кодтың ішінде сіз әр есептеу түріне арналған әр түрлі ішкі тәртіптерді көре аласыз.

9 -қадам: Шеңберге қарап кесуді есептеу

Шеңберге қарап қиылуды есептеу
Шеңберге қарап қиылуды есептеу

Енді бізде ұшақ бар, онда оның орналасқан жері мен тірегі 90 -нан аспайды (оң немесе теріс), демек оның жақын жерде ұшып кету мүмкіндігі бар. Гаверсин формуласын қолдана отырып, біз ұшақтың Lon/Lat және біздің үйдің Lon/Lat көмегімен бізден алыс қашықтықты пайдалана отырып жұмыс жасай аламыз.

Диаграммаға қарап, егер біз радиусы шамамен 3 миль болатын үйді айналдыра сызатын болсақ, онда біз ұшып бара жатқан нәрсені көруге мүмкіндік аламыз. Біз ұшақ пен біздің арамыздағы бағыттың айырмашылығын білеміз, сонымен қатар бізден ұшақтың қашықтығын білеміз, осылайша SOHCAHTOA -ның көмегімен үшбұрышты өңдей аламыз, ал бұл жағдайда біз бұрыштың танын қолдана отырып, қарама -қарсы жақтың ұзындығы. Егер біз бұл мәнді үйдің айналасындағы радиустың мәнімен салыстыратын болсақ, онда біз оны көре алатындай ұшақтың жақын ұшып кететінін біле аламыз. Біз жасай алатын келесі нәрсе - әуе жылдамдығы мен қашықтықты қолдана отырып, ұшақтың ұшып кететін уақытын анықтау, егер бұл шамамен 45 секундтан аз болса, біз шамды қосамыз. Бұл мен ұшып кету мүмкіндігін анықтау үшін қолданатын кодтың бір бөлігі. Мен мұны жақын маңдағы әуежай бар болғандықтан жасаймын, ал ұшақтар таксиде жүргенде, олар сөзсіз үйді көрсетеді. Бірақ олардың биіктігі нөлге тең және жылдамдық біркелкі болғандықтан, бұл дабылды тудырмауы керек.

get_intercept функциясы ($ home_head, $ flat_head, $ flat_distance) {

$ flight_angle = abs (abs ($ home_head - $ plan_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 -қадам: Картадағы екі нүкте арасындағы қашықтық - Гаверсин формуласы

Картадағы екі нүкте арасындағы қашықтық - Гаверсин формуласы
Картадағы екі нүкте арасындағы қашықтық - Гаверсин формуласы

Сондықтан біз ұшақ пен орналасқан жеріміздің арасындағы қашықтықты есептеуіміз керек. Картадан қысқа қашықтықта сіз қашықтықты шамамен есептей аласыз, бірақ жер шар тәрізді болғандықтан, қисық бетті ескеруге мүмкіндік беретін гаверсин формуласы бар формула бар. Сіз келесі формуланы оқи аласыз:

Енді есептелген қашықтық пен ұшақтың ұшу жылдамдығын біле отырып, ұшақтың үстіңгі жағында қанша секунд болатынын анықтай аламыз. Егер ұшатын жерден 30 секунд ішінде бірдеңе болса және ақырында бізде ескерту шамы болса, шам жанады.

* Instantglobe.com/CRANES/GeoCoordTool.html мекен -жайындағы 0n JS -ке негізделген және PHP -ге айналды */

get_distHaversine функциясы ($ home_lat, $ home_lon, $ plan_lat, $ plan_lon) {$ R = 6371; // жердің орташа радиусы км-де $ dLat = deg2rad ($ plan_lat- $ home_lat); $ dLon = deg2rad ($ plan_lon- $ home_lon); $ lat1 = deg2rad ($ home_lat); $ lat2 = deg2rad ($ plan_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 қайтару; }

11 -қадам: Жазықтық мәліметтер базасын импорттау және анықтау

Басқа бөліктердің бірі - Open сайты ұшақтардың қоңыраулар мен идентификаторларымен бірге жүктелетін мәліметтер базасын ұсынады. Оның бірнеше жүздеген жазбалары бар. Сондықтан біз оны жүктеп алып, іздеу үшін MariaDB дерекқорына жергілікті түрде жүктей аламыз (MySQL). Үстінен шыққан әрбір ұшақпен біз оның бөлшектерін аламыз және оның қанша рет көргенін көрсету үшін есептегішті жаңартамыз.

Мен қазір дерекқорды қызықтыратын ұшақтарды бөлектеу үшін өңдеп жатырмын. Негізінен ескі жауынгерлер мен осыған ұқсас басқа қызықты ұшақтар. Осы жазда Миг-15 бірнеше рет ұшып кетті. мақсат - мен қосқан ескерту өрісін пайдалану, содан кейін қызықты нәрсе келе жатқанда шамды тез жыпылықтау

12 -қадам: нәтижелер мен жаңа мүмкіндіктерді жақсарту

Нәтижелер мен жаңа мүмкіндіктерді жақсарту
Нәтижелер мен жаңа мүмкіндіктерді жақсарту
Нәтижелер мен жаңа мүмкіндіктерді жақсарту
Нәтижелер мен жаңа мүмкіндіктерді жақсарту
Нәтижелер мен жаңа мүмкіндіктерді жақсарту
Нәтижелер мен жаңа мүмкіндіктерді жақсарту

Теорияда бәрі жақсы жұмыс істейді, бірақ сіз API арқылы көрінбейтін ұшатын ұшақтар бар екенін білесіз.

Себебі барлық ұшақтар ADS-B транспондерлерін пайдаланбайды және MLAT негізіндегі ескі транспондерлерді пайдаланбайды. MLAT көмегімен әуе кемесінің позициялары туралы мәліметтерді алу үшін, олардың орналасуын үшбұрыштау үшін жердегі қабылдағыштар сериясы қажет, ал flehtradar24 сияқты кейбір сайттарда opensky -ге қарағанда бұл әрекетті жасаушылардың үлкен желісі бар. Уақыт өте келе олардың қамтылуы жақсарады деп үміттенемін және мен бұл деректерді қосу үшін өз 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 ($ лат, $ 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 (true); $ json = file_get_contents ($ flyurl); $ data = json_decode ($ json, TRUE); $ кіріс = ЖАЛҒАН; $ num_planes = санау ($ data ['state']); if ($ num_planes> 0) {echo «және біз $ num_planes ұшақтарын көре аламыз / n»; үшін ($ x = 0; $ x 0) {$ ұшақ_ета = $ дистанция/$ 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), «км қашықтықта] n»; echo «[тақырыбында», дөңгелек ($ ұшақ_қайнауы, 1), «] [homeangle $ heading_d]»; echo «[$ ендік, $ бойлық] n»; echo «[flypast in», decimal_to_time ($ təyyarə_ета), «қазір», дөңгелек ($ intercept, 1), «км қашықтықта / n»; жаңғырық »------------------------------------------------ -------------------- / n «; $ DBi = new 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 ['өндірушінің аты']; жаңғырық «»; echo $ row_getplanedata ['модель']; жаңғырық «арқылы»; echo $ row_getplanedata ['Manufacturicao']; жаңғырық «тиесілі»; echo $ row_getplanedata ['иесі']; жаңғырық «көрді»; $ row_getplanedata echo ['келулер']; жаңғырық «уақыт»; echo «арнайы рейтинг =»; echo $ row_getplanedata ['арнайы']; жаңғырық «\ n»; $ кірулер = $ row_getplanedata ['келулер']+1; } while ($ 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 «ДБ -да бұл ұшақ табылмады, сондықтан оны қосады»; $ sqli = «INSERT INTO ұшақ мәліметтер базасы (icao24, кірулер, арнайы) VALUES ('$ icao24', 1, 1)»; $ updateplanedata = mysqli_query ($ DBi, $ sqli) немесе өлу (mysqli_error ($ DBi)); } жаңғырық «----------------------------------------------- --------------------- / n «; } else {// echo «$ callsign»; }}} else {echo «және аспан ашық / n»; } if ($ кіріс) {echo «Кіретін жазықтық / n»; $ command = «шошқалар w 17 1»; execInBackground ($ командасы); } else {echo «кіретін рейстер жоқ / n»; $ command = «шошқалар w 17 0»; execInBackground ($ командасы); }} функция decimal_to_time ($ decimal) {$ offset = 0.002778; if ($ decimal> $ offset) {$ ондық = $ ондық - 0.002778; } $ сағат = gmdate ('Н', қабат ($ ондық * 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); }/ * * екі нүкте арасындағы * () бастапқы бағаны есептеңіз *: Уильямстың авиациялық формуляры, https://williams.best.vwh.net/avform.htm#Crs * source = instantglobe.com/CRANES/GeoCoordTool. html */ get_bearing функциясы ($ home_lat, $ home_lon, $ flat_lat, $ plan_lon) {$ lat1 = deg2rad ($ home_lat); $ lat2 = deg2rad ($ plan_lat); $ dLon = deg2rad ($ plan_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 қайтару; } get_intercept функциясы ($ home_head, $ flat_head, $ flat_distance) {$ flight_angle = abs (abs ($ home_head - $ plan_al) - 180); $ flight_angle_r = deg2rad ($ flight_angle); $ flight_angle_t = tan ($ flight_angle_r); $ flight_intercept = $ flight_angle_t * $ ұшақ_арасы; $ 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 және нәтиже - форма өрістері * source = instantglobe.com/CRANES/GeoCoordTool.html */function get_distHaversine ($ home_lat, $ home_lon, $ plan_lat, $ plan_lon) {$ R = 6371; // жердің орташа радиусы км-де $ dLat = deg2rad ($ plan_lat- $ home_lat); $ dLon = deg2rad ($ plan_lon- $ home_lon); $ lat1 = deg2rad ($ home_lat); $ lat2 = deg2rad ($ plan_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 қайтару; } функция 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 = $ лат - $ 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 ($ лат_мин); $ 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); } function start () {echo «бастаушы / n»; $ command = «шошқалар w 17 1»; execInBackground ($ командасы); $ белсенді = РАС; while ($ active) {usleep (1000); // міндетті емес, егер мұқият болғыңыз келсе, егер (microtime (true)> = $ nextTime) {fexp (); $ nextTime = microtime (true) + INTERVAL; } $ active = checkForStopFlag (); }} fexp (); бастау (); ?>

14 -қадам: Жарықдиодты және өшіру қосқышын сыммен қосу

Жарықдиодты және өшіру қосқышын қосу
Жарықдиодты және өшіру қосқышын қосу

Бұл жобаның сымдары қарапайым болуы мүмкін емес. 17 -түйреуішке қосылған 270R резисторы бар жерге қосылған бір ғана жарық диоды бар.

Менде сөндіру және қосу түймесі, сонымен қатар TXd деректер түйреуішінен өшетін қуат диоды бар. Сіз өшіру функциясы мен қажет код туралы толығырақ https://github.com/Howchoo/pi-power-button.git сайтынан https://howchoo.com/g/mwnlytk3zmm/how-to- сайтынан оқи аласыз. add-a-pow … Қуат жарығын қосу туралы мына жерден оқи аласыз

Ұсынылған: