Inhoudsopgave:
- Stap 1: Eenvoudige hardware
- Stap 2: De schetsen
- Stap 3: De Eric Sketch
- Stap 4: De PHP-code
- Stap 5: De video's en meer ISS & Ham-informatie
- Stap 6: Laatste gedachten…
Video: Eenvoudig ISS-meldingssysteem: 6 stappen (met afbeeldingen)
2024 Auteur: John Day | [email protected]. Laatst gewijzigd: 2024-01-30 11:18
Wat is het internationale ruimtestation en waarom wil je voorspellen waar het is?
Om de eerste vraag te beantwoorden kunnen we op de NASA website kijken voor een antwoord. Wat in het kort is:
Het internationale ruimtestation is een groot ruimtevaartuig. Het draait om de aarde. Het is een huis waar astronauten wonen. Het ruimtestation is ook een wetenschappelijk laboratorium. Veel landen werkten samen om het te bouwen. Ze werken ook samen om het te gebruiken. Het ruimtestation is gemaakt van vele stukken. De stukken zijn door astronauten in de ruimte in elkaar gezet. De baan van het ruimtestation bevindt zich ongeveer 220 mijl boven de aarde. NASA gebruikt het station om te leren over leven en werken in de ruimte. Deze lessen zullen NASA helpen de ruimte te verkennen.
www.nasa.gov/audience/forstudents/k-4/stor…
De tweede vraag is iets moeilijker te beantwoorden - maar ik zal het proberen.
Ik ben een amateur-radio-operator (of Ham-radio-operator) - een ding dat ik altijd leuk heb gevonden, was om een draagbare radio met laag vermogen (5 watt of minder) te gebruiken en te communiceren met satellieten in een baan om de aarde. Het ISS heeft radioapparatuur aan boord.
In het begin van mijn vrije tijd communiceer ik nogal wat met de satellieten, en ik maak zelfs wat contacten met alleen de rubberen ducky-antenne - iets heel moeilijks om te doen. Ik heb een paar contacten gelegd met het ISS met behulp van APRS (automatisch pakketrapportagesysteem). Dat was in 2013 - lang geleden, sindsdien ben ik erg inactief geweest. Het is iets dat ik terug wilde in jou.
In 2013 schreef ik een paar PHP-scripts voor de opdrachtregel die me de locatie van het ISS zouden vertellen en zouden helpen voorspellen wanneer het boven het hoofd zou zijn. In die tijd gebruikte ik een knipperstok en liet deze van kleur veranderen toen het ISS naderde. Dankzij het werk op https://open-notify.org en zijn API was het vrij eenvoudig om deze te maken.
2018 - 5 jaar later heb ik deze PHP eindelijk omgezet naar Arduino C (eigenlijk was het heel gemakkelijk om te doen.)
Mijn project gebruikt een D-Duino (wat eigenlijk een NodeMCU is met een OLED aan boord), dat is alles.
Ik gebruik nog steeds dezelfde API van
Ik heb ook wat code geschreven om een D1 Mini en een WS2812 Shield te gebruiken (zie mijn Supervisor Eric Project voor meer informatie hierover).
Stap 1: Eenvoudige hardware
D-Duino (NodeMCU)
www.aliexpress.com/item/NodeMCU-CP2102-ESP…
Dat is het, dat is alles wat nodig is. Natuurlijk kunt u andere hardware gebruiken - dit zou moeten werken op elk ESP8266-apparaat dat een I2C OLED kan gebruiken. De D-Duino is voor het grootste deel een NodeMCU met toevoeging van de OLED.
De code is te vinden
U moet de ESP8266-kaarten in de Arduino IDE hebben geïnstalleerd. Instructies zijn hier te vinden:
(de gemakkelijkste manier is met de boardmanager)
Je zult ook enkele bibliotheken nodig hebben - ik denk dat deze nu allemaal te vinden zijn in de bibliotheekmanager (maar daar ben ik niet 100% zeker van).
Benodigde bibliotheken: ArduinoJson.h
Adafruit_NeoPixel
WifiManager.h
TimeLib.h
esp8266-oled-ssd1306
(Ik weet niet zeker waar ik TIMELib vandaan heb, en het is misschien opgenomen in Arduino IDE ??)
De eenvoudigste manier om deze te installeren is met behulp van de bibliotheekmanager. Als dit niet het geval is, volgt u de instructies bij elke bibliotheek.
Stap 2: De schetsen
Er zijn momenteel twee schetsen en drie PHP-scripts opgenomen in de github-repository.
DDuino_ISS_notification die moet worden gebruikt met de D-Duino hardware van bovenaf.
En EricISS-notificatie die mijn vorige "Supervisor Eric" uit het showproject "People of Earth" gebruikt. (Hierover later meer)
In beide schetsen in de buurt van lijn 30 (of ergens heel dichtbij) - Je ziet een aantal float-variabelen genaamd mylat en mylon. U moet deze twee regels wijzigen met uw breedte- en lengtegraad - als u uw Lat en Lon niet weet, kunt u deze website gebruiken https://www.latlong.net. Het centrum van uw stad zou in orde moeten zijn. Het hoeft niet overeen te komen met uw exacte breedte- of lengtegraad. De schetsen doen wat afronding en andere wiskunde om een geschatte afstand tot het ISS in U. S. Miles te bedenken.
Ik denk dat dit het enige is dat moet worden veranderd in de schetsen.
De wiskunde voor de afstandsberekening is gebaseerd op de grootcirkelafstand tussen twee punten, en de formele is hier te vinden -
Deze site biedt veel informatie over het berekenen van de afstand tussen twee breedtegraden en lengtegraden, evenals over de peiling. We gebruiken hiervoor geen lagerberekeningen.
Om het formele te laten werken, moeten we een theta krijgen en een graad omzetten in stralend, en omgekeerd, stralend naar graad. Omdat de Arduino niet zo goed rekent, moeten we hem een beetje helpen met de conversies.
ongeldig getDistance() {
drijven theta, dist, mijlen;
theta = mylon - isslon;
dist = sin(deg2rad(mylat)) * sin(deg2rad(isslat)) + cos(deg2rad(mylat)) * cos(deg2rad(isslat)) * cos(deg2rad(theta));
dist = acos(dist); dist = rad2deg(dist);
mijl = afst * 60 * 1,1515;
afstand = mijl;
}
float deg2rad(float n) {
zwevende radiaal = (n * 71)/4068;
retour radiaal;
}
float rad2deg(float n) {
zwevende graad = (n*4068)/71;
terugkeer graad;
}
Het grootste deel van de wiskunde wordt gedaan in de buurt van lijn 127 - ALS u een andere afstand wilt (zeg KM of Nautical Miles)
u kunt de "mijlen = dist * 60 * 1.1515;" wijzigen lijn.
Voor KM zou het zoiets zijn als "mijlen = (dist*60*1.1515) * 1.609344;"
Voor Nautical Miles zoiets als "miles = (dist*60*1.1515)*0.8684;"
U zult waarschijnlijk ook de seriële afdruklijn en de OLED-weergavelijn willen wijzigen die mijlen aangeven voor uw nieuwe meting.
Dat zijn regel 86 en 96 in de schets van DDuino_ISS_notification.
Stap 3: De Eric Sketch
Supervisor Eric is een AI of alien van de TBS TV People of Earth, zie mijn andere Instructable op mijn build.
De basis die je nodig hebt voor dit meldingssysteem is een D1 Mini en het WS2812-schild - als je het in een mooie doos met een mooie lens hebt, ziet het er goed uit - goed.
Nogmaals, elke ESP8266 met een WS2812-pixel zou moeten werken, er is hier echt geen magie aan de hand - het WS2812-schild is verbonden met D2 op de D1 mini (wat volgens mij pin 4 is op NodeMCU-kaarten en misschien andere ESP8266-kaarten).
Naar de schets:
Zoals hierboven moet je je breedte- en lengtegraad wijzigen in de schets bij lijn 27. En zoals hierboven berekent deze schets ook een afstand tussen breedte- en lengtegraden. In tegenstelling tot de bovenstaande schets, is dit enige display met de WS2812 Neopixel LED.
De wiskunde is in de buurt van regel 96, maar is verder hetzelfde als hierboven. Er is nog steeds seriële output als je wilt zien wat er aan de hand is. Deze Sketch doet alleen ISS-locatie- en afstandsberekeningen - hij doet niet de pasvoorspellingen of hoeveel mensen er in de ruimte zijn.
* Houd er rekening mee dat de afstand hier in mijlen is, deze kan desgewenst worden gewijzigd, maar u moet nog een paar wijzigingen aanbrengen voor uw eenheden. *
In de buurt van lijn 116:
void setColor() {
if (afstand =1201) {colorDisplay(strip. Color(255, 0, 0), p);}
if (afstand = 1151) {colorDisplay (strip. Color (255, 153, 0), p);} // lijkt me meer geel
if (afstand = 951) {colorDisplay (strip. Color (255, 255, 0), p);} // ziet er groen/geel uit voor mij
if (afstand <=950) {colorDisplay(strip. Color(0, 255, 0), p);}
if (afstand >= 1351) {colorDisplay(strip. Color(0, 0, 0), p);}
}
De eenheden zijn in mijlen, en als u moet overschakelen naar KM of NM, wilt u deze regels ook wijzigen.
Wat is hier aan de hand, op 1350 mijl, het ISS is net aan de horizon en je kunt de transponders van de radio net beginnen te horen - het is niet geweldig, en communicatie op dit punt kan niet echt plaatsvinden. De LED wordt ROOD - dit is een waarschuwing - het ISS komt dichterbij.
Na een korte tijd, of als het ISS tussen 1150 en 1200 mijl is, zal de LED oranje worden - dit ziet er echt meer geel uit, maar het is ondersteuning om oranje te zijn. - Op 1150 mijl zou je wat meer moeten horen - tweerichtingscommunicatie zal waarschijnlijk nog steeds niet mogelijk zijn op een 5 watt HT.
Tussen 950 en 1150 mijl - De LED moet geel worden - je hebt een behoorlijke kans om contact te maken - nog steeds niet geweldig, maar het is op dit moment in ieder geval mogelijk (geel lijkt mij meer groen dan geel - dus iets anders om te werken Aan)
Onder 950 mijl zal de LED een effen GROEN zijn - en er kunnen tweerichtingscontacten worden gemaakt.
Als het ISS zich van de LED verwijdert, gaat het van groen naar geel naar oranje naar rood en dan uiteindelijk naar UIT.
Hier moet worden opgemerkt dat dit allemaal heel snel gebeurt - de meeste passen in mijn omgeving duren minder dan 10 minuten en de normale bruikbare contacttijd is minder dan 5 minuten.
Er moet ook worden opgemerkt dat het ISS zijn locatie kan wijzigen en dat de API al dan niet kan worden bijgewerkt - dus zelfs als je groen licht hebt - hoor je misschien niets.
** Het gebruik van de amateurapparatuur is ook optioneel en vrijwillig, en terwijl ze proberen de apparatuur te laten werken, komt het voor dat ze het moeten uitschakelen voor stroom, of vanwege wat ze moeten doen. Het is altijd een goed idee om de AMsat- of ARISS-websites te controleren **
Stap 4: De PHP-code
In de github-repository heb ik mijn PHP-code uit 2013 opgenomen.
De code is ontworpen om te worden uitgevoerd vanaf de CLI (of opdrachtregel). Het is een tijdje geleden dat ik deze heb geschreven, maar ik denk dat de enige vereiste was dat de JSON-extensies waren ingeschakeld.
De scripts werken nog steeds, en als je ze wilt uitvoeren, voel je vrij om dat te doen!
Voor Windows-gebruikers is hier informatie over het installeren van PHP
Zorg ervoor dat u de CLI-versie installeert. Ik denk dat je tijdens de installatie kunt selecteren welke extensies je wilt inschakelen.
Linux-gebruikers zijn afhankelijk van je distro - ik gebruik een op Ubuntu gebaseerde distro - en synaptic als mijn pakketbeheerder.
U wilt php7.0-common, php7.0-json, php7.0-cli, php7.0-curl
Ik denk niet dat ik CURL hiermee heb gebruikt, dus die heb je misschien niet nodig. De rest moet worden gevonden in uw pakketmanager naar keuze of op de
Twee van de scripts moeten worden bewerkt met uw lengte- en breedtegraad - ze zijn niet erg lang en wat moet worden gewijzigd, staat bovenaan het script. Dit zijn iss-location.php en iss-pass-api.php
iss-location.php heeft mijn oude knipperende stick-oproepen achtergelaten - ik weet niet zeker of die nog werken - maar je kunt zien dat ik de LED op ongeveer dezelfde manier aan het veranderen was als met mijn "Eric-melding". Ik denk niet dat ze problemen veroorzaken, maar misschien wil je ze uitspreken.
iss-pass-api.php gebruikt de epoche tijd en geeft een lokale tijd van de voorspelde passes. Eerlijk gezegd geef ik de voorkeur aan de PHP-versie van dit script in vergelijking met de DDuino-versie (die momenteel alleen UTC-voorspellingen doet)
De PHP-versie is ook mooier geformatteerd voor weergave - maar dat is echt een kleinigheid.
Het laatste PHP-script is iss-people.php - en het toont de namen en op welk ruimtevaartuig ze zich bevinden. Dat is alles wat het doet. (En deze informatie verandert niet vaak)
De basisprincipes van het uitvoeren van een PHP-script vanaf de opdrachtregel zijn:
$ php iss-people.php
PHP-bestanden zijn tekstbestanden en kunnen door elke teksteditor worden geopend. Windows-gebruikers Ik denk dat ik deze heb opgeslagen, zodat ze zowel regel- als regelterugloop hebben. IF niet https://www.editpadlite.com/ zou voor hen kunnen werken.
Stap 5: De video's en meer ISS & Ham-informatie
Een Ham-licentie verkrijgen in de Verenigde Staten:
Niet in de VS? Elk land heeft zijn eigen regels en licentiegidsen - neem contact op met wie uw communicatie regelt (hier in de VS is dat de FCC Federal Communications Commission)
Bereken afstand, peiling en meer tussen breedte- en lengtegraadpunten.
Dit zou een stuk moeilijker zijn geweest zonder de zeer nuttige API's van Open Notify
Hoe het ruimtestation vanaf de grond te zien.
AMSAT Radio Amateur Satelliet
AMSAT Informatie over radio op het ISS
ARISS Amateurradio op het internationale ruimtestation
ISS Fanclub - ISS Frequenties
Wikipedia-vermelding op APRS
APRS.org
Stap 6: Laatste gedachten…
Dit was een leuk project, met zeer eenvoudige hardware.
Er zijn een paar dingen die ik zou willen veranderen, maar over het algemeen ben ik erg blij met de resultaten.
Dingen die veranderd moeten worden:
1) Zoek een manier om voorspellingen te doen in lokale tijd, niet in UTC
2) Vind betere kleurcodenummers voor oranje en geel.
3) Update om te werken met het ESP32 X-board, met OLED en 4 Neopixels.
Als je dit of een van mijn projecten nuttig of leuk vindt, steun me dan alsjeblieft.
Alles wat ik krijg, gaat om meer onderdelen te kopen en meer/betere projecten te maken.
www.patreon.com/kd8bxp
ko-fi.com/lfmiller
Aanbevolen:
Eenvoudig Kicker-status- en reserveringssysteem met Slack-integratie: 12 stappen (met afbeeldingen)
Eenvoudig Kicker-status- en reserveringssysteem met Slack-integratie: In een bedrijf waar ik werk is er een kicker-tafel. Het bedrijf beslaat vele verdiepingen en voor sommige medewerkers duurt het tot 3 minuten om bij de tafel te komen en…om te beseffen dat de tafel al bezet is.Daarom ontstond het idee om een ki
Basisprincipes van de motor - Concept Super eenvoudig te begrijpen met een experiment: 7 stappen (met afbeeldingen)
Basisprincipes van de motor | Concept Super gemakkelijk te begrijpen met een experiment: in deze instructable ga ik je leren over het onderliggende fundamentele principe van motoren. Alle motoren om ons heen werken volgens dit principe. Zelfs generatoren werken op een wederzijdse verklaring van deze regel. Ik heb het over de Vlaming's Left-Hand Ru
Een computer demonteren met eenvoudige stappen en afbeeldingen: 13 stappen (met afbeeldingen) Antwoorden op al uw "Hoe?"
Een computer demonteren met eenvoudige stappen en afbeeldingen: dit is een instructie over het demonteren van een pc. De meeste basiscomponenten zijn modulair en gemakkelijk te verwijderen. Wel is het belangrijk dat je er goed over georganiseerd bent. Dit zal helpen voorkomen dat u onderdelen kwijtraakt, en ook bij het maken van de hermontage e
Afbeeldingen pixeleren - eenvoudig: 3 stappen (met afbeeldingen)
Hoe afbeeldingen te pixeleren - Gemakkelijk: deze snelle is een techniek om pixelcensuur te gebruiken om anonimiteit, waardigheid enz. op digitale afbeeldingen te behouden. Je hebt alleen een eenvoudige afbeeldingseditor nodig, zoals MS Paint, ik gebruik MS Paint. Zie voor een alternatief dit Instructable
Een eenvoudig te maken, goedkoop en eenvoudig LED-blinky circuit met CMOS 74C14 - Ajarnpa
Een eenvoudig te maken, goedkoop en eenvoudig LED-blinky circuit met CMOS 74C14: Soms heb je gewoon wat knipperende LED's nodig, voor kerstversiering, knipperende kunstwerken of gewoon om plezier te hebben met blink blink. Ik zal je laten zien hoe je een goedkope en eenvoudige schakeling maakt met maximaal 6 knipperende LED's. Opmerking: dit is mijn eerste instuceerbare en