Sisällysluettelo:
- Vaihe 1: Kotelon suunnittelu
- Vaihe 2: Linssien valu - #epäonnistui
- Vaihe 3: Erilaiset hartsityypit
- Vaihe 4: Linssin valaminen silikonimuottiin #2
- Vaihe 5: 3D -tulostus ja valmistelu
- Vaihe 6: Asennus ja maalaus
- Vaihe 7: Etsi ensin lentokoneet raja -alueelta
- Vaihe 8: Koneiden suunnan laskeminen suhteessa meihin
- Vaihe 9: Katkaisun laskeminen katsomalla ympyrää
- Vaihe 10: Kartan kahden pisteen välinen etäisyys - Haversine -kaava
- Vaihe 11: Tasotietokannan tuominen ja määrittäminen
- Vaihe 12: Tulosten ja uusien ominaisuuksien parantaminen
- Vaihe 13: Codebase
- Vaihe 14: LEDin ja sammutuskytkimen kytkentä
Video: Varhaisvaroitus Vadelma PI -kiitotien valo käyttämällä lennon kartoitusdataa: 14 vaihetta (kuvilla)
2024 Kirjoittaja: John Day | [email protected]. Viimeksi muokattu: 2024-01-30 09:01
Tämä lamppu syntyi useista syistä, koska olen aina kiinnostunut lentokoneista, jotka lentävät yläpuolella, ja kesällä viikonloppuisin lentävät usein melko jännittävät. Vaikka sinulla on tapana kuulla ne vain niiden ohittaessa. Sitten toinen syy on se, että näyttää siltä, että London Cityn lentokentältä lähtevien lentokoneiden lentoreitti joskus kuullaan ja heillä on melko meluisia lentoja. Koska harrastan tallentamista joitain videoita YouTubeen, on todella ärsyttävää joutua purkamaan tallenne meluisan koneen takia. Joten ihmettelin, ovatko tiedot, joita näet lentoyhtiön kaltaisilla sivustoilla, julkisesti saatavilla, kun huomasin, että jotain vastaavaa oli saatavana opensky -verkosta, varhaisvaroituslamppu syntyi. Ei kestänyt kauan, ennen kuin keksimme idean käyttää kiitotien valon kopiota projektin sijoittamiseen.
Lisätietoja OpenSky-verkosta on osoitteessa https://www.opensky-network.org. Halusin myös tällä kertaa tehdä mukavan hartsilinssin läpikuultavan PLA: n käyttämisen sijaan, ja vaikka minulla on ADS-B-vastaanotin, jonka halusin pitää tämä yksinkertainen ja halpa. ADS-B tarvitsee myös antennin, eikä tämä tee lampun menemistä toimiston hyllylle. Joten toivottavasti löydät rakenteen mielenkiintoiseksi, koska se kattaa 3D -tulostuksen, hartsimuovauksen ja matematiikan sekä ekstrapoloimaan sellaisten lentokoneiden sijainnit, jotka mahdollisesti ylittävät pään.
Vaihe 1: Kotelon suunnittelu
Google -haku tarjoaa monia erilaisia kiitotien valaisimia, ja tämän suunnittelun suunnittelussa on käytetty vaikutteita monien eri merkkisten todellisten lamppujen suunnittelusta. Se on myös skaalautunut istumaan huoneessa tai hyllyllä pikemminkin kuin täysikokoisena, koska ne ovat yleensä paljon suurempia tosielämässä.
Suunnittelut laadittiin Fusion 360: ssä, ja toin aiempia projekteja, kuten vadelma pi nollapidike. Elementtien uudelleenkäyttö voi viedä paljon päänsärkyä perusasioiden saamisesta. Voit myös ladata tiedostot täältä
Vaihe 2: Linssien valu - #epäonnistui
Tämän lampun tärkein suunnitteluelementti oli linssi. Joten ratkaisin tämän ensin, koska ilman kaunista aitoa näköistä lasia projekti toimi. Dokumentoin tässä epäonnistumisia, joita minulla oli yritettäessä saavuttaa, huolimatta siitä, että päätin alun perin tehdä linssin keltaiseksi. Kiitotien valot ovat sekä keltaisia että sinisiä, ja vasta sen jälkeen, kun olin alkanut tehdä keltaista, muutin mieleni ja päätin, että haluan sinisen.
Ymmärtääkseni Amber -lamppuja käytetään pitoviivalla ja sinisiä käytetään kiitotien reunustamiseen, ja nämä ovat niitä, jotka näyttävät olevan arkeppaisempia, jos etsit kiitotien valoja. Tässä on kuitenkin ensimmäinen yritykseni tehdä keltainen linssi. Linssin valmistuksessa aioin käyttää kirkasta hartsia värin lisäaineella, ja vaikka olen tehnyt muutaman muotin ennen kuin mietin, olisiko mahdollista tulostaa 3D -muotti ja käyttää sitä. Aloitin siten halkaistun muotin tekemisen 3D -muodossa ja tulostamisen PetG: llä. Hyvät määrät homeen vapautumista Olin vakuuttunut siitä, että se riittää muotin puhkeamiseen. Kuten käy ilmi parin yrityksen kanssa, tein hartsin tarttuneen muottiin liiman tavoin, eikä vain näyttänyt olevan mahdollista erottaa niitä. Vaikka minulla oli täysi mittakaava, jota aion käyttää, päätin sitä vastaan ja tulostin linssin käytettäväksi perinteisen silikonimuovauksen kanssa.
Vaihe 3: Erilaiset hartsityypit
Nopeasti sivuun, käytin 3 tyyppisiä kirkkaita/värillisiä hartseja tähän projektiin.
Ensimmäinen oli harrastusmyyntityyppi nimeltä Pebeo - Gedeo, ja sitä myydään yleensä pienten esineiden koteloimiseen ja koruihin ja pöytäpaperipainoihin jne. Tämä toimi melko hyvin ja kovettui hienosti noin 24-36 tunnissa. Se on kuitenkin melko kallis saamallesi summalle, mutta on kätevä ja helposti saatavilla harrastus- ja käsityöliikkeissä. Se sekoitetaan suhteessa 2: 1. Toinen oli esivärjätty hartsi, joka sekoitetaan 10: 1-suhteessa kovettimen kanssa, ja tämä kesti kovimmin, noin viikon ollakseen rehellinen, ennen kuin se oli täysin kovettunut. Viimeinen oli kirkasta hartsia, joka sekoitettiin myös suhteessa 2: 1 ja kovettui noin 2 päivässä. tekevät erät erikseen. Se toimii myös kustannustehokkaimmin. Lopuksi muotin RTV oli GP-3481 RTV, ja sen asettuminen kestää noin 24 tuntia, ja sen käyttöaika on melko pitkä, joten sinulla on paljon aikaa sekoittaa se ja kaataa se.
Tällä hetkellä minulla ei ole tyhjiöastiaa (tällä hetkellä tilauksessa), jotta voit kuplia sekä muotissa että hartsin kaatamisessa. Ei liikaa ongelmaa tähän, mutta kirkkaan linssin tai vastaavan kanssa haluat ajatella jollakin tavalla saadaksesi kuplat pois seoksista.
Vaihe 4: Linssin valaminen silikonimuottiin #2
Tämä on siis toinen yritys tehdä hartsilinssi, ja ensimmäinen vaihe oli valmistaa sekä Fusion 360 -objektiivi että tulostaa se ABS -muodossa sekä ämpäri sen pitämiseksi. Tämä olisi muotin ensimmäinen ja auttaa pitämään käytettävän silikonimäärän alhaalla. Voit tehdä tämän helposti kortista, mutta se on vain erilainen lähestymistapa. Antaakseni sille paremmat mahdollisuudet irrottautua muotista lakasin sen ensin ja sitten peitin sen hyvin vahan irrotusaineella.
Kaadoin sitten GP-3481: tä, joka on noin rannalla 27 oleva RTV, ja annoin sen asettua seuraavien 24 tunnin aikana ennen purkamista. Kun tämä oli tehty, käytin kirkasta hartsia sekoitettuna suhteessa 2: 1 noin 4/5 tippaan väripigmenttiä ja sekoitin sitä hyvin neljän minuutin ajan. Kaadettiin tämä muottiin ja asetettiin sitten lasilasi myös hartsiin, jotta myöhemmin muodostuu tyhjä tila joko lampulle tai LED -valolle. Noin 24 tunnin kuluttua tämä hartsi oli valmis poistettavaksi ja linssi tuli melko hyväksi. Siellä on ilmakuplia, mutta minulla ei vielä ole tyhjiöastiaa hartsin kaasun poistamiseen ennen kaatamista.
Vaihe 5: 3D -tulostus ja valmistelu
Malli on suunniteltu siten, että keskiosa liitetään pohjaan. Näin vältettiin naamiointi maalausprosessin aikana. Koko malli painettiin Hatchbox ABS: llä ja hiottiin. Alkaen 60 karkeudesta noin 800 karkeuteen antoi tälle mallille riittävän hyvän pinnan.
Vaihe 6: Asennus ja maalaus
Kun tulosteet on hiottu, se maalattiin korkealla pohjamaalilla. Kevyesti hiottu ja ruiskutettu sitten harmaalla pohjamaalilla. Pääosat maalattiin ford -signaalin keltaiseksi, ja sitten pohjaan käytettiin puronmaata vihreänä. Tamiya -hopean kohokohtia levitettiin pultteihin ja objektiivin pidikkeessä käytettiin jonkin verran molotow -hopeakromia.
Vaihe 7: Etsi ensin lentokoneet raja -alueelta
Kun laitteisto oli lajiteltu, ohjelmistoa oli käsiteltävä. Nyt on olemassa muutamia sivustoja, jotka tarjoavat lennon seurantaa, mutta ei monia, jotka tarjoavat sovellusliittymän näiden tietojen käyttämiseen. Jotkut tekevät niin vain kaupallisesti, mutta onneksi on yksi sivusto nimeltä https://opensky-network.org, jota voit käyttää ilmaiseksi.
Päästäksesi näihin tietoihin sinun on rekisteröidyttävä ja voit sitten käyttää niiden sovellusliittymää. Se tarjoaa useita toimintoja ja tapoja kerätä tietoja. Olemme kiinnostuneita kaikista alueen lennoista, ja heillä on Live API -kutsu siihen. https://opensky-network.org/apidoc/ nimeltään rajauslaatikko. Sovellusliittymäpuhelu vaatii sinua kiinnostavat laatikon kulmat, tietysti Lat/Lon keskipisteenä. Voit tarkistaa tämän sivuston matemaattiset työt, jotka piirtävät ruudun sen mukaan, mitä kirjoitat. Http://tools.geofabrik.de, mutta seuraava skripti antaa pisteet, jotka meidän on liitettävä sovellusliittymään.
funktio get_bounding_box ($ leveysaste_asteissa, $ pituusaste_asteet, $ half_side_in_miles) {$ half_side_in_km = $ half_side_in_miles * 1.609344; $ lat = deg2rad ($ latitude_in_degrees); $ lon = deg2rad ($ longitude_in_degrees); $ säde = 6371; $ parallel_radius = $ säde*cos ($ lat); $ lat_min = $ lat - $ half_side_in_km/$ säde; $ lat_max = $ lat + $ half_side_in_km/$ säde; $ 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); return array ($ box_lat_min, $ box_lon_min, $ box_lat_max, $ box_lon_max);
Jos haluat testata koodisi, on sivusto, jossa voit syöttää lat ja lon ja nähdä tulokset kartalla: Katso esimerkki rajausruudusta
Vaihe 8: Koneiden suunnan laskeminen suhteessa meihin
Rajoituslaatikon sovellusliittymän tulokset antavat meille luettelon lentokoneista, niiden lontoista, latista, nopeudesta, korkeudesta ja suunnasta. Joten seuraava asia, joka meidän on tehtävä, on hankkia jokaisen tason suunta suhteessa meihin, jotta voimme käsitellä edelleen niitä, jotka ovat menossa ainakin yleiseen suuntaan. Voimme tehdä tämän tietäen sijaintimme ja selvittää kulman meistä jokaiseen tasoon.
Käytän tätä varten koodia, joka oli alun perin Javascriptissa, joten muutin sen täällä PHP: ksi, * laske (alku) suhde kahden pisteen välillä * * lähteestä: Ed Williamsin ilmailukaava, 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 = syn ($ dLon) * cos ($ lat2);
$ x = cos ($ lat1)*sin ($ lat2) - sin ($ lat1)*cos ($ lat2)*cos ($ dLon); $ z = atan2 ($ y, $ x); $ zz = (rad2deg ($ z) +360)% 360; palauta $ zz;
Jos haluat katsoa sivua, jolla on alkuperäiset javascript -versiot, tämä on linkki:
Koodin sisällä näet myös kunkin laskentatyypin eri alirutiinit.
Vaihe 9: Katkaisun laskeminen katsomalla ympyrää
Joten meillä on nyt taso, jossa sen ja sijaintimme välinen suuntima on alle 90 (joko positiivinen tai negatiivinen), joten tämä tarkoittaa, että se voi lentää lähellä. Käyttämällä hasrsine -kaavaa voimme myös selvittää käyttämällä koneen Lon/Lat ja kotimme Lon/Lat etäisyyttä, joka on kaukana meistä.
Kaaviosta katsottuna, jos piirrämme ympyrän talomme ympärille noin 3 mailin säteellä, tämä antaa meille mahdollisuuden nähdä kaiken lentävän yli. Tiedämme tason ja meidän välisen suunnan eron, tiedämme myös tason etäisyyden meistä, jotta voimme sitten selvittää kolmion käyttämällä vanhaa hyvää SOHCAHTOA: ta ja tässä tapauksessa käyttämällä kulman Tan -arvoa vastakkaisen sivun pituus. Joten jos vertaamme tätä arvoa talon ympärillä olevan ympyrän sädearvoon, voimme sitten selvittää, lentääkö kone riittävän lähellä, jotta voimme nähdä sen. Seuraava bitti, jonka voimme tehdä, on selvittää aika, jonka kone lentää ohi käyttämällä ilman nopeutta ja etäisyyttä ja jos tämä on alle 45 sekuntia, sytytämme valon. Tämä on vähän koodia, jota käytän selvittääkseni mahdollisuuden lentää yli. Teen tämän, koska lähellä on lentokenttä ja kun koneet rullaavat ympäri, ne osoittavat väistämättä taloa. Kuitenkin, koska niiden korkeus on nolla ja nopeus kävelee vauhtia, tämän ei pitäisi laukaista hälytystä.
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 = rusketus ($ flight_angle_r); $ flight_intercept = $ flight_angle_t * $ plane_distance;
if (($ flight_angle <90) && ($ flight_intercept <3)) {// mahdollista lentää ohi
}
return $ flight_intercept;
}
Vaihe 10: Kartan kahden pisteen välinen etäisyys - Haversine -kaava
Joten meidän on laskettava etäisyys koneen ja sijaintimme välillä. Lyhyillä etäisyyksillä kartalla voit laskea etäisyyden suunnilleen, mutta koska maa on pallomainen, on olemassa kaava nimeltä hasrsine -kaava, jonka avulla voit ottaa huomioon kaarevan pinnan. Voit lukea lisää kaavasta:
Nyt kun etäisyys on laskettu ja tiedämme lentokoneen nopeuden, voimme selvittää, kuinka monta sekuntia kestää ennen kuin kone on yläpuolella. Joten valo syttyy, jos jotain tapahtuu 30 sekunnin sisällä flypastista ja meillä on vihdoin varoitusvalo.
* perustuu 0n JS: ään osoitteessa instantglobe.com/CRANES/GeoCoordTool.html ja muutettiin PHP: ksi */
function get_distHaversine ($ home_lat, $ home_lon, $ plane_lat, $ plane_lon) {$ R = 6371; // maan keskimääräinen säde km $ dLat = deg2rad ($ plane_lat- $ home_lat); $ dLon = deg2rad ($ plane_lon- $ home_lon); $ lat1 = deg2rad ($ home_lat); $ lat2 = deg2rad ($ plane_lat);
$ a = syn ($ 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; palauta $ d; }
Vaihe 11: Tasotietokannan tuominen ja määrittäminen
Yksi muista osista on, että opensky -sivusto tarjoaa ladattavan tietokannan lentokoneista sekä niiden kutsumerkit ja tunnukset. Siinä on useita satojatuhansia merkintöjä. Joten voimme ladata tämän ja ladata sen paikallisesti MariaDB -tietokantaan hakua varten (MySQL). Noudamme jokaisen yläpuolella näkyvän koneen tiedot ja päivitämme laskurin, joka näyttää kuinka monta kertaa se on nähty.
Olen myös parhaillaan muokkaamassa tietokantaa korostaakseni kiinnostavia lentokoneita. Pääasiassa vanhat sotalinnut ja muut vastaavat mielenkiintoiset koneet. Pari kertaa tänä kesänä Mig-15 on lentänyt yli. joten tavoitteena on käyttää lisättyä hälytyskenttää ja vilkuttaa sitten valoa nopeasti, kun jotain mielenkiintoista on menossa
Vaihe 12: Tulosten ja uusien ominaisuuksien parantaminen
Joten teoriassa kaikki toimii melko hyvin, mutta tietojen perusteella huomaat, että on lentokoneita, jotka lentävät yli, jotka eivät näy sovellusliittymässä.
Tämä johtuu siitä, että kaikki koneet eivät käytä ADS-B-transponderia eivätkä käytä vanhempia MLAT-pohjaisia transpondereita. MLAT -tekniikkaa käyttävien lentokoneiden sijaintitietojen saamiseksi tarvitaan joukko maan päällä olevia vastaanottimia, jotta niiden sijainti voidaan kolmioida, ja joillakin sivustoilla, kuten flightradar24: llä, on suurempi avustajien verkosto, joka tekee tämän verrattuna openskyyn. Toivottavasti niiden kattavuus paranee ajan myötä, ja aion perustaa oman MLAT -vastaanottimen lisättäväksi näihin tietoihin.
Vaihe 13: Codebase
Älä unohda, jos aiot käyttää tätä, haluat ehkä poistaa SQL -käskyt, jos sinulla ei ole lentokoneiden tietokantaa, ja lisätä myös oma Lon/Lat -arvo ja API -avain lentotietojen käyttämiseen.
github.com/ajax-jones/runway-light-awacs
define ("INTERVAL", (20 * 1)); function fexp () {$ lat = "leveysasteesi"; $ lon = "pituusaste"; $ puoli = 15,75; $ box = get_bounding_box ($ lat, $ lon, $ side); $ latmin = $ laatikko [0]; $ lonmin = $ laatikko [1]; $ latmax = $ laatikko [2]; $ lonmax = $ laatikko [3]; $ flyurl = "https://opensky-network.org/api/states/all?lamin=$latmin&lomin=$lonmin&lamax=$latmax&lomax=$lonmax"; echo "SKY SKANING"; $ start_time = mikroaika (tosi); $ json = file_get_contents ($ flyurl); $ data = json_decode ($ json, TRUE); $ saapuva = EPÄTOSI; $ num_planes = count ($ data ['state']); if ($ num_planes> 0) {echo "ja voimme nähdä $ num_planes -tasot / n"; for ($ x = 0; $ x 0) {$ plane_eta = $ distplane/$ air_speed_kmh; } muu {$ eta = 1; } if ((($ intercept) 0)) && ($ distplane0) {$ Inbound = TRUE; kaiku "------------------------------------------------ -------------------- / n "; echo "$ icao24 - [$ country $ kutsumerkki] kohdassa [$ geo_altitude_m M - $ geo_altitude_f ft]"; echo "[speed $ air_speed_kmh kmh and", round ($ distplane, 1), "km away] n"; echo "[otsikossa", pyöreä ($ plane_heading, 1), "] [homeangle $ head_d]"; echo "[$ leveysaste, $ pituusaste] n"; echo "[flypast in", desimaalien_aika ($ plane_eta), "nyt", pyöreä ($ intercept, 1), "km away / n"; kaiku "------------------------------------------------ -------------------- / n "; $ DBi = new mysqli ("127.0.0.1", "root", "your password", "waitcs"); $ sql = "valitse * lentokonetietokannasta, jossa` icao24` = '$ icao24' "; mysqli_set_charset ($ DBi, "utf8"); $ getplanedata = mysqli_query ($ DBi, $ sql) tai kuole (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 ['rekisteröinti']; echo "on"; echo $ row_getplanedata ['valmistajanimi']; kaiku ""; echo $ row_getplanedata ['malli']; kaiku "by"; echo $ row_getplanedata ['Manufacturericao']; kaiku "omistaa"; echo $ row_getplanedata ['omistaja']; kaiku "nähty"; echo $ row_getplanedata ['vierailut']; kaiku "ajat"; echo "erikoisluokitus ="; echo $ row_getplanedata ['erityinen']; kaiku "\ n"; $ käynnit = $ row_getplanedata ['vierailut']+1; } while ($ row_getplanedata = mysqli_fetch_assoc ($ getplanedata)); mysqli_free_result ($ getplanedata); $ sqli = "PÄIVITÄ lentotietokannan SET -vierailut = $ käyntiä WHERE icao24 = '$ icao24'"; mysqli_set_charset ($ DBi, "utf8"); $ updateplanedata = mysqli_query ($ DBi, $ sqli) tai kuole (mysqli_error ($ DBi)); } else {echo "Tätä tasoa ei löytynyt tietokannasta, joten sen lisääminen"; $ sqli = "INSERT INTO lentotietokantaan (icao24, vierailut, erikoisarvot) ARVOT ('$ icao24', 1, 1)"; $ updateplanedata = mysqli_query ($ DBi, $ sqli) tai kuole (mysqli_error ($ DBi)); } kaiku "----------------------------------------------- --------------------- / n "; } else {// echo "$ kutsumerkki"; }}} else {echo "ja taivas on kirkas / n"; } if ($ saapuva) {echo "Saapuva taso / n"; $ command = "siat w 17 1"; execInBackground ($ -komento); } else {echo "ei saapuvia lentoja / n"; $ command = "siat w 17 0"; execInBackground ($ -komento); }} funktio desimaalilukuaika ($ desimaali) {$ offset = 0,002778; if ($ desimaali> $ offset) {$ decimal = $ desimaali - 0,002778; } $ hours = gmdate ('H', kerros ($ desimaali * 3600)); $ minutes = gmdate ('i', kerros ($ desimaali * 3600)); $ sekuntia = gmdate ('s', kerros ($ desimaali * 3600)); return str_pad ($ hours, 2, "0", STR_PAD_LEFT). ":". str_pad ($ minuuttia, 2, "0", STR_PAD_LEFT). ":". str_pad ($ sekuntia, 2, "0", STR_PAD_LEFT); }/ * * laske (ensimmäinen) suhde kahden pisteen välillä * *: Ed Williamsin ilmailukaava, 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 = syn ($ dLon) * cos ($ lat2); $ x = cos ($ lat1)*sin ($ lat2) - sin ($ lat1)*cos ($ lat2)*cos ($ dLon); $ z = atan2 ($ y, $ x); $ zz = (rad2deg ($ z) +360)% 360; palauta $ zz; } funktio 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 = rusketus ($ flight_angle_r); $ flight_intercept = $ flight_angle_t * $ plane_distance; return $ flight_intercept; } /* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - *// * * Laske Haversinen kaavalla etäisyys (km) kahden leveys-/pituuspiirin (numeerisina asteina) * * määrittämien pisteiden välillä: * Haversinen kaava - RWSinnott, "Virtues of the Haversine", * Sky and Telescope, osa 68, nro 2, 1984 * https://williams.best.vwh.net/avform.htm#Crs * * esimerkkikäyttö lomakkeesta: * result.value = LatLon.distHaversine (lat1.value.parseDeg (), long1.value.parseDeg (), * lat2.value.parseDeg (), long2.value.parseDeg ()); * missä lat1, long1, lat2, long2 ja tulos ovat lomakekenttiä * source = instantglobe.com/CRANES/GeoCoordTool.html */function get_distHaversine ($ home_lat, $ home_lon, $ plane_lat, $ plane_lon) {$ R = 6371; // maan keskimääräinen säde km $ dLat = deg2rad ($ plane_lat- $ home_lat); $ dLon = deg2rad ($ plane_lon- $ home_lon); $ lat1 = deg2rad ($ home_lat); $ lat2 = deg2rad ($ plane_lat); $ a = syn ($ 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; palauta $ d; } funktio get_bounding_box ($ leveysaste_asteissa, $ pituusaste_aste, $ half_side_in_miles) {$ half_side_in_km = $ half_side_in_miles * 1.609344; $ lat = deg2rad ($ latitude_in_degrees); $ lon = deg2rad ($ longitude_in_degrees); $ säde = 6371; # Rinnakkaisuuden säde tietyllä leveysasteella; $ parallel_radius = $ säde*cos ($ lat); $ lat_min = $ lat - $ half_side_in_km/$ säde; $ lat_max = $ lat + $ half_side_in_km/$ säde; $ 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); return 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")); } else {exec ($ cmd. "> /dev /null &"); }} function checkForStopFlag () {// täysin valinnainen palautus (TRUE); } toiminto start () {echo "start / n"; $ command = "siat w 17 1"; execInBackground ($ -komento); $ aktiivinen = TOSI; while ($ active) {usleep (1000); // valinnainen, jos haluat olla huomaavainen if (microtime (true)> = $ nextTime) {fexp (); $ nextTime = mikroaika (tosi) + INTERVAL; } $ aktiivinen = checkForStopFlag (); }} fexp (); alkaa(); ?>
Vaihe 14: LEDin ja sammutuskytkimen kytkentä
Tämän projektin johdotus ei voisi olla yksinkertaisempaa. On vain yksi LED, joka on kytketty nastaan 17 ja maadoitettu 270R -vastuksella.
Mukana on myös sammutus- ja käynnistyspainike sekä virran merkkivalo, joka palaa TXd -datanapista. Voit lukea lisää sammutustoiminnosta ja tarvittavasta koodista osoitteesta https://github.com/Howchoo/pi-power-button.git sivustolta https://howchoo.com/g/mwnlytk3zmm/how-to- add-a-pow… Voit lukea virtavalon lisäämisestä täältä
Suositeltava:
RADAR Lidar System VL53L0X Laser-lennon kesto: 9 vaihetta
RADAR Lidar System VL53L0X Laser-Time of-Flight: Tässä opetusohjelmassa opimme tekemään RADAR Lidar -järjestelmän VL53L0X-laser-aika-anturin avulla Katso video
Vilkkuva LED -valo käyttämällä 555 -ajastinta ja potentiometrejä: 4 vaihetta
Vilkkuva LED -valo käyttämällä 555 -ajastinta ja potentiometrejä: Tervehdys! Tässä ohjeessa näytämme sinulle, kuinka rakentaa LED -himmenninpiiri, joka toimii säädettävällä ajasilmukalla käyttämällä potentiometriä, 555 -ajastinta ja muita peruspiirin komponentteja. Saimme idean hankkeesta ensin
STM32L100 Vilkkuva LED -valo käyttämällä Atollic TrueSTUDIO ja STM32CubeMX: 5 vaihetta
STM32L100 Vilkkuva LED Atollic TrueSTUDIO: n ja STM32CubeMX: n avulla: Tässä projektissa kerron sinulle, kuinka LED -valo vilkkuu 32L100discoveryn avulla. Joten tässä aion kertoa sinulle tämän vilkkuva led -opetusohjelman toimintaperiaatteesta ja myös siitä, millaisia ohjelmistoja ja laitteistoja tarvitset
Sarja -LED -valo käyttämällä monivärisiä LED -valoja: 3 vaihetta (kuvien kanssa)
Sarja -LED -valo käyttämällä monivärisiä LED -valoja: Sarja -LED -valo ei ole niin kallis, mutta jos olet DIY -rakastaja (harrastaja) kuten minä, voit tehdä omia sarja -LED -valoja ja se on halvempaa kuin markkinoilla oleva valo. aion tehdä oman sarja -LED -valon, joka toimii 5 volttia
Musiikin reaktiivinen valo -- Kuinka tehdä erittäin yksinkertaisesta musiikista reaktiivinen valo, jotta työpöytä olisi mukava: 5 vaihetta (kuvilla)
Musiikin reaktiivinen valo || Kuinka tehdä erittäin yksinkertaisesta musiikista reaktiivinen valo työpöydän herkullisen tekemiseen: Hei mitä kuuluu kaverit, Tänään rakennamme erittäin mielenkiintoisen projektin. Tänään rakennamme musiikin reaktiivista valoa. LED muuttaa kirkkauttaan basso, joka on itse asiassa matalataajuinen audiosignaali. Se on hyvin yksinkertainen rakentaa, me