65.9K
CodeProject 正在变化。 阅读更多。
Home

Microsoft Azure + TI CC3200 LaunchPad 端到端物联网概念验证

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.83/5 (4投票s)

2015 年 3 月 26 日

CPOL

7分钟阅读

viewsIcon

36185

一个利用微软 Azure 云技术和嵌入式设备(德州仪器 CC3200 LaunchPad,单芯片 Wi-Fi MCU)的端到端物联网系统。

引言

本示例提供了利用微软 Azure 云技术和嵌入式设备(德州仪器 CC3200 LaunchPad,单芯片 Wi-Fi MCU)开发端到端物联网系统所需的一切。

其中包括了典型的遥测传感器场景中会用到的所有组件。例如,用于机器健康监测的无线传感器网络。

该架构支持超大规模数据摄取系统(每秒数百万条消息),同时提供近乎实时的流分析和机器学习功能。

网站: http://ssmlwf.azurewebsites.net/

代码: https://github.com/remixed123/IoT

原始设置说明: https://github.com/remixed123/IoT/wiki (或下方)

架构

IoT Architecture

图 1:解决方案架构
颜色代码: 蓝色 - 包含代码和步骤。橙色 - 仅示例或架构。灰色 - 外部组件

上面的图片概述了端到端物联网概念验证的解决方案架构。在这个分步示例中,还有一些部分尚未详细说明,但从 CC3200 LaunchPad 到事件中心,再到流分析,数据存储在 SQL 数据库中并通过网站查看的所有主要组件都已完成。关于移动服务和机器学习的详细信息尚未包含在内。

应用程序描述

CC3200 LaunchPad 发送由其板载温度传感器创建的遥测数据,或者可以通过 Azure 网站网页使用伪遥测生成器生成遥测数据。然后,这些遥测数据被 Azure 事件中心摄取,并通过 Azure 流分析近乎实时地处理,然后将处理后的遥测数据存储在 Azure SQL 服务器表中。一个表存储刚刚清理过的遥测数据,而另一个表存储在 5 分钟滚动窗口内的平均温度和湿度数据以及数据计数。

新存储的处理过的遥测数据可以通过 Azure 网站网页实时查看。同时,如果某些触发器指示系统发生故障,Azure 移动服务将向智能手机应用程序发送推送通知。

使用 Azure 机器学习创建一个预测模型,并将其作为 Web 服务提供。可以从 Azure 网站网页查询该模型,以确定系统是否需要维护。未来,随着 Azure 流分析的改进,预计将可以通过 Azure 机器学习 Web 服务查询预测模型,从而为许多不同的场景提供近乎实时的预测。

设置步骤

您将在下方找到在微软 Azure 云平台和德州仪器 CC3200 LaunchPad 开发板上构建的端到端物联网概念验证的详细重现说明。

查看工作示例

您可以在以下链接查看工作示例。

假设

这些说明提供了设置端到端物联网示例复制所需的详细信息。但是,假定您熟悉 Microsoft Azure 和德州仪器 CC3200 LaunchPad 开发环境。

设置示例

要使此示例正常工作,需要设置 2 项主要技术

如果您只对示例的 CC3200 LaunchPad 部分感兴趣,可以使用源代码中提供的默认设置。它将与我设置好的 Azure Cloud 通信,然后您可以在此处查看您发送的遥测数据,以确定您是否一切正常。还有一个二进制文件,您可以将其刷写到 CC3200 LaunchPad 上。

更多资源

以下资源将帮助您了解更多关于 Microsoft Azure 和德州仪器 CC3200 LaunchPad 的信息。

Microsoft Azure

德州仪器 CC3200 LaunchPad

Azure 事件中心

Azure 流分析

Azure 机器学习

Azure Mobile Services

Azure 网站

Azure SQL 数据库

Azure 设置步骤

必备组件

建议

最好将所有服务设置在同一数据中心,以避免性能下降和数据传输费用。

创建网站

可以从 Azure 管理门户或 Visual Studio 中执行此操作:

创建 SQL Server 表

创建一个 Azure SQL 数据库,然后使用以下 SQL 语句创建 2 个表。

创建已处理遥测表的 SQL

CREATE TABLE [dbo].[ProcessedTelemetry]( [MessageType] [nvarchar](50) NULL, [Temp] [float] NULL, [Humidity] [int] NULL, [Location] [nvarchar](50) NULL, [Room] [nvarchar](50) NULL, [Info] [nvarchar](100) NULL, [EventEnqueuedUtcTime] [datetime2](7) NULL )

CREATE CLUSTERED INDEX [ProcessedTelemetry] ON [dbo].[ProcessedTelemetry]([Location] ASC)

创建平均遥测表的 SQL

CREATE TABLE [dbo].[AverageTelemetry]( [ID] [int] IDENTITY(1,1) NOT NULL,[StartTime] [datetime2](7) NULL, [EndTime] [datetime2](7) NULL, [AverageTemp] [float] NULL, [AverageHumidity] [float] NULL, [LogCount] [int] NULL, CONSTRAINT [PrimaryKey_a97a20a9-3d36-4d59-82af-e5cb075a0b73] PRIMARY KEY CLUSTERED ( [ID] ASC)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) )

创建事件中心

创建一个事件中心,确保创建一个具有“管理”、“发送”、“收听”权限的共享访问策略,并将其命名为 EventHubPublisher。

创建流分析作业

创建 2 个流分析作业,并具有以下输入、查询和输出。

输入

两个输入将是相同的,它们需要从上一步创建的事件中心获取数据。

查询

每个作业需要不同的查询。

已处理遥测作业查询

SELECT EventEnqueuedUtcTime, MessageType, Location, Room, Temp, Humidity, Info FROM input1

平均遥测作业查询

SELECT DateAdd(minute,-5,System.TimeStamp) as StartTime, system.TimeStamp as EndTime, Avg(Temp) as AverageTemp, Avg(Humidity) as AverageHumidity, Count(*) as LogCount FROM input2 GROUP BY TumblingWindow(minute, 5)

输出

两个输出都将指向相应的 SQL 表,即 ProcessedTelemetry 或 AveragedTelemetry 表。

CC3200 设置步骤

必备组件

生成共享访问令牌

您需要生成一个 SAS 令牌,可以通过以下任一方法完成:

  • 构建包含 C# 代码的 Windows 窗体应用程序的 Visual Studio 项目,可在此处获取: 此处

或者

  • 安装并使用已构建和发布的应用程序,请在此处获取: 此处

编辑 main.c 以反映您的 Azure 设置和共享访问令牌详细信息

  1. 在 Code Composer Studio 中打开 SendToEventHub 项目,以便编辑源代码。
  2. 将 #define EH_SERVER_NAME 更改为 #define Your_EH_Server_Name
  3. 将 #define POSTHEADER "POST /swiftsoftware-eh/messages HTTP/1.1\r\n" 更改为 #define POSTHEADER "POST /Your_EH_Server_Name/messages HTTP/1.1\r\n"
  4. 将 #define HOSTHEADER "Host: swiftsoftware-ns.servicebus.windows.net\r\n" 更改为 #define HOSTHEADER "Host: Your_Service_Bus_Name_Space.servicebus.windows.net\r\n"
  5. 将 #define AUTHHEADER "Authorization: SharedAccessSignature sr=swiftsoftware-ns.servicebus.windows.net&sig=6sIkgCiaNbK9R0XEpsKJcQ2Clv8MUMVdQfEVQP09WkM%3d&se=1733661915&skn=EventHubPublisher\r\n" 更改为 #define AUTHHEADER "Authorization: SharedAccessSignature sr=Your_Service_Bus_Name_Space.servicebus.windows.net&sig=Your_Shared_Access_Token&se=1733661915&skn=Your_Eventhub_Shared_Access_Policy\r\n"

注意: 您可以选择不进行任何更改,CC3200 生成的遥测数据将发送到我的事件中心,然后您可以在此处查看遥测数据。

编辑 main.c 以选择您所在地理区域的 NTP 服务器

要创建安全的 TLS 套接字,需要当前时间,该时间从 NTP 服务器获取。最好使用离您地理位置较近的服务器。代码中包含了一些建议,您也可以在网上搜索找到您所在位置的服务器。

在 main.c 中搜索 "g_acSNTPserver[30]" 以找到可以修改 NTP 服务器详细信息的位置。

编辑 common.h 以反映您的 WiFi 路由器设置

更改 CC3200 SDK 的 common.h 中的定义,以反映您的 WiFi 路由器设置。common.h 可以在 CC3200 SDK 的示例文件夹的 common 示例中找到。

#define SSID_NAME "YourWifiRouterSSID" /* AP SSID */

#define SECURITY_TYPE SL_SEC_TYPE_WPA /* 安全类型 (OPEN 或 WEP 或 WPA*/

#define SECURITY_KEY "YourSecurePassword" /* 安全 AP 的密码 */

在 CC3200 Flash 上保存证书颁发机构

  1. 使用位于此处的证书颁发机构文件 "azurecacert.cer"。
  2. 启动 CC3200/CC3100 的 UniFlash
  3. 在 Uniflash 中,点击“添加文件”选项。
  4. 将文件命名为 /cert/azurecacert.der
  5. 在 URL 字段中,浏览到存储 azurecacert.cer 的位置。
  6. 勾选“擦除”和“更新”复选框。
  7. 选择树的顶部(CC31x Flash Setup Control),然后按“编程”。

附加帮助: UniFlash 快速入门指南

注意: 您可以从浏览器或 Windows 的证书管理器下载自己的证书。Azure 使用 Baltimore CyberTrust Root。有关执行这些步骤的详细信息,请参见此处,页面底部。

故障排除

您可以通过串行端口连接并接收调试输出。建议在遇到任何问题时这样做,因为调试输出非常全面。

© . All rights reserved.