Sisällysluettelo:
2025 Kirjoittaja: John Day | [email protected]. Viimeksi muokattu: 2025-01-13 06:57
Useimmiten ihmettelen, missä ISS katsoo taivaalle. Vastatakseni tähän kysymykseen olen tehnyt fyysisen esineen tietääkseni tarkalleen missä ISS on reaaliajassa.
ISS -seurantalamppu on Internetiin yhdistetty lamppu, joka seuraa jatkuvasti ISS: ää ja näyttää sen sijainnin maan pinnalla (tulostettu 3D -muodossa).
Bonus: lamppu näyttää myös maan aurinkoisen puolen Neopikseleillä! ??
Joten tässä oppaassa näemme eri vaiheet tämän lampun rakentamiseksi WEMOS D1 Miniin, askelmoottoriin, servomoottoriin, laseriin ja 3D -osiin.
Rakennan kaiken itse, paitsi 3D -painettu Earth, joka ostettiin Aliexpressistä.
Ohjelmisto:
- Arduino -pohjainen koodi
- API ISS Sijainti: Avaa ilmoitus - ISS: n nykyinen sijainti (kirjoittanut Nathan Bergey)
- Jäsennysdata: ArduinoJson -kirjasto (kirjoittanut Benoit Blanchon)
CAD & Osat:
- 3D -painettu maa, halkaisijaltaan 18 cm (ostettu Aliexpressistä: täältä)
- 3D -tulostetut moottorituet - suunniteltu Fusion 360: llä ja painettu Prusa i3 MK2S: llä
- Kupariputki
- Betonipohja, valmistettu ranskalaisista viikingistä
Laitteisto:
- Mikro -ohjain: Wemos D1 Mini (integroitu wifi -antenni)
- Servo EMAX ES3352 MG
- Askelmoottori 28byj-48 (ULN2003-ohjainkortilla)
- 10 NeoPixels -LEDiä
- Laser, jonka aallonpituus on 405 nm
- Rajakytkin
- 5V 3A virtalähde
Vaihe 1: Osien mallintaminen Fusion 360: ssä ja tulostus
Jotta voimme asentaa kaikki laitteistot, luomme ydinkokoonpanopohjan 3D -osiin. Osat löytyvät Thingiversestä täältä.
Siinä on 3 osaa:
1) Tuki askelpituusaste
Tämä osa on tarkoitettu askelmoottorin, WEMOSin, Neopixels -nauhan ja kupariputken asentamiseen
2) Tukikytkin
Tämä osa on tarkoitettu rajakytkimen asentamiseen (osoita askelmalle leveysaste -0 °/-180 °). Se on ruuvattu askelman päälle
3) Support Servo Latitude
Tämä osa on tarkoitettu servomoottorin asentamiseen. Tukiservo on asennettu askelmoottoriin
Kaikki osat painettiin Prusa I3 MK2S: lle mustalla PETG -filamentilla
Vaihe 2: Johdotus ja kokoonpano
Tässä piirissä on 5 V: n 3 A: n virtatulo (jotta voidaan käyttää samaa syöttöä askelmoottorille, laserille, neopikseleille ja WEMOSille)
Seuraavassa luonnoksessa meidän on juotettava virtalähde suoraan yllä oleviin elementteihin rinnakkain:
- Askelohjain
- Laser
- Neopikseliliuska (HUOM: todellisuudessa on 10 neopikseliä, ei 8 kuten luonnos osoittaa)
- WEMOS
Seuraavaksi meidän on yhdistettävä eri elementit WEMOSiin:
1) Askelohjain seuraa tätä luetteloa:
- IN1-> D5
- IN2-> D6
- IN3-> D7
- IN4-> D8
2) Servomoottori seuraava:
Data Servo Pin -> D1
3) Neopikselit nauhat seuraavat:
Data Neopikselit Pin -> D2
4) Rajakytkin seuraava:
Kytkimen kaksi nastaa GND ja D3
Liitä rajakytkin siten, että piiri avautuu/katkeaa, kun painamme kytkintä (joten piiri sulkeutuu, kun mikään ei paina sitä). Näin vältetään väärät luennot jännitepiikin vuoksi.
Vaihe 3: Arduino -koodi - ISS -aseman saaminen reaaliajassa
Jotta kaksi moottoria saataisiin ISS -asemaan, meidän on saatava ISS: n sijainti reaaliajassa:
- Käytämme ensin Open Notify Here -sovellusliittymää
- Sitten meidän on jäsenneltävä tiedot, jotta saamme ISS -sijainnin yksinkertaisen arvon jäsentämistietojen avulla: ArduinoJson -kirjasto (kirjoittanut Benoit Blanchon)
#include <ESP8266WiFi.h #include <ESP8266HTTPClient.h #include <ArduinoJson.h // WiFi -parametrit const char* ssid = "XXXXX"; const char* password = "XXXXX"; void setup () {Serial.begin (115200); WiFi.begin (ssid, salasana); while (WiFi.status ()! = WL_CONNECTED) {delay (1000); Serial.println ("Yhdistetään …"); }}
Tämä ohjelma yhdistää NodeMCU: n WiFi -verkkoon, muodostaa sitten yhteyden sovellusliittymään, hakee tiedot ja tulostaa ne sarjamuotoisesti.
void loop () {
if (WiFi.status () == WL_CONNECTED) // Tarkista WiFi -tila {HTTPClient http; // Luokan HTTPClient objekti http.begin ("https://api.open-notify.org/iss-now.json"); int httpCode = http. GET (); // Tarkista palautuskoodi, jos (httpCode> 0) {// Jäsentäminen const size_t bufferSize = JSON_OBJECT_SIZE (2) + JSON_OBJECT_SIZE (3) + 100; DynamicJsonBuffer jsonBuffer (bufferSize); JsonObject & root = jsonBuffer.parseObject (http.getString ()); // Parametrit const char* message = root ["message"]; const char* lon = juuri ["iss_position"] ["pituusaste"]; const char* lat = juuri ["iss_position"] ["leveysaste"]; // Lähtö sarjamonitoriin Serial.print ("Message:"); Serial.println (viesti); Serial.print ("Pituusaste:"); Sarja.println (lon); Serial.print ("Leveysaste:"); Sarja.println (lat); } http.end (); // Sulje yhteys} viive (50000); }
Vaihe 4: Lopullinen Arduino -koodi
Seuraavat Arduino -koodit saavat ISS -sijainnin, jotta laser voidaan siirtää oikeaan paikkaan maan pinnalla, ja auringon aseman saaminen valaisemaan kyseiset neopikselit valaisemaan auringon kosketuksen maan pinnalle.
Bonus 1: Kun lamppu kytketään päälle, laser osoittaa alustusvaiheen aikana lampun asennon (id: sijainti, jossa reititin on)
Bonus 2: Kun ISS on lampun sijainnin vieressä (+/- 2 ° pitkä ja +/- 2 ° leveä), kaikki neopikselit vilkkuvat varovasti
Vaihe 5: Nauti ISS -seurannasta
Olet tehnyt ISS -seurantalampun, nauti!
Ensimmäinen palkinto ensimmäisen kerran kirjailijakilpailussa