文章類型
開發平台
解決方案
關注主題
文章類型
開發平台
解決方案
關注主題

LinkIt ONE用Wi-Fi連上Internet基本功

作者:陸向陽

 

LinkIt ONE外接天線

LinkIt ONE外接天線

LinkIt ONE有多種通訊能力,包含GSM/GPRS、Bluetooth Classic/Smart、Wi-Fi、GPS等,但其中要連上Internet,現有版本的LinkIt ONE,大體只能倚仗Wi-Fi。

為何如此說?筆者逐一向各位說明。

上網就得靠Wi-Fi

其實用GPRS也是可以連上Internet,但是要佔用一張SIM卡,而且上行、下行的速率較Wi-Fi慢,除非是遠距離通訊,或很少傳訊、傳訊週期時間很長,以及只傳很短的訊息,否則不建議使用。

而且,GPRS屬於2.5G世代的通訊(僅比GSM高速些,但沒有2.75G的EDGE快速,但台灣沒有導入EDGE),台灣與全球都在從3G提升到4G,2G頻譜資源正在回收中,或許新的4G布建仍可能相容GPRS通訊,但整體而言續用GPRS通訊並不樂觀。

那GPS呢?GPS只能從衛星接收不能發送到衛星,不是雙向通訊,不能上Internet。

那Bluetooth(藍牙,簡稱BT)呢?Bluetooth 1.0~3.0屬於Bluetooth Classic,也是不連Internet,但Bluetooth 4.0版開始支援穿戴式電子所需的低能源(Bluetooth Low Energy,簡稱BLE),4.1版開始支援Mesh網路與IPv6,就能上Internet,4.0版後也稱為Bluetooth Smart。

但是,LinkIt ONE的韌體尚未支援BT 4.1(2015年7月為止),所以也不能用Bluetooth Smart連上Internet,即便能連上,速率一樣較Wi-Fi慢。

BT 4.2提升了BLE的傳輸率,安全性也加高,且可以完全以韌體更新方式自4.1升級到4.2,但這手法更新穎,若以入門、保守、穩健角度考量,初期仍不建議。但若用BT連手機或其他藍牙週邊(如藍牙喇叭)倒很合宜。

所以,本文依然以Wi-Fi為主來說明,如何讓LinkIt ONE連上Internet,若LinkIt ONE不連上Internet,則聯發科的雲端沙盒(MediaTek Cloud Sandbox,簡稱MCS)就無法使用,這個配套對應的雲端實驗性服務不用,就有些可惜了。當然,一旦能連上Internet,LinkIt ONE也不限連上MCS,到哪都行。

Wi-Fi連網實務程序

Step 1

硬體上要替LinkIt ONE接上Wi-Fi天線,LinkIt ONE的設計是Wi-Fi、Bluetooth共用同一組天線。

Step 2

接下來都是軟體(程式開發撰寫)動作,要讓LinkIt ONE連上Internet,不能用Arduino原有的Wi-Fi函式庫,要改用LinkIt ONE專屬的LWiFi函式庫(L字母開頭),另外我們要讓LinkIt ONE扮演一個Wi-Fi Client(Wi-Fi終端裝置)來用,所以在程式一起頭,要將兩個頭檔含括進來:

#include <LWiFi.h>

#include <LWiFiClient.h>

事實上LinkIt ONE函式庫中也有LWiFiServer(或稱LTcpServer,指TCP/IP傳輸協定的伺服器),即是讓LinkIt ONE扮演居家Wi-Fi路由器的角色,但LinkIt ONE在軟硬體方面,現階段都比較不適合扮演Wi-Fi伺服器,一是居家Wi-Fi路由器功能都很強大,且普遍,不太需要LinkIt ONE來擔任,二是Arduino Yun搭配OpenWRT等可能更合宜一點。

Step 3

接著要事先定義好要連上的SSID與密碼,分別為如下的xxxx與yyyy:

#define WI-FI_AP “xxxx”

#define WI-FI_PWD “yyyy”

當然,若你要連上的Wi-Fi AP(Access Point,無線存取點、接取點)不用密碼,也就不用定義密碼。

Step 4

再來,要從三種連線方式中選一種,分別是:

  1. LWiFi.connect()
  2. LWiFi.connectWEP()
  3. LWiFi.connectWPA()

如果不用密碼就能連上就使用第一種,若Wi-Fi AP使用的是WEP加密法,就選擇第二種,但WEP加密是比較早期的加密法,是在WPA(泛指WPA與WPA2)標準未訂立前的權宜加密法,且安全防護性較弱,一般多已捨棄不用。多數情況,我們用的是第三種,而語法如下:

LWiFi.connectWPA(WI-FI_AP, WI-FI_PWD);

上述參數(指SSID名稱、密碼等)正確後就能連上Wi-Fi。當然,有企業或機構採行更繁複、嚴謹的連線登入、驗證程序,但LinkIt ONE目前以家庭應用為先,目前暫不支援(大陸叫:支持)進階連線方式。

Step 5

說是已連上線,但若要穩健點,可再用一段程式來查核確認是否真的連上線,我們用串列監督器的文字回應來了解是否連線成功,範例程式碼如下:


Serial.begin(9600);      // 啟用串列埠,並把鮑率設為9600bps

Serial.printlin();    // 先來一行空白列

Serial.print(“Connecting to AP…");      // 顯示訊息「與AP連線中…」

if(LWiFi.connectWPA(WIFI_AP, WIFI_PWD) < 0)      // 研判函式回返值

{

Serial.println(“Fail!"); // 回返值為False,顯示連線失敗

return;

}

Serial.println(“OK"); // 回返值為True,連線成功


以上就是最基本的LinkIt ONE用Wi-Fi連線法。

陸向陽

陸向陽

從電子科系畢業後,即以媒體人的角色繼續這段與「電子科技」的不解之緣。歷任電子技術專書作者、電子媒體記者、分析師等角色,並持續寫作不殆。近來投入Arduino、Raspberry Pi等開放硬體的研究與教程介紹。
陸向陽

上一篇: | 下一篇:

我想回應

你的電子郵件位址並不會被公開。 必要欄位標記為 *

成城共創股份有限公司版權所有、轉載必究.Copyright(c) 2017 MakerPRO