0

0
0

文字

分享

0
0
0

穿戴式裝置與物聯網應用:LinkIt ONE 的Wi-Fi 無線網路功能

馥林文化_96
・2015/08/14 ・1757字 ・閱讀時間約 3 分鐘

文/CAVEDU教育團隊

各位讀者,本系列專欄要介紹如何使用LinkIt ONE 這塊Arduino 相容板來嘗試製作各種穿戴式裝置與物聯網專題,歡迎和我們一起動手做。不過只把LinkIt ONE 當作Arduino 來用的話就太可惜了,因此我們會直接切入它的聯網功能,之後再回頭結合各種電子元件,讓製作各種物聯網專題更輕鬆。

LinkIt ONE 的聯網功能

LinkIt ONE 的聯網功能共有Wi-Fi、GPRS 行動網路、藍牙與GPS 等。本篇先從由Wi-Fi 取得指定網頁字元開始。LinkIt ONE 的Wi-Fi 是基於MT5931 這顆晶片,加上盒裝內附的天線會有比較好的通訊效果(不安裝也可以)。另ㄧ 方面,Wi-Fi 會有認證問題,請勿使用像是學校這類型的兩階段認證系統。或者如果您的手機門號是無限上網的話,也可以使用您的手機做為LinkIt ONE 的專屬網路熱點。準備硬體時, 請將Wi-Fi / 藍牙天線( 圖1) 接到 LinkIt ONE 背面的Wi-Fi 接點。雖然晶片是整合在板子上,所以未連接也可以進行通訊,但連接後可以得到比較好的通訊效果。板子上有標示天線要接在哪,在這裡請注意別接錯了(圖2)。

圖1
圖1 Wi-Fi /藍牙天線。
圖2
圖2 在LinkIt ONE 上安裝Wi-Fi 天線。

所需零件:
• LinkIt ONE 開發板
• Wi-Fi/藍牙天線

擷取網頁字元

本範例可以擷取指定網頁的字元,您可以以此範例為基礎,完成各種簡易的網路爬蟲程式。執行畫面如圖3。

圖3
圖3 擷取網頁字元於Serial Monitor 。

本程式的流程如下: 首先連上指定的Wi-Fi AP , 在此需輸入正確的AP 名稱、密碼與認證方式。成功之後會對指定網站(本範例使用www.cavedu.com , 您可以自行更改為其他的網站) 發送一個HTTP GET 需求,也就是程式的第27 ∼ 30 列。接著就會將網頁字元一個一個讀回來,並顯示於Serial Monitor 中。

接著介紹程式中幾個比較重要的指令:

  1. #include <LWiFi.h> / #include<LWiFiClient.h>匯入Wi-Fi所需的函式庫。
  2. #define SITE_URL “www.cavedu.com”要取得字元的網站。
  3. #define WIFI_AP “Name_of_your_AP”要連接的無線網路名稱。
  4. #define WIFI_PWD “Password_of_your_AP”無線網路密碼。
  5. LWiFiClient c;初始化一個名為 client的LWiFiClient物件,之後會用它來連上網站並取得網站內容。
  6. LWiFi.begin();開始Wi-Fi相關作業。
  7. 連上無線網路點:使用LWiFi.connectWEP(WIFI_AP,WIFI_PASSWORD)指令來連上指定無線網路,您可以看到該指令中必須填入WIFI_AP 與WIFI_PASSWORD。如果連線成功就會開始取得網頁字元,反之失敗的話就會顯示錯誤訊息「Fail to connect AP!」。i f ( LWiFi . connectWEP (WIFI_AP,WIFI_PASSWORD)<0){
    Serial.println(“Fail to connect AP!”);return;
    }
  8. 檢查是否連上指定網站:使用c.connect(SITE_URL, 80))指令來連線至指定網站(本範例為www.cavedu.com)與預設的http埠號80 。如果連線失敗, 就會顯示錯誤訊息「Fail to connectwebsite!」。if(!c.connect(SITE_URL, 80)){Serial.println(“Fail toconnect website!”);return;

    }

  9. 發送HTTP指令與讀取網頁字元

透過client.println()指令對指定網站發送GET指令, 並進到loop()函式中不斷讀取網頁字元,再顯示於Serial Monitor中。做到這裡就算是完成了。執行程式時, 會在Serial Monitor中看到一個個字元飛快地跳出來。當
您有移動需求, 又沒辦法幫 LinkIt ONE 準備一張可行動上網的SIM卡的話,可以讓LinkIt ONE 藉由智慧型
手機的無線網路熱點功能來上網。完整程式碼請參考本文末。

小訣竅:活用Serial Monitor

在上述步驟7 與8 中,您有看到我們運用Serial Monitor 來顯示錯誤訊息嗎?這是一個非常重要的技能,因為在沒有外接顯示或發音裝置的情況下,您幾乎無法從LinkIt ONE 看出發生了什麼事情。當程式愈來愈大的時候, 我們需要知道「錯在哪裡」, 因此如果您看到的錯誤訊息是「Fail to connect AP!」,代表現在板子完全無法連上無線網路存取點,必須檢查AP名稱與密碼有無輸入錯誤。

換而言之, 如果錯誤訊息是「Fail to connect website!」的話, 就必須檢查網站名稱是否正確。

如果希望讓LinkIt ONE 變成一臺獨立裝置,就不會將LinkIt ONE 連接上電腦。在這樣的情況下想要得知板子狀態的話,您可以考慮加裝2×16的LCD 模組,就能看到相關的錯誤訊息。簡陋一點的話,可使用LED 或是蜂鳴器,藉由燈號或聲響來得知開發板的狀態。

#include <LWiFi.h>
#include <LWiFiClient.h>
#define SITE_URL "www.mediatek.com"
#define WIFI_AP "Name_of_your_AP" // 請換成您的Wi-Fi AP 名稱
#define WIFI_PWD "Password_of_your_AP" // 請換成您的Wi-Fi 密碼
LWiFiClient c;
void setup() {
 Serial.begin(9600);
 LWiFi.begin();
 Serial.println();
 Serial.print("Connecting to AP...");
 if(LWiFi.connectWEP(WIFI_AP, WIFI_PASSWORD) < 0)
 {
 Serial.println("FAIL!");
 return;
 }
 Serial.println("ok");
 Serial.print("Connecting to site...");
 if(!c.connect(SITE_URL, 80))
 {
 Serial.println("FAIL!");
 return;
 }
 Serial.println("ok");
 Serial.println("send HTTP GET request");
 c.println("GET / HTTP/1.1");
 c.println("Host: " SITE_URL);
 c.println("Connection: close");
 c.println();
}
void loop() {
 int v;
 while(c.available())
 {
 v = c.read(); // 開始讀取網頁
 if(v < 0)
 break; // 讀取完畢後跳出此段
 Serial.print((char)v); // 將讀取到的字元顯示於Serial Monitor
 }
 delay(100);
}

 

參考資料:

文章原文刊載於《ROBOCON》國際中文版2015/7月號

相關標籤: LinkIt ONE
文章難易度
馥林文化_96
54 篇文章 ・ 6 位粉絲
馥林文化是由泰電電業股份有限公司於2002年成立的出版部門,有鑒於21世紀將是數位、科技、人文融合互動的世代,馥林亦出版科技機械類雜誌及相關書籍。馥林文化出版書籍http://www.fullon.com.tw/

1

9
1

文字

分享

1
9
1

災難片成真!?小行星「貝努」行蹤飄忽,撞地球的機率有多大?

EASY天文地科小站_96
・2021/09/19 ・2765字 ・閱讀時間約 5 分鐘
  • 文/陳子翔(現就讀師大地球科學系, EASY 天文地科團隊創辦者)

知名物理學家史蒂芬.霍金(Stephen Hawking)認為,小行星撞擊是宇宙中高等智慧生命最大的威脅之一。而回首地球的過去,六千五百萬年前的白堊紀末期,造成恐龍消失的生物大滅絕,也肇因於一顆直徑約十公里的小行星撞擊。那麼,我們應該擔心小行星帶來如同災難片場景的巨大浩劫嗎,人類又能為這件事做什麼準備呢?

我們該擔心哪些小行星,小行星撞擊能被預測嗎?

太陽系中的小行星不可勝數,但並非所有小行星都對於地球有潛在的危害。那麼,哪些小行星是應該注意的呢?

我們可以簡單從兩個條件,篩選出對地球有潛在威脅的小行星:第一是小行星的軌道,第二則是小行星的大小。如果一個天體的運行軌道與地球的運行軌道沒有交會,那也就不需要擔心它會部會撞到地球了。而直徑越大的小行星,撞擊地球產生的災害就會越大,例如一顆直徑 10 公尺的小行星墜落能造成小範圍的建築物受損,而直徑 50 公尺的小行星撞擊,其威力則足以摧毀整座大型城市。

https://upload.wikimedia.org/wikipedia/commons/thumb/5/59/Chelyabinsk_meteor_event_consequences_in_Drama_Theatre.jpg/1024px-Chelyabinsk_meteor_event_consequences_in_Drama_Theatre.jpg
2013 年俄羅斯車里亞賓斯克小行星墜落事件,隕石在空中爆炸的震波震碎大片玻璃。圖/Nikita Plekhanov

過去天文學家透過遍布世界的天文台,不斷在夜空中尋找近地小天體,並持續監測它們的動向。而透過觀測資料推算其軌道,就可以算出這些危險的小鄰居未來與地球發生「車禍」的機率有多大,而這篇文章的主角「貝努」,就是一顆被認為有較大機會撞擊地球,因此被重點關注的對象。

貝努撞地球會是未來的災難嗎?

貝努在 1999 年被發現,是一顆直徑約 500 公尺的小行星,它以橢圓軌道繞行太陽,公轉週期大約 437 天。由於貝努的軌道與地球相當接近,它每隔幾年就會接近地球一次,而本世紀貝努最接近我們的時刻將會發生在西元 2060 年,不過別擔心,該年貝努與地球最接近時,距離預計也還有七十萬公里,大約是地球至月球距離的兩倍,撞擊風險微乎其微。

綠色為地球軌道,藍色為貝努軌道。圖/University of Arizona

然而天文學家真正關注,撞擊風險較大的接近事件則會發生在下一個世紀。根據目前的軌道計算,貝努在西元 2135 年和 2182 年的兩次接近,會有較大的撞擊風險。說到這裡可能許多讀者會覺得,既然我們都活不到那個時候,何必去操心那些根本遇不到的事情呢?

那麼,讓我們想像一個情境:

如果今天天文學家突然發現了一顆與貝努一樣大的小行星,並算出它將在一年後撞上地球,那身為這個星球上「最有智慧的物種」,我們能怎麼應對呢?

很遺憾的:我們很可能對於撞擊束手無策。當前人類並沒有任何成熟的技術,能夠在這麼短的時間內改變小行星的軌道。這時候人們可能就會希望前人早點望向星空,調查小行星,好讓人們能夠有多一百年的時間準備應對的方法了!

小行星軌道計算不就是簡單的牛頓力學,為什麼算不準?

那麼貝努在未來 100〜200 年到底會不會撞擊地球呢?其實天文學家也說不太準,只能給出大概的機率而已,而且時間越久,預測的不確定性就越大。

你也許會想,天體的運行軌道不就只是簡單的牛頓力學,三百年前的人就已經掌握得很好了,在電腦科技發達的現代怎們會算不準呢?確實,如果要算地球與火星在 100 年後的相對位置,那電腦還能輕鬆算出相當精確的答案,但如果是計算小行星 100 年後的位置,事情就變得棘手多了……

由於小行星的質量很小,就算是相對微小的引力干擾還是足以改變其運行方向,而混沌理論(Chaos theory)告訴我們,任何微小的初始條件差異,都能造成結果極大的不同。因此要對小行星軌道做長期預測,就不能只考慮太陽的引力,而是必須把行星等其他天體的引力也納入計算,才能獲得比較準確的結果。尤其是當這些小行星與地球擦肩而過時,即使只有幾百公尺的位置偏差,受到的引力也會有相當的不同,使得小行星的未來軌跡出現巨大的差異。

而更令天文學家們頭痛的是,有些問題甚至不是萬有引力能夠解決的,其中一個因子就是「亞爾科夫斯基效應」(Yarkovsky Effect)。這個效應是這樣的:當陽光照在自轉中的小行星上,陽光會加熱小行星的受光面,而被加熱的這一面轉向背光面時,釋放的熱能會像是小小的火箭引擎一樣推動小行星。這個作用的推力非常小,但長期下來還是足以對質量很小的天體造成軌跡變化,也讓軌道預測多了很大的不確定性。

亞爾科夫斯基效應的動畫。影片/NASA

OSIRIS-REx 任務揭露貝努的神秘面紗,也讓軌道推估更精確

為了更深入了解貝努,NASA 在 2016 年發射 OSIRIS-REx 探測器探查這顆小行星。OSIRIS-REx 主要的任務包括從貝努表面採取樣本並送回地球分析、對整顆小行星做完整的調查,以及評估各種影響貝努運行軌道的因子,改善貝努軌道的預測模型,評估將來的撞擊風險。

在軌道分析方面,OSIRIS-REx 一方面能在環繞貝努的過程中緊盯貝努的「一舉一動」,讓天文學家透過精確的觀測結果反推貝努的軌道特性。另一方面,要評估亞爾科夫斯基效應對小行星軌道的影響,也需要考量小行星的地形地貌、反照率等等因素,因此 OSIRIS-REx 的各項觀測資料,也有助於建立更精確的軌道預測模型。

OSIRIS-REx 探測器。圖/University of Arizona/NASA Goddard Space Flight Center

目前 OSIRIS-REx 的任務還沒有結束,但是在取得更準確的軌道預測模型與撞擊風險評估上,已經有了初步的成果。根據這次任務提供的觀測資料,天文學家將預測貝努未來軌道的時間極限,從原本的西元 2200 年延長至 2300 年。而西元2300年之前,貝努撞上地球的機率大約是 0.057% (1/1750),最危險的一次接近則會發生在西元 2182 年

「知己知彼,百戰不殆」。面對像貝努這樣的危險鄰居,唯有盡可能認識它的一切,才越能夠掌握其未來的動向,進而在將來思考要如何面對小行星的撞擊的風險。另外,目前 OSIRIS-REx 也正在返航地球的旅途上,期待 2023 年 OSIRIS-REx 能順利的帶著貝努的樣本回到地球,帶給我們更多有關小行星的重要資訊!

參考資料

所有討論 1
EASY天文地科小站_96
5 篇文章 ・ 11 位粉絲
EASY 是由一群熱愛地科的學生於2017年創立的團隊,目前主要由研究生與大學生組成。我們透過創作圖文專欄、文章以及舉辦實體活動,分享天文、太空與地球科學的大小事
網站更新隱私權聲明
本網站使用 cookie 及其他相關技術分析以確保使用者獲得最佳體驗,通過我們的網站,您確認並同意本網站的隱私權政策更新,了解最新隱私權政策