Cuprins:
2025 Autor: John Day | [email protected]. Modificat ultima dată: 2025-01-13 06:58
De cele mai multe ori, mă întreb unde este ISS-ul care privește cerul. Pentru a răspunde la această întrebare, am făcut un obiect fizic pentru a ști exact unde este ISS în timp real.
Lampa de urmărire ISS este o lampă conectată la internet care urmărește în mod constant ISS și o afișează pe suprafața Pământului (tipărită în 3D).
Bonus: lampa afișează și partea însorită a Pământului cu Neopixeli! ??
Deci, în acest Instructables, vom vedea pașii diferiți pentru a construi această lampă pe baza WEMOS D1 Mini, motor pas cu pas, servomotor, laser și piese 3D.
Construiesc singur, cu excepția Pământului tipărit 3D, care a fost achiziționat de pe Aliexpress.
Software:
- Cod bazat pe Arduino
- Locația ISS API: Notificare deschisă - Locația curentă a ISS (de Nathan Bergey)
- Analizarea datelor: ArduinoJson Library (de Benoit Blanchon)
CAD și piese:
- Pământ tipărit 3D cu diametrul de 18 cm (achiziționat pe Aliexpress: aici)
- Suporturi pentru motoare tipărite 3D - proiectate cu Fusion 360 și tipărite cu Prusa i3 MK2S
- Tub de cupru
- Baza de beton, realizată cu Vikingii francezi
Hardware:
- Microcontroler: Wemos D1 Mini (antenă wifi integrată)
- Servo EMAX ES3352 MG
- Motor pas cu pas 28byj-48 (cu placa driverului ULN2003)
- 10 LED-uri NeoPixels
- Laser cu o lungime de undă de 405 nm
- Comutator de limitare
- Sursa de alimentare 5V 3A
Pasul 1: Modelarea pieselor în Fusion 360 și imprimare
Pentru a monta tot hardware-ul, vom crea baza de asamblare de bază pe piese 3D. Piesele sunt disponibile pe Thingiverse aici.
Există 3 părți:
1) Longitudinea pas cu pas a suportului
Această piesă este realizată pentru montarea motorului pas cu pas, WEMOS, banda Neopixels și tubul de cupru
2) Comutatorul de asistență
Această parte este făcută pentru montarea întrerupătorului de limită (utilizați pentru a indica pasului cu latitudine -0 ° / -180 °). Este înșurubat în partea superioară a treptei
3) Servo Latitude de asistență
Această piesă este realizată pentru montarea servomotorului. Servomotorul de asistență este montat pe motorul pas cu pas
Toate piesele au fost tipărite pe Prusa I3 MK2S, cu filament negru PETG
Pasul 2: Cablare și asamblare
Acest circuit va avea o intrare de alimentare de 5V 3A (pentru a utiliza aceeași sursă pentru driverul pas cu pas, laserul, Neopixels și WEMOS)
Prin următoarea schiță, trebuie să lipim sursa de alimentare direct în elementele de mai sus în paralel:
- Driver pas cu pas
- Laser
- Banda de Neopixeli (NB: există 10 Neopixeli în realitate, nu 8 așa cum arată schița)
- WEMOS
Apoi, trebuie să conectăm diferitele elemente la WEMOS:
1) Driverul pas cu pas care urmează această listă:
- IN1-> D5
- IN2-> D6
- IN3-> D7
- IN4-> D8
2) Servomotorul următor:
Servo Pin de date -> D1
3) Banda Neopixels urmează:
Pin Neopixeli de date -> D2
4) Întrerupătorul de limită care urmează:
Cei doi pini ai comutatorului la GND și D3
Conectați întrerupătorul de limită într-un mod în care circuitul este deschis / rupt când apăsăm comutatorul (astfel circuitul este închis când nimic nu îl împinge). Aceasta este pentru a evita orice prelegere greșită din cauza unui vârf de tensiune.
Pasul 3: Cod Arduino - Obținerea poziției ISS în timp real
Pentru a conduce cele două motoare pentru a ajunge la poziția ISS, trebuie să obținem poziția ISS în timp real:
- Pentru prima dată vom folosi API-ul Open Notify Here
- Apoi, trebuie să analizăm datele pentru a obține o valoare simplă a locației ISS cu ajutorul analizelor de date: ArduinoJson Library (de Benoit Blanchon)
#include <ESP8266WiFi.h #include <ESP8266HTTPClient.h #include <ArduinoJson.h // Parametri WiFi const char * ssid = "XXXXX"; const char * password = "XXXXX"; void setup () {Serial.begin (115200); WiFi.begin (ssid, parolă); while (WiFi.status ()! = WL_CONNECTED) {întârziere (1000); Serial.println ("Conectarea …"); }}
Acest program conectează NodeMCU la WiFi, apoi se conectează la API, obține datele și le imprimă prin serial.
bucla nulă () {
if (WiFi.status () == WL_CONNECTED) // Verificați starea WiFi {HTTPClient http; // Obiectul clasei HTTPClient http.begin ("https://api.open-notify.org/iss-now.json"); int httpCode = http. GET (); // Verificați codul returnat dacă (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 ()); // Parametrii const char * message = root ["message"]; const char * lon = root ["iss_position"] ["longitude"]; const char * lat = root ["iss_position"] ["latitude"]; // Ieșire pe monitorul serial Serial.print ("Mesaj:"); Serial.println (mesaj); Serial.print ("Longitudine:"); Serial.println (lon); Serial.print ("Latitudine:"); Serial.println (lat); } http.end (); // Închidere conexiune} întârziere (50000); }
Pasul 4: Codul Arduino final
Următorul cod Arduino obține locația ISS pentru a muta laserul la locul potrivit de pe suprafața Pământului și obținerea poziției soarelui pentru a aprinde Neopixelii în cauză pentru a lumina suprafața Pământului atingută de soare.
Bonus 1: Când lampa este aprinsă, în timpul fazei de inițializare, laserul va indica poziția lămpii (id: poziția în care este routerul)
Bonus 2: Când ISS este lângă locația lămpii (+/- 2 ° lungime și +/- 2 ° lat.), Toți Neopixelii vor clipi ușor
Pasul 5: Bucurați-vă de ISS Tracker
Ați făcut o lampă de urmărire ISS, bucurați-vă!
Premiul I la primul concurs de autor