Sisukord:
2025 Autor: John Day | [email protected]. Viimati modifitseeritud: 2025-01-13 06:57
Enamasti mõtlen, kust ISS taevast vaatab. Sellele küsimusele vastamiseks olen teinud füüsilise objekti, et täpselt teada, kus ISS reaalajas asub.
ISS -i jälgimislamp on Internetiga ühendatud lamp, mis jälgib pidevalt ISS -i ja kuvab selle asukoha Maa pinnal (trükitud 3D -vormingus).
Boonus: lamp kuvab ka Maa päikesepoolset külge koos neopikslitega! ??
Niisiis, selles juhendis näeme WEMOS D1 Mini, samm -mootori, servomootori, laser- ja 3D -osade põhjal selle lambi ehitamiseks erinevaid samme.
Ma ehitan kõik ise, välja arvatud 3D -trükitud Maa, mis osteti Aliexpressist.
Tarkvara:
- Arduino põhine kood
- API ISS -i asukoht: avatud teavitamine - ISS -i praegune asukoht (autor Nathan Bergey)
- Andmete analüüsimine: ArduinoJsoni raamatukogu (autor Benoit Blanchon)
CAD ja osad:
- 3D trükitud Maa läbimõõduga 18 cm (ostetud Aliexpressist: siit)
- 3D -trükitud mootoritoed - disainitud Fusion 360 -ga ja trükitud seadmega Prusa i3 MK2S
- Vasktoru
- Betoonist alus, valmistatud Prantsuse viikingitega
Riistvara:
- Mikrokontroller: Wemos D1 Mini (integreeritud WiFi -antenn)
- Servo EMAX ES3352 MG
- Sammumootor 28byj-48 (koos juhtplaadiga ULN2003)
- 10 NeoPixeli LED -i
- Laser lainepikkusega 405 nm
- Piirlüliti
- 5V 3A toiteallikas
Samm: osade modelleerimine Fusion 360 -s ja printimine
Kogu riistvara paigaldamiseks loome põhiosa 3D -osadele. Osad on Thingiverse'is saadaval siin.
Seal on 3 osa:
1) Toetussammu pikkuskraad
See osa on ette nähtud samm -mootori, WEMOS -i, Neopixels -riba ja vasktoru paigaldamiseks
2) toelüliti
See osa on ette nähtud piirlüliti paigaldamiseks (kasutage stepperile laiuskraadi näitamiseks -0 °/-180 °). See on kruvitud stepperi ülaosale
3) Support Servo Latitude
See osa on ette nähtud servomootori paigaldamiseks. Tugiservo on paigaldatud samm -mootorile
Kõik osad trükiti Prusa I3 MK2S -le musta PETG -hõõgniidiga
Samm: juhtmestik ja kokkupanek
Sellel vooluahelal on 5V 3A sisend (et kasutada samu toiteallikaid samm -draiveri, laseri, neopikslite ja WEMOS -i jaoks)
Järgmise visandi abil peame toiteallika paralleelselt jootma otse ülaltoodud elementidele:
- Astmeline juht
- Laser
- Neopikseliriba (NB: tegelikkuses on 10 neopikslit, mitte 8, nagu visand näitab)
- WEMOS
Järgmisena peame ühendama erinevad elemendid WEMOS -iga:
1) Stepper juht järgib seda loendit:
- IN1-> D5
- IN2-> D6
- IN3-> D7
- IN4-> D8
2) Servomootor on järgmine:
Andmeservo pin -> D1
3) Neopikselite riba järgmine:
Andmete neopikslite tihvt -> D2
4) Piirlüliti on järgmine:
Lüliti kaks tihvti GND ja D3 külge
Ühendage piirlüliti viisil, mis lülitit vajutades avaneb/katkeb (nii et vooluahel suletakse, kui sellele midagi ei lükka). See on vajalik selleks, et vältida pinge tipust tingitud valesid loenguid.
Samm: Arduino kood - ISS -i positsiooni saamine reaalajas
Kahe mootori juhtimiseks ISS -i kohale jõudmiseks peame reaalajas saama ISS -i asukoha:
- Selleks kasutame kõigepealt Open Notify Here API -d
- Seejärel peame andmeid analüüsima, et saada ISS -i asukoha lihtne väärtus, kasutades parsimisandmeid: ArduinoJsoni raamatukogu (autor Benoit Blanchon)
#include <ESP8266WiFi.h #include <ESP8266HTTPClient.h #include <ArduinoJson.h // WiFi parameetrid const char* ssid = "XXXXX"; const char* parool = "XXXXX"; void setup () {Serial.begin (115200); WiFi.begin (ssid, parool); while (WiFi.status ()! = WL_CONNECTED) {delay (1000); Serial.println ("Ühendamine …"); }}
See programm ühendab NodeMCU WiFi -ga, seejärel ühendub API -ga, hankib andmed ja prindib need jada kaudu.
void loop () {
if (WiFi.status () == WL_CONNECTED) // Kontrolli WiFi olekut {HTTPClient http; // HTTPClienti klassi objekt http.begin ("https://api.open-notify.org/iss-now.json"); int httpCode = http. GET (); // Kontrollige tagastatavat koodi, kui (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 ()); // Parameetrid const char* message = root ["message"]; const char* lon = juur ["iss_position"] ["pikkuskraad"]; const char* lat = juur ["iss_position"] ["laiuskraad"]; // Väljund seeriamonitorile Serial.print ("Sõnum:"); Serial.println (sõnum); Serial.print ("Pikkuskraad:"); Serial.println (lon); Serial.print ("Laiuskraadid:"); Seeria.println (lat); } http.end (); // Ühenduse sulgemine} viivitus (50000); }
Samm: viimane Arduino kood
Järgmine Arduino kood annab ISS -i asukoha, et viia laser Maa pinnal õigesse kohta, ja päikese asukoha valimine asjaomaste neopikslite valgustamiseks, et valgustada Maa pinda päikese käes.
Boonus 1: kui lamp on sisse lülitatud, näitab laser initsialiseerimise faasis lambi asukohta (id: ruuteri asukoht)
Boonus 2: Kui ISS on lambi asukoha kõrval (+/- 2 ° pikk ja +/- 2 ° laius), vilguvad kõik neopikslid õrnalt
Samm: nautige oma ISS -i jälgijat
Olete teinud ISS -i jälgimislambi, nautige!
Esimene auhind esmakordsel autorivõistlusel