Daftar Isi:
2025 Pengarang: John Day | [email protected]. Terakhir diubah: 2025-01-13 06:57
Sebagian besar waktu, saya bertanya-tanya di mana ISS melihat ke langit. Untuk menjawab pertanyaan ini, saya telah membuat objek fisik untuk mengetahui dengan tepat di mana letak ISS secara real time.
ISS Tracking Lamp adalah lampu yang terhubung ke Internet yang terus-menerus melacak ISS dan menampilkan lokasinya di permukaan bumi (dicetak dalam 3D).
Bonus: lampu juga menampilkan sisi cerah Bumi dengan Neopiksel!??
Jadi, dalam Instruksi ini, kita akan melihat langkah-langkah berbeda untuk membuat lampu ini berdasarkan WEMOS D1 Mini, motor stepper, motor servo, laser, dan suku cadang 3D.
Saya membangun semuanya sendiri, kecuali untuk Earth yang dicetak 3D, yang dibeli di Aliexpress.
Perangkat lunak:
- Kode berbasis Arduino
- Lokasi API ISS: Buka Beritahu - Lokasi ISS Saat Ini (oleh Nathan Bergey)
- Parsing data: Perpustakaan ArduinoJson (oleh Benoit Blanchon)
CAD & Bagian:
- Bumi Cetak 3D berdiameter 18cm (dibeli di Aliexpress: di sini)
- Dukungan motor cetak 3D - dirancang dengan Fusion 360 dan dicetak dengan Prusa i3 MK2S
- Tabung tembaga
- Basis beton, dibuat dengan Viking Prancis
Perangkat keras:
- Mikrokontroler: Wemos D1 Mini (antena wifi terintegrasi)
- Servo EMAX ES3352 MG
- Stepper Motor 28byj-48 (dengan papan driver ULN2003)
- 10 NeoPixels LED
- Laser dengan panjang gelombang 405 nm
- Saklar Batas
- Catu Daya 5V 3A
Langkah 1: Membuat Model Bagian di Fusion 360 dan Mencetak
Untuk memasang semua perangkat keras, kita akan membuat basis perakitan inti pada bagian 3D. Suku cadang tersedia di Thingiverse di sini.
Ada 3 bagian:
1) Garis Bujur Stepper Dukungan
Bagian ini dibuat untuk memasang motor stepper, WEMOS, strip Neopiksel, dan tabung tembaga
2) Sakelar Dukungan
Bagian ini dibuat untuk memasang sakelar batas (digunakan untuk menunjukkan kepada stepper garis lintang -0°/-180 °). Ini disekrup di bagian atas stepper
3) Dukungan Servo Latitude
Bagian ini dibuat untuk memasang motor servo. Support Servo dipasang pada motor stepper
Semua bagian dicetak pada Prusa I3 MK2S, dengan filamen PETG hitam
Langkah 2: Pengkabelan dan Perakitan
Sirkuit ini akan memiliki input daya 5V 3A (untuk menggunakan suplai yang sama untuk driver stepper, laser, Neopiksel, dan WEMOS)
Dengan Sketsa berikut, kita perlu menyolder catu daya langsung ke elemen di atas secara paralel:
- Pengemudi Stepper
- Laser
- Strip Neopiksel (NB: kenyataannya ada 10 Neopiksel, bukan 8 seperti yang ditunjukkan sketsa)
- WEMOS
Selanjutnya, kita perlu menghubungkan elemen yang berbeda ke WEMOS:
1) Driver stepper mengikuti daftar ini:
- IN1->D5
- IN2->D6
- IN3->D7
- IN4->D8
2) Motor servo berikut:
Pin Servo Data -> D1
3) Strip Neopiksel berikut:
Data Neopiksel Pin -> D2
4) Saklar batas berikut:
Dua pin sakelar ke GND dan D3
Hubungkan sakelar batas sedemikian rupa sehingga sirkuit terbuka/putus saat kita menekan sakelar (sehingga sirkuit tertutup ketika tidak ada yang menekannya). Hal ini untuk menghindari salah kuliah akibat tegangan puncak.
Langkah 3: Kode Arduino - Mendapatkan Posisi ISS secara Real Time
Untuk menggerakkan kedua motor mencapai posisi ISS, kita perlu mendapatkan posisi ISS secara real time:
- Untuk itu pertama kita akan menggunakan API dari Open Notify Here
- Kemudian, kita perlu mengurai data untuk mendapatkan nilai sederhana dari lokasi ISS dengan bantuan Parsing data: Perpustakaan ArduinoJson (oleh Benoit Blanchon)
#include <ESP8266WiFi.h #include <ESP8266HTTPClient.h #include <ArduinoJson.h // Parameter WiFi const char* ssid = "XXXXX"; const char* kata sandi = "XXXXX"; void setup() { Serial.begin(115200); WiFi.begin(ssid, kata sandi); while (WiFi.status()!= WL_CONNECTED) { delay(1000); Serial.println("Menghubungkan…"); } }
Program ini menghubungkan NodeMCU ke WiFi, kemudian terhubung ke API, mendapatkan data dan mencetaknya secara serial.
lingkaran kosong() {
if (WiFi.status() == WL_CONNECTED) // Periksa Status WiFi {HTTPClient http; //Objek kelas HTTPClient http.begin("https://api.open-notify.org/iss-now.json"); int httpKode = http. GET(); //Periksa kembali kode if (httpCode >0) { // Parsing const size_t bufferSize = JSON_OBJECT_SIZE(2) + JSON_OBJECT_SIZE(3) + 100; DynamicJsonBuffer jsonBuffer(ukuran buffer); JsonObject& root = jsonBuffer.parseObject(http.getString()); // Parameter const char* pesan = root["pesan"]; const char* lon = root["iss_position"]["longitude"]; const char* lat = root["iss_position"]["latitude"]; // Output ke serial monitor Serial.print("Pesan:"); Serial.println(pesan); Serial.print("Bujur: "); Serial.println(panjang); Serial.print("Lintang: "); Serial.println(lat); } http.akhir(); //Tutup koneksi } delay(50.000); }
Langkah 4: Kode Arduino Akhir
Kode Arduino berikut mendapatkan lokasi ISS untuk memindahkan laser ke tempat yang tepat di permukaan bumi, dan mendapatkan posisi matahari untuk menerangi Neopiksel yang bersangkutan untuk menerangi permukaan bumi yang disentuh oleh matahari.
Bonus 1: Saat lampu dinyalakan, selama fase inisialisasi, laser akan menunjukkan posisi lampu (id: posisi router berada)
Bonus 2: Saat ISS berada di sebelah lokasi lampu (panjang +/- 2° dan +/-2° lat.), semua Neopiksel akan berkedip pelan
Langkah 5: Nikmati Pelacak ISS Anda
Anda telah membuat ISS Tracking Lamp, selamat menikmati!
Hadiah Pertama dalam Kontes Penulis Pertama Kali