Përmbajtje:

Paralajmërim i hershëm Drita e pistës Raspberry PI Duke përdorur të dhënat e hartës së fluturimit: 14 hapa (me fotografi)
Paralajmërim i hershëm Drita e pistës Raspberry PI Duke përdorur të dhënat e hartës së fluturimit: 14 hapa (me fotografi)

Video: Paralajmërim i hershëm Drita e pistës Raspberry PI Duke përdorur të dhënat e hartës së fluturimit: 14 hapa (me fotografi)

Video: Paralajmërim i hershëm Drita e pistës Raspberry PI Duke përdorur të dhënat e hartës së fluturimit: 14 hapa (me fotografi)
Video: Часть 5 - Аудиокнига Уолдена Генри Дэвида Торо (глы 12–15) 2024, Korrik
Anonim
Paralajmërim i hershëm Drita e pistës mjedër PI duke përdorur të dhënat e hartës së fluturimit
Paralajmërim i hershëm Drita e pistës mjedër PI duke përdorur të dhënat e hartës së fluturimit
Paralajmërim i hershëm Drita e pistës mjedër PI duke përdorur të dhënat e hartës së fluturimit
Paralajmërim i hershëm Drita e pistës mjedër PI duke përdorur të dhënat e hartës së fluturimit
Paralajmërim i hershëm Drita e pistës mjedër PI duke përdorur të dhënat e hartës së fluturimit
Paralajmërim i hershëm Drita e pistës mjedër PI duke përdorur të dhënat e hartës së fluturimit
Paralajmërim i hershëm Drita e pistës mjedër PI duke përdorur të dhënat e hartës së fluturimit
Paralajmërim i hershëm Drita e pistës mjedër PI duke përdorur të dhënat e hartës së fluturimit

Kjo llambë erdhi nga disa arsye sepse unë jam gjithmonë i interesuar për aeroplanët që fluturojnë lart dhe gjatë verës gjatë fundjavave shpesh ka disa mjaft emocionues që fluturojnë përreth. Edhe pse ju prireni vetëm t’i dëgjoni ndërsa kalojnë. Pastaj arsyeja tjetër është se duket se rruga e fluturimit për aeroplanët dalës nga aeroporti i Londrës do të dëgjohet ndonjëherë dhe ata kanë disa fluturime mjaft të zhurmshme. Duke qenë se po merrem me regjistrimin e disa videove për YouTube është vërtet e bezdisshme të heqësh një regjistrim për shkak të një aeroplani të zhurmshëm. Kështu që pyesja veten nëse të dhënat që shihni në faqet si flightradar24 janë të disponueshme për publikun, sapo zbulova se diçka e ngjashme ishte në dispozicion nga rrjeti i hapur, lindi llamba paralajmëruese e hershme. Nuk kaloi shumë kohë për të dalë me idenë e përdorimit të një kopjeje të dritës së pistës për të vendosur projektin.

Mund të mësoni më shumë rreth The OpenSky Network në https://www.opensky-network.org Unë gjithashtu doja që këtë herë të bëja një lente të bukur rrëshirë në vend që të përdorja PLA të tejdukshme dhe megjithëse kam një marrës ADS-B që doja ta mbaja kjo e thjeshtë dhe e lirë. ADS-B gjithashtu ka nevojë për një antenë dhe kjo nuk do të bënte që një llambë të shkonte në raft në zyrë. Pra, me shpresë se do ta gjeni ndërtimin interesant pasi mbulon printimin 3D, formimin e rrëshirës dhe matematikën, si dhe për të ekstrapoluar pozicionet e avionëve që potencialisht mund të kalojnë lart.

Hapi 1: Hartimi i Rastit

Kërkimi në Google vjen me shumë modele të ndryshme të llambës së pistës dhe dizajni i kësaj është bërë duke përdorur ndikime të projektimit nga shumë lloje të ndryshme të llambave të vërteta. Alsoshtë gjithashtu e shkallëzuar të ulesh në një dhomë ose në një raft sesa në madhësinë e plotë, pasi ato priren të jenë shumë më të mëdha në jetën reale.

Hartimet u hartuan në Fusion 360 dhe unë importova disa elementë të mëparshëm, si mbajtësja e mjedrës pi zero nga projektet e mëparshme. Aftësia për të ripërdorur elementët merr shumë dhimbje koke nga zbutja e bazave. Ju gjithashtu mund t'i shkarkoni skedarët këtu

Hapi 2: Hedhja e Lenteve - #fail

Hedhja e Lenteve - #fail
Hedhja e Lenteve - #fail
Hedhja e Lenteve - #fail
Hedhja e Lenteve - #fail
Hedhja e lenteve - #fail
Hedhja e lenteve - #fail

Elementi më i rëndësishëm i dizajnit të kësaj llambë do të ishte lente. Kështu që unë e trajtova këtë së pari pasi pa një gotë të bukur autentike, projekti do të funksiononte. Unë jam duke dokumentuar këtu dështimet që pata në përpjekjen për ta arritur këtë, duke mos përballuar që unë gjithashtu fillimisht vendosa ta bëj lenten qelibar. Dritat e pistës vijnë si qelibare ashtu edhe blu dhe vetëm pasi kisha filluar ta bëja qelibarin ndryshova mendje dhe vendosa që doja një blu.

Nga sa mund të kuptoj, ato Amber përdoren në vijën e mbajtjes dhe ato blu përdoren për të veshur pistën, dhe këto janë ato që duket se janë më arketipike të gjetura nëse kërkoni dritat e pistës. Sidoqoftë, këtu është përpjekja ime e parë për të bërë një lente qelibar. Për të bërë lenten, unë do të përdorja rrëshirë të pastër me një shtues ngjyrash, dhe megjithëse kam bërë disa kallëpe para se të pyesja veten nëse do të ishte e mundur të printoja një myk 3D dhe ta përdorja atë. Kështu fillova duke bërë një myk të ndarë në 3D dhe duke e printuar atë në PetG. Sasitë e arsyeshme të lëshimit të mykut isha i bindur se do të ishin të mjaftueshme për të shpuar mykun. Siç doli me disa përpjekje unë e bëra rrëshirën të ngjitur në myk si zam dhe thjesht nuk dukej e mundur t'i ndaja ato. Megjithëse kisha atë të shkallës së plotë që do të përdorja, vendosa kundër tij dhe printova lentet për t'u përdorur me formacione tradicionale silikoni.

Hapi 3: Llojet e ndryshme të rrëshirës

Llojet e ndryshme të rrëshirës
Llojet e ndryshme të rrëshirës
Llojet e ndryshme të rrëshirës
Llojet e ndryshme të rrëshirës
Llojet e ndryshme të rrëshirës
Llojet e ndryshme të rrëshirës
Llojet e ndryshme të rrëshirës
Llojet e ndryshme të rrëshirës

Si mënjanë, kam përdorur 3 lloje rrëshirash të qarta/me ngjyrë për këtë projekt.

E para ishte një lloj tregu Hobby i quajtur Pebeo - Gedeo dhe normalisht shitet për kapjen e sendeve të vogla dhe përdoret për stoli dhe letra tavoline etj. Kjo funksionoi mjaft mirë dhe u shërua bukur në rreth 24-36 orë. Sidoqoftë, është mjaft i kushtueshëm për shumën që merrni, por është i dobishëm dhe lehtësisht i disponueshëm në dyqanet e hobi dhe artizanatit. Përzihet në një raport 2: 1. E dyta ishte një rrëshirë e para-ngjyrosur që përzihet në një raport 10: 1 me forcuesin dhe kjo zgjati më së shumti për t’u kuruar, rreth një javë për të qenë i sinqertë para se të ishte shëruar plotësisht. E fundit ishte një rrëshirë e qartë, e përzier gjithashtu në raportin 2: 1 dhe e shëruar në rreth 2 ditë, mund ta ngjyrosni me pika pigmenti, por duhet të siguroheni që përdorni gjithmonë të njëjtin raport ngjyrash nëse po bëjnë grupe të veçanta. Ajo gjithashtu funksionon më kosto -efektive. Së fundmi, RTV për mykun ishte një GPT-3481 RTV dhe kjo kërkon rreth 24 orë për t'u vendosur dhe ka një kohë mjaft të gjatë në tenxhere, kështu që ju keni shumë kohë për ta përzier dhe pastaj derdhur.

Për momentin nuk kam një tenxhere vakumi (aktualisht me porosi) në mënyrë që të mund të rrethoheni nga flluska si në myk ashtu edhe në rrëshirë që derdhen. Nuk është shumë çështje për këtë, por me një lente të qartë ose të ngjashme atëherë do të dëshironi të mendoni disi për të nxjerrë flluska nga përzierjet.

Hapi 4: Hedhja e Lentes në Formën Silikoni #2

Image
Image
Hedhja e lenteve në myk silikoni #2
Hedhja e lenteve në myk silikoni #2
Hedhja e lenteve në myk silikoni #2
Hedhja e lenteve në myk silikoni #2

Pra, kjo është përpjekja e dytë për të bërë një lente rrëshirë dhe faza e parë ishte të krijoni një lente në Fusion 360 dhe pastaj ta printoni në ABS, si dhe një kovë për ta mbajtur atë. Kjo do të ishte e para për mykun dhe ndihmon në uljen e sasisë së silikonit që do të përdoret. Ju lehtë mund ta bëni këtë nga karta, por është vetëm një qasje e ndryshme. Për t'i dhënë atij një shans më të mirë për t'u liruar nga myku, fillimisht e llakova dhe pastaj i dhashë një mbulesë të mirë të agjentit të lëshimit të dyllit.

Pastaj derdha një GP-3481 që është rreth bregut 27 RTV dhe më pas e lash të vendoset gjatë 24 orëve të ardhshme para se të hiqet. Pasi kjo u bë, unë përdor rrëshirë të qartë të përzier në raportin 2: 1 me rreth 4/5 pika të pigmentit të ngjyrës dhe e përzieva mirë për katër minuta të mira. Derdhni këtë në kallëp dhe më pas vendosni një gotë në rrëshirë gjithashtu për të siguruar një zbrazëti më vonë ose për një llambë ose për LED. Pas rreth 24 orësh kjo rrëshirë ishte gati për tu hequr dhe lentet dolën mjaft mirë. Ka flluska ajri të pranishme, por ende nuk kam një enë vakumi për të degazuar rrëshirën para derdhjes.

Hapi 5: Shtypja dhe Përgatitja 3D

Shtypja dhe Përgatitja 3D
Shtypja dhe Përgatitja 3D
Shtypja dhe Përgatitja 3D
Shtypja dhe Përgatitja 3D
Shtypja dhe Përgatitja 3D
Shtypja dhe Përgatitja 3D

Modeli është projektuar në atë mënyrë që pjesa qendrore të futet në bazë. Kjo ishte për të shmangur maskimin gjatë procesit të pikturës. I gjithë modeli u shtyp në Hatchbox ABS dhe më pas u lëmua. Fillimi me 60 zhavorr deri në rreth 800 zhavorr dha një përfundim mjaft të mirë sipërfaqësor për këtë model.

Hapi 6: Montimi dhe Pikturimi

Kuvendi dhe Piktura
Kuvendi dhe Piktura
Kuvendi dhe Piktura
Kuvendi dhe Piktura
Kuvendi dhe Piktura
Kuvendi dhe Piktura

Pasi printimet të jenë të lëmuara, ajo është lyer më pas me një abetare të lartë ndërtimi. Lëmuar lehtë me rërë dhe më pas spërkateni me abetare gri. Pjesët kryesore u pikturuan në sinjalin e verdhë të sinjalit, dhe më pas të gjelbërta u përdorën për bazën. pikat kryesore të argjendit tamiya u aplikuan pastaj në bulona dhe disa krom argjendi molotow u përdorën në mbajtësen e lenteve.

Hapi 7: Gjeni së pari aeroplanë brenda një zone të kufizuar

Me harduerin e renditur, softveri duhej punuar. Tani ka disa faqe që ofrojnë përcjelljen e fluturimit, por jo shumë që ofrojnë një API për të hyrë në ato të dhëna. Disa që e bëjnë këtë, e bëjnë vetëm në baza komerciale, por për fat ka një faqe të quajtur https://opensky-network.org që mund ta përdorni falas.

Për të hyrë në këto të dhëna ju duhet të regjistroheni dhe më pas mund të përdorni API -në e tyre, ai ofron disa funksione dhe mënyra për të tërhequr të dhënat. Ne jemi të interesuar për të gjitha fluturimet brenda një zone dhe ata kanë një thirrje API Live për këtë. https://opensky-network.org/apidoc/ e quajtur kuti kufizuese. Thirrja API kërkon qoshet e kutisë për të cilat jeni të interesuar, natyrisht Lat/Lon -i ynë si pikë qendrore. Ju mund të kontrolloni funksionet e matematikës në këtë faqe, të cilat tërheqin një kuti në varësi të asaj që shkruani. Http://tools.geofabrik.de por tani për tani skripti i mëposhtëm jep pikat që duhet të lidhim në API.

funksioni 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); rreze $ = 6371; $ paralele_radius = rreze $*cos ($ lat); $ lat_min = $ lat - $ half_side_in_km/$ rreze; $ lat_max = $ lat + $ gjysmë_fushë_km/$ rreze; $ lon_min = $ lon - $ half_side_in_km/$ paralel_radius; $ lon_max = $ lon + $ half_side_in_km/$ paralel_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); array e kthimit ($ box_lat_min, $ box_lon_min, $ box_lat_max, $ box_lon_max);

Nëse doni të provoni kodin tuaj, ekziston një sit ku mund të futni lat/lon dhe të shihni rezultatet në një hartë: Shikoni një shembull të kutisë kufizuese në një hartë

Hapi 8: Llogaritja e kreut të aeroplanëve në lidhje me ne

Llogaritja e Titullit të Aeroplanëve në lidhje me Ne
Llogaritja e Titullit të Aeroplanëve në lidhje me Ne

Rezultatet nga kutia kufizuese e thirrjes API na japin një listë avionësh, Lon/lat të tyre, shpejtësinë, lartësinë dhe drejtimin. Pra, gjëja tjetër që duhet të bëjmë është të marrim titullin e secilit aeroplan në lidhje me ne, në mënyrë që të mund të përpunojmë më tej ato që të paktën po drejtohen në drejtimin tonë të përgjithshëm. Ne mund ta bëjmë këtë pasi e dimë pozicionin tonë dhe mund të përpunojmë këndin nga ne në secilin plan.

Për ta bërë këtë unë përdor një pjesë të kodit nga e cila ishte fillimisht në Javascript kështu që e konvertova këtu në PHP, * llogarisni (fillimin) duke mbajtur midis dy pikave * * nga: Ed Williams 'Aviation Formulary, https://williams.best.vwh.net/avform.htm#Crs * source = instantglobe.com/CRANES/GeoCoordTool.html */ funksioni 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 = mëkat ($ dLon) * cos ($ lat2);

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

Nëse doni të shikoni faqen ku janë versionet origjinale të javascript, kjo është lidhja:

brenda atij kodi, ju gjithashtu mund të shihni nën -rutinat e ndryshme për secilin lloj llogaritjeje.

Hapi 9: Llogaritja e një përgjimi duke parë një rreth

Llogaritja e një përgjimi duke parë një rreth
Llogaritja e një përgjimi duke parë një rreth

Pra, ne tani kemi një aeroplan ku mbajtja midis tij dhe vendndodhjes sonë është më pak se 90 (pozitive ose negative) dhe kështu kjo do të thotë se ka një shans që ai të fluturojë pranë. Duke përdorur formulën haversine ne gjithashtu mund të punojmë duke përdorur Lon/Lat të aeroplanit dhe Lon/Lat të shtëpisë sonë distancën që është larg nesh.

Duke parë diagramin, nëse vizatojmë një rreth rreth shtëpisë sonë, të themi rreth 3 milje rreze kjo na jep një shans për të parë ndonjë gjë që fluturon sipër. Ne e dimë ndryshimin në drejtimin midis aeroplanit dhe nesh, ne gjithashtu e dimë distancën e aeroplanit nga ne, kështu që ne mund ta përpunojmë trekëndëshin duke përdorur SOHCAHTOA të vjetër të mirë, dhe në këtë rast duke përdorur Tanin e këndit ne mund të marrim gjatësia e anës së kundërt. Pra, nëse e krahasojmë këtë vlerë me vlerën e rrezes së rrethit rreth shtëpisë, atëherë mund të zbulojmë nëse aeroplani do të fluturojë aq afër sa ne ta shohim atë. Pjesa tjetër që mund të bëjmë është të përcaktojmë kohën kur avioni do të fluturojë duke përdorur shpejtësinë e ajrit dhe distancën dhe nëse kjo është më pak se të themi rreth 45 sekonda ose kështu ndezim dritën. Ky është një pjesë e kodit që përdor për të përcaktuar mundësinë e një fluturimi mbi. Unë e bëj këtë pasi ka një aeroport aty pranë dhe kur aeroplanët po udhëtojnë me taksi përreth ata në mënyrë të pashmangshme drejtohen nga shtëpia. Sidoqoftë, pasi lartësia e tyre është zero dhe shpejtësia po ecën me ritëm, kjo nuk duhet të shkaktojë alarm.

funksioni get_intercept ($ home_head, $ plane_head, $ plane_distance) {

$ flight_angle = abs (abs (abs ($ home_head - $ plane_head) - 180)); $ flight_angle_r = deg2rad ($ flight_angle); $ flight_angle_t = cirk ($ flight_angle_r); $ flight_intercept = $ flight_angle_t * $ plane_distance;

në qoftë se (($ flight_angle <90) && ($ $

}

kthehu $ flight_intercept;

}

Hapi 10: Distanca midis dy pikave në një hartë - Formula Haversine

Distanca midis dy pikave në një hartë - Formula Haversine
Distanca midis dy pikave në një hartë - Formula Haversine

Pra, ne duhet të llogarisim distancën midis aeroplanit dhe vendndodhjes sonë. Në distanca të shkurtra në një hartë mund të llogaritni përafërsisht distancën, por meqenëse toka është sferike, ekziston një formulë e quajtur formula haversine që ju lejon të merrni parasysh sipërfaqen e lakuar. Ju mund të lexoni më tej në formulë:

Tani me distancën e llogaritur dhe ne e dimë shpejtësinë e ajrit të aeroplanit ne mund të kuptojmë se sa sekonda do të jenë para se aeroplani të jetë lart. Pra, drita do të ndizet nëse ka diçka brenda 30 sekondave nga fluturimi dhe ne më në fund kemi dritën tonë paralajmëruese.

* bazuar në 0n JS në instantglobe.com/CRANES/GeoCoordTool.html dhe u shndërrua në PHP */

funksioni get_distHaversine ($ home_lat, $ home_lon, $ plane_lat, $ plane_lon) {$ R = 6371; // rrezja mesatare e tokës në km $ dLat = deg2rad ($ plane_lat- $ home_lat); $ dLon = deg2rad ($ plane_lon- $ home_lon); $ lat1 = deg2rad ($ home_lat); $ lat2 = deg2rad ($ plane_lat);

$ a = mëkati ($ dLat/2) * mëkati ($ dLat/2) + cos ($ lat1) * cos ($ lat2) * mëkati ($ dLon/2) * mëkati ($ dLon/2);

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

Hapi 11: Importimi dhe përcaktimi i bazës së të dhënave të aeroplanëve

Një nga pjesët e tjera është se faqja e hapjes ofron një bazë të dhënash të shkarkueshme të aeroplanëve së bashku me shenjat e tyre të thirrjes dhe identët. Disa qindra mijëra hyrje të tij. Kështu që ne mund ta shkarkojmë këtë dhe ta ngarkojmë atë në një bazë të dhënash MariaDB për kërkim (MySQL). Me çdo aeroplan që shfaqet lart, ne marrim detajet e tij dhe përditësojmë një numërues për të treguar se sa herë është parë.

Aktualisht po redaktoj bazën e të dhënave për të nxjerrë në pah aeroplanët për të cilët jam i interesuar. Kryesisht zogj të vjetër të luftës dhe avionë të tjerë të ngjashëm interesantë. Disa herë këtë verë një Mig-15 ka fluturuar. kështu që qëllimi është të përdor një fushë alarmi që kam shtuar dhe pastaj të ndez dritën shpejt kur diçka interesante po shkon drejt

Hapi 12: Përmirësimi i rezultateve dhe veçorive të reja

Përmirësimi i rezultateve dhe veçorive të reja
Përmirësimi i rezultateve dhe veçorive të reja
Përmirësimi i rezultateve dhe veçorive të reja
Përmirësimi i rezultateve dhe veçorive të reja
Përmirësimi i rezultateve dhe veçorive të reja
Përmirësimi i rezultateve dhe veçorive të reja

Pra, në teori gjithçka funksionon mjaft mirë, por me të dhënat do të gjeni se ka aeroplanë që fluturojnë mbi to që nuk shfaqen në API.

Kjo ndodh sepse jo të gjithë aeroplanët përdorin transponderin ADS-B dhe përdorin transponderë më të vjetër të bazuar në MLAT. Për të marrë të dhënat e pozicionit në aeroplanët që përdorin MLAT kërkon që një seri marrësish në terren të triangulojnë pozicionin e tyre dhe disa vende si flightradar24 kanë një rrjet më të madh të kontribuesve që e bëjnë këtë në krahasim me hapjen. Shpresoj se me kalimin e kohës mbulimi i tyre do të përmirësohet gjithashtu dhe unë jam duke krijuar marrësin tim MLAT për t'i shtuar këtyre të dhënave.

Hapi 13: Baza e kodit

Mos harroni nëse do ta përdorni këtë mund të dëshironi të hiqni deklaratat SQL nëse nuk keni bazën e të dhënave të aeroplanëve dhe gjithashtu shtoni vlerën tuaj Lon/Lat dhe çelësin API për të hyrë në të dhënat e fluturimit.

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

përcakto ("INTERVAL", (20 * 1)); funksioni fexp () {$ lat = "gjerësia juaj"; $ lon = "gjatësia juaj"; $ side = 15.75; $ box = get_bounding_box ($ lat, $ lon, $ side); $ latmin = $ kuti [0]; $ lonmin = $ kuti [1]; $ latmax = $ kuti [2]; $ lonmax = $ kuti [3]; $ flyurl = "https://opensky-network.org/api/states/all?lamin=$latmin&lomin=$lonmin&lamax=$latmax&lomax=$lonmax"; jehonë "Skanimi i Qiellit"; $ start_time = mikrotime (e vërtetë); $ json = file_get_contents ($ flyurl); $ data = json_decode ($ json, TRUE); $ përbrenda = FALSE; $ num_planes = numërim ($ të dhëna ['gjendje']); if ($ num_planes> 0) {echo "dhe ne mund të shohim $ num_planes aeroplanë / n"; për ($ x = 0; $ x 0) {$ plane_eta = $ distplane/$ air_speed_kmh; } tjetër {$ eta = 1; } if ((($ intercept) 0)) && ($ distplane0) {$ inbound = TRUE; jehonë "---------------------------------------------------- -------------------- / n "; jehonë "$ icao24 - [$ country $ callignign] at [$ geo_altitude_m M - $ geo_altitude_f ft]"; jehona "[shpejtësia $ air_speed_kmh kmh dhe", rrumbullakët ($ distplane, 1), "km larg] n"; jehonë "[në një titull të", rrumbullak ($ plane_heading, 1), "] [homeangle $ heading_d]"; jehonë "[$ latitude, $ longitude] n"; jehonë "[flypast in", decimal_to_time ($ plane_eta), "tani", raund ($ intercept, 1), "km larg / n"; jehonë "---------------------------------------------------- -------------------- / n "; $ DBi = mysqli i ri ("127.0.0.1", "rrënjë", "fjalëkalimi juaj", "awacs"); $ sql = "zgjidhni * nga baza e të dhënave të aeroplanit ku` icao24` = '$ icao24' "; mysqli_set_charset ($ DBi, "utf8"); $ getplanedata = mysqli_query ($ DBi, $ sql) ose vdes (mysqli_error ($ DBi)); $ row_getplanedata = mysqli_fetch_assoc ($ getplanedata); $ rows_getplanedata = mysqli_num_rows ($ getplanedata); nëse ($ rows_getplanedata> 0) {bëni {echo "callign ="; jehonë $ row_getplanedata ['regjistrimi']; jehona "është a"; jehonë $ row_getplanedata ['prodhuesi']; jehonë ""; jehonë $ row_getplanedata ['model']; jehonë "nga"; jehonë $ row_getplanedata ['Manufactricao']; jehonë "në pronësi të"; jehonë $ row_getplanedata ['pronar']; jehona "e parë"; jehonë $ row_getplanedata ['vizita']; jehonë "herë"; jehonë "vlerësim special ="; jehonë $ row_getplanedata ['speciale']; jehonë "\ n"; $ vizita = $ row_getplanedata ['vizita']+1; } ndërsa ($ row_getplanedata = mysqli_fetch_assoc ($ getplanedata)); mysqli_free_result ($ getplanedata); $ sqli = "UPDATE bazës së të dhënave të aeroplanit SET vizitat = $ vizita KU icao24 = '$ icao24'"; mysqli_set_charset ($ DBi, "utf8"); $ updateplanedata = mysqli_query ($ DBi, $ sqli) ose die (mysqli_error ($ DBi)); } else {echo "Nuk mund ta gjej këtë aeroplan në DB për ta shtuar atë"; $ sqli = "INSERT INTO bazës së të dhënave të avionëve (icao24, vizita, speciale) VLERA ('$ icao24', 1, 1)"; $ updateplanedata = mysqli_query ($ DBi, $ sqli) ose vdes (mysqli_error ($ DBi)); } jehonë "--------------------------------------------------- --------------------- / n "; } else {// jehonë "$ callignign"; }}} tjetër {echo "dhe qielli është i pastër / n"; } if ($ inbound) {jehonë "Aeroplani hyrës / n"; $ command = "derra w 17 1"; execInBackground (komanda $); } else {echo "nuk ka fluturime hyrëse / n"; $ command = "derra w 17 0"; execInBackground (komanda $); }} funksioni decimal_to_time (dhjetore $) {$ kompensuar = 0,002778; nëse ($ dhjetore> $ kompensuar) {$ dhjetore = $ dhjetore - 0.002778; } $ orë = gmdate ('H', kati ($ dhjetore * 3600)); $ minuta = gmdate ('i', kati ($ dhjetore * 3600)); $ sekonda = gmdate ('s', dysheme ($ dhjetore * 3600)); kthimi str_pad ($ orë, 2, "0", STR_PAD_LEFT). ":". str_pad ($ minuta, 2, "0", STR_PAD_LEFT). ":". str_pad ($ sekonda, 2, "0", STR_PAD_LEFT); }/ * * llogarisni (fillestare) duke mbajtur midis dy pikave * * nga: Ed Williams 'Aviation Formulary, https://williams.best.vwh.net/avform.htm#Crs * source = instantglobe.com/CRANES/GeoCoordTool. html */ funksioni 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 = mëkat ($ dLon) * cos ($ lat2); $ x = cos ($ lat1)*sin ($ lat2) - sin ($ lat1)*cos ($ lat2)*cos ($ dLon); $ z = atan2 ($ y, $ x); $ zz = (rad2deg ($ z) +360)% 360; kthehu $ zz; } funksioni 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 = cirk ($ flight_angle_r); $ flight_intercept = $ flight_angle_t * $ plane_distance; kthehu $ flight_intercept; } /* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - *// * * Përdorni formulën Haversine për të llogaritur distancën (në km) midis dy pikave të përcaktuara nga * gjerësi gjeografike/gjatësi (në shkallë numerike) * * nga: Formula Haversine - RWSinnott, "Virtytet e Haversine", * Sky and Telescope, vol 68, no 2, 1984 * https://williams.best.vwh.net/avform.htm#Crs * * përdorimi i shembullit nga forma: * rezultati.vlera = LatLon.distHaversine (lat1.vlera.parseDeg (), long1.value.parseDeg (), * lat2.value.parseDeg (), long2.value.parseDeg ())); * ku lat1, long1, lat2, long2, dhe rezultati janë fusha formash * burimi = instantglobe.com/CRANES/GeoCoordTool.html */funksioni get_distHaversine ($ home_lat, $ home_lon, $ plane_lat, $ plane_lon) {$ R = 6371; // rrezja mesatare e tokës në km $ dLat = deg2rad ($ plane_lat- $ home_lat); $ dLon = deg2rad ($ plane_lon- $ home_lon); $ lat1 = deg2rad ($ home_lat); $ lat2 = deg2rad ($ plane_lat); $ a = mëkati ($ dLat/2) * mëkati ($ dLat/2) + cos ($ lat1) * cos ($ lat2) * mëkati ($ dLon/2) * mëkati ($ dLon/2); $ c = 2 * atan2 (sqrt ($ a), sqrt (1- $ a)); $ d = $ R * $ c; kthehu $ d; } funksioni 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); rreze $ = 6371; # Rrezja e paraleles në gjerësinë gjeografike të dhënë; $ paralele_radius = rreze $*cos ($ lat); $ lat_min = $ lat - $ half_side_in_km/$ rreze; $ lat_max = $ lat + $ gjysmë_fushë_km/$ rreze; $ lon_min = $ lon - $ half_side_in_km/$ paralel_radius; $ lon_max = $ lon + $ half_side_in_km/$ paralel_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); array e kthimit ($ box_lat_min, $ box_lon_min, $ box_lat_max, $ box_lon_max); } funksioni execInBackground ($ cmd) {if (substr (php_uname (), 0, 7) == "Windows") {pclose (popen ("start /B". $ cmd, "r")); } else {exec ($ cmd. "> /dev /null &"); }} funksion checkForStopFlag () {// kthim krejtësisht opsional (TRUE); } funksioni start () {echo "duke filluar / n"; $ command = "derra w 17 1"; execInBackground (komanda $); $ aktive = E VUERTET; ndërsa ($ aktiv) {usleep (1000); // opsionale, nëse doni të jeni të kujdesshëm nëse (mikrot koha (e vërtetë)> = $ nextTime) {fexp (); $ nextTime = mikrotime (e vërtetë) + INTERVAL; } $ active = checkForStopFlag (); }} fexp (); fillo (); ?>

Hapi 14: Instalimi i LED dhe çelësi i fikjes

Instalimi i LED dhe çelësi i fikjes
Instalimi i LED dhe çelësi i fikjes

Instalimi i këtij projekti nuk mund të jetë më i thjeshtë. Ekziston vetëm një LED që lidhet me kunjin 17 dhe tokëzohet me një rezistencë të brendshme 270R.

Unë gjithashtu përfshij një buton mbyllje dhe ndezje së bashku me një LED të energjisë që shkon nga kunja e të dhënave TXd. Mund të lexoni më shumë rreth funksionit të mbylljes dhe kodit të kërkuar në https://github.com/Howchoo/pi-power-button.git nga faqja https://howchoo.com/g/mwnlytk3zmm/how-to- add-a-pow … Ju mund të lexoni për shtimin e një llambë energjie këtu

Recommended: