Tartalomjegyzék:

Korai figyelmeztető málna PI kifutópálya -fény a repülési leképezési adatok használatával: 14 lépés (képekkel)
Korai figyelmeztető málna PI kifutópálya -fény a repülési leképezési adatok használatával: 14 lépés (képekkel)

Videó: Korai figyelmeztető málna PI kifutópálya -fény a repülési leképezési adatok használatával: 14 lépés (képekkel)

Videó: Korai figyelmeztető málna PI kifutópálya -fény a repülési leképezési adatok használatával: 14 lépés (képekkel)
Videó: ЕЖЕНЕДЕЛЬНЫЕ СТРАННЫЕ НОВОСТИ - НЛО - Паранормальные явления - Космос - Странная наука 2024, Július
Anonim
Korai figyelmeztetés Málna PI kifutópálya fény repülési leképezési adatok segítségével
Korai figyelmeztetés Málna PI kifutópálya fény repülési leképezési adatok segítségével
Korai figyelmeztetés Málna PI kifutópálya fény repülési leképezési adatok segítségével
Korai figyelmeztetés Málna PI kifutópálya fény repülési leképezési adatok segítségével
Korai figyelmeztetés Málna PI kifutópálya fény repülési leképezési adatok segítségével
Korai figyelmeztetés Málna PI kifutópálya fény repülési leképezési adatok segítségével
Korai figyelmeztetés Málna PI kifutópálya fény repülési leképezési adatok segítségével
Korai figyelmeztetés Málna PI kifutópálya fény repülési leképezési adatok segítségével

Ez a lámpa több okból jött létre, mivel mindig érdekelnek a repülőgépek, amelyek felülről repülnek, és nyáron a hétvégén gyakran repülnek izgalmas repülőgépek. Bár hajlamosak csak hallani őket, ahogy elmennek. A másik ok az, hogy úgy tűnik, hogy a londoni City repülőtérről induló repülőgépek repülési útvonalait néha lehallgatják, és elég zajos járataik vannak. Mivel néhány videót YouTube -ra rögzítek, nagyon bosszantó, hogy egy zajos repülőgép miatt le kell selejtezni egy felvételt. Ezért kíváncsi voltam, hogy az olyan oldalak, mint a flightradar24, látható adatok nyilvánosan hozzáférhetők -e, miután felfedeztem, hogy valami hasonló áll rendelkezésre az opensky hálózaton, megszületett a korai figyelmeztető lámpa. Nem tartott sokáig, hogy aztán felmerüljön az ötlet, hogy a kifutópálya -fény másolatát használjuk a projekt elhelyezésére.

Az OpenSky hálózatról a https://www.opensky-network.org címen olvashat bővebben. Ezúttal azt is szerettem volna, hogy az áttetsző PLA helyett szép gyantalencsét készítsek, és bár van egy ADS-B-vevőm, amelyet meg akartam tartani. ez egyszerű és olcsó. Az ADS-B-hez antennára is szükség van, és ez nem tenné meg, ha egy lámpa az irodában lévő polcra kerülne. Remélhetőleg tehát érdekesnek találja a konstrukciót, mivel lefedi a 3D nyomtatást, a műgyanta formázást és a matematikát, valamint a repülőgépek helyzetének extrapolálására, amelyek esetleg felülről elhaladhatnak.

1. lépés: A tok tervezése

A Google kereső számos különböző kivitelű kifutópálya -lámpát állít elő, és ennek tervezése sok különböző gyártású valódi lámpa tervezési hatásait felhasználva készült. Az is méretezhető, hogy egy szobában vagy egy polcon üljön, nem pedig teljes méretben, mivel a való életben sokkal nagyobbak.

A tervek a Fusion 360 -ban készültek, és importáltam néhány korábbi elemet, például a málna pi nullatartót a korábbi projektekből. Az elemek újbóli felhasználása sok fejtörést okoz az alapok levezetésében. A fájlokat innen is letöltheti:

2. lépés: A lencsék öntése - #fail

A lencsék leadása - #nem sikerült
A lencsék leadása - #nem sikerült
A lencsék leadása - #nem sikerült
A lencsék leadása - #nem sikerült
A lencsék leadása - #nem sikerült
A lencsék leadása - #nem sikerült

Ennek a lámpának a legfontosabb tervezési eleme az objektív volt. Tehát először ezzel foglalkoztam, mivel egy szép, hiteles kinézetű üveg nélkül a projekt működni fog. Itt dokumentálom azokat a kudarcokat, amelyekkel megpróbáltam ezt elérni, annak ellenére, hogy én is úgy döntöttem, hogy az objektívet borostyánszínűre színezem. A kifutópálya lámpái borostyánsárga és kék színben is megjelennek, és csak azután kezdtem el a borostyán készítését, hogy meggondoltam magam, és úgy döntöttem, hogy kéket szeretnék.

Ha jól tudom, a borostyánsárga színűeket a tartóvonalnál, a kékeket pedig a kifutópálya szegélyezésénél használják, és ezek azok az archetipikusabb típusok, amelyek a kifutópálya fényeinek keresésekor találhatók. Azonban itt az első kísérletem egy borostyánsárga lencse készítésére. A lencse készítéséhez átlátszó műgyanta anyagot használtam színes adalékanyaggal, és bár néhány formát készítettem, mielőtt elgondolkodtam azon, vajon lehetséges lesz -e 3D formátum nyomtatása és felhasználása. Elkezdtem tehát egy osztott forma készítésével 3D -ben, és PetG -ben kinyomtatni. Megfontolt mennyiségű penész -felszabadulás volt meggyőződésem, hogy elegendő lesz a penész kiszórásához. Mint kiderült néhány próbálkozással, a gyantát ragasztóként ragasztottam a formához, és egyszerűen nem tűnt lehetségesnek, hogy elválasszuk őket. Bár megvolt a teljes skála, amit használni fogok, úgy döntöttem ellene, és kinyomtattam a lencsét, amelyet hagyományos szilikon formázáshoz használok.

3. lépés: Különböző típusú gyanta

Különböző típusú gyanták
Különböző típusú gyanták
Különböző típusú gyanták
Különböző típusú gyanták
Különböző típusú gyanták
Különböző típusú gyanták
Különböző típusú gyanták
Különböző típusú gyanták

Gyorsan félretéve, 3 féle tiszta/színes gyantát használtam ehhez a projekthez.

Az első egy Hobe piactípus volt, amelyet Pebeo - Gedeo -nak hívtak, és általában apró tárgyak kapszulázására szolgál, ékszerekhez és íróasztal -súlyokhoz stb. Ennek ellenére meglehetősen drága a kapott összeghez képest, de praktikus és könnyen elérhető a hobbi- és kézművesboltokban. 2: 1 arányban keverjük össze. A második egy előszínezett gyanta volt, amelyet 10: 1 arányban kevernek össze a keményítővel, és ennek a leghosszabb ideig kellett megszáradnia, körülbelül egy hétig, hogy őszinte legyen, mielőtt teljesen megszilárdulna. Az utolsó egy átlátszó gyanta volt, amelyet szintén 2: 1 arányban kevertek össze, és ez körülbelül 2 nap alatt kikeményedett. Ezt színezheti pigmentcseppekkel, de ügyelnie kell arra, hogy mindig ugyanazt a színarányt használja, ha külön tételeket készítenek. Ez a legköltséghatékonyabb is. Végül a forma RTV-je egy GP-3481 RTV volt, és ez körülbelül 24 órát vesz igénybe, és meglehetősen hosszú edényidővel rendelkezik, így bőven van ideje összekeverni, majd felönteni.

Jelenleg nincs üresedényem (jelenleg megrendelés alatt), hogy buborékok borítsák a formába és a gyantaöntésbe. Ez nem túl nagy probléma, de tiszta lencsével vagy hasonlóval érdemes elgondolkodni azon, hogy miként távolítsuk el a buborékokat a keverékből.

4. lépés: A lencse öntése szilikonformába #2

Image
Image
A lencse öntése szilikonformába #2
A lencse öntése szilikonformába #2
A lencse öntése szilikonformába #2
A lencse öntése szilikonformába #2

Ez tehát a második kísérlet egy gyantalencse készítésére, és az első lépés az volt, hogy mindkét objektívet Fusion 360 -ban készítsük el, majd nyomtassuk ki ABS -ben és egy vödröt a tartáshoz. Ez lenne az első a formához, és segít csökkenteni a felhasználandó szilikon mennyiségét. Könnyen elkészítheti ezt a kártyából, de ez csak egy másik megközelítés. Annak érdekében, hogy nagyobb esélye legyen a formából való kiszabadulásra, először lakkoztam, majd jó fedést kaptam viaszleválasztó szerrel.

Ezután öntöttem néhány GP-3481-et, ami a part 27 RTV-jének felel meg, majd hagytam állni a következő 24 órában a leszerelés előtt. Miután ez megtörtént, az átlátszó gyantát 2: 1 arányban összekevertem, körülbelül 4/5 csepp színpigmenttel, és jó négy percig jól elkevertem. Ezt a formába öntöttük, majd egy üveget helyeztünk a gyantába, hogy később ürességet biztosítsunk a lámpának vagy a LED -eknek. Körülbelül 24 óra elteltével ez a gyanta eltávolítható volt, és a lencse nagyon jó lett. Légbuborékok vannak jelen, de még nincs vákuumtartályom a gyanta gáztalanításához öntés előtt.

5. lépés: 3D nyomtatás és előkészítés

3D nyomtatás és előkészítés
3D nyomtatás és előkészítés
3D nyomtatás és előkészítés
3D nyomtatás és előkészítés
3D nyomtatás és előkészítés
3D nyomtatás és előkészítés

A modellt úgy tervezték, hogy a központi rész az alaphoz csatlakozzon. Ezzel elkerülhető a maszkolás a festési folyamat során. A teljes modellt Hatchbox ABS -ben kinyomtatták, majd csiszolták. A 60 -as szemcsétől 800 -ig terjedő szemcseméretből kiindulva elég jó felületképzést adott ehhez a modellhez.

6. lépés: Összeszerelés és festés

Összeszerelés és festés
Összeszerelés és festés
Összeszerelés és festés
Összeszerelés és festés
Összeszerelés és festés
Összeszerelés és festés

Miután a nyomatokat csiszolták, nagy festékű alapozóval festették. Enyhén csiszolva, majd szürke alapozóval permetezve. A fő részeket ford jelző sárgára festették, majd az alaphoz zöld patakokat használtak. ezután a tamiya ezüst fényeit a csavarokra helyezték, és néhány molotow ezüst krómot használtak a lencsetartón.

7. lépés: Először keressen repülőgépeket egy határoló területen belül

A hardver rendezésével a szoftvert dolgozni kellett. Jelenleg van néhány webhely, amely biztosítja a repüléskövetést, de nem sok olyan, amely API -t biztosít az adatok eléréséhez. Vannak, akik ezt teszik, csak kereskedelmi alapon teszik ezt, de szerencsére van egy olyan webhely, amelyet https://opensky-network.org néven ingyenesen használhat.

Ezen adatok eléréséhez regisztrálnia kell, majd használhatja az API -jukat, amely számos funkciót és módot kínál az adatok lekérésére. Egy területen belül minden járat érdekel minket, és erre Live API hívásunk van. https://opensky-network.org/apidoc/ nevezett határoló doboz. Az API híváshoz szükség van a doboz sarkaira, amelyek érdeklik, és természetesen a Lat/Lon a középpont. Ellenőrizheti, hogy a matematika működik -e ezen az oldalon, amely attól függően rajzolja a dobozt, hogy mit ír be. Http://tools.geofabrik.de

függvény get_bounding_box ($ szélességi fok, $ hosszúsági fok, $ half_side_in_miles) {$ half_side_in_km = $ half_side_in_miles * 1.609344; $ lat = deg2rad ($ szélességi fok_fokban); $ lon = deg2rad ($ longitude_in_degrees); $ sugár = 6371; $ parallel_radius = $ sugár*cos ($ lat); $ lat_min = $ lat - $ half_side_in_km/$ sugarú; $ lat_max = $ lat + $ half_side_in_km/$ sugarú; $ 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 tömb ($ box_lat_min, $ box_lon_min, $ box_lat_max, $ box_lon_max);

Ha tesztelni szeretné a kódját, van egy webhely, ahol megadhatja a lat/lon értéket, és megtekintheti az eredményeket a térképen: Lásd a határoló doboz példáját a térképen

8. lépés: A repülőgépek irányának számítása a velünk kapcsolatban

A repülőgépek irányának számítása velünk kapcsolatban
A repülőgépek irányának számítása velünk kapcsolatban

A határoló doboz API hívásának eredményei megadják a repülőgépek listáját, azok hosszúságát/latját, sebességét, magasságát és irányát. Tehát a következő dolog, amit meg kell tennünk, hogy megkapjuk az egyes síkok irányát velünk kapcsolatban, hogy tovább tudjuk dolgozni azokat, amelyek legalább az általános irányunkban haladnak. Ezt megtehetjük úgy, hogy ismerjük a pozíciónkat, és ki tudjuk dolgozni az egyes síkokhoz viszonyított szöget.

Ehhez egy olyan kódrészletet használok, amely eredetileg Javascript -ben volt, ezért átalakítottam itt PHP -re, * számítsa ki (kezdeti) irányt két pont között * * innen: Ed Williams Aviation Formulary, https://williams.best.vwh.net/avform.htm#Crs * source = instantglobe.com/CRANES/GeoCoordTool.html */ függvény 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 = sin ($ dLon) * cos ($ lat2);

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

Ha meg szeretné tekinteni azt az oldalt, ahol az eredeti javascript verziók találhatók, akkor ez a link:

ezen a kódon belül az egyes számítási típusok különböző alrutinjait is megtekintheti.

9. lépés: Az elfogás kiszámítása egy kört tekintve

Egy metszés kiszámítása egy kört tekintve
Egy metszés kiszámítása egy kört tekintve

Tehát most van egy síkunk, ahol a csapágy közte és a helyünk között kevesebb, mint 90 (pozitív vagy negatív), és ez azt jelenti, hogy van esély arra, hogy közel repül. A hasrsine képlet segítségével a repülőgép hosszúságának/szélességének és a házunk hosszúságának/szélességének segítségével is kiszámíthatjuk azt a távolságot, amely tőlünk távol van.

Ha a diagramot nézzük, ha körvonalat húzunk a házunk köré, mondjuk körülbelül 3 mérföld sugarú körben, akkor esélyünk van arra, hogy bármit átrepüljünk. Tudjuk, hogy mi a különbség a sík és a köztünk lévő irány között, és tudjuk, hogy a sík milyen távolságban van tőlünk, hogy aztán ki tudjuk dolgozni a háromszöget a jó öreg SOHCAHTOA segítségével, és ebben az esetben a szög Tanjának használatával megkaphatjuk a ellentétes oldalhossz. Tehát ha összehasonlítjuk ezt az értéket a ház körének sugarának értékével, akkor megtudhatjuk, hogy a gép elég közel fog -e repülni ahhoz, hogy láthassuk. A következő lépés, amit megtehetünk, hogy kiszámoljuk az időt, ameddig a gép elrepül a légsebesség és a távolság segítségével, és ha ez kevesebb, mint mondjuk, körülbelül 45 másodperc, akkor bekapcsoljuk a lámpát. Ez egy olyan kód, amellyel kiszámítom az átrepülés esélyét. Ezt azért teszem, mert van egy közeli repülőtér, és amikor a gépek taxiznak, elkerülhetetlenül a ház felé mutatnak. Mivel azonban a magasságuk nulla, és a sebesség gyalogosan halad, ennek nem szabad riasztást indítania.

függvény get_intercept ($ home_head, $ plane_head, $ plane_distance) {

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

if (($ flight_angle <90) && ($ flight_intercept <3)) {// lehetséges, hogy elrepül

}

return $ flight_intercept;

}

10. lépés: Térkép két pontja közötti távolság - Haversine képlet

Távolság a térkép két pontja között - Haversine képlet
Távolság a térkép két pontja között - Haversine képlet

Tehát ki kell számolnunk a távolságot a gép és a tartózkodási helyünk között. Rövid távolságokon a térképen hozzávetőlegesen kiszámíthatod a távolságot, de mivel a föld gömb alakú, van egy képlet, amelyet úgy hívnak, hogy hasrsine formula, amely lehetővé teszi az ívelt felület figyelembevételét. Bővebben a képletben olvashat:

Most, ha kiszámítjuk a távolságot és ismerjük a repülőgép sebességét, megállapíthatjuk, hogy hány másodperc múlva lesz a gép a feje fölött. Tehát a fény akkor gyullad ki, ha a flypast utáni 30 másodpercen belül történik valami, és végre megkapjuk a figyelmeztető lámpánkat.

* 0n JS alapú az instantglobe.com/CRANES/GeoCoordTool.html webhelyen, és PHP -vé alakult */

function get_distHaversine ($ home_lat, $ home_lon, $ plane_lat, $ plane_lon) {$ R = 6371; // a föld átlagos sugara km-ben $ dLat = deg2rad ($ plane_lat- $ home_lat); $ dLon = deg2rad ($ plane_lon- $ home_lon); $ lat1 = deg2rad ($ home_lat); $ lat2 = deg2rad ($ plane_lat);

$ a = sin ($ 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; return $ d; }

11. lépés: A síkadatbázis importálása és meghatározása

A másik rész az, hogy az opensky webhely letölthető adatbázist kínál a repülőgépekről a hívójelekkel és azonosítókkal együtt. Több százezer bejegyzése van. Tehát letölthetjük ezt, és helyben betölthetjük egy MariaDB adatbázisba keresésre (MySQL). Minden fölött megjelenő repülőgépnél lekérjük annak részleteit, és frissítünk egy számlálót, amely megmutatja, hányszor látták.

Jelenleg is szerkesztem az adatbázist, hogy kiemeljem azokat a repülőgépeket, amelyek érdekelnek. Főleg öreg harci madarak és más hasonló érdekes repülőgépek. Ezen a nyáron párszor átrepült egy Mig-15. így a cél egy riasztási mező használata, amelyet hozzáadtam, majd gyorsan felvillan a fény, ha valami érdekes történik

12. lépés: Az eredmények és az új funkciók javítása

Az eredmények és az új funkciók javítása
Az eredmények és az új funkciók javítása
Az eredmények és az új funkciók javítása
Az eredmények és az új funkciók javítása
Az eredmények és az új funkciók javítása
Az eredmények és az új funkciók javítása

Tehát elméletileg minden nagyon jól működik, de az adatok alapján kiderül, hogy vannak repülőgépek, amelyek átrepülnek, és amelyek nem jelennek meg az API -ban.

Ennek oka az, hogy nem minden repülőgép használja az ADS-B transzpondert, és használ régebbi, MLAT alapú transzpondereket. Az MLAT -ot használó repülőgépek helyzetadatainak megszerzéséhez a földön lévő vevőkészülékek sorozatának háromszögelésére van szükség, és egyes oldalak, mint például a flightradar24, rendelkeznek nagyobb közreműködői hálózattal, mint az opensky. Remélhetőleg idővel a lefedettségük is javulni fog, és beállítok egy saját MLAT vevőt, hogy kiegészítsem ezeket az adatokat.

13. lépés: Kódbázis

Ne felejtse el, ha ezt használni fogja, akkor érdemes eltávolítani az SQL utasításokat, ha nem rendelkezik repülőgépek adatbázisával, és hozzá kell adnia saját Lon/Lat értékét és API kulcsát a repülési adatok eléréséhez.

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

define ("INTERVAL", (20 * 1)); function fexp () {$ lat = "az Ön szélessége"; $ lon = "a hosszúsága"; $ oldal = 15,75; $ box = get_bounding_box ($ lat, $ lon, $ side); $ latmin = $ box [0]; $ lonmin = $ box [1]; $ latmax = $ doboz [2]; $ lonmax = $ doboz [3]; $ flyurl = "https://opensky-network.org/api/states/all?lamin=$latmin&lomin=$lonmin&lamax=$latmax&lomax=$lonmax"; echo "Az égbolt beolvasása"; $ start_time = mikrotime (igaz); $ json = file_get_contents ($ flyurl); $ data = json_decode ($ json, IGAZ); $ bejövő = HAMIS; $ num_planes = count ($ data ['state']); if ($ num_planes> 0) {echo "és láthatjuk a $ num_planes síkokat / n"; for ($ x = 0; $ x 0) {$ plane_eta = $ distplane/$ air_speed_kmh; } else {$ eta = 1; } if ((($ intercept) 0)) && ($ distplane0) {$ bejövő = TRUE; visszhang "------------------------------------------------ -------------------- / n "; echo "$ icao24 - [$ ország $ hívójel] itt: [$ geo_altitude_m M - $ geo_altitude_f ft]"; echo "[speed $ air_speed_kmh kmh and", round ($ distplane, 1), "km away] n"; echo "[a" címsorán ", kerek ($ plane_heading, 1),"] [homeangle $ head_d] "; echo "[$ szélesség, $ hosszúság] n"; echo "[flypast in", decimal_to_time ($ plane_eta), "now", round ($ intercept, 1), "km away / n"; visszhang "------------------------------------------------ -------------------- / n "; $ DBi = new mysqli ("127.0.0.1", "root", "your password", "waitcs"); $ sql = "select * a repülőgép -adatbázisból, ahol` icao24` = '$ icao24' "; mysqli_set_charset ($ DBi, "utf8"); $ getplanedata = mysqli_query ($ DBi, $ sql) vagy die (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 ['regisztráció']; echo "egy"; echo $ row_getplanedata ['gyártó neve']; visszhang ""; echo $ row_getplanedata ['modell']; echo "by"; echo $ row_getplanedata ['Manufacturericao']; echo "tulajdonosa"; echo $ row_getplanedata ['tulajdonos']; visszhang "látott"; echo $ row_getplanedata ['látogatások']; echo "times"; echo "különleges besorolás ="; echo $ row_getplanedata ['különleges']; echo "\ n"; $ látogatások = $ row_getplanedata ['látogatások']+1; } while ($ row_getplanedata = mysqli_fetch_assoc ($ getplanedata)); mysqli_free_result ($ getplanedata); $ sqli = "UPDATE repülőgép -adatbázis SET látogatások = $ látogatások WHERE icao24 = '$ icao24'"; mysqli_set_charset ($ DBi, "utf8"); $ updateplanedata = mysqli_query ($ DBi, $ sqli) vagy die (mysqli_error ($ DBi)); } else {echo "Nem sikerült megtalálni ezt a síkot a DB -ben, ezért adjuk hozzá"; $ sqli = "INSERT INTO repülőgépadatbázis (icao24, látogatások, különleges) VALUES ('$ icao24', 1, 1)"; $ updateplanedata = mysqli_query ($ DBi, $ sqli) vagy die (mysqli_error ($ DBi)); } echo "----------------------------------------------- --------------------- / n "; } else {// echo "$ callign"; }}} else {echo "és az ég tiszta / n"; } if ($ bejövő) {echo "Bejövő sík / n"; $ command = "sertések w 17 1"; execInBackground ($ parancs); } else {echo "nincs bejövő járat / n"; $ command = "sertések w 17 0"; execInBackground ($ parancs); }} függvény decimal_to_time ($ decimal) {$ offset = 0.002778; if ($ decimal> $ offset) {$ decimal = $ decimal - 0,002778; } $ hours = gmdate ('H', emelet ($ decimális * 3600)); $ minutes = gmdate ('i', emelet ($ decimális * 3600)); $ másodperc = gmdate ('s', emelet ($ decimális * 3600)); return str_pad ($ hours, 2, "0", STR_PAD_LEFT). ":". str_pad ($ perc, 2, "0", STR_PAD_LEFT). ":". str_pad ($ másodperc, 2, "0", STR_PAD_LEFT); }/ * * számítsa ki (kezdeti) irányt két pont között * * innen: Ed Williams Aviation Formulary, https://williams.best.vwh.net/avform.htm#Crs * source = instantglobe.com/CRANES/GeoCoordTool. html */ function get_bearing ($ home_lat, $ home_lon, $ plane_lat, $ plane_lon) {$ lat1 = deg2rad ($ home_lat); $ lat2 = deg2rad ($ plane_lat); $ dLon = deg2rad ($ plane_lon- $ home_lon); $ y = sin ($ dLon) * cos ($ lat2); $ x = cos ($ lat1)*sin ($ lat2) - sin ($ lat1)*cos ($ lat2)*cos ($ dLon); $ z = atan2 ($ y, $ x); $ zz = (rad2deg ($ z) +360)% 360; return $ zz; } függvény 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 = cser ($ flight_angle_r); $ flight_intercept = $ flight_angle_t * $ plane_distance; return $ flight_intercept; } /* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - *// * * A Haversine képlet segítségével kiszámíthatja a távolságot (km -ben) a * szélesség/hosszúság (számfokokban) * * által meghatározott két pont között: Haversine képlet - RWSinnott, "Virtues of the Haversine", * Sky and Telescope, Vol. 68, no 2, 1984 * https://williams.best.vwh.net/avform.htm#Crs * * példahasználat a következő formából: * result.value = LatLon.distHaversine (lat1.value.parseDeg (), long1.value.parseDeg (), * lat2.value.parseDeg (), long2.value.parseDeg ()); * ahol lat1, long1, lat2, long2 és az eredmény űrlapmezők * source = instantglobe.com/CRANES/GeoCoordTool.html */function get_distHaversine ($ home_lat, $ home_lon, $ plane_lat, $ plane_lon) {$ R = 6371; // a föld átlagos sugara km-ben $ dLat = deg2rad ($ plane_lat- $ home_lat); $ dLon = deg2rad ($ plane_lon- $ home_lon); $ lat1 = deg2rad ($ home_lat); $ lat2 = deg2rad ($ plane_lat); $ a = sin ($ 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; return $ d; } függvény get_bounding_box ($ szélességi fok, $ hosszúsági fok, $ half_side_in_miles) {$ half_side_in_km = $ half_side_in_miles * 1.609344; $ lat = deg2rad ($ szélességi fok_fokban); $ lon = deg2rad ($ longitude_in_degrees); $ sugár = 6371; # A párhuzam sugara adott szélességi fokon; $ parallel_radius = $ sugár*cos ($ lat); $ lat_min = $ lat - $ half_side_in_km/$ sugarú; $ lat_max = $ lat + $ half_side_in_km/$ sugarú; $ 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 tömb ($ 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 () {// teljesen opcionális visszatérés (TRUE); } függvény start () {echo "kezdő / n"; $ command = "sertések w 17 1"; execInBackground ($ parancs); $ aktív = IGAZ; while ($ active) {usleep (1000); // nem kötelező, ha figyelmes akar lenni, ha (microtime (true)> = $ nextTime) {fexp (); $ nextTime = mikrotime (true) + INTERVAL; } $ active = checkForStopFlag (); }} fexp (); Rajt(); ?>

14. lépés: A LED és a lekapcsoló bekötése

A LED és a lekapcsoló bekötése
A LED és a lekapcsoló bekötése

Ennek a projektnek a bekötése nem is lehetne egyszerűbb. Csak az egyik LED van csatlakoztatva a 17 -es érintkezőhöz, és egy 270R -os ellenállású földeléssel.

Tartalmazok egy leállítási és bekapcsológombot, valamint egy bekapcsoló LED -et, amely lefut a TXd adattűről. A leállítási funkcióról és a szükséges kódról a https://github.com/Howchoo/pi-power-button.git oldalon olvashat bővebben a https://howchoo.com/g/mwnlytk3zmm/how-to- add-a-pow… A tápellátás hozzáadásáról itt olvashat

Ajánlott: