Satura rādītājs:

Agrīnās brīdināšanas aveņu PI skrejceļa gaisma, izmantojot lidojuma kartēšanas datus: 14 soļi (ar attēliem)
Agrīnās brīdināšanas aveņu PI skrejceļa gaisma, izmantojot lidojuma kartēšanas datus: 14 soļi (ar attēliem)

Video: Agrīnās brīdināšanas aveņu PI skrejceļa gaisma, izmantojot lidojuma kartēšanas datus: 14 soļi (ar attēliem)

Video: Agrīnās brīdināšanas aveņu PI skrejceļa gaisma, izmantojot lidojuma kartēšanas datus: 14 soļi (ar attēliem)
Video: Aldis Gobzems - 29. septembris pie Raiņa pieminekļa. 2024, Jūlijs
Anonim
Agrīnās brīdināšanas aveņu PI skrejceļa gaisma, izmantojot lidojuma kartēšanas datus
Agrīnās brīdināšanas aveņu PI skrejceļa gaisma, izmantojot lidojuma kartēšanas datus
Agrīnās brīdināšanas aveņu PI skrejceļa gaisma, izmantojot lidojuma kartēšanas datus
Agrīnās brīdināšanas aveņu PI skrejceļa gaisma, izmantojot lidojuma kartēšanas datus
Agrīnās brīdināšanas aveņu PI skrejceļa gaisma, izmantojot lidojuma kartēšanas datus
Agrīnās brīdināšanas aveņu PI skrejceļa gaisma, izmantojot lidojuma kartēšanas datus
Agrīnās brīdināšanas aveņu PI skrejceļa gaisma, izmantojot lidojuma kartēšanas datus
Agrīnās brīdināšanas aveņu PI skrejceļa gaisma, izmantojot lidojuma kartēšanas datus

Šī lampa radās vairāku iemeslu dēļ, jo mani vienmēr interesē lidmašīnas, kas lido virs galvas, un vasarā nedēļas nogalēs bieži lidinās dažas aizraujošas. Lai gan jūs mēdzat tos dzirdēt tikai tad, kad viņi iet garām. Tad otrs iemesls ir tāds, ka šķiet, ka lidmašīnas lidojuma maršruts no Londonas Sitijas lidostas dažkārt tiks noklausīts, un viņiem notiek diezgan trokšņaini lidojumi. Tā kā es nodarbojos ar dažu videoklipu ierakstīšanu pakalpojumā YouTube, tas ir patiešām kaitinoši, ja trokšņainā lidmašīna ir jānoņem. Tāpēc es domāju, vai dati, ko redzat tādās vietnēs kā flightradar24, ir publiski pieejami, tiklīdz atklāju, ka kaut kas līdzīgs ir pieejams no OpenSky tīkla, radās agrīnā brīdinājuma lampiņa. Nepagāja ilgs laiks, lai radītu ideju projekta izmantošanai izmantot skrejceļa gaismas kopiju.

Jūs varat uzzināt vairāk par OpenSky tīklu vietnē https://www.opensky-network.org. Es arī gribēju šoreiz izveidot jauku sveķu objektīvu, nevis izmantot caurspīdīgu PLA, un, lai gan man ir ADS-B uztvērējs, kuru vēlējos paturēt. tas ir vienkārši un lēti. ADS-B ir nepieciešama arī antena, un tas nedarītu lampu biroja plauktā. Cerams, ka būve jums šķitīs interesanta, jo tā ietver 3D drukāšanu, sveķu formēšanu un matemātiku, kā arī ekstrapolēt to lidmašīnu pozīcijas, kuras, iespējams, varētu nokļūt virs galvas.

1. darbība: korpusa projektēšana

Google meklēšana piedāvā daudz dažādu skrejceļa lampu dizainu, un šī dizaina dizains tika veikts, izmantojot dizaina ietekmi no daudzu dažādu reālu lampu modeļiem. Tas ir arī mērogots, lai sēdētu telpā vai plauktā, nevis pilnā izmērā, jo reālajā dzīvē tie parasti ir daudz lielāki.

Dizainparaugi tika izstrādāti programmā Fusion 360, un es importēju dažus iepriekšējos elementus, piemēram, aveņu pi nulles turētāju no iepriekšējiem projektiem. Spēja atkārtoti izmantot elementus noņem daudz no galvassāpēm, nesamazinot pamatus. Failus varat lejupielādēt arī šeit

2. solis: objektīvu liešana - #fail

Lēcu liešana - #fail
Lēcu liešana - #fail
Lēcu liešana - #fail
Lēcu liešana - #fail
Lēcu liešana - #fail
Lēcu liešana - #fail

Šīs lampas vissvarīgākais dizaina elements bija objektīvs. Tāpēc es vispirms to risināju, jo bez jauka autentiska izskata stikla projekts darbosies. Es šeit dokumentēju neveiksmes, kas man bija, mēģinot to sasniegt, neņemot vērā to, ka arī sākotnēji nolēmu padarīt objektīvu dzintara krāsā. Skrejceļa gaismas ir gan dzeltenā, gan zilā krāsā, un tikai pēc tam, kad biju sācis gatavot dzintaru, pārdomāju un nolēmu, ka gribu zilu.

Es varu saprast, ka dzintara krāsas tiek izmantotas turēšanas līnijā, bet zilās - skrejceļa apšuvumā, un šīs ir tās arhetipiskākās, kas tiek atrastas, meklējot skrejceļa gaismas. Tomēr šeit ir mans pirmais mēģinājums izgatavot dzintara lēcu. Lai izgatavotu objektīvu, es gatavojos izmantot caurspīdīgus sveķus ar krāsu piedevu, un, lai gan esmu izveidojis dažas veidnes, pirms domāju, vai būs iespējams izdrukāt 3D veidni un to izmantot. Tāpēc es sāku ar sadalītas veidnes izgatavošanu 3D formātā un izdrukāšanu PetG. Es biju pārliecināts, ka ar saprātīgu pelējuma izdalīšanās daudzumu pietiks, lai pelējuma izliešana. Kā izrādās ar pāris mēģinājumiem, es sveķus pielīmēju pie veidnes kā līmi, un šķita, ka tos nav iespējams atdalīt. Lai gan man bija pilna mēroga ierīce, kuru es gatavojas izmantot, es nolēmu pret to un izdrukāju objektīvu, lai to izmantotu ar tradicionālo silikona veidni.

3. solis: dažāda veida sveķi

Dažādu veidu sveķi
Dažādu veidu sveķi
Dažādu veidu sveķi
Dažādu veidu sveķi
Dažādu veidu sveķi
Dažādu veidu sveķi
Dažādu veidu sveķi
Dažādu veidu sveķi

Īsumā šim projektam es izmantoju 3 veidu caurspīdīgus/krāsainus sveķus.

Pirmais bija hobija tirgus veids ar nosaukumu Pebeo - Gedeo, un to parasti pārdod nelielu priekšmetu iekapsulēšanai, un to izmanto rotaslietām un galda papīra svariem utt. Tas darbojās diezgan labi un labi izārstējās apmēram 24–36 stundu laikā. Tomēr tas ir diezgan dārgs par saņemto summu, bet ir ērts un viegli pieejams hobiju un amatniecības veikalos. Tas tiek sajaukts ar attiecību 2: 1. Otrais bija iepriekš krāsoti sveķi, kas tiek sajaukti ar cietinātāju proporcijā 10: 1, un tas bija visilgāk sacietējis, godīgi sakot, apmēram nedēļu, pirms tas bija pilnībā sacietējis. Pēdējais bija dzidrs sveķis, kas arī tika sajaukts proporcijā 2: 1, un tas sacietēja apmēram 2 dienu laikā, jūs varat to krāsot ar pigmenta pilieniem, taču jums vienmēr jāpārliecinās, ka vienmēr izmantojat to pašu krāsu attiecību veido atsevišķas partijas. Tas arī darbojas visrentablāk. Visbeidzot, veidņu RTV bija GP-3481 RTV, un tas aizņem apmēram 24 stundas, un tam ir diezgan ilgs katla laiks, tāpēc jums ir daudz laika, lai to sajauktu un pēc tam ielej.

Pašlaik man nav putekļsūcēja katla (šobrīd ir pasūtīts), lai jūs varētu nomākt burbuļi gan veidnē, gan sveķu ieliešanā. Tam nav pārāk daudz problēmu, bet ar caurspīdīgu objektīvu vai tamlīdzīgu līdzekli jūs vēlētos kaut kādā veidā domāt, lai burbuļi tiktu izvadīti no maisījumiem.

4. solis: objektīva liešana silikona veidnē #2

Image
Image
Objektīva liešana silikona veidnē #2
Objektīva liešana silikona veidnē #2
Objektīva liešana silikona veidnē #2
Objektīva liešana silikona veidnē #2

Tātad šis ir otrais mēģinājums izgatavot sveķu objektīvu, un pirmais posms bija izgatavot gan objektīvu Fusion 360, gan pēc tam izdrukāt to ABS, kā arī spaini, lai to turētu. Tas būtu pirmais veidnei un palīdzētu samazināt izmantojamā silikona daudzumu. To var viegli izdarīt no kartes, taču tā ir tikai cita pieeja. Lai tai būtu lielākas izredzes atbrīvoties no veidnes, es vispirms to lakēju un pēc tam labi pārklāju vaska atbrīvošanas līdzekli.

Pēc tam es ieleju GP-3481, kas ir aptuveni 27. krasta RTV, un pēc tam ļauju tam nostāvēties nākamās 24 stundas pirms demontāžas. Kad tas bija izdarīts, es izmantoju dzidros sveķus, kas sajaukti ar attiecību 2: 1, ar apmēram 4/5 pilieniem krāsas pigmenta un labi samaisīju to labas četras minūtes. Ieleja to veidnē un pēc tam sveķos ievieto stikla glāzi, lai vēlāk nodrošinātu tukšumu lampai vai gaismas diodēm. Pēc apmēram 24 stundām šie sveķi bija gatavi noņemšanai, un objektīvs iznāca diezgan labs. Ir gaisa burbuļi, bet pagaidām man nav vakuuma trauka, lai pirms ielešanas sveķus degazētu.

5. solis: 3D drukāšana un sagatavošana

3D drukāšana un sagatavošana
3D drukāšana un sagatavošana
3D drukāšana un sagatavošana
3D drukāšana un sagatavošana
3D drukāšana un sagatavošana
3D drukāšana un sagatavošana

Modelis tika veidots tā, lai centrālā daļa tiktu pievienota pamatnei. Tas bija paredzēts, lai krāsošanas procesā izvairītos no maskēšanās. Viss modelis tika iespiests Hatchbox ABS un pēc tam slīpēts. Sākot ar 60 smilšpapīru līdz aptuveni 800 smiltīm, šim modelim bija pietiekami laba virsmas apdare.

6. darbība: montāža un krāsošana

Montāža un krāsošana
Montāža un krāsošana
Montāža un krāsošana
Montāža un krāsošana
Montāža un krāsošana
Montāža un krāsošana

Kad izdrukas ir slīpētas, tās tika nokrāsotas ar kādu augstas konstrukcijas grunti. Viegli noslīpē un pēc tam apsmidzina pelēkā gruntā. Galvenās daļas tika nokrāsotas ford signāla dzeltenā krāsā, un pēc tam pamatnei tika izmantota zaļa strauta teritorija. pēc tam uz skrūvēm tika uzlikti tamiya sudraba izciļņi, un uz objektīva turētāja tika izmantots nedaudz molotow sudraba hroma.

7. solis. Vispirms atrodiet lidmašīnas robežas zonā

Kad aparatūra ir sakārtota, programmatūra bija jāstrādā. Pašlaik ir dažas vietnes, kas nodrošina lidojumu izsekošanu, bet ne daudzas, kas nodrošina API, lai piekļūtu šiem datiem. Daži, kas to dara, to dara tikai komerciāli, bet par laimi ir viena vietne ar nosaukumu https://opensky-network.org, kuru varat izmantot bez maksas.

Lai piekļūtu šiem datiem, jums ir jāreģistrējas, un pēc tam varat izmantot to API, tas nodrošina vairākas funkcijas un veidus, kā iegūt datus. Mūs interesē visi lidojumi noteiktā apgabalā, un viņiem ir pieejams Live API aicinājums. https://opensky-network.org/apidoc/ sauc par ierobežojošo lodziņu. Lai izsauktu API, nepieciešami lodziņa stūri, kas jūs interesē, protams, mūsu centrālais punkts ir Lat/Lon. Jūs varat pārbaudīt, vai šajā vietnē tiek veikti matemātikas darbi, kas atkarībā no tā, ko jūs ierakstāt, ievelk lodziņu. Http://tools.geofabrik.de

funkcija 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); $ rādiuss = 6371; $ parallel_radius = $ rādiuss*cos ($ lat); $ lat_min = $ lat - $ half_side_in_km/$ rādiuss; $ lat_max = $ lat + $ half_side_in_km/$ rādiuss; $ 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); atgriešanās masīvs ($ box_lat_min, $ box_lon_min, $ box_lat_max, $ box_lon_max);

Ja vēlaties pārbaudīt savu kodu, ir vietne, kurā varat ievadīt lat/lon un redzēt rezultātus kartē: skatiet ierobežojošā lodziņa piemēru kartē

8. solis. Lidmašīnu virziena aprēķināšana saistībā ar mums

Lidmašīnu virziena aprēķināšana saistībā ar mums
Lidmašīnu virziena aprēķināšana saistībā ar mums

Ierobežojošās kastes API izsaukuma rezultāti sniedz mums lidmašīnu sarakstu, to latu/latu, ātrumu, augstumu un virzienu. Tātad nākamā lieta, kas mums jādara, ir iegūt katras plaknes virsrakstu attiecībā pret mums, lai mēs varētu tālāk apstrādāt tos, kas vismaz virzās mūsu vispārējā virzienā. Mēs to varam izdarīt, zinot savu pozīciju un nosakot leņķi no mums pret katru plakni.

Lai to izdarītu, es izmantoju koda gabalu, no kura sākotnēji bija Javascript, tāpēc es to šeit pārveidoju par PHP, * aprēķināt (sākotnējo) novirzi starp diviem punktiem * * no: Ed Williams Williams Aviācijas formula, https://williams.best.vwh.net/avform.htm#Crs * source = instantglobe.com/CRANES/GeoCoordTool.html */ funkcija get_bearing ($ home_lat, $ home_lon, $ plane_lat, $ plane_lon) {$ lat1 = deg2rad ($ home_lat); $ lat2 = deg2rad ($ plakne_lat);

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

$ y = grēks ($ dLon) * cos ($ lat2);

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

Ja vēlaties apskatīt lapu, kurā atrodas sākotnējās javascript versijas, šī ir saite:

šajā kodā varat arī redzēt dažādas apakšrutīnas katram aprēķina veidam.

9. solis: pārtveršanas aprēķināšana, aplūkojot apli

Pārtveršanas aprēķināšana, aplūkojot apli
Pārtveršanas aprēķināšana, aplūkojot apli

Tātad mums tagad ir plakne, kuras novirze starp to un mūsu atrašanās vietu ir mazāka par 90 (vai nu pozitīva, vai negatīva), un tāpēc tas nozīmē, ka pastāv iespēja, ka tā lidos tuvumā. Izmantojot hasrsīna formulu, mēs varam arī aprēķināt, izmantojot lidmašīnas Lon/Lat un mūsu mājas Lon/Lat attālumu, kāds tas ir no mums.

Aplūkojot diagrammu, ja mēs ap mūsu māju, piemēram, apmēram 3 jūdzes rādiusā, uzvelkam apli, tas dod mums iespēju redzēt, ka kaut kas lido pāri. Mēs zinām atšķirību virzienā starp lidmašīnu un mums, mēs zinām arī plaknes attālumu no mums, lai pēc tam varētu izstrādāt trijstūri, izmantojot veco labo SOHCAHTOA, un šajā gadījumā, izmantojot leņķa iedegumu, mēs varam iegūt pretējās malas garums. Tātad, ja mēs salīdzinām šo vērtību ar apļa rādiusa vērtību ap māju, mēs varam uzzināt, vai lidmašīna lidos pietiekami tuvu, lai mēs to varētu redzēt. Nākamais, ko mēs varam darīt, ir aprēķināt laiku, kuram lidmašīna lidos garām, izmantojot gaisa ātrumu un attālumu, un, ja tas ir mazāks par aptuveni 45 sekundēm, ieslēdzam gaismu. Šis ir neliels kods, ko izmantoju, lai noskaidrotu pārsēšanās iespēju. Es to daru, jo tuvumā atrodas lidosta un, lidmašīnām braucot ar taksometru, tās neizbēgami norāda uz māju. Tomēr, tā kā viņu augstums ir nulle un ātrums iet kājām, tam nevajadzētu iedarbināt trauksmi.

funkcija 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 = iedegums ($ flight_angle_r); $ flight_intercept = $ flight_angle_t * $ plane_distance;

if (($ flight_angle <90) && ($ flight_intercept <3)) {// iespējams lidot garām

}

atgriezties $ flight_intercept;

}

10. solis: Attālums starp diviem kartes punktiem - Haversine formula

Attālums starp diviem punktiem kartē - Haversine formula
Attālums starp diviem punktiem kartē - Haversine formula

Tātad mums ir jāaprēķina attālums starp lidmašīnu un mūsu atrašanās vietu. Īsos attālumos kartē jūs varētu aptuveni aprēķināt attālumu, bet, tā kā zeme ir sfēriska, ir formula, ko sauc par hasrsīna formulu, kas ļauj ņemt vērā izliekto virsmu. Jūs varat lasīt tālāk formulā:

Tagad, aprēķinot attālumu un zinot lidmašīnas gaisa ātrumu, mēs varam noskaidrot, cik sekundes būs nepieciešamas, pirms lidmašīna būs virs galvas. Tātad gaisma iedegsies, ja kaut kas notiks 30 sekunžu laikā pēc lidojuma laika un beidzot mums būs brīdinājuma gaisma.

* pamatā 0n JS vietnē instantglobe.com/CRANES/GeoCoordTool.html un pārvērsts par PHP */

funkcija get_distHaversine ($ home_lat, $ home_lon, $ plane_lat, $ plane_lon) {$ R = 6371; // zemes vidējais rādiuss km $ dLat = deg2rad ($ plane_lat- $ home_lat); $ dLon = deg2rad ($ plane_lon- $ home_lon); $ lat1 = deg2rad ($ home_lat); $ lat2 = deg2rad ($ plakne_lat);

$ a = grēks ($ dLat/2) * sin ($ dLat/2) + cos ($ lat1) * cos ($ lat2) * grēks ($ dLon/2) * sin ($ dLon/2);

$ c = 2 * atan2 (sqrt ($ a), sqrt (1- $ a)); $ d = $ R * $ c; atgriešanās $ d; }

11. darbība: lidmašīnas datu bāzes importēšana un definēšana

Viens no citiem elementiem ir tas, ka vietne opensky piedāvā lejupielādējamu lidmašīnu datubāzi kopā ar to izsaukuma signāliem un identifikatoriem. Tās vairāki simti tūkstoši ierakstu. Tātad mēs varam to lejupielādēt un lokāli ielādēt MariaDB datu bāzē, lai to uzmeklētu (MySQL). Ar katru lidmašīnu, kas parādās virs galvas, mēs izgūstam tās informāciju un atjauninām skaitītāju, lai parādītu, cik reizes tā ir redzēta.

Es arī pašlaik rediģēju datu bāzi, lai izceltu mani interesējošās lidmašīnas. Galvenokārt vecie kara putni un citas līdzīgas interesantas lidmašīnas. Šovasar pāris reizes lidoja Mig-15. tāpēc mērķis ir izmantot brīdinājuma lauku, kuru esmu pievienojis, un pēc tam ātri mirgot, kad notiek kaut kas interesants

12. darbība. Rezultātu un jaunu funkciju uzlabošana

Rezultātu un jaunu funkciju uzlabošana
Rezultātu un jaunu funkciju uzlabošana
Rezultātu un jaunu funkciju uzlabošana
Rezultātu un jaunu funkciju uzlabošana
Rezultātu un jaunu funkciju uzlabošana
Rezultātu un jaunu funkciju uzlabošana

Tātad teorētiski viss darbojas diezgan labi, taču ar datiem jūs atradīsit, ka ir lidmašīnas, kas lido pāri un kas neparādās API.

Tas ir tāpēc, ka ne visas lidmašīnas izmanto ADS-B retranslatoru un izmanto vecākus retranslatorus, kuru pamatā ir MLAT. Lai iegūtu datus par lidmašīnu atrašanās vietu, izmantojot MLAT, ir nepieciešama virkne uztvērēju uz zemes, lai trīsstūrētu savu atrašanās vietu, un dažās vietnēs, piemēram, flightradar24, ir lielāks līdzautoru tīkls, kas to dara, salīdzinot ar opensky. Cerams, ka laika gaitā to pārklājums arī uzlabosies, un es izveidoju savu MLAT uztvērēju, lai pievienotu šos datus.

13. darbība. Koda bāze

Neaizmirstiet, ja izmantosit to, iespējams, vēlēsities noņemt SQL paziņojumus, ja jums nav lidmašīnu datu bāzes, kā arī pievienot savu Lon/Lat vērtību un API atslēgu, lai piekļūtu lidojuma datiem.

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

define ("INTERVĀLS", (20 * 1)); funkcija fexp () {$ lat = "jūsu platums"; $ lon = "jūsu garums"; $ puse = 15,75; $ box = get_bounding_box ($ lat, $ lon, $ side); $ latmin = $ kaste [0]; $ lonmin = $ kaste [1]; $ latmax = $ kaste [2]; $ lonmax = $ kaste [3]; $ flyurl = "https://opensky-network.org/api/states/all?lamin=$latmin&lomin=$lonmin&lamax=$latmax&lomax=$lonmax"; atbalss "DEBESU skenēšana"; $ start_time = mikrotime (true); $ json = file_get_contents ($ flyurl); $ data = json_decode ($ json, TRUE); $ ienākošais = FALSE; $ num_planes = skaits ($ data ['state']); if ($ num_planes> 0) {echo "un mēs varam redzēt $ num_planes lidmašīnas / n"; par ($ x = 0; $ x 0) {$ plane_eta = $ distplane/$ air_speed_kmh; } cits {$ eta = 1; } ja ((($ pārtvert) 0)) && ($ distplane0) {$ ienākošais = TRUE; atbalss "------------------------------------------------ -------------------- / n "; echo "$ icao24 - [$ country $ zvanu signāls] pie [$ geo_altitude_m M - $ geo_altitude_f ft]"; echo "[speed $ air_speed_kmh kmh and", round ($ distplane, 1), "km away] n"; echo "[uz virsraksta", apaļš ($ plane_heading, 1), "] [homeangle $ title_d]"; echo "[$ platums, $ garums] n"; echo "[flypast in", decimal_to_time ($ plane_eta), "tagad", apaļš ($ pārtveršana, 1), "km attālumā / n"; atbalss "------------------------------------------------ -------------------- / n "; $ DBi = new mysqli ("127.0.0.1", "root", "jūsu parole", "waitcs"); $ sql = "izvēlieties * no lidmašīnu datubāzes, kur` icao24` = '$ icao24' "; mysqli_set_charset ($ DBi, "utf8"); $ getplanedata = mysqli_query ($ DBi, $ sql) vai mirst (mysqli_error ($ DBi)); $ row_getplanedata = mysqli_fetch_assoc ($ getplanedata); $ rows_getplanedata = mysqli_num_rows ($ getplanedata); ja ($ rows_getplanedata> 0) {do {echo "zvanu signāls ="; echo $ row_getplanedata ['reģistrācija']; atbalss "ir"; echo $ row_getplanedata ['ražotāja nosaukums']; atbalss ""; echo $ row_getplanedata ['modelis']; atbalss "ar"; echo $ row_getplanedata ['productionricao']; atbalss "pieder"; echo $ row_getplanedata ['īpašnieks']; atbalss "redzēts"; echo $ row_getplanedata ['apmeklējumi']; atbalss "laiki"; echo "īpašais vērtējums ="; echo $ row_getplanedata ['īpašs']; atbalss "\ n"; $ apmeklējumi = $ row_getplanedata ['apmeklējumi']+1; } while ($ row_getplanedata = mysqli_fetch_assoc ($ getplanedata)); mysqli_free_result ($ getplanedata); $ sqli = "ATJAUNINĀT lidmašīnu datubāzes SET apmeklējumus = $ apmeklējumi WHERE icao24 = '$ icao24'"; mysqli_set_charset ($ DBi, "utf8"); $ updateplanedata = mysqli_query ($ DBi, $ sqli) vai mirst (mysqli_error ($ DBi)); } else {echo "Nevarēja atrast šo plakni DB, tāpēc pievienojot to"; $ sqli = "IEVIETOT lidmašīnu datubāzē (icao24, apmeklējumi, īpašie) VALUES ('$ icao24', 1, 1)"; $ updateplanedata = mysqli_query ($ DBi, $ sqli) vai mirst (mysqli_error ($ DBi)); } atbalss "----------------------------------------------- --------------------- / n "; } else {// echo "$ zvanu signāls"; }}} cits {echo "un debesis ir skaidras / n"; } if ($ ienākošais) {echo "Ienākošā plakne / n"; $ command = "cūkas w 17 1"; execInBackground (komanda $); } else {echo "nav ienākošo lidojumu / n"; $ command = "cūkas w 17 0"; execInBackground (komanda $); }} funkcija decimal_to_time ($ decimal) {$ offset = 0.002778; if ($ decimal> $ offset) {$ decimal = $ decimal - 0,002778; } $ hours = gmdate ('H', grīda ($ decimālā * 3600)); $ minūtes = gmdate ('i', stāvs ($ decimāls * 3600)); $ sekundes = gmdate ('s', stāvs ($ decimāls * 3600)); atgriezt str_pad ($ hours, 2, "0", STR_PAD_LEFT). ":". str_pad ($ minūtes, 2, "0", STR_PAD_LEFT). ":". str_pad ($ sekundes, 2, "0", STR_PAD_LEFT); }/ * * aprēķināt (sākotnējo) novirzi starp diviem punktiem * * no: Ed Williams Williams Aviation Formulary, https://williams.best.vwh.net/avform.htm#Crs * source = instantglobe.com/CRANES/GeoCoordTool. html */ funkcija get_bearing ($ home_lat, $ home_lon, $ plane_lat, $ plane_lon) {$ lat1 = deg2rad ($ home_lat); $ lat2 = deg2rad ($ plakne_lat); $ dLon = deg2rad ($ plane_lon- $ home_lon); $ y = grēks ($ dLon) * cos ($ lat2); $ x = cos ($ lat1)*sin ($ lat2) - sin ($ lat1)*cos ($ lat2)*cos ($ dLon); $ z = atan2 ($ y, $ x); $ zz = (rad2deg ($ z) +360)% 360; atgriezt $ zz; } funkcija 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 = iedegums ($ flight_angle_r); $ flight_intercept = $ flight_angle_t * $ plane_distance; atgriezties $ flight_intercept; } /* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - *// * * Izmantojiet Haversine formulu, lai aprēķinātu attālumu (km) starp diviem punktiem, ko norāda * platums/garums (skaitliskajos grādos) * * no: Haversine formula - RWSinnott, "Virtures of the Haversine", * Sky and Telescope, vol 68, no 2, 1984 * https://williams.best.vwh.net/avform.htm#Crs * * lietošanas piemērs no formas: * result.value = LatLon.distHaversine (lat1.value.parseDeg (), long1.value.parseDeg (), * lat2.value.parseDeg (), long2.value.parseDeg ()); * kur lat1, long1, lat2, long2 un rezultāts ir veidlapas lauki * source = instantglobe.com/CRANES/GeoCoordTool.html */function get_distHaversine ($ home_lat, $ home_lon, $ plane_lat, $ plane_lon) {$ R = 6371; // zemes vidējais rādiuss km $ dLat = deg2rad ($ plane_lat- $ home_lat); $ dLon = deg2rad ($ plane_lon- $ home_lon); $ lat1 = deg2rad ($ home_lat); $ lat2 = deg2rad ($ plakne_lat); $ a = grēks ($ dLat/2) * sin ($ dLat/2) + cos ($ lat1) * cos ($ lat2) * grēks ($ dLon/2) * sin ($ dLon/2); $ c = 2 * atan2 (sqrt ($ a), sqrt (1- $ a)); $ d = $ R * $ c; atgriešanās $ d; } funkcija 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); $ rādiuss = 6371; # Paralēles rādiuss noteiktā platumā; $ parallel_radius = $ rādiuss*cos ($ lat); $ lat_min = $ lat - $ half_side_in_km/$ rādiuss; $ lat_max = $ lat + $ half_side_in_km/$ rādiuss; $ 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); atgriešanās masīvs ($ box_lat_min, $ box_lon_min, $ box_lat_max, $ box_lon_max); } funkcija execInBackground ($ cmd) {if (substr (php_uname (), 0, 7) == "Windows") {pclose (popen ("start /B". $ cmd, "r")); } cits {exec ($ cmd. "> /dev /null &"); }} function checkForStopFlag () {// pilnīgi neobligāta atgriešanās (TRUE); } funkcija start () {echo "sākuma / n"; $ command = "cūkas w 17 1"; execInBackground (komanda $); $ aktīvs = TRUE; while ($ active) {usleep (1000); // pēc izvēles, ja vēlaties būt uzmanīgs, ja (microtime (true)> = $ nextTime) {fexp (); $ nextTime = mikrolaiks (patiess) + INTERVĀLS; } $ aktīvs = checkForStopFlag (); }} fexp (); sākt(); ?>

14. darbība: LED un izslēgšanas slēdža savienošana

Gaismas diodes un izslēgšanas slēdža pievienošana
Gaismas diodes un izslēgšanas slēdža pievienošana

Šī projekta elektroinstalācija patiešām nevar būt vienkāršāka. Ir tikai viena gaismas diode, kas ir savienota ar 17. tapu un iezemēta ar 270R rezistoru.

Es iekļauju arī izslēgšanas un ieslēgšanas pogu kopā ar barošanas gaismas diodi, kas darbojas no TXd datu tapas. Vairāk par izslēgšanas funkciju un nepieciešamo kodu varat izlasīt vietnē https://github.com/Howchoo/pi-power-button.git no vietnes https://howchoo.com/g/mwnlytk3zmm/how-to- add-a-pow … Par barošanas gaismas pievienošanu varat lasīt šeit

Ieteicams: