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






4.83/5 (4投票s)
一个利用微软 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 (或下方)
架构
图 1:解决方案架构
颜色代码: 蓝色 - 包含代码和步骤。橙色 - 仅示例或架构。灰色 - 外部组件
上面的图片概述了端到端物联网概念验证的解决方案架构。在这个分步示例中,还有一些部分尚未详细说明,但从 CC3200 LaunchPad 到事件中心,再到流分析,数据存储在 SQL 数据库中并通过网站查看的所有主要组件都已完成。关于移动服务和机器学习的详细信息尚未包含在内。
应用程序描述
CC3200 LaunchPad 发送由其板载温度传感器创建的遥测数据,或者可以通过 Azure 网站网页使用伪遥测生成器生成遥测数据。然后,这些遥测数据被 Azure 事件中心摄取,并通过 Azure 流分析近乎实时地处理,然后将处理后的遥测数据存储在 Azure SQL 服务器表中。一个表存储刚刚清理过的遥测数据,而另一个表存储在 5 分钟滚动窗口内的平均温度和湿度数据以及数据计数。
新存储的处理过的遥测数据可以通过 Azure 网站网页实时查看。同时,如果某些触发器指示系统发生故障,Azure 移动服务将向智能手机应用程序发送推送通知。
使用 Azure 机器学习创建一个预测模型,并将其作为 Web 服务提供。可以从 Azure 网站网页查询该模型,以确定系统是否需要维护。未来,随着 Azure 流分析的改进,预计将可以通过 Azure 机器学习 Web 服务查询预测模型,从而为许多不同的场景提供近乎实时的预测。
设置步骤
您将在下方找到在微软 Azure 云平台和德州仪器 CC3200 LaunchPad 开发板上构建的端到端物联网概念验证的详细重现说明。
查看工作示例
您可以在以下链接查看工作示例。
- 网站主页 - http://ssmlwf.azurewebsites.net/
- 使用 AMQP 从网页发送伪遥测 -http://ssmlwf.azurewebsites.net/eventhub/eventhubamqp
- 使用 REST API 从网页发送伪遥测 -http://ssmlwf.azurewebsites.net/eventhub/eventhubrest
- 查看处理后的遥测数据 -http://ssmlwf.azurewebsites.net/sqldatabase/processedtelemetry
- 查看平均遥测数据 -http://ssmlwf.azurewebsites.net/sqldatabase/averagetelemetry
- 机器学习模型 - http://ssmlwf.azurewebsites.net/machinelearning/model
假设
这些说明提供了设置端到端物联网示例复制所需的详细信息。但是,假定您熟悉 Microsoft Azure 和德州仪器 CC3200 LaunchPad 开发环境。
设置示例
要使此示例正常工作,需要设置 2 项主要技术
-
Azure 设置步骤 - 参见下方详细信息
-
CC3200 LaunchPad 设置步骤 - 参见下方详细信息
如果您只对示例的 CC3200 LaunchPad 部分感兴趣,可以使用源代码中提供的默认设置。它将与我设置好的 Azure Cloud 通信,然后您可以在此处查看您发送的遥测数据,以确定您是否一切正常。还有一个二进制文件,您可以将其刷写到 CC3200 LaunchPad 上。
更多资源
以下资源将帮助您了解更多关于 Microsoft Azure 和德州仪器 CC3200 LaunchPad 的信息。
Microsoft Azure
- Microsoft Azure 主网站 - http://azure.microsoft.com/en-gb/
- 介绍 Microsoft Azure 基本知识的出色视频 - https://www.youtube.com/watch?v=7V8HikBP1vQ
德州仪器 CC3200 LaunchPad
- 德州仪器 CC3200 LaunchPad 简介 - http://www.ti.com/ww/en/launchpad/launchpads-connected-cc3200-launchxl.html
- CC3200 LaunchPad 的出色视频介绍 - https://www.youtube.com/watch?v=KEERSpj3Gks
- 德州仪器 CC3100/CC3200 Wiki - http://processors.wiki.ti.com/index.php/CC31xx_&_CC32xx
Azure 事件中心
- Azure 事件中心介绍视频 - http://channel9.msdn.com/Shows/Cloud+Cover/Episode-160-Event-Hubs-with-Elio-Damaggio
Azure 流分析
- Azure 流分析介绍视频 - http://channel9.msdn.com/Shows/Azure-Friday/Introduction-to-Azure-Stream-Analytics-with-Santosh-Balasubramanian
Azure 机器学习
- Azure 机器学习介绍视频 - http://channel9.msdn.com/Series/Getting-Started-with-Microsoft-Azure-Machine-Learning/01
Azure Mobile Services
- Azure 移动服务介绍视频 - http://channel9.msdn.com/Series/Windows-Azure-Mobile-Services/Introduction-to-Windows-Azure-Mobile-Services
Azure 网站
Azure SQL 数据库
- Azure SQL 数据库介绍视频 - http://channel9.msdn.com/events/TechEd/Europe/2014/DBI-B210
Azure 设置步骤
必备组件
- Microsoft Azure 账户 - http://azure.microsoft.com/en-us/
- Visual Studio 2013 社区版 - http://www.visualstudio.com/en-us/news/vs2013-community-vs.aspx
建议
最好将所有服务设置在同一数据中心,以避免性能下降和数据传输费用。
创建网站
可以从 Azure 管理门户或 Visual Studio 中执行此操作:
- 从 Azure 管理门户 - http://azure.microsoft.com/en-us/documentation/articles/web-sites-create-deploy/
- 从 Visual Studio 中 - http://azure.microsoft.com/en-us/documentation/articles/web-sites-dotnet-get-started/
创建 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 设置步骤
必备组件
- CC3200 LaunchPad - https://store.ti.com/cc3200-launchxl.aspx
- Code Composer Studio - http://processors.wiki.ti.com/index.php/Download_CCS
- Visual Studio 2013 社区版 - http://www.visualstudio.com/en-us/news/vs2013-community-vs.aspx
- UniFlash for CC3100/CC3200 - http://processors.wiki.ti.com/index.php/CCS_UniFlash_-_CC3100/CC3200_Edition
- CC3200 SDK 和固件更新 - http://www.ti.com/tool/cc3200sdk
生成共享访问令牌
您需要生成一个 SAS 令牌,可以通过以下任一方法完成:
- 构建包含 C# 代码的 Windows 窗体应用程序的 Visual Studio 项目,可在此处获取: 此处
或者
- 安装并使用已构建和发布的应用程序,请在此处获取: 此处
编辑 main.c 以反映您的 Azure 设置和共享访问令牌详细信息
- 在 Code Composer Studio 中打开 SendToEventHub 项目,以便编辑源代码。
- 将
#define EH_SERVER_NAME
更改为#define Your_EH_Server_Name
- 将
#define POSTHEADER "POST /swiftsoftware-eh/messages HTTP/1.1\r\n"
更改为#define POSTHEADER "POST /Your_EH_Server_Name/messages HTTP/1.1\r\n"
- 将
#define HOSTHEADER "Host: swiftsoftware-ns.servicebus.windows.net\r\n"
更改为#define HOSTHEADER "Host: Your_Service_Bus_Name_Space.servicebus.windows.net\r\n"
- 将
#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 上保存证书颁发机构
- 使用位于此处的证书颁发机构文件 "azurecacert.cer"。
- 启动 CC3200/CC3100 的 UniFlash
- 在 Uniflash 中,点击“添加文件”选项。
- 将文件命名为 /cert/azurecacert.der
- 在 URL 字段中,浏览到存储 azurecacert.cer 的位置。
- 勾选“擦除”和“更新”复选框。
- 选择树的顶部(CC31x Flash Setup Control),然后按“编程”。
附加帮助: UniFlash 快速入门指南。
注意: 您可以从浏览器或 Windows 的证书管理器下载自己的证书。Azure 使用 Baltimore CyberTrust Root。有关执行这些步骤的详细信息,请参见此处,页面底部。
故障排除
您可以通过串行端口连接并接收调试输出。建议在遇到任何问题时这样做,因为调试输出非常全面。