使用快速啟動平台加速感測器與雲端的連接

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

感測器就像是物聯網 (IoT) 的感官,可提供分析和大數據應用所需的資訊,協助使用者做出最明智的決策。 目前已有眾多方式可連線多部無線感測器以便執行分析,但連線至雲端仍有困難。 在考量到空間、電力和成本,而且佈建與管理所有感測器時還需確保健全安全性,因此特別有挑戰性。

為了縮短開發週期,部分開發套件整合了感測器節點開發與雲端連線的功能。 開發人員可使用這些「立即可用」套件,快速地完成感測器功能設計並運作,如此一來,便無須考量如何將雲端服務整合至使用者體驗的架構決策,包括系統將會執行的動作,以及哪些動作會觸發裝置的特定功能。

本文將介紹 STMicroelectronics 的STM32 Nucleo 板與 X-NUCLEO 擴充板,這些產品整合了必要元件,可實作特定應用的專門功能。 此外,亦會說明如何使用 FP-CLD-BLUEMIX1 擴充軟體套件,透過幾個簡單步驟刷寫 Nucleo 感測器節點的快閃記憶體,並將 Nucleo 板連線至 IBM Watson IoT 雲端平台。1

Nucleo 平台與軟體

STM32 Nucleo 板為工程師提供了靈活的方式來測試新概念,並可運用 STMicroelectronics 的 STM32 微控制器打造原型。 該板具備在所有 Nucleo 板上皆通用的擴充排針座,因此可輕鬆加裝擴充模組。

Nucleo 板採用開放式生態系統,因此支援 Arduino,並且整合了 ST-LINK/V2-1 除錯器/編程器,因此無須使用單獨的探針。 此板隨附 STM32 軟體函式庫以及多種套裝軟體範例。

您可使用眾多不同的擴充板,包括 Arduino 在內。 採用 STMicroelectronics 的 Morpho 排針座的板件,可針對各種應用類型的擴充板提供可擴充性,包括 RF、工業以及家庭自動化擴充板應用。 此外還提供適用於 Bluetooth LE、Wi-Fi 和視聽應用的擴充板。

函式庫支援涵蓋了 STM32 的標準函式庫,並具有 ARM® 免費的線上 mbed 支援,此 IoT 裝置平台,提供作業系統、工具和開發人員生態系統,能讓設計人員評估並開始使用 Nucleo 板。

為了協助建構感測器至雲端的連線,STMicroelectronics 亦提供 FP-CLD-BLUEMIX1,此 IoT 節點擴充軟體套件可用於 STM32Cube 並在 STM32 微控制器上執行,可從 STMicroelectronics 網站取得。2 STM32Cube 的主要用途在於簡化應用開發流程。 為此,該軟體套件包含了 STM32CubeMX 和 STM32Cube 嵌入式軟體函式庫(圖 1)。

STMicroelectronics 的 FP-CLD-BLUEMIX1 完整中介軟體圖片

圖 1:FP-CLD-BLUEMIX1 提供完整的中介軟體,以建置基於 Wi-Fi 連線能力的應用程式,並將 STM32 Nucleo 板與雲端服務互相連結。 (圖片:STMicroelectronics)

STM32CubeMX 透過圖形化使用者介面,產生 STM32 MCU 的初始化 C 程式碼。 STM32MX 亦會產生 IDE 就緒專案、提供耗電量計算器,並可從 st.com 直接匯入 STM32Cube 嵌入式軟體函式庫。

每個 STM32 產品系列皆具有一個 STM32Cube 嵌入式軟體套件。 此嵌入式軟體函式庫包含適用於 STM32 周邊裝置的硬體抽象層 (HAL) 與低層 (LL) 應用程式設計介面 (API),以及一套以 STMicroelectronics 開發或開放原始碼元件為基礎的中介軟體(RTOS、USB、TCP/IP、圖形等)。 初始化程式碼、中介軟體元件、HAL 和 LL API 皆與所有 STM32 編譯器相容。

就其本身而言,FP-CLD-BLUEMIX1 套件提供了適用於 Wi-Fi、NFC 和感測器擴充板的板支援套件 (BSP),可擴充 STM32Cube。 其作用是啟用與 IBM Bluemix 雲端的連線來傳輸感測器資料,同時接收來自雲端應用的命令。 如此即可加速開始端對端 IoT 開發工作,讓您專注於差異化設計作業。

連接感測器

提供軟體介面以存取 Nucleo 板的溫濕度感測器 (HTS221)、壓力感測器 (LPS25HB)、動作感測器(LIS3MDLLSM6DS0),以及寫入和讀取 RFID/NFC 標籤。 X-NUCLEO-IKS01A1 整合了以上所有感測器(圖 2)。

STMicroelectronics 的 X-NUCLEO-IKS01A1 MEMS 與環境感測器評估板圖片

圖 2:X-NUCLEO-IKS01A1 是動作 MEMS 與環境感測器評估板系統。 (圖片:STMicroelectronics)

IKS01A1 與 Arduino UNO R3 連線器的佈局相容,並且以 STMicroelectronics 的 LSM6DS0 三軸加速計與三軸陀螺儀、LIS3MDL 三軸磁力計、HTS221 溫濕度感測器,以及 LPS25HB 壓力感測器為基礎進行設計。

IKS01A1 亦包含實作 MQ 遙測傳輸 (MQTT) 協定的中介軟體套件,以便促進 STM32 Nucleo 板與 IBM Bluemix 雲端服務之間的互動。 此軟體包含用於感測器資料視覺化,以及透過 IBM Bluemix 控制裝置的範例。

除了中介軟體堆疊外,也提供應用程式範例,可用於實驗 IBM Watson IoT 平台的連線。 此應用程式可用於建立端對端 IoT 應用程式的原型。 在 IBM Bluemix 雲端服務中註冊 STM32 Nucleo 微系統後,即可用該微系統傳輸即時感測器資料。 使用者亦可透過 NFC 動態標籤,自動開啟由 IBM 提供的試用網頁,並以視覺化方式查看 STM32 Nucleo 板上所有感測器產生的資料。

STMicroelectronics 移植了 MQTT 應用層級網路協定的開放原始碼實作,以便將 STM32 Nucleo 微系統與 IBM 的 Bluemix 雲端互連。 MQTT 是一種機器對機器 (M2M) 的 IoT 連線協定,特別適合在網路頻寬受限時,透過少量的程式碼來連接遠端裝置。 訊息傳遞協定輕量所以省電,因此非常適合嵌入式系統中的感測器資料遙測和實作。 在 FP-CLD-BLUEMIX1 中,MQTT 已整合至 STM32 套件作為中介軟體函式庫。

功能套裝中包含使用 X-NUCLEO-IKS01A1X-NUCLEO-IDW01M1XNUCLEO-NFC01A1 擴充板的應用程式範例,以及 NUCLEO-F401RE 板。 此應用程式會讀取來自溫度、濕度、壓力、加速計、磁力計和陀螺儀感測器的資料值,並透過 Wi-Fi 將這些值傳輸至 IBM Bluemix。

在預設情況下,此應用程式的配置會以快速啟動模式運作,且僅限用於資料視覺化。 不過,您可在 IBM Bluemix 中輕鬆修改應用程式以註冊和控制裝置(需要 IBM Bluemix 帳號)。

在 IBM Bluemix 中註冊

在 IBM Bluemix 雲端服務中註冊 STM32 Nucleo 微系統後,即可用於建立端對端 IoT 應用程式的原型,並開始傳輸即時感測器資料。

首先,請登入或建立 Bluemix 帳號(請參見「參考資料 1」中的完整說明)。 註冊時必須提供以下屬性和參數:

組織 ID(即「1w8a05」)。

裝置類型(即「stm32_nucleo」)。

UM2007 FP-CLD-BLUEMIX1 軟體描述

DocID028875 Rev 2 13/23

驗證方法(僅支援「use-token-auth」)

驗證 Token(即「uUURNRbeQQaX+Fvi&8」)。

將裝置屬性複製至來源程式碼檔案 IBM_Bluemix_Config.c 中的 Config_MQTT_IBM 函數。 該檔案位於 FP-CLD-BLUEMIX1 軟體套件中的 Projects/Multi/Applications/MQTT_IBM/Src 資料夾中。

隨後需要將 ibm_mode 變數設定為「REGISTERED」,如下所示(程式碼列表):

Void Config_MQTT_IBM (MQTT_vars * mqtt_ibm_setup , uint8_t  *macadd):

/* Default Configuration for QUICKSTART. REGISTERED mode requires account on Bluemix */

mqtt_ibm_setup->ibm_mode = REGISTERED

接著需要將 IBM Bluemix 提供的裝置屬性,複製至 IBM_Bluemix_Config.c 來源程式碼檔案中的 Config_MQTT_IBM 函數。 此檔案位於 Projects/Multi/Applications/MQTT_IBM/Src 資料夾中。

大概在程式碼下半部會顯示:

Copy

/* REGISTERED DEVICE */

/* Need to be customized */

The fourth through eighth line will look like this when completed:

strcpy ((char*)mqtt_ibm_setup->username,”use-token-auth); //customize

strcpy ((char*)mqtt_ibm_setup->password,” uUURNRbeQQax+Fvit&8”);

strcpy ((char*)mqtt_ibm_setup->hostname,”1w8a05.messaging.internetofthings.ibmcloud.com);

strcpy ((char*)mqtt_ibm_setup->device_type, “stm32_nucleo”);

strcpy ((char*)mqtt_ibm_setup->org_id, “1w8a05”);

程式碼列表:要求進行 IBM 裝置註冊並插入屬性。 完成註冊後,STM32 Nucleo 微系統即可向 IBM Watson IoT 應用傳送及接收資訊。 (資料來源:STMicroelectronics)

FP-CLD-BLUEMIX1 套件應用範例包含預設配置,可在 IBM Quickstart 網頁3上,依據裝置的 MAC 位址查看感測器資料。 URL 網頁亦寫入 NFC 標籤中。 STM32 Nucleo 板連結 Wi-Fi 存取點後,便可自動與 IBM Bluemix 互動並開始傳輸感測器資料。 Wi-Fi 擴充板的 MAC 位址與 IBM Quickstart URL,會列印於串列終端介面中。

若要查看即時感測器資料,您可複製 Quickstart URL 並貼到網頁瀏覽器。 若行動裝置支援 NFC,則只要將該裝置挪近 NFC 標籤,即可輕鬆開啟網頁。 在 Nucleo 連線至 IBM Bluemix 後,STM32 Nucleo 板上的綠色 LED2 指示燈就會發亮,如此即可以視覺方式查看連線狀態。 此指示燈在每次傳輸感測器資料樣本時就會閃爍。

FP-CLD-BLUEMIX1 套件本身具有 STM32 層。 其中包括一組簡易、通用的多例項 API,可與上層應用程式、函式庫和堆疊進行互動。 這些通用擴充 API 是以共同架構為基礎。 如此一來,以此為基礎建構的任何層級(例如中介軟體層),都無需特定 MCU 專屬的硬體資訊,即可發揮其功能。 此架構可增進函式庫程式碼的重複使用性,確保可在其他裝置之間輕鬆移植。

使用者可從套件的「Documentation」資料夾中取得詳細的技術資訊,其中詳載了 API 函數和參數(HTML 檔案)。

IBM 範例使用的主要 API 包括:

  • ·void Config_MQTT_IBM(MQTT_vars * mqtt_ibm_setup , uint8_t * macadd);此程式碼會依據 Wi-Fi 擴充板的 MAC 位址,設定與 IBM 雲端連線的 MQTT 參數。
  • int spwf_socket_create(Network* net, uint8_t * hostname, uint32_t port_number,uint8_t * protocol);此程式碼會依據主機名稱、埠號和協定類型(TCP 或 TLS),開啟一個插槽。 會回傳成功或失敗結果,以及網路架構中的插槽 ID。
  • ·void MQTTClient(Client* c, Network* network, unsigned intcommand_timeout_ms, unsigned char* buf, size_tbuf_size, unsigned char* readbuf, size_treadbuf_size);此程式碼會根據輸入參數設定「用戶端」架構。
  • int MQTTConnect(Client* c, MQTTPacket_connectData* options);此程式碼會根據用戶端和 MQTTPacket_connect 資料架構中的參數與 IBM MQTT 代理程式連線。 會回傳成功或失敗結果。
  • int MQTTSubscribe(Client* c, const char* topicFilter, enumQoSqos, messageHandlermessageHandler);此程式碼會訂閱資料架構用戶端中定義的 MQTT 主題。 會回傳成功或失敗結果。

結論

企業對於分析資料的需求日增,並且要簡化取得資料的方式,也因此凸顯出無線感測器與相關 MCU 連線至雲端的重要性。

本文探討了特定實作選項,並且說明一款近期發佈的硬體開發套件與相關軟體,如何輕鬆地將感測器連線至雲端。 使用者不僅可藉此監測目標的目前狀態和相關參數,亦可使用雲端服務來預測分析。

參考資料

  1. 探索 IBM Watson 物聯網
  2. 適用於 IoT 節點的 FP-CLD-BLUEMIX1 STM32 ODE 功能套件
  3. IBM Watson IoT 快速入門
DigiKey logo

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

關於出版者

DigiKey 北美編輯群