Inhaltsverzeichnis:
- Schritt 1: Modellieren von Teilen in Fusion 360 und Drucken
- Schritt 2: Verdrahtung und Montage
- Schritt 3: Arduino-Code - Abrufen der ISS-Position in Echtzeit
- Schritt 4: Endgültiger Arduino-Code
- Schritt 5: Genießen Sie Ihren ISS-Tracker
Video: ISS-Tracking-Lampe - Gunook
2024 Autor: John Day | [email protected]. Zuletzt bearbeitet: 2024-01-30 07:17
Die meiste Zeit frage ich mich, wo die ISS in den Himmel schaut. Um diese Frage zu beantworten, habe ich ein physisches Objekt erstellt, um in Echtzeit genau zu wissen, wo sich die ISS befindet.
Die ISS Tracking Lamp ist eine mit dem Internet verbundene Lampe, die die ISS ständig verfolgt und ihren Standort auf der Erdoberfläche anzeigt (in 3D gedruckt).
Bonus: Die Lampe zeigt auch die Sonnenseite der Erde mit Neopixeln!??
Also, in diesem Instructables werden wir die verschiedenen Schritte sehen, um diese Lampe basierend auf WEMOS D1 Mini, Schrittmotor, Servomotor, Laser und 3D-Teilen zu bauen.
Ich baue alles selbst, bis auf die 3D-gedruckte Erde, die bei Aliexpress gekauft wurde.
Software:
- Arduino-basierter Code
- API ISS Location: Open Notify - Aktueller Standort der ISS (von Nathan Bergey)
- Parsing-Daten: ArduinoJson Library (von Benoit Blanchon)
CAD & Teile:
- 3D gedruckte Erde von 18cm Durchmesser (gekauft bei Aliexpress: hier)
- 3D-gedruckte Motorstützen – entworfen mit Fusion 360 und gedruckt mit Prusa i3 MK2S
- Kupferrohr
- Betonsockel, hergestellt mit den französischen Wikingern
Hardware:
- Mikrocontroller: Wemos D1 Mini (WLAN-Antenne integriert)
- Servo EMAX ES3352 MG
- Schrittmotor 28byj-48 (mit der ULN2003-Treiberplatine)
- 10 NeoPixel-LED
- Laser mit 405 nm Wellenlänge
- Endschalter
- 5V 3A Netzteil
Schritt 1: Modellieren von Teilen in Fusion 360 und Drucken
Um die gesamte Hardware zu montieren, erstellen wir die Basis der Kernbaugruppe auf 3D-Teilen. Die Teile sind hier bei Thingiverse erhältlich.
Es gibt 3 Teile:
1) Der Längengrad des Support Steppers
Dieses Teil dient zur Montage des Schrittmotors, des WEMOS, des Neopixels-Streifens und des Kupferrohrs
2) Der Support-Schalter
Dieses Teil ist für die Montage des Endschalters vorgesehen (mit dem Stepper den Breitengrad -0°/-180° anzeigen). Es ist oben auf den Stepper geschraubt
3) Der Breitengrad des Unterstützungsservos
Dieses Teil dient zur Montage des Servomotors. Der Support Servo ist am Schrittmotor montiert
Alle Teile wurden auf Prusa I3 MK2S gedruckt, mit schwarzem PETG-Filament
Schritt 2: Verdrahtung und Montage
Diese Schaltung hat einen 5V 3A Stromeingang (um die gleiche Versorgung für den Schritttreiber, den Laser, die Neopixels und den WEMOS zu verwenden)
Bei der folgenden Skizze müssen wir das Netzteil direkt an die obigen Elemente parallel anlöten:
- Schrittmotortreiber
- Laser
- Neopixel-Streifen (NB: in Wirklichkeit sind es 10 Neopixel, nicht 8, wie die Skizze zeigt)
- WEMOS
Als nächstes müssen wir die verschiedenen Elemente mit dem WEMOS verbinden:
1) Der Schrittmotortreiber, der dieser Liste folgt:
- IN1->D5
- IN2->D6
- IN3->D7
- IN4->D8
2) Der Servomotor folgende:
Datenservo-Pin -> D1
3) Der Neopixels-Streifen folgt:
Daten Neopixel Pin -> D2
4) Der folgende Endschalter:
Die beiden Pins des Schalters auf GND und D3
Schließen Sie den Endschalter so an, dass der Stromkreis geöffnet / unterbrochen wird, wenn wir auf den Schalter drücken (so dass der Stromkreis geschlossen ist, wenn nichts darauf gedrückt wird). Dies dient dazu, eine falsche Vorlesung aufgrund einer Spannungsspitze zu vermeiden.
Schritt 3: Arduino-Code - Abrufen der ISS-Position in Echtzeit
Um die beiden Motoren anzutreiben, um die Position der ISS zu erreichen, müssen wir die Position der ISS in Echtzeit ermitteln:
- Dafür verwenden wir zuerst die API von Open Notify Here
- Dann müssen wir die Daten parsen, um mit Hilfe von Parsing-Daten einen einfachen Wert des ISS-Standorts zu erhalten: ArduinoJson Library (von Benoit Blanchon)
#include <ESP8266WiFi.h #include <ESP8266HTTPClient.h #include <ArduinoJson.h // WLAN-Parameter const char* ssid = "XXXXX"; const char* Passwort = "XXXXX"; Void setup () { Serial.begin (115200); WiFi.begin(ssid, Passwort); Während (WiFi.status ()! = WL_CONNECTED) { Verzögerung (1000); Serial.println("Verbindung wird hergestellt…"); } }
Dieses Programm verbindet die NodeMCU mit dem WiFi, verbindet sich dann mit der API, ruft die Daten ab und druckt sie seriell aus.
Leere Schleife () {
if (WiFi.status() == WL_CONNECTED) // WLAN-Status prüfen {HTTPClient http; //Objekt der Klasse HTTPClient http.begin("https://api.open-notify.org/iss-now.json"); int httpCode = http. GET(); //Überprüfe den Rückgabecode if (httpCode >0) { // Parsing const size_t bufferSize = JSON_OBJECT_SIZE(2) + JSON_OBJECT_SIZE(3) + 100; DynamicJsonBuffer jsonBuffer(bufferSize); JsonObject& root = jsonBuffer.parseObject(http.getString()); // Parameter const char* message = root["message"]; const char* lon = root["iss_position"]["longitude"]; const char* lat = root["iss_position"]["latitude"]; // Ausgabe auf seriellen Monitor Serial.print ("Nachricht:"); Serial.println (Nachricht); Serial.print ("Längengrad: "); Serial.println (lon); Serial.print ("Breite: "); Serial.println (lat); } http.ende(); //Verbindung schließen} Verzögerung (50000); }
Schritt 4: Endgültiger Arduino-Code
Der folgende Arduino-Code erhält die ISS-Position, um den Laser an die richtige Stelle auf der Erdoberfläche zu bewegen, und die Position der Sonne, um die betroffenen Neopixel zum Leuchten zu bringen, um die Oberfläche der Erdoberfläche von der Sonne zu beleuchten.
Bonus 1: Wenn die Lampe eingeschaltet ist, zeigt der Laser während der Initialisierungsphase die Position der Lampe (id: die Position, an der sich der Router befindet)
Bonus 2: Wenn sich die ISS neben der Lampenposition befindet (+/- 2° lang und +/-2° lat.), werden alle Neopixel sanft blinzeln
Schritt 5: Genießen Sie Ihren ISS-Tracker
Sie haben eine ISS-Tracking-Lampe hergestellt, viel Spaß!
Erster Preis beim Erstautorenwettbewerb