動手玩 Windows for IoT - (1) 在 Intel Galileo 開發板上執行 Windows 以及第一個 IoT 程式

在 //Build/ 2014 的 Keynote 上,微軟宣佈了將會有 Windows for IoT (Internet-of-Things) 的計劃,這個計劃的相關內容都放在 https://windowsondevices.com 這個網頁中,相關專案也都會在 GitHub 上的 https://github.com/ms-iot 這個帳號下。

而在目前公開的成果中,首先支援的開發板是 Intel Galileo(一、二代都可以),由於這個開發板相容 Arduino,而且微軟也基於這個 Windows for IoT 出了一個 Galileo C++ SDK 也是相容 Arduino 的開發環境,所以完全可以利用現有 Arduino 生態系的資源,對於熟悉使用 Visual Studio 的開發人員來說,開發這類 IoT 的應用也更加方便了。

準備環境

要開始在 Intel Galileo 上玩 Windows IoT,就要做一些準備,以下分為要裝備的硬體及軟體。

準備硬體

這裡要準備最基本的硬體包含了:

  1. Intel Galileo 開發板(Gen 1 or Gen 2 都可)
  2. AC/DC 變壓器(12V/1.5A, 開發板內附)
  3. RJ-45 網路線
  4. micro SD 卡(最大 SDHC 32GB)

當然如果有想要連接的電子元件可以自行準備。

註冊 Windows IoT 開發計劃

要下載相關軟體之前,必須先加入 Windows IoT 的開發計劃,這部份很簡單而且完全免費,只要到這頁上註冊即可。

填寫好表單註冊之後,等到收到信之後便能存取這個計劃的 Microsoft Connect 網站,以下載需要的各種軟體。

準備 Galileo 的開機軟體

首先要弄來一張 micro SD 卡(最高支援到 SDHC 的 32GB),然後寫入可以在 Galileo 上開機的 Windows 作業系統:

  1. 在 Windows IoT 的 Microsoft Connect 網站上下載燒錄映像檔的程式以及作業系統映像檔,並且將這兩個檔案放在同一個目錄下(如:D:\Downloads)。

  2. 將 micro SD 卡插入電腦,將檔案系統格式化成 FAT32

  3. 以系統管理員身份執行命令列提示字元。

  4. 在命令提示字元下執行下列指令將作業系統映像檔寫入 micro SD 卡中,其中也設定了用這個 micro SD 卡開機的主機名稱是 mygalileo,而密碼是 admin(可自行變換)。

     D:\Downloads> apply-bootmedia.cmd -destination e:\ 
      -image 9600.16384.x86fre.winblue_rtm_iotbuild.141114-1440_galileo_v2.wim 
      -hostname mygalileo -password admin
    

這些都順利完成後,就準備好了可以開機的 Windows for IoT 的記憶卡了。

準備開發的電腦環境

只要安裝了 Windows for IoT SDK 後,就可以在 Visual Studio 中開發程式並部署到 Galileo 開發板上。

  1. 在 Windows IoT 的 Microsoft Connect 網站上下載 SDK 並安裝,目前僅支援 Visual Studio 2013(Community、Professional、Premium 或 Ultimate 版本)。

  2. 安裝好之後 Visual Studio 就有 Windows for IoT 的專案範本,以及相關的 API 函式庫。

接著開啟 Windows 的 Telnet 用戶端程式,以便能夠連接到開發板上進行一些操作,這只要開啟 [控制台] -> [解除安裝或變更程式] -> [開啟或關閉 Windows 功能] 將 Telnet 用戶端勾選起來。

開啟 Telnet 用戶端

全部一起來

如果準備工作都做完了,那接下來就可以把全部的東西兜起來,將 micro SD 卡插入 Intel Galileo,一邊將網路線接上開發機器,另一頭也接上電源,這時候 Intel Galileo 就會開始開機了,大概就像這樣:

插好準備好的 Windows 映像檔記憶卡,同時網路線與開發的電腦對接,再接上電源開機。接著,開啟 Windows IoT SDK 內附的 Galileo Watcher 應用程式,用它來找到 Galileo 的 IP 位址,以便我們能連接它做事。

確定 Galileo Watcher 找到開發板之後,可以在命令提示字元中使輸入 telnet mygalileo 來連接上開發板上的 Windows 作業系統,登入的使用者名稱是 Administrator,而密碼就是在製作映像檔時輸入的。

Login Galileo

如果看到登入成功的畫面,就代表你已經準備好可以來寫 IoT 的應用程式了,而若要將 Galileo 關機,就輸入下列指令來關機,在 Galileo 的燈號都熄滅後就可以拔電源了。

 shutdown /s /t 0

第一個 IoT 應用程式 - 讓 LED 燈閃爍

一般我們寫程式為了測試環境,很多人習慣會寫一行印出 "Hello, world" 字串的程式來確認開發與執行的環境沒問題,在這裡,我們試著可以接上一個 LED 燈,然後用程式去控制它,以確認我們可以後續開發很酷的應用。

開啟 Visual Studio 2013,如果已經安裝了 Windows IoT SDK 的話,在 Visual C++ 的分類下可以看到 Galileo C++ 的專案範本,建立一個專案,然後在 Main.cpp 裡放入這樣的程式碼:

 #include "stdafx.h"
#include "arduino.h"

int _tmain(int argc, _TCHAR* argv[])
{
  return RunArduinoSketch();
}

int led = 13;  // This is the pin the LED is attached to.

void setup()
{
  pinMode(led, OUTPUT); // Configure the pin for OUTPUT so you can turn on the LED.
}

// the loop routine runs over and over again forever:
void loop()
{
  digitalWrite(led, LOW);    // turn the LED off by making the voltage LOW
  Log(L"LED OFF\n");
  delay(1000);               // wait for a second
  digitalWrite(led, HIGH);    // turn the LED on by making the voltage HIGH
  Log(L"LED ON\n");
  delay(1000);               // wait for a second
}

然後記得將 LED 燈一端接在 GPIO 的 port 13(根據程式碼)、一端接地(GND)。

接下來執行程式,便會開始將這段程式碼編譯好,透過網路遠端部署到 Galileo 板子上執行(過程中會輸入登入 Galileo 的帳號密碼),順利的話,就會讓連接的 LED 燈閃爍,完成第一個 Windows for IoT 的應用程式。