Inhaltsverzeichnis:

Einfaches ISS-Benachrichtigungssystem - Gunook
Einfaches ISS-Benachrichtigungssystem - Gunook

Video: Einfaches ISS-Benachrichtigungssystem - Gunook

Video: Einfaches ISS-Benachrichtigungssystem - Gunook
Video: RPI Benachrichtigungssystem (Intro) [German/Deutsch] -Bitte die Beschreibung lesen. 2024, November
Anonim
Einfaches ISS-Benachrichtigungssystem
Einfaches ISS-Benachrichtigungssystem
Einfaches ISS-Benachrichtigungssystem
Einfaches ISS-Benachrichtigungssystem

Was ist die Internationale Raumstation und warum wollen Sie vorhersagen, wo sie ist?

Um die erste Frage zu beantworten, können wir auf der NASA-Website nach einer Antwort suchen. Was kurz gesagt ist:

Die Internationale Raumstation ist ein großes Raumschiff. Es umkreist die Erde. Es ist ein Zuhause, in dem Astronauten leben. Die Raumstation ist auch ein wissenschaftliches Labor. Viele Länder haben zusammengearbeitet, um es aufzubauen. Sie arbeiten auch zusammen, um es zu benutzen. Die Raumstation besteht aus vielen Teilen. Die Teile wurden von Astronauten im Weltraum zusammengesetzt. Die Umlaufbahn der Raumstation befindet sich etwa 220 Meilen über der Erde. Die NASA nutzt die Station, um mehr über das Leben und Arbeiten im Weltraum zu erfahren. Diese Lektionen werden der NASA helfen, den Weltraum zu erforschen.

www.nasa.gov/audience/forstudents/k-4/stor…

Die zweite Frage ist etwas schwieriger zu beantworten - aber ich werde es versuchen.

Ich bin Amateurfunker (oder Amateurfunker) - eine Sache, die mir immer Spaß gemacht hat, war, ein Handfunkgerät mit geringer Leistung (5 Watt oder weniger) zu verwenden und mit Satelliten im Orbit zu kommunizieren. Die ISS hat Funkgeräte an Bord.

Zu Beginn meiner Amateurzeit kommuniziere ich ziemlich viel mit den Satelliten und knüpfe sogar einige Kontakte nur mit der Gummiente-Antenne - etwas sehr schwierig zu tun. Ich habe mit APRS (Automatic Packet Reporting System) ein paar Kontakte zur ISS geknüpft. Das war 2013 - lange her, seitdem war ich sehr inaktiv. Es ist etwas, auf das ich zurückkommen wollte.

Im Jahr 2013 schrieb ich ein paar PHP-Skripte für die Befehlszeile, die mir den Standort der ISS mitteilen und helfen würden, vorherzusagen, wann sie über dem Kopf liegen würde. Damals benutzte ich einen Blink-Stick und ließ ihn die Farben wechseln, wenn sich die ISS näherte. Dank der Arbeit bei https://open-notify.org und seiner API war es ziemlich einfach, diese zu erstellen.

2018 - 5 Jahre später habe ich diese PHP endlich auf Arduino C umgestellt (eigentlich war es sehr einfach.)

Mein Projekt verwendet ein D-Duino (das ist wirklich eine NodeMCU mit einem OLED an Bord), das ist alles.

Ich verwende immer noch dieselbe API von

Ich habe auch Code geschrieben, um einen D1 Mini und einen WS2812 Shield zu verwenden (siehe mein Supervisor Eric Project für mehr dazu).

Schritt 1: Einfache Hardware

Einfache Hardware
Einfache Hardware

D-Duino (NodeMCU)

www.aliexpress.com/item/NodeMCU-CP2102-ESP…

Das ist es, das ist alles, was erforderlich ist. Natürlich können Sie auch andere Hardware verwenden - dies sollte auf jedem ESP8266-Gerät funktionieren, das ein I2C-OLED verwenden kann. Das D-Duino ist größtenteils eine NodeMCU mit zusätzlicher OLED.

Den Code finden Sie unter

Sie müssen die ESP8266-Boards in der Arduino IDE installiert haben. Anleitungen finden Sie hier:

(am einfachsten geht es mit dem Board-Manager)

Sie werden auch einige Bibliotheken benötigen - ich denke, all dies kann jetzt im Bibliotheksmanager gefunden werden (aber da bin ich mir nicht 100% sicher).

Benötigte Bibliotheken: ArduinoJson.h

Adafruit_NeoPixel

WifiManager.h

TimeLib.h

esp8266-oled-ssd1306

(Ich bin mir nicht sicher, woher ich TImeLib habe, und es ist vielleicht in der Arduino IDE enthalten??)

Diese lassen sich am einfachsten über den Bibliotheksmanager installieren. Wenn nicht, befolgen Sie die Anweisungen für jede Bibliothek.

Schritt 2: Die Skizzen

Die Skizzen
Die Skizzen

Derzeit sind im Github-Repository zwei Skizzen und drei PHP-Skripte enthalten.

DDuino_ISS_notification, die mit der D-Duino-Hardware von oben verwendet werden soll.

Und EricISSnotification, die meinen vorherigen "Supervisor Eric" aus dem Show-Projekt "People of Earth" verwendet. (Dazu später mehr)

In beiden Skizzen in der Nähe von Zeile 30 (oder irgendwo ganz in der Nähe) - Sie sehen ein paar Float-Variablen namens mylat und mylon. Sie müssen diese beiden Zeilen mit Ihrem Breiten- und Längengrad ändern - wenn Sie Ihren Breiten- und Längengrad nicht kennen, können Sie diese Website verwenden https://www.latlong.net Das Zentrum Ihrer Stadt sollte in Ordnung sein. Es muss nicht mit Ihrem genauen Breiten- oder Längengrad übereinstimmen. Die Skizzen führen einige Rundungen und andere Berechnungen durch, um eine ungefähre Entfernung der ISS in US-Meilen zu ermitteln.

Ich glaube, das ist das einzige, was in den Skizzen geändert werden muss.

Die Mathematik für die Entfernungsberechnung basiert auf dem Großkreisabstand zwischen zwei Punkten, und das Formale finden Sie hier -

Diese Seite bietet viele Informationen zur Berechnung der Entfernung zwischen zwei Breiten- und Längengraden sowie der Peilung. Dazu verwenden wir keine Lagerberechnungen.

Damit das Formale funktioniert, müssen wir ein Theta erhalten und einen gewissen Grad in strahlend umwandeln und umgekehrt, strahlend in Grad. Da der Arduino nicht so gut rechnen kann, müssen wir bei den Umrechnungen ein wenig nachhelfen.

void getDistance() {

float theta, dist, meilen;

theta = mylon - isslon;

dist = sin(grad2rad(mylat)) * sin(grad2rad(isslat)) + cos(grad2rad(mylat)) * cos(grad2rad(isslat)) * cos(grad2rad(theta));

dist = acos(dist); dist = rad2deg(dist);

Meilen = Distanz * 60 * 1,1515;

Entfernung = Meilen;

}

float deg2rad(float n) {

Gleitkomma-Radiant = (n * 71)/4068;

zurück im Bogenmaß;

}

float rad2deg(float n) {

Gleitkommagrad = (n*4068)/71;

Rückkehrgrad;

}

Der Großteil der Mathematik wird in der Nähe der Linie 127 durchgeführt - WENN Sie eine andere Entfernung wünschen (z. B. KM oder Seemeilen).

Sie können die "Meilen = Distanz * 60 * 1,1515;" ändern. Leitung.

Für KM wäre es so etwas wie "miles = (dist*60*1.1515) * 1.609344;"

Für nautische Meilen etwas wie "miles = (dist*60*1.1515)*0.8684;"

Sie möchten wahrscheinlich auch die serielle Druckzeile und die OLED-Anzeigezeile, die Meilen angibt, auf Ihre neue Messung ändern.

Das sind die Zeilen 86 und 96 in der Skizze DDuino_ISS_notification.

Schritt 3: Die Eric-Skizze

Die Eric-Skizze
Die Eric-Skizze
Die Eric-Skizze
Die Eric-Skizze
Die Eric-Skizze
Die Eric-Skizze

Supervisor Eric ist eine KI oder ein Außerirdischer von den TBS TV People of Earth, bitte sehen Sie sich mein anderes Instructable auf meinem Build an.

Das Allerwichtigste, was Sie für dieses Benachrichtigungssystem benötigen, ist ein D1 Mini und das WS2812-Schild - in einer schönen Box mit einem schönen Objektiv sieht es gut aus.

Auch hier sollte jeder ESP8266 mit einem WS2812-Pixel funktionieren, hier ist wirklich keine Magie im Gange - Der WS2812-Schild ist mit D2 auf dem D1 mini verbunden (was meiner Meinung nach Pin 4 auf NodeMCU-Boards und vielleicht anderen ESP8266-Boards ist).

Zur Skizze:

Wie oben müssen Sie Ihren Breiten- und Längengrad in der Skizze in der Nähe von Linie 27 ändern. Und wie oben berechnet diese Skizze auch eine Entfernung zwischen Breiten- und Längengrad. Im Gegensatz zur obigen Skizze ist diese einzige Anzeige mit der WS2812 Neopixel LED.

Die Mathematik befindet sich in der Nähe von Zeile 96, ist aber ansonsten die gleiche wie oben. Es gibt immer noch eine serielle Ausgabe, wenn Sie sehen möchten, was vor sich geht. Diese Skizze führt nur ISS-Standort- und -Entfernungsberechnungen durch - sie macht keine Passvorhersagen oder wie viele Menschen sich im Weltraum befinden.

* Bitte beachten Sie, dass die Entfernung hier in Meilen angegeben ist. Sie kann geändert werden, wenn Sie möchten, aber Sie müssen noch einige Änderungen für Ihre Einheiten vornehmen. *

In der Nähe der Linie 116:

void setColor() {

if (Abstand =1201) {colorDisplay(strip. Color(255, 0, 0), p);}

if (abstand = 1151) {colorDisplay(strip. Color(255, 153, 0), p);} // sieht für mich eher gelb aus

if (distanz = 951) {colorDisplay(strip. Color(255, 255, 0), p);} // sieht für mich grün/gelb aus

if (Abstand <=950) {colorDisplay(strip. Color(0, 255, 0), p);}

if (Abstand >= 1351) {colorDisplay(strip. Color(0, 0, 0), p);}

}

Die Einheiten sind in Meilen, und wenn Sie in KM oder NM umsteigen müssen, sollten Sie auch diese Zeilen ändern.

Was ist hier los? Bei 1350 Meilen ist die ISS gerade am Horizont und Sie können gerade anfangen, die Transponder aus dem Radio zu hören - es ist nicht großartig, und Kommunikation kann zu diesem Zeitpunkt nicht wirklich stattfinden. Die LED wird ROT - dies ist ein Hinweis - die ISS nähert sich.

Nach kurzer Zeit oder wenn die ISS zwischen 1150 und 1200 Meilen liegt, wird die LED orange - das sieht wirklich gelber aus, aber es wird unterstützt, orange zu sein. - Bei 1150 Meilen sollten Sie anfangen, einiges mehr zu hören - eine Zwei-Wege-Kommunikation wird wahrscheinlich immer noch nicht auf einem 5-Watt-HT möglich sein.

Zwischen 950 und 1150 Meilen - Die LED sollte gelb werden - Sie haben eine ordentliche Chance auf einen Kontakt - immer noch nicht großartig, aber es ist zumindest an dieser Stelle möglich (Gelb sieht für mich mehr grün aus als gelb - also etwas anderes zu arbeiten An)

Unter 950 Meilen leuchtet die LED durchgehend GRÜN - und es können Zweiwegekontakte hergestellt werden.

Wenn sich die ISS von der LED entfernt, wechselt sie von Grün zu Gelb zu Orange zu Rot und schließlich zu AUS.

Es sollte hier angemerkt werden, dass dies alles sehr schnell passiert - die meisten Pässe in meiner Gegend dauern unter 10 Minuten und die normale nutzbare Kontaktzeit liegt unter 5 Minuten.

Es sollte auch beachtet werden, dass die ISS ihren Standort ändern kann und dass die API aktualisiert werden kann oder nicht - selbst wenn Sie grünes Licht haben - hören Sie möglicherweise nichts.

** Der Betrieb der Amateurausrüstung ist ebenfalls optional und freiwillig, und während sie versuchen, die Ausrüstung zu betreiben, gibt es Zeit, in der sie sie wegen Strom oder aufgrund von Aufgaben abschalten müssen. Es ist immer eine gute Idee, die AMsat- oder ARISS-Websites zu überprüfen **

Schritt 4: Der PHP-Code

Der PHP-Code
Der PHP-Code

Im Github-Repository habe ich meinen PHP-Code von 2013 eingebunden.

Der Code wurde für die Ausführung über die CLI (oder Befehlszeile) entwickelt. Es ist schon eine Weile her, seit ich diese geschrieben habe, aber ich denke, die einzige Voraussetzung war, dass die JSON-Erweiterungen aktiviert sind.

Die Skripte funktionieren immer noch, und wenn Sie sie ausführen möchten, können Sie dies gerne tun!

Für Windows-Benutzer gibt es hier Informationen zur Installation von PHP

Stellen Sie sicher, dass Sie die CLI-Version installieren. Ich denke, während Sie installieren, können Sie auswählen, welche Erweiterungen aktiviert werden sollen.

Linux-Benutzer sind auf Ihre Distribution angewiesen - ich verwende eine Ubuntu-basierte Distribution - und Synaptic als meinen Paketmanager.

Sie benötigen php7.0-common, php7.0-json, php7.0-cli, php7.0-curl

Ich glaube nicht, dass ich CURL mit diesen verwendet habe, also brauchst du das vielleicht nicht. Den Rest finden Sie in Ihrem Paketmanager Ihrer Wahl oder auf der Website

Zwei der Skripte müssen mit Ihrem Breiten- und Längengrad bearbeitet werden - sie sind nicht sehr lang, und was geändert werden muss, steht ganz oben im Skript. Dies sind iss-location.php und iss-pass-api.php

iss-location.php hat meine alten Blink-Stick-Aufrufe darin - ich bin mir nicht sicher, ob diese mehr funktionieren - aber Sie können sehen, dass ich die LED ähnlich wie bei meiner "Eric-Benachrichtigung" geändert habe. Ich glaube nicht, dass sie Probleme verursachen, aber Sie können sie auskommentieren.

iss-pass-api.php verwendet die Epochenzeit und gibt eine lokale Zeit der vorhergesagten Durchgänge an. Ehrlich gesagt bevorzuge ich die PHP-Version dieses Skripts im Vergleich zur DDuino-Version (die derzeit nur UTC-Vorhersagen macht).

Die PHP-Version ist auch schöner für die Anzeige formatiert - aber das ist wirklich eine Nebensache.

Das letzte PHP-Skript ist iss-people.php - und es zeigt die Namen und das Raumschiff an, auf dem sie sich befinden. Das ist alles, was es tut. (Und diese Informationen ändern sich nicht oft)

Die Grundlagen zum Ausführen eines PHP-Skripts über die Befehlszeile sind:

$ php iss-people.php

PHP-Dateien sind Textdateien und können von jedem Texteditor geöffnet werden. Windows-Benutzer denke ich, dass ich diese gespeichert habe, damit sie sowohl Zeilen- als auch Wagenrückläufe haben. WENN nicht https://www.editpadlite.com/ für sie funktionieren könnte.

Schritt 5: Die Videos und weitere ISS & Ham-Informationen

Image
Image

Erhalten einer Ham-Lizenz In den Vereinigten Staaten:

Nicht in den USA? Jedes Land hat seine eigenen Regeln und Lizenzleitfäden – erkundigen Sie sich, wer Ihre Kommunikation regelt (Hier in den USA ist das die FCC Federal Communications Commission)

Berechnen Sie Entfernung, Peilung und mehr zwischen Längen- und Breitengradpunkten.

Dies wäre ohne die sehr nützlichen APIs von Open Notify viel schwieriger gewesen

So sehen Sie die Raumstation vom Boden aus.

AMSAT Funkamateursatellit

AMSAT-Informationen zum Radio auf der ISS

ARISS Amateurfunk auf der Internationalen Raumstation

ISS Fan Club - ISS Frequenzen

Wikipedia-Eintrag auf APRS

APRS.org

Schritt 6: Abschließende Gedanken…

Dies war ein lustiges Projekt mit sehr einfacher Hardware.

Es gibt ein paar Dinge, die ich gerne ändern würde, aber insgesamt bin ich mit den Ergebnissen sehr zufrieden.

Dinge, die geändert werden müssen:

1) Finden Sie heraus, wie Sie Passvorhersagen in Ortszeit und nicht in UTC. haben

2) Finden Sie bessere Farbcodenummern für Orange und Gelb.

3) Update für die Arbeit mit dem ESP32 X-Board, mit OLED und 4 Neopixeln.

Wenn Sie dieses oder eines meiner Projekte nützlich oder angenehm finden, unterstützen Sie mich bitte.

Alles, was ich bekomme, dient dazu, mehr Teile zu kaufen und mehr / bessere Projekte zu machen.

www.patreon.com/kd8bxp

ko-fi.com/lfmiller

Empfohlen: