Sisukord:

Varajase hoiatamise vaarika PI lennuraja tuli lennukaardiandmete abil: 14 sammu (koos piltidega)
Varajase hoiatamise vaarika PI lennuraja tuli lennukaardiandmete abil: 14 sammu (koos piltidega)

Video: Varajase hoiatamise vaarika PI lennuraja tuli lennukaardiandmete abil: 14 sammu (koos piltidega)

Video: Varajase hoiatamise vaarika PI lennuraja tuli lennukaardiandmete abil: 14 sammu (koos piltidega)
Video: Külmast Võetud - ameerika 2024, Juuli
Anonim
Varajase hoiatamise vaarika PI lennuraja tuli lennukaardiandmete abil
Varajase hoiatamise vaarika PI lennuraja tuli lennukaardiandmete abil
Varajase hoiatamise vaarika PI lennuraja tuli lennukaardiandmete abil
Varajase hoiatamise vaarika PI lennuraja tuli lennukaardiandmete abil
Varajase hoiatamise vaarika PI lennuraja tuli lennukaardiandmete abil
Varajase hoiatamise vaarika PI lennuraja tuli lennukaardiandmete abil
Varajase hoiatamise vaarika PI lennuraja valgus, kasutades lennukaardiandmeid
Varajase hoiatamise vaarika PI lennuraja valgus, kasutades lennukaardiandmeid

See lamp tekkis mitmel põhjusel, sest mind huvitavad alati lennukid, mis lendavad pea kohal ja suvel nädalavahetustel lendavad sageli päris põnevad. Kuigi te kipute neid kuulma ainult mööda minnes. Teine põhjus on see, et tundub, et London City lennujaamast väljuvate lennukite lennutrajektoor jääb mõnikord pealtkuulatavaks ja neil on käimas üsna mürarikkad lennud. Kuna ma tegelen mõne YouTube'i video salvestamisega, on mürarikka lennuki tõttu tõesti tüütu salvestise mahavõtmine. Seega mõtlesin, kas sellised saidid nagu flightradar24 nähtavad andmed on avalikult kättesaadavad, kui avastasin, et midagi sarnast on Openky võrgust saadaval, sündis varajane hoiatustuli. Ei läinud kaua aega, kui tulime ideele kasutada projekti majutamiseks lennuraja tule koopiat.

Lisateavet OpenSky võrgustiku kohta leiate veebisaidilt https://www.opensky-network.org. Tahtsin ka seekord teha poolläbipaistva PLA asemel kena vaigust läätse ja kuigi mul on ADS-B vastuvõtja, tahtsin seda hoida see lihtne ja odav. ADS-B vajab ka antenni ja see ei teeks lampi kontoris riiulile. Nii et loodetavasti leiate selle ehitise huvitavaks, kuna see hõlmab ka 3D -printimist, vaigu vormimist ja matemaatikat, et ekstrapoleerida õhusõidukite positsioone, mis võivad potentsiaalselt pea kohal kulgeda.

Samm: korpuse kujundamine

Google'i otsing pakub välja palju erinevaid rajalampide kujundusi ja selle kujundus tehti, kasutades disainimõjusid paljudest erinevatest pärislampidest. Samuti on skaleeritud istuda toas või riiulil, mitte täissuuruses, kuna need kipuvad päriselus palju suuremad olema.

Kujundused koostati Fusion 360 -s ja ma importisin varasematest projektidest mõned varasemad elemendid, näiteks vaarika pi nullhoidja. Elementide taaskasutamise võimalus võtab põhitõdede mahavõtmisest palju peavalu. Failid saate alla laadida ka siit

2. samm: läätsede valamine - #fail

Objektiivide valamine - #ebaõnnestus
Objektiivide valamine - #ebaõnnestus
Objektiivide valamine - #ebaõnnestus
Objektiivide valamine - #ebaõnnestus
Objektiivide valamine - #ebaõnnestus
Objektiivide valamine - #ebaõnnestus

Selle lambi kõige olulisem disainielement oli objektiiv. Nii et ma tegelesin sellega kõigepealt, kuna ilma kena autentse välimusega klaasita projekt toimis. Dokumenteerin siin ebaõnnestumisi, mis mul selle saavutamisel olid, hoolimata sellest, et otsustasin ka esialgu läätse merevaiguks muuta. Rajatulesid on nii merevaigukollast kui sinist värvi ja alles pärast seda, kui olin hakanud merevaiku tegema, muutsin meelt ja otsustasin, et tahan sinist.

Nagu ma aru saan, kasutatakse merevaiku hoidmisjoonel ja siniseid kasutatakse raja rajamiseks ning need on need, mis tunduvad olevat arhetüüpsemad, kui otsite raja tulesid. Siin on aga minu esimene katse teha merevaigukollane lääts. Objektiivi valmistamiseks kavatsesin kasutada värvilisandiga läbipaistvat vaiku ja ehkki olen teinud paar vormi enne, kui mõtlesin, kas on võimalik 3D -vormi printida ja seda kasutada. Alustasin siis 3D -vormis split -vormi tegemisest ja PetG -s välja printimisest. Mõistlikul hulgal hallitust vabanemisest olin veendunud, et piisab hallituse tekkeks. Nagu paari katsega selgub, tegin vaigu vormi külge liimina kinni ja lihtsalt ei tundunud võimalik neid eraldada. Kuigi mul oli täisskaala, mida kavatsesin kasutada, otsustasin selle vastu ja prindisin välja läätse, mida kasutada traditsioonilise silikoonvormimisega.

Samm: erinevat tüüpi vaigud

Erinevat tüüpi vaigud
Erinevat tüüpi vaigud
Erinevat tüüpi vaigud
Erinevat tüüpi vaigud
Erinevat tüüpi vaigud
Erinevat tüüpi vaigud
Erinevat tüüpi vaigud
Erinevat tüüpi vaigud

Kiireks kõrvalejätmiseks kasutasin selle projekti jaoks 3 tüüpi läbipaistvaid/värvilisi vaiku.

Esimene oli hobituru tüüp nimega Pebeo - Gedeo ja seda müüakse tavaliselt väikeste esemete kapseldamiseks ning kasutatakse ehete ja laua paberimasside jaoks jne. See toimis päris hästi ja kõvenes kenasti umbes 24-36 tunniga. See on siiski üsna kallis selle summa eest, mida saate, kuid on käepärane ja hõlpsasti kättesaadav hobi- ja käsitööpoodides. See segatakse suhtega 2: 1. Teine oli eelvärvitud vaik, mida segati kõvendiga suhtega 10: 1 ja selle kõvenemine võttis aega kõige kauem, ausalt öeldes umbes nädal enne täielikku kõvenemist. Viimane oli läbipaistev vaik, mis oli samuti segatud vahekorras 2: 1 ja kõvenes umbes 2 päevaga, saate seda värvida pigmenditilkadega, kuid peate veenduma, et kasutate alati sama värvisuhet teevad eraldi partiisid. See töötab ka kõige kulutõhusamalt. Lõpuks oli vormi RTV GP-3481 RTV ja selle seadistamiseks kulub umbes 24 tundi ning sellel on üsna pikk nõud, nii et teil on piisavalt aega selle segamiseks ja valamiseks.

Praegu ei ole mul vacumn potti (praegu tellimisel), nii et teid saaksid mullid nii vormis kui ka vaigu valamisel. See pole liiga suur probleem, kuid selge objektiivi või muu sarnase korral tahaksite mõelda, kuidas mullid segudest välja saada.

4. samm: läätse valamine silikoonvormi #2

Image
Image
Objektiivi valamine silikoonvormis #2
Objektiivi valamine silikoonvormis #2
Objektiivi valamine silikoonvormis #2
Objektiivi valamine silikoonvormis #2

Nii et see on teine katse vaiguläätse valmistamiseks ja esimene etapp oli teha nii objektiiv Fusion 360 -s ja seejärel printida see nii ABS -is kui ka ämber selle hoidmiseks. See oleks vormi jaoks esimene ja aitab kasutada kasutatava silikooni kogust. Saate selle hõlpsalt kaardist teha, kuid see on lihtsalt erinev lähenemisviis. Suurema võimaluse saamiseks vormist vabanemiseks lakkisin selle esmalt lakiga ja seejärel katsin hästi vaha vabastava ainega.

Seejärel valasin GP-3481, mis asub umbes kaldal 27 RTV, ja lasin sellel järgmise 24 tunni jooksul enne lahtivõtmist seista. Kui see oli tehtud, kasutasin selget vaiku, mis oli segatud suhtega 2: 1, umbes 4/5 tilga värvipigmendiga ja segasin seda hästi neli minutit. Valasid selle vormi ja asetasid seejärel ka vaiguklaasi, et hiljem tühimik lambi või valgusdioodide jaoks. Umbes 24 tunni pärast oli see vaik eemaldamiseks valmis ja lääts tuli päris hea välja. Seal on õhumulle, kuid siiani pole mul vaakumahutit, millega vaigu enne valamist degaseerida.

Samm: 3D -printimine ja ettevalmistamine

3D printimine ja ettevalmistamine
3D printimine ja ettevalmistamine
3D printimine ja ettevalmistamine
3D printimine ja ettevalmistamine
3D printimine ja ettevalmistamine
3D printimine ja ettevalmistamine

Mudel oli konstrueeritud nii, et keskosa ühendati alusega. Selle eesmärk oli vältida maskeerimist värvimisprotsessi ajal. Kogu mudel trükiti Hatchbox ABS -i ja seejärel lihviti. Alustades 60 -st kuni umbes 800 -st, andis selle mudeli jaoks piisavalt hea pinnaviimistluse.

6. etapp: kokkupanek ja värvimine

Montaaž ja värvimine
Montaaž ja värvimine
Montaaž ja värvimine
Montaaž ja värvimine
Montaaž ja värvimine
Montaaž ja värvimine

Kui väljatrükid on lihvitud, värviti see seejärel mõne suure ehitusega kruntvärviga. Kergelt lihvitud ja seejärel pritsitud halli kruntvärviga. Peamised osad värviti ford -signaalkollaseks ja seejärel kasutati aluse jaoks rohelisi rohelisi. seejärel kanti poltidele tamiya hõbedased toonid ja läätsehoidikul kasutati molotow hõbedast kroomi.

7. samm: leidke esmalt piiritletud alalt lennukid

Kui riistvara on sorteeritud, tuli tarkvaraga edasi töötada. Praegu on paar saiti, mis pakuvad lennu jälgimist, kuid mitte paljud, mis pakuvad API -d nendele andmetele juurdepääsuks. Mõned, kes seda teevad, teevad seda ainult ärilistel alustel, kuid õnneks on üks sait nimega https://opensky-network.org, mida saate tasuta kasutada.

Nendele andmetele juurdepääsuks peate registreeruma ja seejärel saate kasutada nende API -d. See pakub mitmeid funktsioone ja viise andmete tõmbamiseks. Oleme huvitatud kõikidest lendudest piirkonnas ja neil on selleks Live API kutse. https://opensky-network.org/apidoc/ nimetatakse piirdeks. API -kõne jaoks on vaja teid huvitavaid kasti nurki, mille keskpunktiks on loomulikult meie Lat/Lon. Saate kontrollida, kas sellel saidil töötab matemaatika, mis joonistab kasti sõltuvalt sellest, mida sisestate."

funktsioon 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 ($ pikkuskraadid_kraadides); $ raadius = 6371; $ paralleelraadius = $ raadius*cos ($ lat); $ lat_min = $ lat - $ half_side_in_km/$ raadius; $ lat_max = $ lat + $ half_side_in_km/$ raadius; $ 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); tagastamismassiiv ($ box_lat_min, $ box_lon_min, $ box_lat_max, $ box_lon_max);

Kui soovite oma koodi testida, on sait, kuhu saate sisestada lati/lonti ja vaadata tulemusi kaardil: Vaadake piiril oleva kasti näidet kaardil

8. samm. Lennukite kursi arvutamine seoses meiega

Lennukite suuna arvutamine seoses meiega
Lennukite suuna arvutamine seoses meiega

Piirangukasti API kõne tulemused annavad meile lennukite loendi, nende pikkuse/lati, kiiruse, kõrguse ja suuna. Järgmine asi, mida me peame tegema, on hankida iga taseme suund meie suhtes, et saaksime edasi töödelda neid, mis on vähemalt meie üldises suunas liikumas. Me saame seda teha, kui me teame oma positsiooni ja saame välja arvutada nurga meist iga tasapinna suhtes.

Selleks kasutan kooditükki, mis oli algselt Javascriptis, nii et teisendasin selle siin PHP -ks, * arvutage (esialgne) kandevõime kahe punkti vahel * *: Ed Williamsi lennunduse vormel, https://williams.best.vwh.net/avform.htm#Crs * source = instantglobe.com/CRANES/GeoCoordTool.html */ funktsioon get_bearing ($ home_lat, $ home_lon, $ plane_lat, $ plane_lon) {$ lat1 = deg2rad ($ home_lat); $ lat2 = deg2rad ($ lennuk_lat);

$ dLon = deg2rad ($ plane_lon- $ home_lon);

$ y = patt ($ dLon) * cos ($ lat2);

$ x = cos ($ lat1)*sin ($ lat2) - sin ($ lat1)*cos ($ lat2)*cos ($ dLon); $ z = atan2 ($ y, $ x); $ zz = (rad2deg ($ z) +360)% 360; tagasta $ zz;

Kui soovite vaadata lehte, kus on JavaScripti algsed versioonid, on see link:

selle koodi sees näete ka igat tüüpi arvutuste jaoks erinevaid alamrutiine.

9. samm: lõikepunkti arvutamine ringi vaadates

Lõikamise arvutamine ringi vaadates
Lõikamise arvutamine ringi vaadates

Seega on meil nüüd lennuk, kus selle ja meie asukoha vaheline laager on alla 90 (kas positiivne või negatiivne) ja see tähendab, et on võimalus, et see võib lähedusse lennata. Kasutades harsiinivalemit, saame välja mõelda ka lennuki piki/lati ja meie maja piki/lati, kui kaugel see meist on.

Diagrammi vaadates, kui joonistame oma maja ümber umbes 3 miili raadiusega ringi, annab see meile võimaluse näha kõike, mis üle lendab. Me teame tasapinna ja meie vahelise suuna erinevust, teame ka tasapinna kaugust meist, et saaksime kolmnurga välja töötada vana hea SOHCAHTOA abil ja sel juhul nurga Tan abil. vastaskülje pikkus. Seega, kui võrrelda seda väärtust maja ümber asuva ringi raadiuse väärtusega, saame teada, kas lennuk lendab piisavalt lähedale, et seda näha. Järgmine asi, mida saame teha, on õhu kiiruse ja vahemaa abil välja mõelda aeg, millest lennuk mööda lendab, ja kui see on vähem kui umbes 45 sekundit, lülitame tule sisse. See on natuke koodi, mida kasutan ülelendamise võimaluse väljaselgitamiseks. Teen seda, kuna lähedal on lennujaam ja kui lennukid ümber taksosõidavad, osutavad nad paratamatult maja poole. Kuid kuna nende kõrgus on null ja kiirus kõnnib, ei tohiks see häiret käivitada.

funktsioon 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 * $ plane_distance;

if (($ flight_angle <90) && ($ flight_intercept <3)) {// võimalik mööda lennata

}

return $ flight_intercept;

}

Samm 10: Kaugus kahe punkti vahel kaardil - Haversine'i valem

Kaugus kahe punkti vahel kaardil - Haversine'i valem
Kaugus kahe punkti vahel kaardil - Haversine'i valem

Seega peame arvutama kauguse lennuki ja meie asukoha vahel. Kaardil lühikeste vahemaade korral saate kauguse ligikaudselt arvutada, kuid kuna Maa on kerakujuline, on olemas valem nimega hasrsine -valem, mis võimaldab teil arvestada kõverpinnaga. Valemist saate edasi lugeda:

Nüüd, kui on arvutatud vahemaa ja me teame lennuki kiirust, saame välja mõelda, mitu sekundit kulub lennuki pea kohal. Seega süttib tuli, kui 30 sekundi jooksul pärast lendu möödumist on midagi ja lõpuks on meie hoiatustuli käes.

* põhineb 0n JS -il saidil instantglobe.com/CRANES/GeoCoordTool.html ja muudeti PHP -ks */

funktsioon get_distHaversine ($ home_lat, $ home_lon, $ plane_lat, $ plane_lon) {$ R = 6371; // Maa keskmine raadius km-des $ dLat = deg2rad ($ lennuk_lat- $ home_lat); $ dLon = deg2rad ($ plane_lon- $ home_lon); $ lat1 = deg2rad ($ home_lat); $ lat2 = deg2rad ($ lennuk_lat);

$ a = patt ($ 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; tagasta $ d; }

11. samm: tasapinna andmebaasi importimine ja määratlemine

Üks muudest osadest on see, et opensky sait pakub allalaaditavat lennukite andmebaasi koos nende kutsungite ja tunnusmärkidega. Selle mitusada tuhat sissekannet. Nii saame selle alla laadida ja kohalikult MariaDB andmebaasi otsida (MySQL). Iga lennukiga, mis ilmub pea kohal, otsime selle üksikasjad ja värskendame loendurit, et näidata, mitu korda seda on nähtud.

Samuti toimetan praegu andmebaasi, et tõsta esile lennukid, mis mind huvitavad. Peamiselt vanad sõjalinnud ja muud sarnased huvitavad lennukid. Paar korda sel suvel on Mig-15 üle lennanud. seega on eesmärk kasutada minu lisatud hoiatusvälja ja seejärel vilkuda kiiresti, kui midagi huvitavat üle läheb

12. samm: tulemuste ja uute funktsioonide parandamine

Tulemuste ja uute funktsioonide parandamine
Tulemuste ja uute funktsioonide parandamine
Tulemuste ja uute funktsioonide parandamine
Tulemuste ja uute funktsioonide parandamine
Tulemuste ja uute funktsioonide parandamine
Tulemuste ja uute funktsioonide parandamine

Nii et teoreetiliselt töötab kõik päris hästi, kuid andmete põhjal leiate, et on lennukeid, mis lendavad üle ja mida API -s ei kuvata.

Seda seetõttu, et mitte kõik lennukid ei kasuta ADS-B transponderit ega kasuta vanemaid MLAT-põhiseid transpondereid. MLAT -i kasutavate õhusõidukite positsiooniandmete saamiseks on vaja oma asukoha kolmnurga määramiseks kohapeal asuvaid vastuvõtjaid ja mõnel saidil, nagu flightradar24, on suurem panustajavõrgustik, kes teeb seda võrreldes OpenSky -ga. Loodetavasti paraneb aja jooksul ka nende leviala ja seadistan nende andmete lisamiseks oma MLAT -vastuvõtja.

13. samm: koodibaas

Ärge unustage, kui kavatsete seda kasutada, võiksite SQL -avaldused eemaldada, kui teil pole lennukite andmebaasi, ning lisada lennuandmetele juurdepääsu saamiseks ka oma Lon/Lat väärtus ja API -võti.

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

define ("INTERVAL", (20 * 1)); function fexp () {$ lat = "teie laiuskraad"; $ lon = "teie pikkuskraad"; $ pool = 15,75; $ box = get_bounding_box ($ lat, $ lon, $ pool); $ latmin = $ kast [0]; $ lonmin = $ kast [1]; $ latmax = $ kast [2]; $ lonmax = $ kast [3]; $ flyurl = "https://opensky-network.org/api/states/all?lamin=$latmin&lomin=$lonmin&lamax=$latmax&lomax=$lonmax"; kaja "Taeva skaneerimine"; $ start_time = mikrotaeg (tõene); $ json = file_get_contents ($ flyurl); $ data = json_decode ($ json, TRUE); $ sissetulev = FALSE; $ num_planes = count ($ data ['state']); if ($ num_planes> 0) {echo "ja näeme $ num_planes tasapindu / n"; jaoks ($ x = 0; $ x 0) {$ plane_eta = $ distplane/$ air_speed_kmh; } muu {$ eta = 1; } kui ((($ pealtkuulamine) 0)) && ($ distplane0) {$ sissetulev = TRUE; kaja "------------------------------------------------ -------------------- / n "; echo "$ icao24 - [$ country $ kutsung] asukohas [$ geo_altitude_m M - $ geo_altitude_f ft]"; echo "[speed $ air_speed_kmh kmh and", round ($ distplane, 1), "km away] n"; echo "[rubriigi kohta", ümmargune ($ plane_heading, 1), "] [homeangle $ title_d]"; echo "[$ laiuskraad, $ pikkuskraad] n"; kaja "[flypast in", decimal_to_time ($ plane_eta), "now", round ($ intercept, 1), "km away / n"; kaja "------------------------------------------------ -------------------- / n "; $ DBi = new mysqli ("127.0.0.1", "root", "teie parool", "waitcs"); $ sql = "valige * lennukite andmebaasist, kus` icao24` = '$ icao24' "; mysqli_set_charset ($ DBi, "utf8"); $ getplanedata = mysqli_query ($ DBi, $ sql) või sure (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 ['registreerimine']; kaja "on"; echo $ row_getplanedata ['tootja nimi']; kaja ""; echo $ row_getplanedata ['mudel']; kaja "poolt"; echo $ row_getplanedata ['Manufacturericao']; kaja "omanik"; echo $ row_getplanedata ['omanik']; kaja "näinud"; echo $ row_getplanedata ['külastused']; kaja "korda"; kaja "erireiting ="; echo $ row_getplanedata ['eriline']; kaja "\ n"; $ külastused = $ row_getplanedata ['külastused']+1; } while ($ row_getplanedata = mysqli_fetch_assoc ($ getplanedata)); mysqli_free_result ($ getplanedata); $ sqli = "UUENDA lennukite andmebaasi SET külastusi = $ külastusi WHERE icao24 = '$ icao24'"; mysqli_set_charset ($ DBi, "utf8"); $ updateplanedata = mysqli_query ($ DBi, $ sqli) või sure (mysqli_error ($ DBi)); } else {echo "Seda tasapinda ei õnnestunud DB -st leida, nii et selle lisamine"; $ sqli = "INSERT INTO lennukide andmebaas (icao24, külastused, erilised) VÄÄRTUSED ('$ icao24', 1, 1)"; $ updateplanedata = mysqli_query ($ DBi, $ sqli) või sure (mysqli_error ($ DBi)); } kaja "----------------------------------------------- --------------------- / n "; } else {// kaja "$ kutsung"; }}} else {echo "ja taevas on selge / n"; } if ($ sissetulev) {echo "Sissetulev lennuk / n"; $ command = "sead w 17 1"; execInBackground (käsk $); } else {echo "sissetulevaid lende pole / n"; $ command = "sead w 17 0"; execInBackground (käsk $); }} funktsioon decimal_to_time ($ decimal) {$ offset = 0,002778; if ($ decimal> $ offset) {$ decimal = $ decimal - 0,002778; } $ hours = gmdate ('H', korrus ($ kümnendkoht * 3600)); $ minutes = gmdate ('i', korrus ($ kümnendkoht * 3600)); $ sekundit = gmdate ('s', korrus ($ kümnendkoht * 3600)); return str_pad ($ hours, 2, "0", STR_PAD_LEFT). ":". str_pad ($ minutit, 2, "0", STR_PAD_LEFT). ":". str_pad ($ sekundit, 2, "0", STR_PAD_LEFT); }/ * * arvutama (esialgse) suuna kahe punkti vahel * *: Ed Williamsi lennunduse vormel, 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 ($ lennuk_lat); $ dLon = deg2rad ($ plane_lon- $ home_lon); $ y = patt ($ dLon) * cos ($ lat2); $ x = cos ($ lat1)*sin ($ lat2) - sin ($ lat1)*cos ($ lat2)*cos ($ dLon); $ z = atan2 ($ y, $ x); $ zz = (rad2deg ($ z) +360)% 360; tagasta $ zz; } funktsioon 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 * $ plane_distance; return $ flight_intercept; } /* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - *// * * Kasutage Haversine'i valemit, et arvutada kaugus (km) kahe punkti vahel, mis on määratud * laius-/pikkuskraadiga (arvkraadides) * *: Haversine'i valem - RWSinnott, "Virtues of the Haversine", * Sky and Telescope, vol 68, no 2, 1984 * https://williams.best.vwh.net/avform.htm#Crs * * näite kasutamine vormilt: * result.value = LatLon.distHaversine (lat1.value.parseDeg (), long1.value.parseDeg (), * lat2.value.parseDeg (), long2.value.parseDeg ()); * kus lat1, long1, lat2, long2 ja tulemus on vormiväljad * source = instantglobe.com/CRANES/GeoCoordTool.html */function get_distHaversine ($ home_lat, $ home_lon, $ plane_lat, $ plane_lon) {$ R = 6371; // Maa keskmine raadius km-des $ dLat = deg2rad ($ lennuk_lat- $ home_lat); $ dLon = deg2rad ($ plane_lon- $ home_lon); $ lat1 = deg2rad ($ home_lat); $ lat2 = deg2rad ($ lennuk_lat); $ a = patt ($ 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; tagasta $ d; } funktsioon 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 ($ pikkuskraadid_kraadides); $ raadius = 6371; # Paralleeli raadius antud laiuskraadil; $ paralleelraadius = $ raadius*cos ($ lat); $ lat_min = $ lat - $ half_side_in_km/$ raadius; $ lat_max = $ lat + $ half_side_in_km/$ raadius; $ 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); tagastamismassiiv ($ 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äiesti valikuline tagastamine (TRUE); } funktsiooni algus () {echo "algus / n"; $ command = "sead w 17 1"; execInBackground (käsk $); $ aktiivne = TRUE; while ($ active) {usleep (1000); // valikuline, kui tahad olla arvestav if (microtime (true)> = $ nextTime) {fexp (); $ nextTime = mikrotaeg (tõene) + INTERVAL; } $ aktiivne = checkForStopFlag (); }} fexp (); algus (); ?>

14. samm: LED -i ja väljalülituslüliti ühendamine

LED -i ja väljalülituslüliti ühendamine
LED -i ja väljalülituslüliti ühendamine

Selle projekti juhtmestik ei saa olla lihtsam. Seal on ainult üks LED, mis on ühendatud tihvtiga 17 ja maandatud 270R takisti abil.

Lisan ka väljalülitus- ja sisselülitusnupu koos toite -LED -iga, mis jookseb TXd andmestiku pealt välja. Seiskamisfunktsiooni ja vajaliku koodi kohta saate rohkem lugeda saidilt https://github.com/Howchoo/pi-power-button.git saidilt https://howchoo.com/g/mwnlytk3zmm/how-to- add-a-pow… Toitelambi lisamise kohta saate lugeda siit

Soovitan: