Sadržaj:
2025 Autor: John Day | [email protected]. Zadnja promjena: 2025-01-13 06:57
Većinu vremena pitam se gdje ISS gleda u nebo. Da bih odgovorio na ovo pitanje, napravio sam fizički objekt koji će točno znati gdje se nalazi ISS u stvarnom vremenu.
Lampica za praćenje ISS -a je svjetiljka povezana s internetom koja neprestano prati ISS i prikazuje njegovu lokaciju na površini Zemlje (ispisana u 3D).
Bonus: svjetiljka prikazuje i sunčanu stranu Zemlje s neopikselima! ??
Dakle, u ovom Instructables -u ćemo vidjeti različite korake za izgradnju ove svjetiljke na temelju WEMOS D1 Mini, koračnog motora, servo motora, lasera i 3D dijelova.
Gradim sam, osim 3D tiskane Zemlje koja je kupljena na Aliexpressu.
Softver:
- Kod zasnovan na Arduinu
- API ISS lokacija: Open Notify - trenutna lokacija ISS -a (autor Nathan Bergey)
- Raščlanjivanje podataka: ArduinoJson knjižnica (autor Benoit Blanchon)
CAD i dijelovi:
- 3D ispisana Zemlja promjera 18 cm (kupljeno na Aliexpressu: ovdje)
- Nosači motora s 3D printom - dizajnirani s Fusion 360 i ispisani s Prusa i3 MK2S
- Bakrena cijev
- Betonska podloga izrađena od francuskih Vikinga
Hardver:
- Mikrokontroler: Wemos D1 Mini (integrirana wifi antena)
- Servo EMAX ES3352 MG
- Koračni motor 28byj-48 (s upravljačkom pločom ULN2003)
- 10 LED dioda NeoPixels
- Laser valne duljine 405 nm
- Ograničeni prekidač
- Napajanje 5V 3A
Korak 1: Modeliranje dijelova u Fusion 360 i ispis
Kako bismo montirali sav hardver, stvorit ćemo osnovu za sastavljanje jezgre na 3D dijelovima. Dijelovi su dostupni na Thingiverse ovdje.
Postoje 3 dijela:
1) Dužina koraka za podršku
Ovaj dio je napravljen za montažu koračnog motora, WEMOS -a, trake od Neopiksela i bakrene cijevi
2) Prekidač za podršku
Ovaj je dio izrađen za montažu krajnjeg prekidača (upotrijebite za označavanje koraka zemljopisne širine -0 °/-180 °). Zašrafljen je na vrh stepera
3) Servo Latitude za podršku
Ovaj dio je napravljen za montažu servo motora. Servo za podršku montiran je na koračni motor
Svi su dijelovi tiskani na Prusa I3 MK2S, s crnom PETG nitom
Korak 2: Ožičenje i sastavljanje
Ovaj krug će imati ulaz 5V 3A (kako bi se koristilo isto napajanje za upravljač koraka, laser, neopiksele i WEMOS)
Na sljedećoj skici moramo paralelno lemiti napajanje izravno na gornje elemente:
- Stepper Driver
- Laser
- Traka od neopiksela (napomena: u stvarnosti postoji 10 neopiksela, a ne 8 kako prikazuje skica)
- WEMOS
Zatim moramo povezati različite elemente s WEMOS -om:
1) Upravljački program koračnika koji slijedi ovaj popis:
- IN1-> D5
- IN2-> D6
- IN3-> D7
- IN4-> D8
2) Servo motor slijedi:
Servo pin podataka -> D1
3) Neopikselna traka slijedi:
Podaci Neopikseli Pin -> D2
4) Krajnji prekidač slijedi:
Dva pina prekidača na GND i D3
Spojite krajnji prekidač na način da se krug otvori/prekine kada pritisnemo prekidač (tako da se krug zatvori kada ništa ne pritisne na njega). Time se izbjegava pogrešno predavanje zbog vrha napona.
Korak 3: Arduino kod - Dobivanje položaja ISS -a u stvarnom vremenu
Da bismo doveli dva motora do položaja ISS -a, moramo dobiti položaj ISS -a u stvarnom vremenu:
- Za to ćemo prvo koristiti API iz Open Notify Here
- Zatim moramo raščlaniti podatke da bismo dobili jednostavnu vrijednost lokacije ISS -a uz pomoć raščlanjivanja podataka: ArduinoJson Library (autor Benoit Blanchon)
#include <ESP8266WiFi.h #include <ESP8266HTTPClient.h #include <ArduinoJson.h // Parametri WiFi const char* ssid = "XXXXX"; const char* lozinka = "XXXXX"; void setup () {Serial.begin (115200); WiFi.započni (ssid, lozinka); while (WiFi.status ()! = WL_CONNECTED) {odgoda (1000); Serial.println ("Povezivanje …"); }}
Ovaj program povezuje NodeMCU s WiFi mrežom, zatim se povezuje s API -jem, preuzima podatke i ispisuje ih serijski.
void loop () {{100} {101}
if (WiFi.status () == WL_CONNECTED) // Provjeri WiFi status {HTTPClient http; // Objekt klase HTTPClient http.begin ("https://api.open-notify.org/iss-now.json"); int httpCode = http. GET (); // Provjeravamo povratni kôd if (httpCode> 0) {// Raščlanjivanje const size_t bufferSize = JSON_OBJECT_SIZE (2) + JSON_OBJECT_SIZE (3) + 100; DynamicJsonBuffer jsonBuffer (veličina međuspremnika); JsonObject & root = jsonBuffer.parseObject (http.getString ()); // Parametri const char* poruka = root ["poruka"]; const char* lon = root ["iss_position"] ["longitude"]; const char* lat = root ["iss_position"] ["zemljopisna širina"]; // Izlaz na serijski monitor Serial.print ("Poruka:"); Serial.println (poruka); Serial.print ("Dužina:"); Serial.println (lon); Serial.print ("Latitude:"); Serijski.println (lat); } http.end (); // Prekid veze} kašnjenje (50000); }
Korak 4: Završni Arduino kod
Sljedeći Arduino kôd određuje lokaciju ISS -a za pomicanje lasera na pravo mjesto na Zemljinoj površini i dobivanje položaja Sunca kako bi osvijetlio dotične neopiksele kako bi osvijetlio površinu Zemlje dodirnutu suncem.
Bonus 1: Kad je lampa uključena, tijekom faze inicijalizacije, laser će usmjeriti položaj svjetiljke (id: položaj gdje se nalazi usmjerivač)
Bonus 2: Kada je ISS pored mjesta lampe (+/- 2 ° duljine i +/- 2 ° lat.), Svi neopikseli će lagano namignuti
Korak 5: Uživajte u svom ISS Tracker -u
Napravili ste ISS lampu za praćenje, uživajte!
Prva nagrada na Prvom natječaju za autore