利用 Electric Imp 平台快速開始進行 IoT 產品開發

作者:Jacob Beningo

資料提供者:DigiKey 北美編輯群

設計網際網路連線的產品需要具備多種技能。開發人員必須知道如何撰寫嵌入式軟體、打造電路板、瞭解如何確保裝置安全並且連接網路,以便遠端更新與管理裝置。

針對單一 IoT 產品構建專業知識與基礎架構,不僅具有挑戰性、耗時且成本高昂。開發團隊需找到方法快速開始開發,並且在典型設計週期內減少所需作業,以便符合成本和上市時間的要求。

目前有越來越多不同的 IoT 平台陸續推出,其中特別引人注目的是 Electric Imp 推出的產品,其中整合了必要的軟硬體,能讓開發人員快速備妥並進行開發。

本文將介紹 Electric Imp 的 IoT 平台,並概述使用方法。

Electric Imp 的 IoT 平台內涵

Electric Imp 的 IoT 物聯網平台能為開發人員提供完整的解決方案,以便連接與管理物聯網裝置。此平台含有開發團隊所需的所有建構模塊,藉此快速備妥產品並運行。這些建構模塊包括:

  • 全整合式硬體
  • 嵌入式作業系統
  • 驅動程式
  • API
  • 雲端服務
  • 程式碼庫
  • 安全解決方案

若要開始,開發人員將感測器與自行研發的硬體連接到 Electric Imp 無線電模組,其中不僅含有自訂軟體,更提供 ImpOS,可管理連接到 Imp Cloud 的安全連線 (圖 1)。最終使用者與開發人員都能在行動裝置上使用稱為 BlinkUp 的應用程式,為產品或開發平台提供 Wi-Fi 設定。當 Imp 硬體取得 Wi-Fi 資訊後,就可直接並安全地與 Imp Cloud 通訊,並藉此連接廣大的網際網路。

Electric Imp 平台的圖片

圖 1:Electric Imp 平台具有經過實證的全整合式軟硬體、作業系統、API、雲端服務以及安全性,能讓 IoT 裝置快速連線到雲端。(圖片來源:Electric Imp)

使用 Electric Imp 等平台,能讓開發人員享有多項優勢,包括:

  • 大幅縮短上市時間
  • 專注於公司的核心專業,無需分心處理網際網路連線
  • 更高的產品價值與差異化
  • 無需構建連線基礎架構與專業知識

Electric Imp 硬體

Electric Imp 的硬體為開發人員提供一套標準硬體,包括:

  • 802.11 b/g/n 或 a/b/g/n Wi-Fi 收發器
  • 32 位元 ARM® Cortex® 處理器
  • 完備的嵌入式作業系統,含自動防故障韌體更新
  • 使用者可選擇 I/O 選項,例如 GPIO、PWM 和類比輸入等
  • 可透過 SPI、UART 和 I2C 進行通訊

模組由 Murata Electronics 製造。對設計人員來說,最主要的差異在於內部處理器、Wi-Fi 連線選項以及封裝。例如 imp005 (LBWA1UZ1GC-901) 採用 320 MHz ARM Cortex-R4 架構處理器,並可在 2.45 GHz 與 5 GHz 頻段下運作。另一方面,imp003 (LBWA1ZV1CD-716) 則採用 144 MHz ARM Cortex-M4F 架構處理器,但僅可在 2.45 GHz 頻段下運作。兩者皆採用表面黏著封裝 (圖 2)。

Electric Imp 的 imp005 (左) 與 imp003 (右) 圖片

圖 2:imp005 (左) 與 imp003 (右) 模組整合了 Wi-Fi 模組與 ARM Cortex 微控制器,將裝置覆蓋區縮減至最小。(圖片來源:Murata Electronics)

若是沒有分接板,表面黏著的型態會難以取用某些元件。imp003 擁有自己的簡單分接板 IMP003-BREAKOUT,其中含有一個 USB 介面 (能讓開發人員為裝置供電)、光電電晶體 (透過 Electric Imp 獨特的 BlinkUp 方法將 Wi-Fi 設定寫入模組),以及一些其他的支援元件 (圖 3)。

Murata 的 imp003 分接模組圖片

圖 3:imp003 分接模組是低引腳數的開發板,能讓開發人員快速熟悉並使用 Electric Imp 的硬體,最後再應用到最終產品上。(圖片來源:Murata Electronics)

imp005 分接板則較為複雜,因為 imp005 模組擁有更多的引腳,並且採用了更強大的 ARM Cortex-R4 處理器 (圖 4)。imp005 分接板還包含乙太網路、標準 USB 介面 (為裝置供電並連接到主機),以及光電電晶體。

Murata Electronics 的 imp005 分接模組圖片

圖 4:imp005 分接模組能讓開發人員取用更強大的 imp005,其中包含 ARM Cortex-R4 微控制器,以及進階連接選項,例如 USB 和乙太網路。(圖片來源:Murata Electronics)

使用 BlinkUp 設定 Electric Imp

每個 IoT 裝置都會遭遇的問題就是,該如何為裝置設定本地 Wi-Fi 路由器的資訊。Electric Imp 運用獨特方法解決此問題:採用光電電晶體將 SSID 與密碼資訊寫入裝置。

平台與最終產品的使用者可將 Electric Imp 的 BlinkUp 應用程式下載到行動裝置中,然後將網路資訊編程到應用程式內。收到提示後,使用者即可將行動裝置放置在光電電晶體上。行動裝置的螢幕會閃爍一系列指令,對 Electric Imp 的硬體進行編程 (圖 5)。編程完成後,就可開始進行開發。

警告!在編程網路資訊時,請勿直視行動裝置的螢幕。否則可能會導致嚴重頭痛甚至癲癇發作。

Electric Imp 的 BlinkUp 應用程式圖片

圖 5:BlinkUp 應用程式能讓開發人員或使用者輸入 Wi-Fi SSID 與密碼,並透過行動裝置對光電電晶體進行一連串閃爍,藉此輕易將資訊傳送到 Electric Imp 模組。如此一來,就無需藍牙或 USB 等額外的連線。(圖片來源:Electric Imp)

開發人員將 Electric Imp 模組連線到網際網路後,模組會在 Imp Cloud 中註冊一個唯一識別碼。亦可在 BlinkUp 應用程式中找到此識別碼。此唯一識別碼可用來辨識模組,並將其連接到線上開發環境。此識別碼亦可用來將軔體更新推送至產品,並且管理裝置。登入開發環境,模組便能連線至雲端並建立新的應用程式 (又稱之為「模型」),然後將模組識別碼與此模型連結 (圖 6)。

模組透過雲端連線至 Electric Imp 軟體模型示意圖

圖 6:只要查看可用的 Imp 模組列表,然後將現有的軟體模型或新的模型指定到裝置,便能透過雲端將模組連線到軟體模型。(圖片來源:Electric Imp)

模型建立後,開發人員即可存取線上開發環境。如此即可編寫 Electric Imp 模組用的軟體,以及可在雲端執行的程式碼,以便與模組進行通訊。伺服器與模組的應用程式程式碼,是使用稱為 Squirrel 的指令碼語言進行撰寫。Squirrel 的標註方式類似於 C 程式語言,因此對多數嵌入式開發人員來說,可輕鬆轉換。

開發環境區分為三個主要的區塊。首先是伺服器端程式碼,又稱為代理程式碼。再來是裝置程式碼,能夠在指令碼編譯完成後部署至模組,並且透過 Imp Cloud 進行管理。第三個區塊是記錄,能用來監測代理程式與裝置的行為並且用於除錯。

Electric Imp 開發環境示意圖

圖 7:Electric Imp 開發環境是全整合式環境,能讓開發人員在單一畫面當中,同時操作裝置軔體與雲端軟體。(圖片來源:Electric Imp)

使用 Blinky LED 程式來顯示「Hello World」

在 Electric Imp 模組上能以直覺方式開始開發應用程式並運作。能透過高階擷取,將物件指派到硬體功能。如此就能將 Imp 模組與底層的微控制器轉變成「黑盒子」。

開發人員的第一個步驟,要不就是透過終端機顯示「Hello World」,不然就是讓 LED 燈閃爍。我們來看看讓 LED 燈閃爍的必要程式碼。

首先,開發人員必須登入開發環境,並且建立「Hello World」或「Blinky」模型,並將其指派到目標模組。就像任何其他應用程式一樣,開發人員會指派並設定引腳和變數。在此案例中,若 LED 連接到引腳 5,開發人員可以撰寫程式碼來設定 LED,然後建立建立狀態變數 (列表 1)。

// 建立稱為「led」的全域變數,然後將「pin」物件指定至此變數。

led <- hardware.pin5;

// 將「led」設定為起始值為數字 0 的數位輸出 (低、0 V)

led.configure(DIGITAL_OUT, 0);

// 建立一個全域變數來儲存「led」目前的狀態

state <- 0;

列表 1:運用既有的函式庫以及 Squirrel 指令碼語言編寫 Electric Imp 模組用的軟體相當容易。此指令碼會設定 LED,並且建立狀態變數。(程式碼來源:Electric Imp)

然後就可撰寫簡易的應用程式功能,讓 LED 閃爍 (列表 2)。

function blink()

{   

  // 反轉狀態值:   

  // 當狀態 = 1,1-1 = 0   

  // 當狀態 = 0,1-0 = 1   

  state = 1 - state;     

  // 將目前的狀態寫入「led」(即引腳 9)   

  led.write(state);   

  // 對 imp 進行排程,在 0.5 秒內喚醒,然後再次呼叫 blink()        

  imp.wakeup(0.5, blink);

}

列表 2:LED 閃爍或硬體控制是透過一組函式庫達成,可藉此簡化開發作業,並可大幅縮短開發時間。在此範例中,會使用簡易功能來存取 LED 資源,並透過 ImpOS,讓功能延遲 500 毫秒執行 (程式碼來源:Electric Imp)

這是這樣!以上就是在硬體上設定 LED 燈,並使其閃爍的所有必要 Squirrel 程式碼。LED 程式碼的編寫長度不用十行,而且開發人員無需瞭解任何 ARM 核心的暫存器。可輕鬆存取高階 API,讓開發人員迅速上手。

將外部感測器整合到 Electric Imp 模型

將外部感測器與元件整合到 Electric Imp 平台中也相當簡單。此平台能讓開發人員使用 #require 指令來收錄已開發的函式庫,類似於在 C 程式語言中所使用的 #include 指令。目前已經開發多種函式庫,隨時能讓開發人員立即使用。這些函式庫包括:

  • 網路服務
  • 公用程式
  • 硬體驅動程式

產品開發人員能將繼電器、加速計以及磁力計等元件介接至 Electric Imp 模組,然後使用針對這些元件撰寫的函式庫,快速開始進行設計。這些函式庫可從 Electric Imp 開發中心網站取得。

Electric Imp 多種函式庫的圖片

圖 8:Electric Imp 提供多種函式庫,您可在開始進行開發時立即取用。這些函式庫能加速開發時間,並讓您取用熱門的硬體裝置與軟體服務。(圖片來源:Electric Imp)

使用 Electric Imp 物聯網平台的秘訣和技巧

在使用 Electric Imp 等平台時,開發團隊需要考量一些事項。首先,Electric Imp 模組在單一封裝內整合了兩大元件:Wi-Fi 無線電以及微控制器。透過整合就能節省成本以及板空間。接著,開發人員在選擇產品要用的元件時,應該檢視既有的硬體與驅動程式函式庫。利用現成的函式庫有助於加速開發週期。

最後,開發人員務必記得,Electric Imp 平台不會直接連線到網際網路。所有的通訊都會先透過與 Imp Cloud 的安全連線進行。接著再使用代理程式,將訊息導向到更龐大的網路。此外,還提供像是資料儲存與分析等第三方服務的函式庫,能讓開發人員在雲端使用。請盡可能利用函式庫當中現成的程式碼。

結論

若是設計人員採用現有的技術,並且運用物聯網平台,便能相當快速地開發物聯網裝置。利用目前市面上眾多的平台之一,就可協助開發人員專注在專業技術,讓其他公司處理基礎架構事宜。誠如之前所述,Electric Imp 的物聯網平台是引人注目且獨特的解決方案,值得進一步研究。

 
DigiKey logo

聲明:各作者及/或論壇參與者於本網站所發表之意見、理念和觀點,概不反映 DigiKey 的意見、理念和觀點,亦非 DigiKey 的正式原則。

關於作者

Image of Jacob Beningo

Jacob Beningo

Jacob Beningo 是嵌入式軟體顧問,目前與超過十幾個國家的客戶合作,透過產品品質、成本和上市時間的改善,促成業務的大幅轉型。他曾在嵌入式軟體開發技術上發表超過兩百篇文章,是深思熟慮的講師和技術培訓師,共擁有三個學位,包括密西根大學的工程碩士學位。歡迎透過以下方法洽詢,電郵:[email protected]、網站:www.beningo.com,亦可登記取得他發行的Embedded Bytes 每月電子報

關於出版者

DigiKey 北美編輯群