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