Ameba : Getting Started With Google Cloud IoT

簡介

Cloud IoT Core 提供全方位管理的整合式服務,可讓您以簡便安全的方式針對全球各地裝置的 IoT 資料進行大規模的連結、管理和擷取作業。 Cloud IoT Core, 結合 Google Cloud IoT platform 的其他服務, 就能夠即時蒐集、處理、分析或以視覺化方式呈現相關IoT資料來提高運營效率。

1

將裝置的遙測資料傳送至 Cloud Pub/Sub 主題來觸發 Cloud 應用功能。 也可以利用 Cloud Dataflow 進行串流分析或是訂閱者進行自訂分析。

下列圖表總結服務元件與資料流程:

1

Realtek 裝置- Ameba 已支援 Google Cloud IoT MQTT Protocol 來連接至 Cloud IoT 與發佈遙測資料。

設置 Google Cloud IoT Platform

  • 申請許可

設定 Google Cloud IoT 之前, 請確保帳戶已加入Cloud IoT Private Beta 白名單

至下列網址填寫申請表:
https://docs.google.com/forms/d/e/1FAIpQLSeMJDlXLRxEFC5b1xiG2WsUlZkcQQskpEO686GqASvslypljg/viewform?c=0&w=1

1

填完表格後送出

  • 準備事項

參考官方網站的引導文件或是下列的教學步驟做設定

Google Cloud IoT 文件 https://cloud.google.com/iot/docs/device_manager_guide?authuser=0

1. 選擇或是創建 Cloud Platform 專案

創建一個新的 Cloud Platform 專案或是選擇已在專案列表中的專案

1

1

Step1: 在 Cloud Platform 介面, 點選 "Project"
Step2: 在專案列表中, 選擇專案或是點選 Create project
Step3: 輸入Project name
Step4: 點選 Create
記住會在 Device Manager 與 Device 中被使用到的 project_id

2. 啟用計費

啟用計費來使用 Google Cloud Platform 功能

https://support.google.com/cloud/answer/6293499#enable-billing

3. 啟用 Cloud IoT Core API

在 Google Cloud Platform 註冊 Google Cloud IoT API 應用程式

1

選擇專案且點選 Continue

1

點選 Continue 來回到 DASHBOARD

4. 在 Cloud Platform 介面中新增 Cloud Pub/Sub 主題

新增 Cloud Pub/Sub 主題來使用 Pub/Sub 服務

Step 1: 點選 Cloud PUB/SUB 主題的頁面並且選擇 Enable API

1

Step 2: 建立主題

1

Step 3: 填寫主題名稱且點選 CREATE

記住在下面步驟會使用到的 topic name

Step 4: 在 Cloud Platform Console 中選擇主題且點選頁面上方的 PERMISSIONS 按鈕。 即可開啟在右方的 IAM permissions 編輯器。

1

Step 5: 新增成員 cloud-iot@system.gserviceaccount.com 的角色為 Pub/Sub Publisher。 接著點選 Add

1

  • 安裝 gcloud CLI

Google Cloud SDK 是一套 Cloud Platform 工具用來管理 Google Cloud Platform 中的資源與應用程式。在範例中我們用來註冊裝置。

1. 安裝 Google Cloud SDK

從下方連結下載與安裝最新的 Google Cloud SDK。

https://cloud.google.com/sdk/docs/

2. 更新 gcloud 元件:

$ gcloud components update

3. 安裝 beta 元件:

$ gcloud components install beta

如果是使用 Compute Engine VM,gcloud 的預設安裝是不會允許升級元件。 可以利用下列指令來重新安裝 gcloud:

$ sudo apt-get remove google-cloud-sdk
$ curl https://sdk.cloud.google.com | bash
$ exec -l $SHELL
$ gcloud init
  • 註冊裝置

執行 Ameba Google Cloud IoT 範例之前,你需要建立 public/private 金鑰與註冊處。

這些步驟都基於已經建立好一個叫做 my-iot-project 的專案與 projects/my-iot-project/topics/device-events 的 Cloud Pub/Sub 主題。 (可依需要替換自己的專案名稱和 Pub/Sub 主題)

1. 建立裝置註冊處

註冊處是裝置的集合。 所有裝置的遙測資料都會發佈至註冊處的 Cloud Pub/Sub 主題,並且使用 Cloud Pub/Sub attributes 來區分不同的裝置。

執行下列指令來創建一個註冊處:

$ gcloud beta iot registries create my-registry \
--project=YOUR_PROJECT_ID \
--region=us-central1 \
--pubsub-topic=projects/my-iot-project/topics/device-events

--project=YOUR_PROJECT_ID: 填入之前的 project_id
記住範例指令中的 registry_id 也就是 ‘my_registry’。

2. 建立 public/private 金鑰

這個步驟示範如何生成 RSA 金鑰

當連接至 Cloud IoT Core 時,每部裝置透過自己的私密金鑰來創建 JWT 使 Cloud IoT Core 利用裝置的公開金鑰來認證。

執行下列指令來使用 OpenSSL 生成 RSA 金鑰:

$ openssl req -x509 -newkey rsa:2048 -keyout rsa_private.pem -nodes -out \
rsa_cert.pem -subj "/CN=unused"

現在可以找到兩個檔案: rsa_private.pemrsa_cert.pem

3. 建立裝置

執行下列指令來使用 RSA 憑證新增 RS256 認證裝置:

$ gcloud beta iot devices create my-rs256-device \
--project=YOUR_PROJECT_ID \
--region=us-central1 \
--registry=my-registry \
--public-key path=rsa_cert.pem,type=rs256

--project=YOUR_PROJECT_ID: 填入之前的 project_id
記住範例指令中的 device_id 也就是 ‘my-rs256-device’。

4. 新增 Cloud Pub/Sub 訂閱

創建一個 Cloud Pub/Sub 訂閱來接收遙測資料事件:

$ gcloud beta pubsub subscriptions create \
projects/my-iot-project/subscriptions/my-subscription \
--topic device-events

記住範例指令中的subscription_id 也就是 ‘my-subscription’。

設定裝置

複製 4.0b_patch_google_cloud_iot_nonNDA_(v02)\* patch 檔案且取代至 standard SDK sdk-ameba-v4.0b_without_NDA_GCC_V1.0.0\*。確認所有的 patch 檔案皆已複製到 SDK

1. example_google_cloud_iot.c

檔案路徑為 $sdk\component\common\example\google_cloud_iot\example_google_cloud_iot.c。
請填寫下列裝置相關資訊。

#define project_id "your_project_id"
#define registry_id "your_registry_id"
#define device_id "your_device_id"
#define count 100
static const unsigned char *private_key = \””

project_idregistry_iddevice_id 在先前註冊裝置的步驟已經設定好。 count 是欲發佈遙測資料的數目。 private_key 則是 OpenSSL 所生成的內容 rsa_private.pem,並且記得 LINE ENDING

也可以修改欲發佈訊息 payload 中的內容。

驗證範例

  • 編譯

1. IAR

Ameba 同時支援 CMSIS-DAP debugger 與 J-Link

請參考 sdk-ameba-v4.0b_without_NDA_GCC_V1.0.0\doc\ UM0023 Realtek Ameba-1 build environment setup – iar.pdf 中的 UM0023 來設定 IAR 編譯環境。

步驟 1: 利用 micro-USB 連接板子至 PC。需要安裝 sdk-ameba-v4.0b_without_NDA_GCC_V1.0.0\tools\serial_to_usb\ mbedWinSerial_16466. 中的 “serial to USB driver” 。

1

步驟 2: 打開 IAR Workbench 與 project, 點選 File -> Open -> Workspace, 並且在 sdk-ameba-v4.0b_without_NDA_GCC_V1.0.0\project\realtek_ameba1_va0_example\EWARM-RELEASE 選擇 project.eww

1

步驟 3: 編譯專案並且點選 Project -> Rebuild All

1

步驟 4: 下載程式碼, 點選 Project -> Download -> Download active application

1

2. GCC

請參考 sdk-ameba-v4.0b_without_NDA_GCC_V1.0.0\doc\ UM0096 Realtek Ameba build environment setup - gcc.pdf 中的 UM0096 來設定 GCC 編譯環境。此說明如何在 Windows 與 Linux 平台中GCC 環境下編譯 SDK。

示範在 Windows 7 平台使用 Cygwin 來編譯

步驟 1: 利用 micro-USB 連接板子至 PC。需要安裝
sdk-ameba-v4.0b_without_NDA_GCC_V1.0.0\tools\serial_to_usb\ mbedWinSerial_16466. 中的 “serial to USB driver”。

1

步驟 2: 打開 Cygwin 終端機, 利用 cd 指令來更換目錄至 project\realtek_ameba1_va0_example\GCC-RELEASE

$ cd /cygdrive/SDK_LOCATION/project/realtek_ameba1_va0_example/GCC-RELEASE

1

步驟 3: 使用 make 指令來編譯 project

$ make

如果終端機出現輸出訊息 “Image manipulating”, 表示images
成功被編譯。

1

步驟 4: 下載程式碼並且複製 project\realtek_ameba1_va0_example\GCC-RELEASE\application\Debug\bin 中的 image 檔案ram_all.binMBED

1

  • 啟動裝置

利用 AT 指令連接至 Wi-Fi:

ATW0 Network set SSID
ATW1 Network set passphrase
ATW2 Network set Key ID
ATWC Join a network

假設欲連接至 WPA2 模式之 AP,則下列為指令範例:

#ATW0=SSID
#ATW1=passphrase
#ATWC

1

當 Wi-Fi 連結成功後,範例就會開始:

1

  • 驗證

一旦 MQTT client 傳送資料給 endpoint,Google Cloud SDK 執行下列的指令來讀取 Cloud Pub/Sub 主題中的資料:

$ gcloud beta pubsub subscriptions pull --auto-ack \
projects/my-iot-project/subscriptions/my-subscription

1