ISS 天線:打造你的桌面太空追蹤器
在浩瀚的宇宙中,國際空間站(ISS)作為一個重要的科研平臺,始終吸引著無數(shù)太空愛好者的目光。作為一名太空愛好者,我曾多次嘗試通過在線服務追蹤 ISS 的位置,但隨著這些服務的逐漸消失,我決定自己動手打造一個能夠實時提醒我 ISS 過境的桌面天線。今天,我將分享這個項目的詳細制作過程,希望它能成為你或你朋友的下一個有趣項目。
項目簡介
這個 ISS 天線項目是我制作的第三個 ISS 跟蹤設備。它不僅能告訴你 ISS 是否在你的頭頂上方,還能顯示它離你有多遠。這個迷你桌面天線的核心是一個 RGB LED,當 ISS 遠離你的位置時,它會發(fā)出紅色光芒;當 ISS 接近大約 1000 公里范圍內時,它會發(fā)出黃色光芒并緩慢閃爍;當 ISS 進入可見范圍時,它會發(fā)出綠色光芒并快速閃爍。這正是你沖到外面欣賞 ISS 飛越的絕佳時機。
這個項目不僅外觀酷炫,而且非常實用,適合作為禮物送給任何太空愛好者。接下來,我將詳細介紹如何制作這個 ISS 天線。
所需材料
在開始制作之前,我們需要準備以下材料和工具:
電子元件
- ESP8266 微控制器:例如 Wemos D1 Mini,用于處理數(shù)據(jù)和控制 LED。
- 共陰極 RGB LED:用于顯示 ISS 的位置信息。
- 470Ω 電阻:用于限制 LED 的電流,防止損壞。
- 連接線:用于連接各個組件。
- Micro USB 數(shù)據(jù)線:用于給 ESP8266 供電。
3D 打印材料
- PLA 或 ABS 耗材:用于打印天線的外殼。
- 3D 打印機:用于打印天線的各個部件。
其他材料
- 噴漆(可選):用于給天線外殼上色。
- 膠水:用于固定各個部件。
設計與 3D 打印
設計思路
為了制作這個 ISS 天線,我使用了 Fusion 360 進行建模。整個天線由以下幾個部分組成:
- 側三角架:用于支撐整個天線結構。
- 外殼:用于容納 ESP8266 微控制器和電線。
- 橋接部分:用于固定天線的碟形部分。
- 碟形部分:用于安裝 RGB LED。
- 圓形蓋板:用于覆蓋 LED 引腳的焊接部分。
3D 打印過程
- 模型設計:在 Fusion 360 中設計好各個部件后,將模型導出為 STL 文件。
- 切片設置:將 STL 文件導入到切片軟件(如 Cura)中,設置打印參數(shù)。建議使用默認參數(shù),以確保打印質量。
- 打印過程:將 PLA 或 ABS 耗材裝入 3D 打印機,開始打印。打印完成后,檢查各個部件是否有瑕疵,如有需要可以進行簡單的清理。
如果你沒有 3D 打印機,也可以使用 PVC 板手工制作天線的各個部件。例如,你可以用冰激凌杯作為碟形部分。
電路搭建
電路連接
- 連接 RGB LED:
- RGB LED 的紅色引腳連接到 ESP8266 的 D5 引腳。
- RGB LED 的綠色引腳連接到 ESP8266 的 D6 引腳。
- RGB LED 的藍色引腳連接到 ESP8266 的 D7 引腳。
- RGB LED 的共陰極引腳連接到 ESP8266 的 GND 引腳。
- 連接電阻:
- 在每個 LED 引腳和 ESP8266 引腳之間串聯(lián)一個 470Ω 電阻,以限制電流。
- 連接電源:
- 使用 Micro USB 數(shù)據(jù)線為 ESP8266 供電。
- 使用 Micro USB 數(shù)據(jù)線為 ESP8266 供電。
焊接過程
- 焊接電阻:將 470Ω 電阻焊接到 RGB LED 的每個引腳上。
- 連接電線:將電阻的另一端連接到 ESP8266 的對應引腳上。
- 固定 LED:將 LED 安裝到圓形蓋板上,并用膠水固定。
最終組裝
組裝步驟
-
- 安裝三角架:將三角架的各個部分用膠水粘合在一起,確保結構穩(wěn)固。
- 安裝外殼:將 ESP8266 微控制器放入外殼中,并用膠水固定。
- 安裝碟形部分:將碟形部分安裝到橋接部分上,并用膠水固定。
- 安裝 LED:將 RGB LED 安裝到碟形部分的中心,并用膠水固定。
- 連接電線:將所有電線通過外殼的孔洞引出,并連接到 ESP8266 上。
- 安裝天線:將天線安裝到橋接部分上,并用膠水固定。
上色與裝飾
- 噴漆:使用噴漆為天線的各個部件上色,使其外觀更加美觀。
- 組裝完成:將所有部件組裝在一起,完成整個天線的制作。
代碼上傳
代碼功能
這個項目的代碼主要實現(xiàn)以下功能:
- 獲取 ISS 的實時位置:通過 Open Notify API 獲取 ISS 的實時經緯度。
- 計算距離:使用 Haversine 公式計算 ISS 與你當前位置的距離。
- 更新 LED 顏色:根據(jù) ISS 的距離,更新 RGB LED 的顏色和閃爍頻率。
代碼示例
以下是代碼的核心部分:
#include <ESP8266WiFi.h>
#include <ArduinoJson.h>
#include <Adafruit_NeoPixel.h>
#define LED_PIN D5
#define LED_COUNT 1
#define WIFI_SSID "your_ssid"
#define WIFI_PASS "your_password"
Adafruit_NeoPixel strip(LED_COUNT, LED_PIN, NEO_GRB + NEO_KHZ800);
const char* api_url = "http://api.open-notify.org/iss-now.json";
const double home_lat = 37.7749; // 替換為你的緯度
const double home_lon = -122.4194; // 替換為你的經度
void setup() {
Serial.begin(115200);
WiFi.begin(WIFI_SSID, WIFI_PASS);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("WiFi connected");
strip.begin();
strip.show();
}
void loop() {
if (WiFi.status() == WL_CONNECTED) {
HTTPClient http;
http.begin(api_url);
int httpCode = http.GET();
if (httpCode > 0) {
String payload = http.getString();
DynamicJsonDocument doc(1024);
deserializeJson(doc, payload);
double iss_lat = doc["iss_position"]["latitude"];
double iss_lon = doc["iss_position"]["longitude"];
double distance = haversine(home_lat, home_lon, iss_lat, iss_lon);
updateLED(distance);
}
http.end();
}
delay(30000); // 每 30 秒更新一次
}
double haversine(double lat1, double lon1, double lat2, double lon2) {
const double R = 6371; // 地球半徑,單位:公里
double dLat = degToRad(lat2 - lat1);
double dLon = degToRad(lon2 - lon1);
double a = sin(dLat / 2) * sin(dLat / 2) +
cos(degToRad(lat1)) * cos(degToRad(lat2)) *
sin(dLon / 2) * sin(dLon / 2);
double c = 2 * atan2(sqrt(a), sqrt(1 - a));
return R * c;
}
void updateLED(double distance) {
if (distance > 1000) {
strip.setPixelColor(0, strip.Color(255, 0, 0)); // 紅色
} else if (distance > 500) {
strip.setPixelColor(0, strip.Color(255, 255, 0)); // 黃色
} else {
strip.setPixelColor(0, strip.Color(0, 255, 0)); // 綠色
}
strip.show();
}
上傳代碼
- 安裝 Arduino IDE:從 Arduino 官方網(wǎng)站下載并安裝 Arduino IDE。
- 安裝 ESP8266 板管理器:在 Arduino IDE 中,打開“文件”->“首選項”,然后打開“工具”->“開發(fā)板”->“開發(fā)板管理器”,搜索并安裝 ESP8266。
- 安裝所需庫:在 Arduino IDE 中,打開“草圖”->“包含庫”->“管理庫”,搜索并安裝以下庫:
- ESP8266WiFi
- ArduinoJson
- 上傳代碼:將上述代碼復制到 Arduino IDE 中,選擇正確的開發(fā)板類型(Wemos D1 Mini)和 COM 端口,然后點擊“上傳”按鈕。
測試與使用
測試步驟
- 連接電源:使用 Micro USB 數(shù)據(jù)線為 ESP8266 供電。
- 檢查 LED:觀察 RGB LED 的顏色變化,確保其能夠根據(jù) ISS 的距離正確顯示顏色。
- 調整位置:將天線放置在你的工作桌上,確保其能夠正常工作。
使用建議
- 夜間觀察:在夜間,你可以通過 LED 的顏色變化快速判斷 ISS 是否在可見范圍內。
- 個性化:你可以通過修改代碼來調整 LED 的顏色和閃爍頻率,使其更適合你的需求。
- 美化外殼:你可以使用噴漆或貼紙來美化 3D 打印的外殼,使其更加符合你的個人風格。
項目擴展
這個項目不僅是一個有趣的 DIY 項目,還可以根據(jù)你的需求進行擴展和定制。以下是一些擴展建議:
- 添加更多傳感器:例如,添加溫度傳感器或濕度傳感器,擴展設備的功能。
- 數(shù)據(jù)記錄:添加一個 SD 卡模塊,用于記錄 ISS 的過境數(shù)據(jù),方便后續(xù)分析。
- 添加藍牙功能:通過添加藍牙模塊,將測量數(shù)據(jù)傳輸到手機或其他設備。
- 美化外殼:使用噴漆或貼紙來美化 3D 打印的外殼,使其更加符合你的個人風格。
總結
這個 ISS 天線項目是一個非常有趣且實用的 DIY 項目,它不僅能夠讓你親手制作一個能夠實時提醒你 ISS 過境的桌面天線,還能讓你學習到 3D 打印、電子電路搭建和 Arduino 編程的基礎知識。通過這個項目,你可以實現(xiàn)對 ISS 的實時追蹤,并通過 RGB LED 清晰地顯示其位置信息。更重要的是,你可以根據(jù)自己的需求對項目進行擴展和定制,讓它成為你獨一無二的桌面裝飾品。
希望這篇文章能夠激發(fā)你的創(chuàng)造力,讓你動手制作屬于自己的 ISS 天線。如果你在制作過程中遇到任何問題,歡迎在評論區(qū)留言,我會盡力為你解答。如果你已經完成了這個項目,也歡迎在評論區(qū)分享你的作品,讓我們一起交流和學習!
希望你喜歡這個項目,并在構建過程中找到樂趣!如果你有任何問題或需要幫助,歡迎在評論區(qū)交流。
作者:Svan.
注意:本博文為不得在未經本人同意進行轉載或者二次創(chuàng)作,違者必究!??!
博客主頁:https://blog.csdn.net/weixin_51141489,需要源碼或相關資料實物的友友請關注、點贊,私信吧!