Orodha ya maudhui:
- Hatua ya 1: Kubuni Kesi
- Hatua ya 2: Kutupa Lenti - #feli
- Hatua ya 3: Aina tofauti za Resin
- Hatua ya 4: Kutupa Lens katika Mould ya Silicone # 2
- Hatua ya 5: Uchapishaji wa 3D na Maandalizi
- Hatua ya 6: Mkutano na Uchoraji
- Hatua ya 7: Kwanza Tafuta Ndege Ndani ya Sehemu Iliyopakana
- Hatua ya 8: Kuhesabu Kichwa cha Ndege Kuhusiana Nasi
- Hatua ya 9: Kuhesabu Kukatiza kwa Kuangalia Mduara
- Hatua ya 10: Umbali kati ya Pointi mbili kwenye Ramani - Mfumo wa Haversine
- Hatua ya 11: Kuingiza na Kufafanua Hifadhidata ya Ndege
- Hatua ya 12: Kuboresha Matokeo na Vipengele vipya
- Hatua ya 13: Codebase
- Hatua ya 14: Wiring LED na Zima Kuzima
Video: Onyo la mapema Raspberry PI Runway Mwanga Kutumia Takwimu za Ramani ya Ndege: Hatua 14 (na Picha)
2024 Mwandishi: John Day | [email protected]. Mwisho uliobadilishwa: 2024-01-30 12:51
Taa hii ilitoka kwa sababu kadhaa kwa sababu mimi huwa na hamu ya ndege ambazo huruka juu na wakati wa majira ya joto mwishoni mwa wiki kuna mara nyingi kupendeza kuzunguka. Ingawa wewe huwa unawasikia tu wanapopita. Halafu sababu nyingine ni kwamba inaonekana njia ya kukimbia kwa ndege zinazotoka kutoka uwanja wa ndege wa London City wakati mwingine zitasikika na wana ndege nzuri zenye kelele zinazoenda. Kuwa kama ninapiga kura katika kurekodi video kwenye YouTube inasikitisha sana kukata rekodi kwa sababu ya ndege yenye kelele. Kwa hivyo nilijiuliza ikiwa data unayoona kwenye wavuti kama ndege ya ndege24 inapatikana hadharani, mara tu niligundua kitu kama hicho kilipatikana kutoka kwa mtandao wa openky taa ya onyo la mapema ilizaliwa. Haikuchukua muda mrefu kabla ya kupata wazo la kutumia mfano wa taa ya barabara kuu kuweka mradi huo.
Unaweza kujua zaidi juu ya Mtandao wa OpenSky katika https://www.opensky-network.org Pia nilitaka wakati huu kutengeneza lensi nzuri ya resini badala ya kutumia PLA inayobadilika na ingawa nina kipokeaji cha ADS-B nilichotaka kuweka hii rahisi na ya bei rahisi. ADS-B pia inahitaji antena na hii haingefanya kwa taa kwenda kwenye rafu ofisini. Kwa hivyo tunatumahi kuwa utapata ujenzi wa kuvutia kwani inashughulikia uchapishaji wa 3D, ukingo wa Resin na hesabu na pia kuorodhesha nafasi za ndege ambazo zinaweza kupita juu.
Hatua ya 1: Kubuni Kesi
Utafutaji wa Google unakuja na miundo tofauti ya taa ya barabara na muundo wa hii ulifanywa kwa kutumia ushawishi wa muundo kutoka kwa anuwai nyingi tofauti za taa za kweli. Imeongezwa pia kukaa kwenye chumba au kwenye rafu badala ya saizi kamili, kwani huwa kubwa zaidi katika maisha halisi.
Miundo ilibuniwa katika Fusion 360 na niliingiza vitu kadhaa vya zamani kama vile mmiliki wa rasipberry pi sifuri kutoka kwa miradi ya hapo awali. Kuwa na uwezo wa kutumia tena vitu huchukua maumivu ya kichwa mengi kutoka kwa kupata misingi. Unaweza pia kupakua faili hapa https://www.thingiverse.com/thing 3884138
Hatua ya 2: Kutupa Lenti - #feli
Kipengele muhimu zaidi cha kubuni cha taa hii ingekuwa lens. Kwa hivyo nilishughulikia hii kwanza kama bila glasi nzuri ya kutazama mradi huo ungeenda kufanya kazi. Ninaandika hapa kutofaulu niliyokuwa nayo katika kujaribu kufanikisha hilo, bila kuzingatia kwamba pia mwanzoni niliamua kuifanya lensi iwe amber. Taa za Runway huja kwa kahawia na bluu na ilikuwa tu baada ya kuanza kuifanya amber moja ndipo nilibadilisha mawazo yangu na kuamua kuwa ninataka bluu.
Kutoka kwa kile ninachoweza kutengeneza Amber hutumiwa kwenye laini ya kushikilia na zile za hudhurungi zinatumiwa kuweka barabara, na hizi ndio zinaonekana kuwa za archetypal zaidi zinazopatikana ukitafuta taa za barabara. Walakini, hapa kuna jaribio langu la kwanza la kutengeneza lensi ya kaharabu. Ili kutengeneza lensi, ningeenda kutumia resin ya clearcast na nyongeza ya rangi, na ingawa nimefanya ukungu kadhaa kabla ya kujiuliza ikiwa itawezekana kuchapisha ukungu wa 3D na kuitumia. Kwa hivyo nilianza na kutengeneza ukungu uliogawanyika katika 3D na kuichapisha katika PetG. Kiasi cha kutolewa kwa ukungu nilikuwa na hakika itakuwa ya kutosha kuvuja ukungu. Kama inavyotokea na majaribio kadhaa nilifanya resini ikashikamana na ukungu kama gundi na haikuonekana iwezekanavyo kuwatenganisha. Ingawa nilikuwa na kiwango kamili ambacho nitatumia, niliamua dhidi yake na kuchapisha lensi ya kutumia na ukingo wa jadi wa silicone.
Hatua ya 3: Aina tofauti za Resin
Kama kando ya haraka, nilitumia aina tatu za resini zilizo wazi / zenye rangi kwa mradi huu.
Ya kwanza ilikuwa aina ya soko la Hobby iitwayo Pebeo - Gedeo na kawaida huuzwa kwa kufunika vitu vidogo na kutumika kwa vito vya mapambo ya vito na dawati n.k Hii ilifanya kazi vizuri na ilipona vizuri kwa masaa 24-36. Bei yake ni ya bei rahisi kwa kiasi unachopata, lakini ni rahisi na inapatikana kwa urahisi katika maduka ya kupendeza na ya ufundi. Imechanganywa kwa uwiano wa 2: 1. Ya pili ilikuwa resin iliyo na rangi ya awali iliyochanganywa kwa kiwango cha 10: 1 na kigumu na hii ilichukua muda mrefu kuponya, karibu wiki moja kuwa mwaminifu kabla haijapona kabisa. Ya mwisho ilikuwa resin iliyo wazi, ambayo pia ilichanganywa katika uwiano wa 2: 1 na hii ilipona kwa takriban siku 2, unaweza kuipaka rangi hii na matone ya rangi, lakini unahitaji kuhakikisha kuwa kila wakati unatumia uwiano sawa wa rangi ikiwa wanatengeneza makundi tofauti. Pia hufanya kazi kwa gharama nafuu zaidi. Mwishowe RTV ya ukungu ilikuwa GP-3481 RTV na hii inachukua masaa 24 kuweka na ina muda mrefu wa sufuria ili uwe na wakati mwingi wa kuichanganya na kisha kuimwaga.
Kwa sasa sina sufuria ya msimu (kwa sasa imewekwa kwa utaratibu) ili uweze kukumbwa na mapovu kwenye ukungu na resini inayomwagika. Sio suala kubwa sana kwa hili, lakini kwa lensi iliyo wazi au sawa basi ungetaka kufikiria juu ya njia fulani kutoa Bubbles kutoka kwa mchanganyiko.
Hatua ya 4: Kutupa Lens katika Mould ya Silicone # 2
Kwa hivyo hii ni jaribio la pili la kutengeneza lensi ya Resin na hatua ya kwanza ilikuwa kutengeneza lensi zote katika Fusion 360 na kisha kuichapisha katika ABS na ndoo kuishikilia. Hii itakuwa ya zamani kwa ukungu na inasaidia kuweka chini kiwango cha silicone itakayotumika. Unaweza kufanya hii kwa urahisi kutoka kwa kadi, lakini ni njia tofauti tu. Ili kuipatia nafasi nzuri ya kutolewa kutoka kwenye ukungu, niliiotisha kwanza kisha nikampa kifuniko kizuri cha wakala wa kutolewa kwa nta.
Kisha nikamwaga GP-3481 ambayo ni karibu na pwani ya 27 RTV na kisha ikaiwekea saa 24 zijazo kabla ya kuharibu. Mara tu hii ikamalizika nilitumia resini iliyo wazi iliyochanganywa kwa uwiano wa 2: 1 na juu ya matone 4/5 ya rangi ya rangi na kuichanganya vizuri kwa dakika nne nzuri. Mimina hii kwenye ukungu na kisha kuweka glasi iliyopigwa kwenye resini na pia kutoa utupu baadaye kwa taa au taa za LED. Baada ya masaa 24 hivi resini hii ilikuwa tayari kuondoa na lensi ilitoka vizuri sana. Kuna Bubbles za hewa zilizopo, lakini bado sina chombo cha utupu cha kutuliza resin kabla ya kumwagika.
Hatua ya 5: Uchapishaji wa 3D na Maandalizi
Mfano huo ulibuniwa kwa njia ambayo sehemu ya kati huziba kwenye msingi. Hii ilikuwa kuzuia kuficha wakati wa mchakato wa uchoraji. Mfano wote ulichapishwa katika Hatchbox ABS na kisha mchanga. Kuanzia grit 60 hadi grit 800 ilitoa kumaliza uso wa kutosha kwa mtindo huu.
Hatua ya 6: Mkutano na Uchoraji
Mara baada ya kuchapishwa mchanga, ilikuwa imepakwa rangi na muundo wa hali ya juu. Mchanga kidogo na kisha kunyunyiziwa kijivu cha kijivu. Sehemu kuu zilipakwa rangi ya manjano ya ishara, na kisha kijani kibichi kilitumika kwa msingi. Vivutio vya fedha ya tamiya vilitumika kwa bolts na chrome kadhaa ya fedha ya molotow iliyotumiwa kwenye kishikilia lensi.
Hatua ya 7: Kwanza Tafuta Ndege Ndani ya Sehemu Iliyopakana
Pamoja na vifaa vilivyopangwa, programu hiyo inahitajika kufanyiwa kazi. Kuna tovuti kadhaa sasa ambazo hutoa ufuatiliaji wa ndege, lakini sio nyingi ambazo hutoa API kufikia data hiyo. Wengine wanaofanya, hufanya tu kwa msingi wa kibiashara lakini kwa bahati nzuri kuna tovuti moja inayoitwa https://opensky-network.org ambayo unaweza kutumia bure.
Ili kupata data hii lazima ujiandikishe na kisha unaweza kutumia API yao, hutoa kazi kadhaa na njia za kuvuta data. Tunavutiwa na ndege zote ndani ya eneo na wana simu ya Live API kwa hiyo. https://opensky-network.org/apidoc/ inayoitwa sanding boxing. Simu ya API inahitaji pembe za sanduku ambalo unavutiwa nalo kwa kweli Lat / Lon yetu kama kituo cha katikati. Unaweza kuangalia hesabu inafanya kazi tovuti hii, ambayo inachora kisanduku kutegemea na unachoandika. Http://tools.geofabrik.de lakini kwa sasa hati ifuatayo inatoa alama tunazohitaji kuziba kwenye API.
fanya kazi kupata_kibodi_ya_za ($ latitudo_katika digrii, $ longitudo_katika digrii, $ nusu_katika_kima_miles) $ 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); safu ya kurudi ($ box_lat_min, $ box_lon_min, $ box_lat_max, $ box_lon_max);
Ikiwa unataka kujaribu nambari yako, kuna tovuti ambayo unaweza kuingia lat / lon na uone matokeo kwenye ramani: Tazama mfano wa sanduku linalofikia kwenye ramani
Hatua ya 8: Kuhesabu Kichwa cha Ndege Kuhusiana Nasi
Matokeo kutoka sanduku la API ya sanduku linatupa orodha ya ndege, Lon / lat yao, kasi, urefu na kichwa. Kwa hivyo jambo linalofuata tunalohitaji kufanya ni kupata kichwa cha kila ndege kuhusiana na sisi ili tuweze kusindika zaidi wale ambao angalau wanaelekea katika mwelekeo wetu wa jumla. Tunaweza kufanya hivyo tunavyojua msimamo wetu na tunaweza kufanya kazi kutoka kwa kila ndege.
Ili kufanya hivyo mimi hutumia kipande cha nambari ambayo hapo awali ilikuwa kwenye Javascript kwa hivyo niliibadilisha hapa kuwa PHP, * hesabu (awali) yenye kati ya alama mbili * * kutoka: Ed Williams 'Aviation Formulary, https://williams.best.vwh.net/avform.htm#Crs * source = instantglobe.com/CRANES/GeoCoordTool.html * / kazi kupata_kuzaa ($ home_lat, $ home_lon, $ plane_lat, $ plane_lon) {$ lat1 = deg2rad ($ home_lat); $ lat2 = deg2rad ($ ndege_lat);
$ dLon = deg2rad ($ ndege_lon- $ home_lon);
$ y = dhambi ($ dLon) * cos ($ lat2);
$ x = cos ($ lat1) * dhambi ($ lat2) - dhambi ($ lat1) * cos ($ lat2) * cos ($ dLon); $ z = atan2 ($ y, $ x); $ zz = (rad2deg ($ z) +360)% 360; kurudi $ zz;
Ikiwa unataka kutazama ukurasa ambao matoleo asili ya javascript yapo, hii ndio kiunga:
ndani ya nambari hiyo, unaweza pia kuona taratibu kadhaa ndogo kwa kila aina ya hesabu ni.
Hatua ya 9: Kuhesabu Kukatiza kwa Kuangalia Mduara
Kwa hivyo sasa tuna ndege ambapo kubeba kati yake na eneo letu ni chini ya 90 (iwe chanya au hasi) na kwa hivyo hii inamaanisha kuna nafasi ya kwamba inaweza kuruka karibu. Kutumia fomula ya mkondo wa samaki tunaweza pia kufanya kazi kwa kutumia Lon / Lat ya ndege na Lon / Lat ya nyumba yetu umbali ambao uko mbali nasi.
Kuangalia mchoro, ikiwa tunachora duara kuzunguka nyumba yetu ya kusema juu ya eneo la maili 3 hii inatupa nafasi ya kuona chochote kinachoruka juu. Tunajua tofauti ya kuelekea kati ya ndege na sisi, tunajua pia umbali wa ndege kutoka kwetu ili tuweze kufanyia kazi pembetatu kwa kutumia SOHCAHTOA nzuri ya zamani, na katika kesi hii tukitumia Tan ya pembe tunaweza kupata urefu wa upande. Kwa hivyo ikiwa tutalinganisha thamani hii dhidi ya thamani ya eneo la duara kuzunguka nyumba tunaweza kujua ikiwa ndege itaruka karibu kabisa ili tuione. Jambo linalofuata tunaweza kufanya ni kupanga wakati ambao ndege itapita kupita kwa kutumia kasi ya hewa na umbali na ikiwa hii ni chini ya kusema sekunde 45 au kwa hivyo tunawasha taa. Hii ni nambari kidogo ninayotumia kutafuta nafasi ya kuruka juu. Ninafanya hivi kwa kuwa kuna uwanja wa ndege wa karibu na wakati ndege zinapoingiza teksi kuzunguka zinaelekeza nyumbani. Walakini kama urefu wao ni sifuri na kasi ni kutembea kasi hii haifai kuchochea kengele.
fanya kazi kupata_kupata ($ home_head, $ plane_head, $ plane_distance) {
$ flight_angle = abs (abs ($ home_head - $ ndege_head) - 180); $ ndege_angle_r = deg2rad ($ ndege_angle); $ ndege_angle_t = tan ($ ndege_angle_r); $ flight_intercept = $ flight_angle_t * umbali wa ndege ya $;
ikiwa (($ flight_angle <90) && ($ flight_intercept <3)) {// inawezekana kuruka zamani
}
kurudi $ flight_intercept;
}
Hatua ya 10: Umbali kati ya Pointi mbili kwenye Ramani - Mfumo wa Haversine
Kwa hivyo lazima tuhesabu umbali kati ya ndege na eneo letu. Kwa umbali mfupi kwenye ramani unaweza takriban kuhesabu umbali, lakini kwa kuwa dunia ni ya duara, kuna fomula inayoitwa fomula ya haversine ambayo hukuruhusu kuzingatia uso uliopindika. Unaweza kusoma zaidi kwa fomula:
Sasa kwa umbali uliohesabiwa na tunajua mwendo wa hewa wa ndege tunaweza kujua ni sekunde ngapi kabla ya ndege kuja juu. Kwa hivyo taa itakuja ikiwa kuna kitu ndani ya sekunde 30 za kuruka na sisi mwishowe tuna taa yetu ya onyo.
* msingi 0n JS kwa instantglobe.com/CRANES/GeoCoordTool.html na kugeuzwa kuwa PHP * /
kazi pata_distHaversine ($ home_lat, $ home_lon, $ plane_lat, $ plane_lon) {$ R = 6371; // eneo la wastani la dunia katika km $ dLat = deg2rad ($ plane_lat- $ home_lat); $ dLon = deg2rad ($ ndege_lon- $ home_lon); $ lat1 = deg2rad ($ home_lat); $ lat2 = deg2rad ($ ndege_lat);
$ a = dhambi ($ dLat / 2) * dhambi ($ dLat / 2) + cos ($ lat1) * cos ($ lat2) * dhambi ($ dLon / 2) * dhambi ($ dLon / 2);
$ c = 2 * atan2 (sqrt ($ a), sqrt (1- $ a)); $ d = $ R * $ c; kurudi $ d; }
Hatua ya 11: Kuingiza na Kufafanua Hifadhidata ya Ndege
Moja ya vipande vingine ni kwamba wavuti ya openky inatoa hifadhidata inayoweza kupakuliwa ya ndege pamoja na alama zao za kupigia simu na vitambulisho. Ingizo zake laki kadhaa. Kwa hivyo tunaweza kupakua hii na kuipakia ndani ya hifadhidata ya MariaDB ya kutafuta (MySQL). Kwa kila ndege inayoonekana juu, tunapata maelezo yake na kusasisha kaunta ili kuonyesha ni mara ngapi imeonekana.
Mimi pia kwa sasa ninahariri hifadhidata ili kuangazia ndege ambazo ninavutiwa nazo. Ndege wa zamani wa zamani na ndege zingine zinazofanana zinazovutia. Mara kadhaa msimu huu wa joto Mig-15 imeruka juu. kwa hivyo lengo ni kutumia uwanja wa tahadhari ambao nimeongeza na kisha kuwasha taa haraka wakati kitu cha kupendeza kinaelekea
Hatua ya 12: Kuboresha Matokeo na Vipengele vipya
Kwa hivyo kwa nadharia kila kitu hufanya kazi vizuri, lakini utapata na data kwamba kuna ndege ambazo zinaruka juu ya hiyo hazionekani kwenye API.
Hii ni kwa sababu sio ndege zote zinazotumia transponder ya ADS-B na hutumia transponders za zamani kulingana na MLAT. Ili kupata data ya nafasi kwenye ndege inayotumia MLAT inahitaji mfululizo wa wapokeaji ardhini ili kuweka msimamo wao na tovuti zingine kama flightradar24 zina mtandao mkubwa wa wachangiaji wanaofanya hii ikilinganishwa na openky. Tunatumahi baada ya muda chanjo yao itaboresha pia na ninaunda mpokeaji wangu wa MLAT kuongeza data hii.
Hatua ya 13: Codebase
Usisahau ikiwa utatumia hii unaweza kutaka kuondoa taarifa za SQL ikiwa huna hifadhidata ya ndege na pia ongeza thamani yako ya Lon / Lat na ufunguo wa API wa kupata data ya ndege.
github.com/ajax-jones/runway-light-awacs
fafanua ("INTERVAL", (20 * 1)); kazi fexp () {$ lat = "latitude yako"; $ lon = "longitudo yako"; $ upande = 15.75; Sanduku la $ = kupata_kisanduku_box ($ lat, $ lon, $ upande); $ latmin = $ sanduku [0]; $ lonmin = $ sanduku [1]; $ latmax = $ sanduku [2]; $ lonmax = $ sanduku [3]; $ flyurl = "https://opensky-network.org/api/states/all?lamin=$latmin&lomin=$lonmin&lamax=$latmax&lomax=$lonmax"; echo "Kuchunguza Anga"; $ start_time = microtime (kweli); $ json = file_get_contents ($ flyurl); data ya data = json_decode ($ json, TRUE); $ inayoingia = UONGO; $ num_planes = hesabu ($ data ['states']); ikiwa ($ num_planes> 0) {echo "na tunaweza kuona ndege za $ num_planes / n"; kwa ($ x = 0; $ x 0) {$ plane_eta = $ ndege / $ air_speed_kmh; } mwingine {$ eta = 1; } ikiwa ((($ $ intercept) 0)) && ($ distplane0) {$ inbound = TRUE; mwangwi "-------------------------------------- -------------------- / n "; echo "$ icao24 - [$ country $ callign] kwa [$ geo_altitude_m M - $ geo_altitude_f ft]"; echo "[kasi $ air_speed_kmh kmh na", pande zote ($ distplane, 1), "km away] n"; unganisha "[kwa kichwa cha", pande zote ($ ndege_ kichwa, 1), "] [homeangle $ heading_d]"; mwangwi "[$ latitude, $ longitude] n"; echo "[flypast in", decimal_to_time ($ plane_eta), "sasa", pande zote ($ intercept, 1), "km away / n"; mwangwi "-------------------------------------- -------------------- / n "; $ DBi = mysqli mpya ("127.0.0.1", "mzizi", "nywila yako", "awacs"); $ sql = "chagua * kutoka hifadhidata ya ndege ambapo` icao24` = '$ icao24' "; mysqli_set_charset ($ DBi, "utf8"); $ getplanedata = mysqli_query ($ DBi, $ sql) au kufa (mysqli_error ($ DBi)); $ row_getplanedata = mysqli_fetch_assoc ($ getplanedata); $ safu_getplanedata = mysqli_num_rows ($ getplanedata); ikiwa ($ row_getplanedata> 0) {do {echo "callsign ="; echo $ row_getplanedata ['usajili']; echo "ni"; echo $ row_getplanedata ['jina la mtengenezaji']; mwangwi ""; echo $ row_getplanedata ['mfano']; mwangwi "na"; echo $ row_getplanedata ['manufactricao']; mwangwi "inayomilikiwa na"; echo $ row_getplanedata ['mmiliki']; mwangwi "kuonekana"; echo $ row_getplanedata ['ziara']; echo "nyakati"; echo "rating maalum ="; echo $ row_getplanedata ['maalum']; mwangwi "\ n"; Ziara za $ = $ row_getplanedata ['ziara'] + 1; } wakati ($ row_getplanedata = mysqli_fetch_assoc ($ getplanedata)); mysqli_free_result ($ getplanedata); $ sqli = "SASISHA orodha ya ndege SET ziara = ziara za $ WAPI icao24 = '$ icao24'"; mysqli_set_charset ($ DBi, "utf8"); $ updateplanedata = mysqli_query ($ DBi, $ sqli) au kufa (mysqli_error ($ DBi)); } mwingine {echo "Haikuweza kupata ndege hii katika DB kwa hivyo kuiongeza"; $ sqli = "Ingiza kwenye hifadhidata ya ndege (icao24, ziara, maalum) MAADILI ('$ icao24', 1, 1)"; $ updateplanedata = mysqli_query ($ DBi, $ sqli) au kufa (mysqli_error ($ DBi)); } mwangwi "------------------------------------------ --------------------- / n "; } mwingine {// echo "$ callign"; }}}} mwingine {mwangwi "na mbingu ziko wazi / n"; } ikiwa ($ inbound) {echo "Inbound plane / n"; $ command = "nguruwe w 17 1"; execInBackground (amri ya $); } mwingine {echo "hakuna ndege zinazoingia / n"; $ command = "nguruwe w 17 0"; execInBackground (amri ya $); }} kazi decimal_to_time ($ decimal) {$ offset = 0.002778; ikiwa ($ decimal> $ offset) {$ decimal = $ decimal - 0.002778; } masaa $ = gmdate ('H', sakafu ($ decimal * 3600)); Dakika $ = gmdate ('i', sakafu ($ decimal * 3600)); Sekunde $ = gmdate ('s', sakafu ($ decimal * 3600)); kurudi str_pad (saa $, 2, "0", STR_PAD_LEFT). ":". str_pad (dakika $, 2, "0", STR_PAD_LEFT). ":". str_pad (sekunde $, 2, "0", STR_PAD_LEFT); } / * * hesabu (ya awali) yenye kati ya alama mbili * * kutoka: 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 ($ ndege_lat); $ dLon = deg2rad ($ ndege_lon- $ home_lon); $ y = dhambi ($ dLon) * cos ($ lat2); $ x = cos ($ lat1) * dhambi ($ lat2) - dhambi ($ lat1) * cos ($ lat2) * cos ($ dLon); $ z = atan2 ($ y, $ x); $ zz = (rad2deg ($ z) +360)% 360; kurudi $ zz; } kazi pata_kupata ($ home_head, $ plane_head, $ plane_distance) {$ flight_angle = abs (abs ($ home_head - $ plane_head) - 180); $ ndege_angle_r = deg2rad ($ ndege_angle); $ ndege_angle_t = tan ($ ndege_angle_r); $ flight_intercept = $ flight_angle_t * umbali wa ndege ya $; kurudi $ flight_intercept; } / * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - * / / * * Tumia fomula ya Haversine kuhesabu umbali (kwa km) kati ya alama mbili zilizoainishwa na * latitudo / longitudo (kwa digrii za nambari) * * kutoka: fomula ya Haversine - RWSinnott, "Fadhila za Haversine", * Anga na Darubini, juzuu ya 68, no 2, 1984 * https://williams.best.vwh.net/avform.htm#Crs * * mfano wa matumizi kutoka kwa fomu: * matokeo.thamani = LatLon.distHaversine (lat1.value.parseDeg (), long1.value.parseDeg (), * lat2.value.parseDeg (), long2.thamani.parseDeg ()); * ambapo lat1, long1, lat2, long2, na matokeo ni uwanja wa fomu * chanzo = instantglobe.com/CRANES/GeoCoordTool.html * / function get_distHaversine ($ home_lat, $ home_lon, $ plane_lat, $ plane_lon) {$ R = 6371; // eneo la wastani la dunia katika km $ dLat = deg2rad ($ plane_lat- $ home_lat); $ dLon = deg2rad ($ ndege_lon- $ home_lon); $ lat1 = deg2rad ($ home_lat); $ lat2 = deg2rad ($ ndege_lat); $ a = dhambi ($ dLat / 2) * dhambi ($ dLat / 2) + cos ($ lat1) * cos ($ lat2) * dhambi ($ dLon / 2) * dhambi ($ dLon / 2); $ c = 2 * atan2 (sqrt ($ a), sqrt (1- $ a)); $ d = $ R * $ c; kurudi $ d; } fanya kazi_kuongeza_kibodi ($ 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 ya sambamba katika latitudo fulani; $ 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); safu ya kurudi ($ box_lat_min, $ box_lon_min, $ box_lat_max, $ box_lon_max); } fanya kaziInBackground ($ cmd) {if (substr (php_uname (), 0, 7) == "Windows") {pclose (popen ("start / B". $ cmd, "r")); } mwingine {exec ($ cmd. "> / dev / null &"); }} kazi checkForStopFlag () {// kurudi kabisa kwa hiari (KWELI); } kuanza kazi () {echo "kuanzia / n"; $ command = "nguruwe w 17 1"; execInBackground (amri ya $); $ kazi = KWELI; wakati ($ active) {usingizi (1000); // hiari, ikiwa unataka kuwa mwenye kuzingatia ikiwa (microtime (kweli)> = $ nextTime) {fexp (); $ nextTime = microtime (kweli) + INTERVAL; } $ hai = kuangaliaForStopFlag (); }} fexp (); Anza (); ?>
Hatua ya 14: Wiring LED na Zima Kuzima
Wiring wa mradi huu hauwezi kuwa rahisi kweli kweli. Kuna LED moja tu ambayo imeunganishwa kubandika 17 na ardhi na mstari wa kupinga 270R.
Ninajumuisha pia kitufe cha kuzima na kuzima nguvu pamoja na taa ya umeme inayoendesha pini ya data ya TXd. Unaweza kusoma zaidi juu ya kazi ya kuzima na nambari inayotakiwa kwenye https://github.com/Howchoo/pi-power-button.git kutoka kwa wavuti https://howchoo.com/g/mwnlytk3zmm/how-to- ongeza-nguvu… Unaweza kusoma juu ya kuongeza taa ya umeme hapa
Ilipendekeza:
Tengeneza Kitabu cha Ramani Kutumia Ramani za Google: Hatua 17 (na Picha)
Tengeneza Kitabu cha Ramani Kutumia Ramani za Google: Siku nyingine nilikuwa nikitafuta duka la vitabu kwa Mwongozo wa Mtaa wa Kaunti ya DuPage, IL kwani rafiki yangu wa kike anaishi hapo na anahitaji ramani ya barabara ya kina. Kwa bahati mbaya, moja tu ambayo walikuwa nayo ambayo ilikuwa karibu ilikuwa moja ya Kaunti ya Cook (kama hii o
Ramani mahiri ya Idaho iliyo na Takwimu za LED + Sanaa: Hatua 8 (na Picha)
Ramani mahiri ya Idaho Pamoja na Takwimu za LED + Sanaa: Nimekuwa nikitaka njia ya kuonyesha kisanii na kwa nguvu data ya kijiografia na " uchoraji " ramani yenye mwanga. Ninaishi Idaho na napenda jimbo langu kwa hivyo nilidhani hii itakuwa mahali pazuri kuanza! Mbali na kuwa kipenzi cha sanaa ya sanaa
Kusoma Takwimu za Ultrasonic (HC-SR04) Takwimu kwenye LCD ya 128 × 128 na kuiona kwa kutumia Matplotlib: Hatua 8
Kusoma Takwimu za Utambuzi wa Ultrasonic (HC-SR04) kwenye LCD ya 128 × 128 na Kuiona Ukitumia Matplotlib: Katika hii inayoweza kufundishwa, tutatumia MSP432 LaunchPad + BoosterPack kuonyesha data ya sensa ya ultrasonic (HC-SR04) kwenye 128 × 128 LCD na tuma data kwa PC mfululizo na uione kwa kutumia Matplotlib
Makey Makey - Mfumo wa Onyo la Mapema kwa Upepo mkali: Hatua 5
Makey Makey - Mfumo wa Onyo la Mapema kwa Upepo mkali: Hii " mfumo wa onyo la mapema " changamoto ya muundo ingepewa kikundi cha wanafunzi. Lengo ni timu ya wanafunzi (wawili au watatu kwa kila kikundi) kubuni mfumo ambao unaonya watu kutafuta makao kutoka kwa upepo ambao unakuwa hatari
Kutumia Kijijini Kina waya bila kutumia 2.4Ghz NRF24L01 Module Na Arduino - Nrf24l01 4 Channel / 6 Kituo cha Mpokeaji wa Kituo cha Quadcopter - Helikopta ya Rc - Ndege ya Rc Kutumia Arduino: Hatua 5 (na Picha)
Kutumia Kijijini Kina waya bila kutumia 2.4Ghz NRF24L01 Module Na Arduino | Nrf24l01 4 Channel / 6 Channel Transmitter kipokeaji cha Quadcopter | Helikopta ya Rc | Ndege ya Rc Kutumia Arduino: Kuendesha gari la Rc | Quadcopter | Drone | Ndege ya RC | Boti ya RC, siku zote tunahitaji kipokezi na mtumaji, tuseme kwa RC QUADCOPTER tunahitaji kipitishaji na mpokeaji wa kituo 6 na aina hiyo ya TX na RX ni ya gharama kubwa sana, kwa hivyo tutafanya moja kwenye yetu