Talaan ng mga Nilalaman:

Maagang Babala Raspberry PI Runway Light Paggamit ng Data ng Pag-Mapa ng Paglipad: 14 Mga Hakbang (na may Mga Larawan)
Maagang Babala Raspberry PI Runway Light Paggamit ng Data ng Pag-Mapa ng Paglipad: 14 Mga Hakbang (na may Mga Larawan)

Video: Maagang Babala Raspberry PI Runway Light Paggamit ng Data ng Pag-Mapa ng Paglipad: 14 Mga Hakbang (na may Mga Larawan)

Video: Maagang Babala Raspberry PI Runway Light Paggamit ng Data ng Pag-Mapa ng Paglipad: 14 Mga Hakbang (na may Mga Larawan)
Video: Баблоферма - Собираю ферму на Raspberry Pi - 6 серия - 2 сезон 2024, Nobyembre
Anonim
Maagang Babala Raspberry PI Runway Light Paggamit ng Data ng Paglipad ng Flight
Maagang Babala Raspberry PI Runway Light Paggamit ng Data ng Paglipad ng Flight
Maagang Babala Raspberry PI Runway Light Paggamit ng Data ng Paglipad ng Flight
Maagang Babala Raspberry PI Runway Light Paggamit ng Data ng Paglipad ng Flight
Maagang Babala Raspberry PI Runway Light Paggamit ng Data ng Paglipad ng Flight
Maagang Babala Raspberry PI Runway Light Paggamit ng Data ng Paglipad ng Flight
Maagang Babala Raspberry PI Runway Light Paggamit ng Data ng Paglipad ng Flight
Maagang Babala Raspberry PI Runway Light Paggamit ng Data ng Paglipad ng Flight

Ang lampara na ito ay nagmula sa maraming mga kadahilanan na palagi akong interesado sa mga eroplano na lumilipad sa itaas at sa panahon ng tag-init sa katapusan ng linggo madalas na may ilang mga kapanapanabik na mga lumilipad sa paligid. Bagaman may gawi ka lang na marinig ang mga ito habang dumaan. Pagkatapos ang iba pang dahilan ay tila ang landas ng flight para sa papalabas na mga eroplano mula sa London City airport ay minsan ay maririnig at mayroon silang ilang mga maingay na flight na pupunta. Ang pagiging habang nakikipag-usap ako sa pag-record ng ilang mga video para sa YouTube ay talagang nakakainis na mag-scrap ng isang recording dahil sa isang maingay na eroplano. Kaya't nagtaka ako kung ang data na nakikita mo sa mga site tulad ng flightradar24 ay magagamit sa publiko, sa sandaling natuklasan ko ang isang katulad na bagay na magagamit mula sa opensky network na ipinanganak ang maagang babala. Hindi ito nagtagal upang makabuo ng ideya na gumamit ng isang kopya ng isang runway light upang maipakita ang proyekto.

Maaari mong malaman ang higit pa tungkol sa The OpenSky Network sa https://www.opensky-network.org Nais ko rin sa oras na ito na gumawa ng isang magandang resin lens sa halip na gumamit ng translucent PLA at kahit na mayroon akong isang ADS-B reciever na nais kong panatilihin ito simple at murang. Ang ADS-B ay kailangan din ng isang antena at hindi ito magagawa para sa isang lampara upang pumunta sa istante sa opisina. Kaya sana makita mo ang kagiliw-giliw na pagbuo dahil sumasaklaw ito sa 3D na pag-print, paghubog ng Resin at matematika din upang ma-extrapolate ang mga posisyon ng sasakyang panghimpapawid na potensyal na maaaring pumasa sa itaas.

Hakbang 1: Pagdidisenyo ng Kaso

Ang paghahanap sa Google ay nagmumula sa maraming iba't ibang mga disenyo ng runway lamp at ang disenyo ng isang ito ay ginawa gamit ang mga impluwensya sa disenyo mula sa maraming magkakaibang mga ginagawang totoong lampara. Sinukat din ito upang umupo sa isang silid o sa isang istante sa halip na buong sukat, dahil malamang na mas malaki sila sa totoong buhay.

Ang mga disenyo ay iginuhit sa Fusion 360 at nag-import ako ng ilang mga nakaraang elemento tulad ng taglay ng raspberry pi zero mula sa mga nakaraang proyekto. Ang kakayahang muling gumamit ng mga elemento ay tumatagal ng maraming sakit ng ulo sa pagkuha ng mga pangunahing kaalaman. Maaari mo ring i-download ang mga file dito https://www.thingiverse.com/thing biasana884138

Hakbang 2: Paghahagis ng mga Lente - #fail

Paghahagis ng Lente - #fail
Paghahagis ng Lente - #fail
Paghahagis ng Lente - #fail
Paghahagis ng Lente - #fail
Paghahagis ng Lente - #fail
Paghahagis ng Lente - #fail

Ang pinakamahalagang elemento ng disenyo ng lampara na ito ay ang magiging lens. Kaya't tinutugunan ko muna ito na walang magandang hitsura ng baso na gagana ang proyekto. Naidodokumento ko rito ang mga pagkabigo na mayroon ako sa pagsubok na makamit iyon, hindi nakatiis na una rin akong nagpasya na gawing amber ang lens. Ang mga ilaw sa runway ay nagmumula sa parehong amber at asul at pagkatapos lamang kong simulan ang paggawa ng amber na binago ko ang aking isip at napagpasyahan na gusto ko ng isang asul.

Mula sa kung ano ang maaari kong malaman na ang mga Amber ay ginagamit sa hawak na linya at ang mga asul ay ginagamit upang linya sa landasan, at ito ang mga mukhang mas maraming mga archetypal na natagpuan kung maghanap ka ng mga ilaw sa runway. Gayunpaman, narito ang aking unang pagtatangka sa paggawa ng isang amber lens. Upang makagawa ng lens, gagamit ako ng clearcast resin na may kulay na additive, at kahit na nagawa ko ang ilang mga hulma bago ko naisip kung posible na mag-print ng isang 3D na hulma at gamitin iyon. Kaya't nagsimula ako sa paggawa ng isang split mold sa 3D at i-print ito sa PetG. Mapusok na halaga ng paglabas ng magkaroon ng amag na kumbinsido ako na sapat na upang maibayad ang hulma. Bilang ito ay naging sa ilang mga pagtatangka ginawa ko ang dagta na natigil sa hulma tulad ng pandikit at tila hindi posible na ihiwalay ang mga ito. Bagaman mayroon akong buong sukat na isa na gagamitin ko, nagpasya ako laban dito at inilimbag ang lens na gagamitin sa tradisyunal na paghuhulma ng silicone.

Hakbang 3: Iba't ibang Mga Uri ng dagta

Iba't ibang Mga Uri ng dagta
Iba't ibang Mga Uri ng dagta
Iba't ibang Mga Uri ng dagta
Iba't ibang Mga Uri ng dagta
Iba't ibang Mga Uri ng dagta
Iba't ibang Mga Uri ng dagta
Iba't ibang Mga Uri ng dagta
Iba't ibang Mga Uri ng dagta

Bilang isang mabilis na tabi, gumamit ako ng 3 uri ng malinaw / kulay na mga dagta para sa proyektong ito.

Ang una ay isang Hobby market type na tinatawag na Pebeo - Gedeo at karaniwang ibinebenta para sa pag-encapsulate ng maliliit na item at ginagamit para sa mga alahas at desk paperweights atbp. Gumana ito nang maayos at gumaling nang mabuti sa halos 24-36 na oras. Gayunpaman ay medyo magastos para sa halagang makukuha mo, ngunit madaling gamitin at madaling magagamit sa mga libangan at mga tindahan ng bapor. Halo ito sa isang 2: 1 ratio. Ang pangalawa ay isang paunang kulay na dagta na halo-halong sa 10: 1 na ratio sa hardener at ito ang pinakahaba ng paggaling, mga isang linggo upang maging matapat bago ito ganap na gumaling. Ang huli ay isang malinaw na dagta, na halo-halong din sa ratio ng 2: 1 at gumaling ito sa halos 2 araw, maaari mo itong kulayan ng mga patak ng pigment, ngunit kailangan mong tiyakin na palagi mong ginagamit ang parehong ratio ng kulay kung ikaw ay gumagawa ng magkakahiwalay na mga batch. Gumagawa rin ito ng pinakamabisang gastos. Panghuli ang RTV para sa amag ay isang GP-3481 RTV at tumatagal ito ng halos 24 oras upang maitakda at may mahabang mahabang oras ng palayok kaya mayroon kang maraming oras upang ihalo ito at pagkatapos ay ibuhos ito.

Sa kasalukuyan wala akong isang pot pot (kasalukuyang nasa order) upang maaari kang mapuno ng mga bula sa parehong hulma at pagbuhos ng dagta. Hindi masyadong maraming isyu para dito, ngunit may isang malinaw na lens o katulad nito nais mong pag-isipan ang tungkol sa someway upang makuha ang mga bula mula sa mga halo.

Hakbang 4: Pag-cast ng Lens sa Silicone Mold # 2

Image
Image
Pag-cast ng Lens sa Silicone na Halamang # 2
Pag-cast ng Lens sa Silicone na Halamang # 2
Pag-cast ng Lens sa Silicone na Halamang # 2
Pag-cast ng Lens sa Silicone na Halamang # 2

Kaya't ito ang pangalawang pagtatangka sa paggawa ng isang lens ng Resin at ang unang yugto ay upang gumawa ng parehong isang lens sa Fusion 360 at pagkatapos ay i-print ito sa ABS pati na rin ang isang balde upang hawakan ito. Ito ang magiging dating para sa amag at tumutulong na mapanatili ang dami ng silicone na gagamitin. Madali mong maisasagawa ito sa card, ngunit magkakaibang diskarte lamang ito. Upang mabigyan ito ng isang mas mahusay na pagkakataon na mailabas mula sa hulma una kong binarnis ito at pagkatapos ay binigyan ito ng isang mahusay na takip ng ahente ng paglabas ng waks.

Pagkatapos ay ibinuhos ko ang ilang GP-3481 na tungkol sa baybayin 27 RTV at pagkatapos ay hayaan itong itakda sa susunod na 24hrs bago mag-demoulding. Sa sandaling tapos na ito ginamit ko ang malinaw na dagta na halo-halong sa 2: 1 ratio na may tungkol sa 4/5 patak ng kulay na kulay at halo-halong mabuti para sa isang mahusay na apat na minuto. Ibinuhos ito sa hulma at pagkatapos ay naglagay ng isang shot glass sa dagta pati na rin upang magbigay ng isang walang bisa sa paglaon para sa alinman sa isang ilawan o sa mga LED. Matapos ang tungkol sa 24 na oras ang dagta na ito ay handa nang alisin at ang lens ay lumabas na napakahusay. Mayroong mga air bubble na naroroon, ngunit sa ngayon wala pa akong isang daluyan ng vacuum upang i-degass ang dagta bago ibuhos.

Hakbang 5: Pag-print at Paghahanda ng 3D

Pagpi-print at Paghahanda ng 3D
Pagpi-print at Paghahanda ng 3D
Pagpi-print at Paghahanda ng 3D
Pagpi-print at Paghahanda ng 3D
Pagpi-print at Paghahanda ng 3D
Pagpi-print at Paghahanda ng 3D

Ang modelo ay dinisenyo sa isang paraan na ang gitnang seksyon ay nakakabit sa base. Ito ay upang maiwasan ang masking habang proseso ng pagpipinta. Ang buong modelo ay nakalimbag sa Hatchbox ABS at pagkatapos ay pinadpad. Simula sa 60 grit hanggang sa halos 800 grit ay nagbigay ng sapat na sapat na ibabaw na pagtapos para sa modelong ito.

Hakbang 6: Assembly at Pagpipinta

Assembly at Pagpipinta
Assembly at Pagpipinta
Assembly at Pagpipinta
Assembly at Pagpipinta
Assembly at Pagpipinta
Assembly at Pagpipinta

Kapag ang mga kopya ay may sanded, pagkatapos ay pininturahan ng ilang mataas na primer ng pagbuo. Bahagyang na-sanded at pagkatapos ay nagwisik ng grey primer. Ang mga pangunahing bahagi ay ipininta sa ford signal dilaw, at pagkatapos ang berdeng brooklands na ginamit para sa base. ang mga highlight ng tamiya silver ay inilapat sa mga bolts at ilang molotow silver chrome na ginamit sa may hawak ng lens.

Hakbang 7: Unang Maghanap ng mga Plano Sa Loob ng Isang Bounding Area

Sa pag-uri-uri ng hardware, kailangang magtrabaho ang software. Mayroong isang pares ng mga site ngayon na nagbibigay ng pagsubaybay sa flight, ngunit hindi marami ang nagbibigay ng isang API upang ma-access ang data na iyon. Ang ilan na ginagawa, ginagawa lamang ito sa komersyal na batayan ngunit sa kabutihang palad mayroong isang site na tinatawag na https://opensky-network.org na maaari mong gamitin nang libre.

Upang ma-access ang data na ito kailangan mong magparehistro at pagkatapos ay maaari mong gamitin ang kanilang API, nagbibigay ito ng maraming mga pag-andar at paraan upang hilahin ang data. Interesado kami sa lahat ng mga flight sa loob ng isang lugar at mayroon silang tawag sa Live API para doon. https://opensky-network.org/apidoc/ tinatawag na bounding box. Kinakailangan ng tawag sa API ang mga sulok ng kahon na interesado ka syempre ang aming Lat / Lon bilang gitnang punto. Maaari mong suriin ang mga matematika na gumagana sa site na ito, na kumukuha ng isang kahon depende sa kung ano ang nai-type mo. Http://tools.geofabrik.de ngunit sa ngayon ang sumusunod na script ay nagbibigay ng mga puntos na kailangan namin upang mai-plug sa API.

function 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 / $ radius; $ lat_max = $ lat + $ half_side_in_km / $ radius; $ lon_min = $ lon - $ half_side_in_km / $ parallel_radius; $ lon_max = $ lon + $ half_side_in_km / $ parallel_radius; $ box_lat_min = rad2deg ($ lat_min); $ box_lon_min = rad2deg ($ lon_min); $ box_lat_max = rad2deg ($ lat_max); $ box_lon_max = rad2deg ($ lon_max); ibalik ang array ($ box_lat_min, $ box_lon_min, $ box_lat_max, $ box_lon_max);

Kung nais mong subukan ang iyong code, mayroong isang site kung saan maaari mong ipasok ang lat / lon at makita ang mga resulta sa isang mapa: Tingnan ang isang halimbawa ng nagbubuklod na kahon sa isang mapa

Hakbang 8: Kinakalkula ang Pamagat ng Mga Plano na Kaugnay sa Amin

Kinakalkula ang Pamagat ng Mga Planong Kaugnay sa Amin
Kinakalkula ang Pamagat ng Mga Planong Kaugnay sa Amin

Ang mga resulta mula sa bounding box API call ay nagbibigay sa amin ng isang listahan ng mga eroplano, kanilang Lon / lat, bilis, altitude at heading. Kaya't ang susunod na kailangan nating gawin ay makuha ang heading ng bawat eroplano na nauugnay sa amin upang maaari pa nating maproseso ang mga hindi bababa sa heading sa aming pangkalahatang direksyon. Maaari nating gawin ito dahil alam natin ang aming posisyon at maisasagawa ang anggulo mula sa amin patungo sa bawat eroplano.

Upang magawa iyon, gumagamit ako ng isang piraso ng code na kung saan orihinal na nasa Javascript kaya't binago ko ito dito sa PHP, * kalkulahin (paunang) tindig sa pagitan ng dalawang puntos * * mula sa: Ed Williams 'Aviation Formulary, https://williams.best.vwh.net/avform.htm#Crs * source = instantglobe.com/CRANES/GeoCoordTool.html * / pagpapaandar 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; ibalik ang $ zz;

Kung nais mong tingnan ang pahina kung nasaan ang mga orihinal na bersyon ng javascript, ito ang link:

sa loob ng code na iyon, maaari mo ring makita ang iba't ibang mga sub na gawain para sa bawat uri ng pagkalkula.

Hakbang 9: Pagkalkula ng isang Intercept sa pamamagitan ng pagtingin sa isang Circle

Pagkalkula ng isang Intercept sa pamamagitan ng Pagtingin sa isang Circle
Pagkalkula ng isang Intercept sa pamamagitan ng Pagtingin sa isang Circle

Sa gayon mayroon kaming isang eroplano kung saan ang tindig sa pagitan nito at ng aming lokasyon ay mas mababa sa 90 (alinman sa positibo o negatibo) at sa gayon nangangahulugan ito na mayroong isang pagkakataon na maaaring lumipad ito malapit. Gamit ang haversine formula maaari din kaming mag-ehersisyo gamit ang Lon / Lat ng eroplano at ang Lon / Lat ng aming bahay ang distansya na malayo ito sa atin.

Sa pagtingin sa diagram, kung gumuhit kami ng isang bilog sa paligid ng aming bahay na sinasabi tungkol sa 3 milya radius na ito ay nagbibigay sa amin ng isang pagkakataon na makakita ng anumang lumilipad. Alam namin ang pagkakaiba sa heading sa pagitan ng eroplano at sa amin, alam din namin ang distansya ng eroplano mula sa amin upang maaari naming gawin ang tatsulok gamit ang mabuting lumang SOHCAHTOA, at sa kasong ito gamit ang Tan ng anggulo maaari naming makuha ang kabaligtaran haba ng gilid. Kaya kung ihinahambing natin ang halagang ito sa halaga ng radius ng bilog sa paligid ng bahay maaari nating malaman kung ang eroplano ay lilipad na sapat na malapit upang makita natin ito. Ang susunod na magagawa natin ay mag-ehersisyo ang oras na lilipad ang eroplano sa pamamagitan ng paggamit ng bilis ng hangin at ang distansya at kung ito ay mas mababa sa sasabihin tungkol sa 45 segundo o kaya ay binuksan namin ang ilaw. Ito ay isang piraso ng code na ginagamit ko upang magawa ang pagkakataong lumipad. Ginagawa ko ito dahil may isang malapit na paliparan at kapag ang mga eroplano ay nag-taxi sa paligid hindi nila maiwasang ituro ang bahay. Gayunpaman dahil ang kanilang altitude ay zero at ang bilis ay lakad ng lakad na ito ay hindi dapat magpalitaw ng alarma.

pagpapaandar 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 * $ eroplano_distansya;

kung (($ flight_angle <90) && ($ flight_intercept <3)) {// posibleng lumipad na

}

ibalik ang $ flight_intercept;

}

Hakbang 10: Distansya sa Pagitan ng Dalawang Mga Punto sa isang Mapa - Haversine Formula

Distansya sa Pagitan ng Dalawang Punto sa isang Mapa - Formula ng Haversine
Distansya sa Pagitan ng Dalawang Punto sa isang Mapa - Formula ng Haversine

Kaya kailangan nating kalkulahin ang distansya sa pagitan ng eroplano at ng aming lokasyon. Sa maikling distansya sa isang mapa maaari mong kalkulahin ang distansya, ngunit dahil ang mundo ay spherical, mayroong isang pormula na tinatawag na haversine formula na nagbibigay-daan sa iyo upang isaalang-alang ang hubog na ibabaw. Maaari mong basahin ang karagdagang pormula:

Ngayon kasama ang distansya na kinakalkula at alam namin ang bilis ng hangin ng eroplano maaari naming mag-ehersisyo kung ilang segundo ito bago ang overhead ng eroplano. Kaya't ang ilaw ay pupunta kung mayroong isang bagay sa loob ng 30 segundo ng flypast at sa wakas ay mayroon tayong ilaw na babala.

* batay sa 0n JS sa instantglobe.com/CRANES/GeoCoordTool.html at naging PHP * /

pagpapaandar get_distHaversine ($ home_lat, $ home_lon, $ plane_lat, $ plane_lon) {$ R = 6371; // mean radius ng daigdig sa km $ 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) * sin ($ dLon / 2);

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

Hakbang 11: Pag-import at Pagtukoy sa Plane Database

Ang isa sa iba pang mga piraso ay nag-aalok ang openky site ng isang maida-download na database ng mga eroplano kasama ang kanilang mga calligns at idents. Ang daang libong mga entry nito. Kaya maaari nating mai-download ito at i-load ito nang lokal sa isang database ng MariaDB para sa pagtingin (MySQL). Sa bawat sasakyang panghimpapawid na lumilitaw sa itaas, kinukuha namin ang mga detalye nito at ina-update ang isang counter upang maipakita kung gaano karaming beses ito nakita.

Kasalukuyan din akong nag-e-edit ng database upang i-highlight ang mga eroplano na interesado ako. Pangunahin ang mga lumang warbird at iba pang katulad na mga kagiliw-giliw na eroplano. Ilang beses ngayong tag-init isang Mig-15 ang lumipad. kaya ang pakay ay ang gumamit ng isang alerto na larangan na naidagdag ko at pagkatapos ay mabilis na i-flash ang ilaw kapag ang isang bagay na kawili-wili ay papunta na

Hakbang 12: Pagpapabuti ng Mga Resulta at Mga Bagong Tampok

Pagpapabuti ng Mga Resulta at Mga Bagong Tampok
Pagpapabuti ng Mga Resulta at Mga Bagong Tampok
Pagpapabuti ng Mga Resulta at Mga Bagong Tampok
Pagpapabuti ng Mga Resulta at Mga Bagong Tampok
Pagpapabuti ng Mga Resulta at Mga Bagong Tampok
Pagpapabuti ng Mga Resulta at Mga Bagong Tampok

Kaya sa teorya ang lahat ay gumagana nang maayos, ngunit makikita mo sa data na may mga eroplano na lumilipad sa ibabaw na hindi lilitaw sa API.

Ito ay sapagkat hindi lahat ng mga eroplano ay gumagamit ng ADS-B transponder at gumagamit ng mas matandang mga transponder batay sa MLAT. Upang makakuha ng data ng posisyon sa sasakyang panghimpapawid gamit ang MLAT nangangailangan ito ng isang serye ng mga tatanggap sa lupa upang i-triangulate ang kanilang posisyon at ang ilang mga site tulad ng flightradar24 ay may mas malaking network ng mga nag-ambag na ginagawa ito kumpara sa opensky. Inaasahan kong sa paglipas ng panahon ay mapapabuti din ang kanilang saklaw at nagse-set up ako ng aking sariling MLAT receiver upang idagdag sa data na ito.

Hakbang 13: Codebase

Huwag kalimutan kung gagamitin mo ito baka gusto mong alisin ang mga pahayag ng SQL kung wala kang database ng mga eroplano at idagdag din ang iyong sariling halaga ng Lon / Lat at API key para ma-access ang data ng flight.

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

tukuyin ("INTERVAL", (20 * 1)); function fexp () {$ lat = "iyong latitude"; $ lon = "iyong longitude"; $ panig = 15.75; $ box = get_bounding_box ($ lat, $ lon, $ side); $ latmin = $ box [0]; $ lonmin = $ box [1]; $ latmax = $ box [2]; $ lonmax = $ box [3]; $ flyurl = "https://opensky-network.org/api/states/all?lamin=$latmin&lomin=$lonmin&lamax=$latmax&lomax=$lonmax"; echo "Pag-scan ng SKY"; $ start_time = microtime (totoo); $ json = file_get_contents ($ flyurl); $ data = json_decode ($ json, TRUE); $ inbound = MALI; $ num_planes = count ($ data ['states']); kung ($ num_planes> 0) {echo "at makakakita tayo ng $ num_planes na mga eroplano / n"; para sa ($ x = 0; $ x 0) {$ plane_eta = $ distplane / $ air_speed_kmh; } iba pa {$ eta = 1; } kung ((($ intercept) 0)) && ($ distplane0) {$ inbound = TRUE; echo "----------------- -------------------- / n "; echo "$ icao24 - [$ country $ callsign] sa [$ geo_altitude_m M - $ geo_altitude_f ft]"; echo "[bilis ng $ air_speed_kmh kmh at", bilog ($ distplane, 1), "km ang layo] n"; echo "[sa isang heading ng", bilog ($ plane_heading, 1), "] [homeangle $ heading_d]"; echo "[$ latitude, $ longitude] n"; echo "[flypast in", decimal_to_time ($ plane_eta), "now", bilog ($ intercept, 1), "km away / n"; echo "----------------- -------------------- / n "; $ DBi = bagong mysqli ("127.0.0.1", "root", "iyong password", "awacs"); $ sql = "select * mula sa aircraftdatabase kung saan` icao24` = '$ icao24' "; mysqli_set_charset ($ DBi, "utf8"); $ getplanedata = mysqli_query ($ DBi, $ sql) o mamatay (mysqli_error ($ DBi)); $ row_getplanedata = mysqli_fetch_assoc ($ getplanedata); $ row_getplanedata = mysqli_num_rows ($ getplanedata); kung ($ row_getplanedata> 0) {gawin {echo "callsign ="; echo $ row_getplanedata ['pagrehistro']; ang echo "ay isang"; echo $ row_getplanedata ['manufacturerername']; echo ""; echo $ row_getplanedata ['modelo']; echo "by"; echo $ row_getplanedata ['manufacturericao']; echo "pagmamay-ari ng"; echo $ row_getplanedata ['may-ari']; echo "nakita"; echo $ row_getplanedata ['pagbisita']; echo "beses"; echo "espesyal na rating ="; echo $ row_getplanedata ['espesyal']; echo "\ n"; $ pagbisita = $ row_getplanedata ['pagbisita'] + 1; } habang ($ row_getplanedata = mysqli_fetch_assoc ($ getplanedata)); mysqli_free_result ($ getplanedata); $ sqli = "I-UPDATE ang mga sasakyang panghimpapawid ng datos SET = pagbisita sa $ SAAN icao24 = '$ icao24'"; mysqli_set_charset ($ DBi, "utf8"); $ updateplanedata = mysqli_query ($ DBi, $ sqli) o die (mysqli_error ($ DBi)); } iba pa {echo "Hindi mahanap ang eroplano na ito sa DB kaya idinagdag ito"; $ sqli = "INSERT SA sasakyang panghimpapawid data (icao24, mga pagbisita, espesyal) VALUES ('$ icao24', 1, 1)"; $ updateplanedata = mysqli_query ($ DBi, $ sqli) o die (mysqli_error ($ DBi)); } i-echo "-------------------------------------------- --------------------- / n "; } iba pa {// echo "$ callsign"; }}} iba pa {echo "at ang kalangitan ay malinaw / n"; } kung ($ inbound) {echo "Inbound plane / n"; $ utos = "baboy w 17 1"; execInBackground ($ utos); } iba pa {echo "walang papasok na mga flight / n"; $ utos = "baboy w 17 0"; execInBackground ($ utos); }} function decimal_to_time ($ decimal) {$ offset = 0.002778; kung ($ decimal> $ offset) {$ decimal = $ decimal - 0.002778; } $ oras = gmdate ('H', sahig ($ decimal * 3600)); $ minuto = gmdate ('i', sahig ($ decimal * 3600)); $ segundo = gmdate ('s', sahig ($ decimal * 3600)); ibalik ang str_pad ($ oras, 2, "0", STR_PAD_LEFT). ":". str_pad ($ minuto, 2, "0", STR_PAD_LEFT). ":". str_pad ($ segundo, 2, "0", STR_PAD_LEFT); } / * * kalkulahin (paunang) tindig sa pagitan ng dalawang puntos * * mula sa: Ed Williams 'Aviation Formulary, https://williams.best.vwh.net/avform.htm#Crs * source = instantglobe.com/CRANES/GeoCoordTool. html * / pagpapaandar 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; ibalik ang $ zz; } function 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 * $ eroplano_distansya; ibalik ang $ flight_intercept; } / * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - * / / * * Gumamit ng Haversine formula upang Kalkulahin ang distansya (sa km) sa pagitan ng dalawang puntos na tinukoy ng * latitude / longitude (sa mga numerong degree) * * mula sa: Haversine formula - RWSinnott, "Mga Virtues ng Haversine", * Sky at Telescope, vol 68, no 2, 1984 * https://williams.best.vwh.net/avform.htm#Crs * * halimbawa ng paggamit mula sa form: * resulta.value = LatLon.distHaversine (lat1.value.parseDeg (), long1.value.parseDeg (), * lat2.value.parseDeg (), long2.value.parseDeg ()); * kung saan ang lat1, long1, lat2, long2, at resulta ay mga form form * source = instantglobe.com/CRANES/GeoCoordTool.html * / function get_distHaversine ($ home_lat, $ home_lon, $ plane_lat, $ plane_lon) {$ R = 6371; // mean radius ng daigdig sa km $ 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) * sin ($ dLon / 2); $ c = 2 * atan2 (sqrt ($ a), sqrt (1- $ a)); $ d = $ R * $ c; ibalik ang $ d; } function 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; # Radius ng kahanay sa ibinigay na latitude; $ parallel_radius = $ radius * cos ($ lat); $ lat_min = $ lat - $ half_side_in_km / $ radius; $ lat_max = $ lat + $ half_side_in_km / $ radius; $ lon_min = $ lon - $ half_side_in_km / $ parallel_radius; $ lon_max = $ lon + $ half_side_in_km / $ parallel_radius; $ box_lat_min = rad2deg ($ lat_min); $ box_lon_min = rad2deg ($ lon_min); $ box_lat_max = rad2deg ($ lat_max); $ box_lon_max = rad2deg ($ lon_max); ibalik ang array ($ 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")); } iba pa {exec ($ cmd. "> / dev / null &"); }} function checkForStopFlag () {// ganap na opsyonal na pagbalik (TRUE); } simulan ang pagpapaandar () {echo "simula / n"; $ utos = "baboy w 17 1"; execInBackground ($ utos); $ aktibo = TUNAY; habang ($ aktibo) {usbea (1000); // opsyonal, kung nais mong maging maalalahanin kung (microtime (totoo)> = $ nextTime) {fexp (); $ nextTime = microtime (totoo) + INTERVAL; } $ aktibo = checkForStopFlag (); }} fexp (); simulan (); ?>

Hakbang 14: Mga kable sa LED at ang Shutdown Switch

Ang kable ng LED at ang Shutdown Switch
Ang kable ng LED at ang Shutdown Switch

Ang mga kable ng proyektong ito ay hindi maaaring maging mas simple talaga. Mayroon lamang isang LED na konektado sa pin 17 at ground na may isang 270R risistor na linya.

Nagsasama rin ako ng isang shutdown at power up button kasama ang isang power LED na tumatakbo sa pin ng data ng TXd. Maaari mong basahin ang higit pa tungkol sa pag-andar ng shutdown at kinakailangang code sa https://github.com/ Howchoo/pi-power-button.git mula sa site https://howchoo.com/g/mwnlytk3zmm/how-to- add-a-pow… Maaari mong basahin ang tungkol sa pagdaragdag ng isang ilaw ng kuryente dito

Inirerekumendang: