ARM mbed IoT 開發入門 (Part 1) - Hello World

這個系列的教學,將會帶領初學者將 ARM mbed 開發板連接網路,並建立 Web App Frontend。過程不需要註冊或使用 IoT 雲端平台,當然,未來也不需要負擔任何費用。

本系列教學使用由 Seeed Studio 設計與生產的 Arch Pro 開發板與 Grove Starter Kit 套件;可以經由官網購買,台灣用戶亦可向 Makee.io 購買。 

ARM mbed 開發環境

ARM mbed 使用 online compiler 開發環境,原則上只要使用瀏覽器即可立即開發。不過 mbed 也能支援 GCC 或 Eclipse 的離線開發環境,這部份可參考 mbed 官方網站上的說明:

http://developer.mbed.org/cookbook/Using-mbed-with-gcc-and-eclipse  

ARM mbed 的 online compiler 具備 Git 版本管理的功能,還能線上匯入外部程式庫(Class Libraries),還可以分享自己的程式碼。首次接觸 ARM mbed 的開發者,仍建議先以 online compiler 為主。以下說明 ARM mbed 的 online compiler 使用方式。

將 Arch Pro 與電腦連接後,至 mbed.org 申請一個開發者帳號後,進入 online compiler 的 Workspace 環境,如圖 1.1。 圖 1.1:mbed 的 Workspace 圖 1.1:mbed 的 Workspace 依照以下步驟建立第一個 "Hello, World":

  1. 在 workspace 裡點選 New -> New Program
  2. Platform 選取 mbed LPC1786
  3. Template 選取 Blinky LED Hello World
  4. Program Name 填寫自訂名稱
  5. OK

Arch Pro 與 LPC1768 開發板相容,因此步驟 2 請選取 mbed LPC1786。
圖 1.2:New Program 圖 1.2:New Program

mbed 提供許多 Program 與 Library 範本,這裡使用的是一個 LED(發光二極體,Light-Emitting Diode)閃爍的程式碼範本。接著進行編譯與 firmware 更新:

  1. 在 workspace 裡點選 Compile -> Compile All
  2. 編譯成功後,會自動下載一個副檔名為 .bin 的 firmware
  3. 將下載回來的 firmware 拷貝到 Arch Pro 開發板

使用 Mac 環境的開發者,使用 USB 線將 Arch Pro 連接到電腦後,會看到 MBED/ 資料夾,再將下載回來 firmware 檔案拉到此資料夾裡即可,如圖 1.3。

  1. 拔除並重接 USB 線,讓 Arch Pro 重新關機。
  2. 完成。可以看到 Arch Pro 的 LED1 開始閃爍。

圖 1.3:Drag and Drop 更新 firmware

圖 1.3:Drag and Drop 更新 firmware

Arch Pro 開發板有大量的 GPIO,可外接各種感測裝置,這部份請參考 mbed Taiwan 所編寫的教材。學會使用 mbed 的 online compiler 後,可以使用一個基本的 GPIO 控制程式當做「Hello World」。以下是一個控制 Arch Pro LED 燈號的範例:

#include "mbed.h"

DigitalOut myled1(LED1);  
DigitalOut myled2(LED2);  
DigitalOut myled3(LED3);  
DigitalOut myled4(LED4);

unsigned int mask = 0x1;

int main() {  
    wait(0.8);

    while(1) {    
        myled1 = mask & 0x1;
        myled2 = mask & 0x2;
        myled3 = mask & 0x4;
        myled4 = mask & 0x8;

        wait(0.2);

        mask = mask << 1;

        if (mask & 0x10) 
            mask = 0x1;
    }
}

本範例程式已發佈在 mbed.org 上:

http://developer.mbed.org/users/mbedschool/code/mbed_led_run/  

請練習使用 online compiler 的匯入功能,將本範例直接匯入使用,並安裝至 Arch Pro 開發板進行測試。

ARM mbed Networking

mbed 官方提供二個 Ethernet 有關的 Class Library:

  • EthernetInterface
  • WiflyInterface

EthernetInterface 支援 Cable 乙太網路連線,WiflyInterface 則是支援 WiFi 乙太網路連線。以下分別說明其用法。

Step 1:匯入 EthernetInterface

首先,建立一個新的 mbed 專案,再使用 Import Wizard 匯入 mbed 官方的 EthernetInface Library;如圖 1.4。

圖 1.4:New Program

圖 1.4:匯入 EthernetInterface

Step 2:實例化 EthernetInterface

引入標頭檔:

#include "EthernetInterface.h"

然後實例化 EthernetInterface

int main()  
{
     ...   
    // Ethernet Interface
    EthernetInterface eth;
    ...
}

Step 3:設定網路組態

可以自行指定 IP 位址、Network 與 Gateway IP:

int main()  
{
     ...   
    // Ethernet Interface
    EthernetInterface eth;
    ...
    eth.init("192.168.2.1", "255.255.255.0", "192.168.2.254");
    eth.connect();
}

要改用 DHCP 的組態方式,也是非常簡單的:

int main()  
{
     ...   
    // Ethernet Interface
    EthernetInterface eth;
    ...
    eth.init("192.168.2.1", "255.255.255.0", "192.168.2.254");
    eth.connect();
}

Step 4:測試網路連線

如何測試 Arch Pro 是否成功連上網路?一個最簡單的方式,就是透過 LED 燈號來指示:

// Ethernet Status
DigitalOut led1(LED1);

int main()  
{
    // init status
    led1 = 1;
     ...   
    // Ethernet Interface
    EthernetInterface eth;
    ...
    eth.init("192.168.2.1", "255.255.255.0", "192.168.2.254");
    eth.connect();
    led1 = 0;
}

如果 eth.connect() 成功,LED1 就會被燈亮。

Step 5:更新 Firmware

延續 Step 4,點撃選單 Save 選項後,再點選 Compile。編譯成功後,瀏覽器會自動下載 firmware 檔案(*.bin)。

將 Arch Pro 與電腦連接後,會看到 MBED/ 資料夾。請注意,Arch Pro 有二個 Mini USB Port,更新 firmware 時,請連接至 Debug Port。

接著將新的 firmware 檔案拉到此資料裡即可,如圖 1.5。更新完成後,請拔除並重新連接 USB,讓 Arch Pro 重新關機。

圖 1.5:Drag and Drop 更新 firmware

圖 1.5:Drag and Drop 更新 firmware

其它