Indholdsfortegnelse:
- Trin 1: Design af sagen
- Trin 2: Støbning af linserne - #fail
- Trin 3: Forskellige typer harpiks
- Trin 4: Støbning af linsen i silikoneform #2
- Trin 5: 3D -udskrivning og forberedelse
- Trin 6: Montering og maling
- Trin 7: Find først fly inden for et afgrænsningsområde
- Trin 8: Beregning af overskriften på flyene i forhold til os
- Trin 9: Beregning af en aflytning ved at se på en cirkel
- Trin 10: Afstand mellem to punkter på et kort - Haversine -formel
- Trin 11: Import og definition af flydatabasen
- Trin 12: Forbedring af resultater og nye funktioner
- Trin 13: Kodebase
- Trin 14: Tilslutning af LED'en og afbryderkontakten
Video: Tidlig advarsel Raspberry PI Runway Light ved hjælp af flyvekortdata: 14 trin (med billeder)
2024 Forfatter: John Day | [email protected]. Sidst ændret: 2024-01-30 08:27
Denne lampe opstod af flere årsager, idet jeg altid er interesseret i de fly, der flyver over hovedet, og om sommeren i weekenderne er der ofte nogle ret spændende, der flyver rundt. Selvom du kun har en tendens til at høre dem, når de går forbi. Så er den anden grund, at det ser ud til, at flyvevejen for udgående fly fra London City lufthavn til tider vil blive overhørt, og de har nogle temmelig støjende flyvninger. Da jeg var ved at optage nogle videoer til YouTube, er det virkelig irriterende at skulle skrotte en optagelse på grund af et støjende fly. Så jeg spekulerede på, om de data, du ser på websteder som flightradar24, er offentligt tilgængelige, da jeg opdagede, at noget lignende var tilgængeligt fra opensky -netværket, blev den tidlige advarselslampe født. Det tog ikke alt for lang tid at komme på ideen om at bruge en kopi af en landingsbane til at huse projektet.
Du kan finde ud af mere om The OpenSky Network på https://www.opensky-network.org Jeg ville også denne gang lave en flot harpiksobjektiv i stedet for at bruge gennemsigtig PLA, og selvom jeg har en ADS-B-modtager, jeg gerne ville beholde dette enkle og billige. ADS-B har også brug for en antenne, og det ville ikke gøre for en lampe at komme på hylden på kontoret. Så forhåbentlig finder du bygningen interessant, da den dækker 3D -print, harpiksstøbning og matematik samt at ekstrapolere positionerne af fly, der potentielt kan passere overhead.
Trin 1: Design af sagen
Google -søgning kommer med mange forskellige designs af landingsbanelampe, og designet af denne blev lavet ved hjælp af designpåvirkninger fra mange forskellige mærker af rigtige lamper. Det er også skaleret til at sidde i et værelse eller på en hylde frem for fuld størrelse, da de har en tendens til at være meget større i virkeligheden.
Design blev udarbejdet i Fusion 360, og jeg importerede nogle tidligere elementer, såsom hindbær pi zero -holderen fra tidligere projekter. At kunne genbruge elementer tager meget af hovedpinen ud af at få det grundlæggende ned. Du kan også downloade filerne her
Trin 2: Støbning af linserne - #fail
Det vigtigste designelement i denne lampe var linsen. Så jeg tacklede dette først som uden et flot autentisk glas, som projektet skulle fungere. Jeg dokumenterer her de fejl, jeg havde i forsøget på at opnå det, uden at modstå, at jeg også i første omgang besluttede at gøre linsen rav. Banebelysning kommer i både rav og blå, og det var først efter jeg var begyndt at lave det gule, at jeg ændrede mening og besluttede, at jeg ville have en blå.
Efter hvad jeg kan finde ud af, bruges de ravfarvede ved holdelinjen, og de blå bruges til at linke landingsbanen, og det er dem, der synes at være de mere arketypiske, der findes, hvis du søger efter landingsbaner. Men her er mit første forsøg på at lave en ravfarvet linse. For at lave linsen skulle jeg bruge clearcast -harpiks med et farvetilsætningsstof, og selvom jeg har lavet et par forme før, spekulerede jeg på, om det var muligt at udskrive en 3D -form og bruge det. Så jeg startede med at lave en splitform i 3D og udskrive den i PetG. Skikkelige mængder skimmelsvamp, jeg var overbevist om, ville være nok til at sprede formen. Som det viser sig med et par forsøg, fik jeg harpiksen til at hænge fast i formen som lim, og det virkede bare ikke til at adskille dem. Selvom jeg havde den i fuld skala, som jeg skulle bruge, besluttede jeg mig imod det og udskrev objektivet til brug med traditionel silikoneformning.
Trin 3: Forskellige typer harpiks
Som en hurtig side brugte jeg 3 typer klare/farvede harpikser til dette projekt.
Den første var en Hobby -markedstype kaldet Pebeo - Gedeo og sælges normalt til indkapsling af små genstande og bruges til smykker og skrivebordspapirvægte osv. Dette fungerede ret godt og helbredte pænt på cirka 24-36 timer. Det er dog ret dyrt for det beløb, du får, men er praktisk og let tilgængeligt i hobby- og håndværksbutikker. Det blandes i et forhold på 2: 1. Den anden var en præfarvet harpiks, der blandes i et forhold på 10: 1 med hærderen, og dette tog den længste tid at hærde, cirka en uge for at være ærlig, før den var fuldstændig hærdet. Den sidste var en klar harpiks, der også blev blandet i forholdet 2: 1 og dette hærdet på cirka 2 dage, du kan farve dette med dråber pigment, men du skal sørge for, at du altid bruger det samme farveforhold, hvis du laver separate partier. Det fungerer også det mest omkostningseffektive. Endelig var RTV for formen en GP-3481 RTV, og det tager cirka 24 timer at indstille og har en ganske lang grydetid, så du har masser af tid til at blande den og derefter hælde den.
I øjeblikket har jeg ikke en vakuumkande (i øjeblikket på bestilling), så du kan blive plaget af bobler i både formen og harpiksen. Ikke for meget et problem for dette, men med en klar linse eller lignende, så vil du overveje en eller anden måde at få boblerne ud af blandingerne.
Trin 4: Støbning af linsen i silikoneform #2
Så dette er det andet forsøg på at lave et harpiksobjektiv, og det første trin var at lave både et objektiv i Fusion 360 og derefter printe det i ABS samt en spand til at holde det. Dette ville være førstnævnte til formen og hjælper med at holde mængden af silikone, der skal bruges, nede. Du kan nemt lave dette ud af kort, men det er bare en anden tilgang. For at give den en bedre chance for at blive frigivet fra formen lakede jeg den først og gav den derefter en god belægning af voksfrigivelsesmiddel.
Jeg hældte derefter noget GP-3481, der er omkring shore 27 RTV, og lod det derefter sætte sig i løbet af de næste 24 timer, før det formedes. Når dette var gjort, brugte jeg den klare harpiks blandet i forholdet 2: 1 med ca. 4/5 dråber af farvepigmentet og blandede det godt i godt fire minutter. Hældte dette i formen og placerede derefter et skudglas i harpiksen for at give et hul senere for enten en lampe eller LED'erne. Efter cirka 24 timer var denne harpiks klar til at fjerne, og objektivet kom ret godt ud. Der er luftbobler til stede, men endnu har jeg ikke et vakuumbeholder til at afgasse harpiksen, før det hældes.
Trin 5: 3D -udskrivning og forberedelse
Modellen er designet på en måde, så den centrale sektion tilsluttes basen. Dette var for at undgå maskering under malingsprocessen. Hele modellen blev trykt i Hatchbox ABS og derefter slebet. Startende med 60 korn op til omkring 800 grus gav en god nok overfladefinish til denne model.
Trin 6: Montering og maling
Når udskrifterne er slebet, blev det derefter malet med en højprimer. Slibes let og sprøjtes derefter i grå primer. Hoveddelene blev malet i ford signal gul, og derefter blev brooklands grøn brugt til basen. højdepunkter af tamiya sølv blev derefter påført boltene og nogle molotow sølv krom brugt på linseholderen.
Trin 7: Find først fly inden for et afgrænsningsområde
Med hardwaren sorteret skulle softwaren bearbejdes. Der er et par steder nu, der giver flyvesporing, men ikke mange, der giver en API til at få adgang til disse data. Nogle der gør det, gør det kun på kommercielt grundlag, men heldigvis er der et websted kaldet https://opensky-network.org, som du kan bruge gratis.
For at få adgang til disse data skal du registrere, og derefter kan du bruge deres API, det giver flere funktioner og måder at trække dataene på. Vi er interesseret i alle flyvninger inden for et område, og de har et Live API -opkald til det. https://opensky-network.org/apidoc/ kaldet afgrænsningsboks. API -opkaldet kræver de hjørner af boksen, som du er interesseret i, selvfølgelig vores Lat/Lon som centrum. Du kan kontrollere, om matematikken fungerer på dette websted, der tegner en boks afhængigt af, hvad du skriver. Http://tools.geofabrik.de, men i øjeblikket giver følgende script de punkter, vi har brug for at tilslutte API'en.
funktion 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); $ radius = 6371; $ parallel_radius = $ radius*cos ($ lat); $ lat_min = $ lat - $ half_side_in_km/$ radius; $ lat_max = $ lat + $ half_side_in_km/$ radius; $ lon_min = $ lon - $ half_side_in_km/$ parallel_radius; $ lon_max = $ lon + $ half_side_in_km/$ parallel_radius; $ box_lat_min = rad2deg ($ lat_min); $ box_lon_min = rad2deg ($ lon_min); $ box_lat_max = rad2deg ($ lat_max); $ box_lon_max = rad2deg ($ lon_max); return array ($ box_lat_min, $ box_lon_min, $ box_lat_max, $ box_lon_max);
Hvis du vil teste din kode, er der et websted, hvor du kan indtaste lat/lon og se resultaterne på et kort: Se et afgrænsningsfelteksempel på et kort
Trin 8: Beregning af overskriften på flyene i forhold til os
Resultaterne fra grænsekassens API -opkald giver os en liste over fly, deres Lon/lat, hastighed, højde og kurs. Så den næste ting, vi skal gøre, er at få overskriften på hvert plan i forhold til os, så vi kan behandle dem, der i det mindste er på vej i vores generelle retning. Vi kan gøre dette, da vi kender vores position og kan beregne vinklen fra os til hvert plan.
For at gøre det bruger jeg et stykke kode, som oprindeligt var i Javascript, så jeg konverterede det her til PHP, * beregne (indledende) peiling mellem to punkter * * fra: Ed Williams 'Aviation Formulary, https://williams.best.vwh.net/avform.htm#Crs * source = instantglobe.com/CRANES/GeoCoordTool.html */ funktion 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; returnere $ zz;
Hvis du vil se på siden, hvor de originale javascript -versioner er, er dette linket:
inden for denne kode kan du også se de forskellige underrutiner for hver beregningstype.
Trin 9: Beregning af en aflytning ved at se på en cirkel
Så vi har nu et fly, hvor peilingen mellem det og vores placering er mindre end 90 (enten positiv eller negativ), og det betyder, at der er en chance for, at det kan flyve i nærheden. Ved hjælp af haversine -formlen kan vi også regne ud ved at bruge flyets Lon/Lat og Lon/Lat i vores hus den afstand, den er væk fra os.
Ser vi på diagrammet, giver vi os en chance for at se noget flyve over, hvis vi tegner en cirkel omkring vores hus med en radius på cirka 3 miles. Vi kender forskellen i kursen mellem flyet og os, vi kender også flyets afstand fra os, så vi derefter kan udarbejde trekanten ved hjælp af den gode gamle SOHCAHTOA, og i dette tilfælde ved hjælp af Tan af vinklen kan vi få modsatte sidelængde. Så hvis vi sammenligner denne værdi med radiusværdien af cirklen omkring huset, kan vi så finde ud af, om flyet vil flyve tæt nok til, at vi kan se det. Den næste bit, vi kan gøre, er at regne ud det tidspunkt, hvor flyet vil flyve forbi ved at bruge lufthastigheden og afstanden, og hvis dette er mindre end sige cirka 45 sekunder eller deromkring, tænder vi lyset. Dette er lidt af koden, som jeg bruger til at regne chancen for en flyve over. Jeg gør dette, da der er en nærliggende lufthavn, og når flyene kører rundt, peger de uundgåeligt på huset. Men da deres højde er nul og hastigheden er i gang, bør dette ikke udløse alarmen.
funktion 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;
hvis (($ flight_angle <90) && ($ flight_intercept <3)) {// mulig flyve forbi
}
retur $ flight_intercept;
}
Trin 10: Afstand mellem to punkter på et kort - Haversine -formel
Så vi skal beregne afstanden mellem flyet og vores placering. På korte afstande på et kort kunne du omtrent beregne afstanden, men da jorden er kugleformet, er der en formel kaldet haversinformlen, der giver dig mulighed for at tage højde for den buede overflade. Du kan læse mere ind i formlen:
Nu med beregnet afstand, og vi kender flyets lufthastighed, kan vi regne ud, hvor mange sekunder det vil være, før flyet er overhead. Så lyset tændes, hvis der er noget inden for 30 sekunder efter flypast, og vi endelig har vores advarselslampe.
* baseret 0n JS på instantglobe.com/CRANES/GeoCoordTool.html og blev til PHP */
funktion get_distHaversine ($ home_lat, $ home_lon, $ plane_lat, $ plane_lon) {$ R = 6371; // jordens middelradius i km $ 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; returnere $ d; }
Trin 11: Import og definition af flydatabasen
Et af de andre stykker er, at opensky -webstedet tilbyder en downloadbar database med fly sammen med deres kaldesignaler og identer. Dens flere hundrede tusinde poster. Så vi kan downloade dette og indlæse det lokalt i en MariaDB -database til opslag (MySQL). Med hvert fly, der vises overhead, henter vi dets detaljer og opdaterer en tæller for at vise, hvor mange gange det er set.
Jeg redigerer også i øjeblikket databasen for at fremhæve fly, som jeg er interesseret i. Hovedsagelig gamle warbirds og andre lignende interessante fly. Et par gange i sommer er en Mig-15 fløjet over. så målet er at bruge et advarselsfelt, jeg har tilføjet, og derefter blinke lyset hurtigt, når noget interessant er på vej over
Trin 12: Forbedring af resultater og nye funktioner
Så i teorien fungerer alt ret godt, men du vil med dataene opdage, at der er fly, der flyver over, som ikke vises i API'en.
Dette skyldes, at ikke alle fly bruger ADS-B-transponderen og bruger ældre transpondere baseret på MLAT. For at få positionsdata om fly ved hjælp af MLAT kræver det en række modtagere på jorden for at triangulere deres position, og nogle steder som flightradar24 har et større netværk af bidragydere, der gør dette sammenlignet med opensky. Forhåbentlig vil deres dækning med tiden også blive bedre, og jeg opretter min egen MLAT -modtager for at tilføje til disse data.
Trin 13: Kodebase
Glem ikke, at hvis du vil bruge dette, vil du måske fjerne SQL -sætningerne, hvis du ikke har databasen over fly og også tilføje din egen Lon/Lat -værdi og API -nøgle til adgang til flyvedata.
github.com/ajax-jones/runway-light-awacs
definere ("INTERVAL", (20 * 1)); funktion fexp () {$ lat = "din breddegrad"; $ lon = "din længdegrad"; $ side = 15,75; $ box = get_bounding_box ($ lat, $ lon, $ side); $ latmin = $ box [0]; $ lonmin = $ boks [1]; $ latmax = $ boks [2]; $ lonmax = $ boks [3]; $ flyurl = "https://opensky-network.org/api/states/all?lamin=$latmin&lomin=$lonmin&lamax=$latmax&lomax=$lonmax"; ekko "Scanning af SKY"; $ start_time = mikrotid (sand); $ json = file_get_contents ($ flyurl); $ data = json_decode ($ json, TRUE); $ indgående = FALSKT; $ num_planes = count ($ data ['tilstande']); hvis ($ num_planes> 0) {echo "og vi kan se $ num_planes plane / n"; for ($ x = 0; $ x 0) {$ plane_eta = $ distplane/$ air_speed_kmh; } andet {$ eta = 1; } hvis ((($ intercept) 0)) && ($ distplane0) {$ inbound = TRUE; ekko "------------------------------------------------ -------------------- / n "; ekko "$ icao24 - [$ country $ kaldesignal] ved [$ geo_altitude_m M - $ geo_altitude_f ft]"; ekko "[hastighed $ air_speed_kmh kmh og", rund ($ distplan, 1), "km væk] n"; echo "[på en overskrift af", rund ($ plane_heading, 1), "] [homeangle $ heading_d]"; ekko "[$ breddegrad, $ længdegrad] n"; ekko "[flypast in", decimal_to_time ($ plane_eta), "nu", rund ($ intercept, 1), "km væk / n"; ekko "------------------------------------------------ -------------------- / n "; $ DBi = ny mysqli ("127.0.0.1", "root", "din adgangskode", "awacs"); $ sql = "vælg * fra flydatabase, hvor` icao24` = '$ icao24' "; mysqli_set_charset ($ DBi, "utf8"); $ getplanedata = mysqli_query ($ DBi, $ sql) eller die (mysqli_error ($ DBi)); $ row_getplanedata = mysqli_fetch_assoc ($ getplanedata); $ rows_getplanedata = mysqli_num_rows ($ getplanedata); hvis ($ rows_getplanedata> 0) {do {echo "callsign ="; ekko $ row_getplanedata ['registrering']; ekko "er a"; ekko $ row_getplanedata ['fabrikantnavn']; ekko " "; ekko $ row_getplanedata ['model']; ekko "af"; echo $ row_getplanedata ['fabrikanticao']; ekko "ejet af"; ekko $ row_getplanedata ['ejer']; ekko "set"; ekko $ row_getplanedata ['besøg']; ekko "tider"; ekko "special rating ="; ekko $ row_getplanedata ['special']; ekko "\ n"; $ besøg = $ row_getplanedata ['besøg']+1; } mens ($ row_getplanedata = mysqli_fetch_assoc ($ getplanedata)); mysqli_free_result ($ getplanedata); $ sqli = "OPDATER flydatabase SET besøg = $ besøg HVOR icao24 = '$ icao24'"; mysqli_set_charset ($ DBi, "utf8"); $ updateplanedata = mysqli_query ($ DBi, $ sqli) eller die (mysqli_error ($ DBi)); } else {echo "Kunne ikke finde dette fly i DB så tilføjede det"; $ sqli = "INDLÆG I flydatabase (icao24, besøg, special) VÆRDIER ('$ icao24', 1, 1)"; $ updateplanedata = mysqli_query ($ DBi, $ sqli) eller die (mysqli_error ($ DBi)); } ekko "----------------------------------------------- --------------------- / n "; } andet {// ekko "$ callign"; }}} else {echo "og himlen er klar / n"; } hvis ($ indgående) {echo "Indgående fly / n"; $ command = "grise m 17 1"; execInBackground ($ kommando); } ellers {ekko "ingen indgående flyvninger / n"; $ command = "grise m 17 0"; execInBackground ($ kommando); }} funktion decimal_to_time ($ decimal) {$ offset = 0.002778; hvis ($ decimal> $ offset) {$ decimal = $ decimal - 0.002778; } $ timer = gmdate ('H', etage ($ decimal * 3600)); $ minutter = gmdate ('i', etage ($ decimal * 3600)); $ sekunder = gmdate ('s', etage ($ decimal * 3600)); return str_pad ($ timer, 2, "0", STR_PAD_LEFT). ":". str_pad ($ minutter, 2, "0", STR_PAD_LEFT). ":". str_pad ($ sekunder, 2, "0", STR_PAD_LEFT); }/ * * beregne (indledende) peiling mellem to punkter * * fra: 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; returnere $ zz; } funktion 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; retur $ flight_intercept; } /* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - *// * * Brug Haversine -formel til at beregne afstand (i km) mellem to punkter angivet med * breddegrad/længdegrad (i numeriske grader) * * fra: Haversine -formel - RWSinnott, "Virtues of the Haversine", * Sky and Telescope, vol 68, nr. 2, 1984 * https://williams.best.vwh.net/avform.htm#Crs * * brug af eksempel fra form: * result.value = LatLon.distHaversine (lat1.value.parseDeg (), long1.value.parseDeg (), * lat2.value.parseDeg (), long2.value.parseDeg ()); * hvor lat1, long1, lat2, long2 og resultat er formularfelter * source = instantglobe.com/CRANES/GeoCoordTool.html */function get_distHaversine ($ home_lat, $ home_lon, $ plane_lat, $ plane_lon) {$ R = 6371; // jordens middelradius i km $ 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; returnere $ d; } funktion 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); $ radius = 6371; # Radius af parallellen på den givne breddegrad; $ parallel_radius = $ radius*cos ($ lat); $ lat_min = $ lat - $ half_side_in_km/$ radius; $ lat_max = $ lat + $ half_side_in_km/$ radius; $ lon_min = $ lon - $ half_side_in_km/$ parallel_radius; $ lon_max = $ lon + $ half_side_in_km/$ parallel_radius; $ box_lat_min = rad2deg ($ lat_min); $ box_lon_min = rad2deg ($ lon_min); $ box_lat_max = rad2deg ($ lat_max); $ box_lon_max = rad2deg ($ lon_max); return array ($ box_lat_min, $ box_lon_min, $ box_lat_max, $ box_lon_max); } funktion execInBackground ($ cmd) {if (substr (php_uname (), 0, 7) == "Windows") {pclose (popen ("start /B". $ cmd, "r")); } ellers {exec ($ cmd. "> /dev /null &"); }} funktion checkForStopFlag () {// fuldstændig valgfri retur (SAND); } funktionsstart () {echo "starter / n"; $ command = "grise m 17 1"; execInBackground ($ kommando); $ aktiv = SAND; mens ($ aktiv) {usleep (1000); // valgfri, hvis du vil være hensynsfuld, hvis (microtime (true)> = $ nextTime) {fexp (); $ nextTime = mikrotid (sand) + INTERVAL; } $ active = checkForStopFlag (); }} fexp (); Start(); ?>
Trin 14: Tilslutning af LED'en og afbryderkontakten
Ledninger til dette projekt kunne virkelig ikke være enklere. Der er kun den ene LED, der er forbundet til pin 17 og jordet med en 270R modstand inline.
Jeg inkluderer også en nedlukning og tænd / sluk -knap sammen med en strøm -LED, der kører TXd -datapinden. Du kan læse mere om nedlukningsfunktionen og den nødvendige kode på https://github.com/Howchoo/pi-power-button.git fra webstedet https://howchoo.com/g/mwnlytk3zmm/how-to- add-a-pow … Du kan læse om at tilføje et power-lys her
Anbefalede:
Advarsel om temperatur og fugtighed ved hjælp af AWS og ESP32: 11 trin
Advarsel om temperatur og luftfugtighed ved hjælp af AWS og ESP32: I denne vejledning måler vi forskellige temperatur- og fugtighedsdata ved hjælp af Temp og fugtighedsføler. Du lærer også, hvordan du sender disse data til AWS
Sådan laver du en drone ved hjælp af Arduino UNO - Lav en quadcopter ved hjælp af mikrokontroller: 8 trin (med billeder)
Sådan laver du en drone ved hjælp af Arduino UNO | Lav en Quadcopter ved hjælp af mikrokontroller: Introduktion Besøg min Youtube -kanal En Drone er en meget dyr gadget (produkt) at købe. I dette indlæg vil jeg diskutere, hvordan jeg gør det billigt ?? Og hvordan kan du lave din egen sådan til en billig pris … Nå i Indien alle materialer (motorer, ESC'er
RF 433MHZ radiostyring ved hjælp af HT12D HT12E - Lav en RF -fjernbetjening ved hjælp af HT12E & HT12D med 433mhz: 5 trin
RF 433MHZ radiostyring ved hjælp af HT12D HT12E | Oprettelse af en RF -fjernbetjening ved hjælp af HT12E & HT12D med 433mhz: I denne instruktør vil jeg vise dig, hvordan du laver en RADIO -fjernbetjening ved hjælp af 433mhz sendermodtagermodul med HT12E -kode & HT12D -dekoder IC.I denne instruktive kan du sende og modtage data ved hjælp af meget meget billige KOMPONENTER SOM: HT
Trådløs fjernbetjening ved hjælp af 2,4 GHz NRF24L01 -modul med Arduino - Nrf24l01 4 -kanals / 6 -kanals sender modtager til Quadcopter - Rc Helikopter - Rc -fly ved hjælp af Arduino: 5 trin (med billeder)
Trådløs fjernbetjening ved hjælp af 2,4 GHz NRF24L01 -modul med Arduino | Nrf24l01 4 -kanals / 6 -kanals sender modtager til Quadcopter | Rc Helikopter | Rc -fly ved hjælp af Arduino: At betjene en Rc -bil | Quadcopter | Drone | RC -fly | RC -båd, vi har altid brug for en modtager og sender, antag at vi til RC QUADCOPTER har brug for en 6 -kanals sender og modtager, og den type TX og RX er for dyr, så vi laver en på vores
Monitor opvarmningsolietank gallon med e -mail, sms og pushbullet -advarsel: 9 trin (med billeder)
Overvåg opvarmningsolietank galloner med e -mail, SMS og Pushbullet -advarsel: SIKKERHEDSOPLYSNINGER: Hvis nogen vil vide, om " dette er sikkert at bygge/installere " - Jeg har taget dette med til 2 forskellige olieselskaber for feedback/sikkerhedshensyn, og jeg har kørt dette af brandvæsenets brandforebyggelsesassistent C