Microsoft IoT Starter Kit 开发初体验

简介:

1. 引子

    今年6月底,在上海举办的中国国际物联网大会上,微软中国面向中国物联网社区推出了Microsoft IoT Starter Kit ,并且免费开放1000套的申请。申请地址为:http://aka.ms/iotkits,目前仍然有效。当时一开放申请,我就在线填写了申请表,接下来就是长长的等待。相信很多朋友都是一样,在经过几个月的等待之后,终于拿到了这个开发套件,而有些朋友估计还在等待中。因为官方是一个月处理并邮寄一批,速度不是很快。但是,在经过了一段时间使用以后,我可以说,如果朋友们期待在这个最初版本的套件上开发基于Windows 10 IoT Core的程序的话,那么,还得再等等,因为后续的升级版本套件还在测试中。如果你有Linux和Arduino的基础,那么,恭喜你,你可以快速上手用了。接下来,就从我自己的角度,和大家分享这个套件的使用初体验。

2.开发套件硬件

    首先,我们来看一看硬件配置,这次拿到的开发套件是微软物联网开发套件A型,包含了SeeeduinoCloud和Orange Pi Lite两块开发板,外围设备方面,包含Grove接口扩展板、200万像素摄像头、板载麦克风、温湿度传感器、光敏传感器、RGB灯、声音传感器、板载WIFI模块、8G Micro SD存储卡、一根MicroUSB线(给SeeeduinoCloud供电)和一根给Orange Pi Lite供电的USB线,值得注意的是,给SeeeduinoCloud供电的话,普通的充电器或者电脑的USB接口就足够了;但是,给Orange Pi Lite供电的话,最好找个电流大一些的充电器,比如1A以上的,官方标的是需要2A。另外,需要澄清的是,开发套件B不包含在免费赠送的范围内,据说,开发套件B型包含一块RaspberryPi 3 Model B、OLED显示屏、NFC、RFID卡、空气质量传感器、中继器、角度控制器等部件。

    应该说,开发这两块开发板,用的套路是不一样的。首先,SeeeduinoCloud用的是Arduino IDE;Orange Pi Lite默认烧写运行的是Ubuntu系统,需要Linux环境的开发机。Grove接口扩展板和其他的各种传感器,是设计给SeeeduinoCloud用的;而摄像头,是设计给Orange Pi Lite用的。所以,这两部分硬件的概要图是这个样子的。

imageimage

    从性能上来看,Orange Pi Lite是不输给树莓派的,而淘宝的价格只有70+RMB,还是比较给力的。相比较而言,还是这块SeeeduinoCloud较贵,官网上的价格是50美金,不过它已经包含了无线WiFi,运行的环境是Openwrt+Arduino。

3. 软件与准备工作

    从官方的宣传来看,称此套件“支持Arduino、OpenWrt、多种Linux发行版、Windows 10 IoT Core。为了更方便地连接Azure云服务,微软物联网开发套件在开发版中内置了Azure IoT SDK和Azure Cognitive Services认知服务SDK”。这里,需要大家注意的是,Arduino、OpenWrt是对于SeeeduinoCloud而言的,多种Linux发行版是对于Orange Pi Lite而言的,Windows 10 IoT Core是对于开发套件B的树莓派而言的。所以,不同的硬件运行不同的系统,开发工具和环境也不一样,这个大家需要留心,根据自己的实际需求来选择。

    这里,我们先来测试SeeeduinoCloud和对应的Azure IoTHub服务。在开始之前,首先需要在自己的开发机器上安装Arduino IDE,因为SeeeduinoCloud需要使用Arduino IDE来编写执行的代码。如果没有安装该软件的朋友,可以到https://www.arduino.cc下载并安装最新的版本。

    另外,使用Azure IoT服务的话,需要向世纪互联提交试用申请,地址为:https://www.azure.cn/pricing/1rmb-trial-full/?form-type=identityauth。当然,如果有国际版MSDN订阅的账户,其中包含了Azure服务的,也可以直接使用Azure IoT服务。套件中需要使用的Azure连接信息主要就是IoTHub的Hostname,Devicename和Key。有关IoTHub的创建,可以参考Azure的在线文档:https://www.azure.cn/documentation/articles/iot-hub-csharp-csharp-getstarted/。有关Device的创建,可以直接使用Device Explore工具,具体可以参考:https://github.com/Azure/azure-iot-sdks/tree/master/tools/DeviceExplorer

    当然,如果要用别的免费的在线服务,也可以选择国内的Yeelink,具体可以参考:http://wiki.seeed.cc/Seeeduino_Cloud/

4. 硬件连接与初始设置

    将开发套件中的SeeeduinoCloud、Grove接口扩展板和4个传感器取出,按照如下的连线方式连接:

    ① Grove - Temp&Humi Sensor -> A0;② Grove - Light Sensor -> A1;③ Grove - Sound Sensor -> A2;④ Grove - Chainable RGB LED -> D4,注意,Chainable RGB LED端接In。

    连线完毕以后,效果图如下:

image

    给SeeeduinoCloud上电,参考http://wiki.seeed.cc/Seeeduino_Cloud/文档的Network Config部分,配置SeeeduinoCloud连接无线路由器的SSID和密码(当然,如果想直接使用RJ45以太网接口的朋友,可以直接忽略)。首先,进入SeeeduinoCloud,其密码是seeeduino,如下图所示。

image

    其次,在System部分,配置可用的无线路由器的SSID和密码,如下图所示。

image

    设置结束以后,点击Configure and Restart,重启以后,可以登录无线路由器,发现它能够通过WiFi连接了。当然,从SeeeduinoCloud上电到连接上WiFi,需要一定的时间(大概30秒)。它的主机名是“--”,比较奇怪。

image

5. 设置Azure IoTHub连接字符串

    使用Putty客户端,根据IP地址连接SeeeduinoCloud,按照“root,seeeduino”登录。如下图所示。

image

    在根目录下,使用ls命令查看现有的文件。

image

    可见,其中已经包含了一些必须的文件。这些文件在出厂的时候已经设置好了,需要修改的就是AzureConnectionString。因为这个是连接IoTHub的字符串。

    使用 vi 键入 host name、device id 与 device key 到文件 " AzureConnectionString "。文件路径为 " /root/AzureConnectionString "。

    或者使用 echo 命令输入字符串,如下(下面的问号用上面申请到的连接字符串代替):

    echo -n 'HOST_NAME:???.azure-devices.???

    DEVICE_ID:???

    DEVICE_KEY:???' > /root/AzureConnectionString

6. Arduino编程并下载程序

    利用Arduino IDE打开源代码工程,可以去https://github.com/WayenWeng/Seeeduino_Cloud_Azure_IoT_Hub_Client/下载。把Seeeduino_Cloud_Azure_IoT_Hub_Client-master\Arduino Code\libraries下的两个文件夹解压到Arduino IDE的libraries目录下。如下图所示。

image

    打开工程,可以发现,程序主要采集的数据就是温度、湿度、光照强度和声音强度,采集的时间间隔可以通过loop中的delay函数来控制,其中的参数是以毫秒为单位的,默认应该是1000,也就是1秒钟采集一次数据,可以根据实际情况修改。另外,发送和接收数据是通过调用根目录下的AzureMessageSend和AzureMessageReceive来实现的,这部分内容并不在Arduino控制的范围内。当然,如果用户需要增加其他的传感器数据,就可以在扩展板上接其他传感器,在程序中读取,并封装到消息体里面就可以。然后,如果硬件连接正确的话,就可以在工具-端口中找到Seeeduino对应的COM号。最后,点击上传,就可以将程序上传到Seeeduino中。

image

7. 运行程序并监控数据

    在Putty工具中,使用ps命令,就可以查看进程,如下图所示。

image

    其中可以找到AzureIoTHubClient,该进程是默认启动的。为了监控数据采集和发送的状态,可以显示启动它。在命令行中,输入./AzureIoTHubClient,回车。如果正常的话,会显示客户端连接Azure IoTHub的状态信息,如下图所示。

image

    之后,程序就会每隔1秒钟采集数据,并发送给IoTHub,如下图所示。

image

    在本地,可以使用Device Explore来监控对应设备的数据,如下图所示。

image

    另外,也可以在Azure的主页上查看已经发送的数据数量,如下图所示。

image

8. 数据的在线可视化-PowerBI

    传感器采集的数据是冷冰冰的,如何让它活跃起来,我们可以使用微软提供的Stream Analytics和PowerBI来实现数据的多样化显示。首先,需要在Azure的主页上新建一个流分析的业务,并将其输入配置为之前新建的IoTHub,输出配置为PowerBI,如下图所示。

image

    当IoT Hub和Stream Analytics都运行起来以后,登录到PowerBI,设置图标的样式,如下图所示。

image

    之后,可以将报表固定到某个Dashboard上,如下图所示。

image

    保存,回到PowerBI主页,就可以看到实时的传感器数据的视图了,如下图所示。

image

 

后记

    整个项目调试过程中,需要注意在输入Azure连接字符串时,最好通过VI输入,因为如果使用Windows的记事本等工具输入,有可能会带入一些不必要的字符,影响Azure IoT Hub的连接。

 

参考链接

1. IoT Starter Kit申请地址:http://aka.ms/iotkits

2. Azure试用申请::https://www.azure.cn/pricing/1rmb-trial-full/?form-type=identityauth

3. IoTHub的创建:https://www.azure.cn/documentation/articles/iot-hub-csharp-csharp-getstarted/

4. Device Explore工具:https://github.com/Azure/azure-iot-sdks/tree/master/tools/DeviceExplorer

5. SeeeduinoCloud上手文档:http://wiki.seeed.cc/Seeeduino_Cloud/

6. 程序代码托管地址:https://github.com/WayenWeng/Seeeduino_Cloud_Azure_IoT_Hub_Client/



本文转自灵动生活博客园博客,原文链接http://www.cnblogs.com/dearsj001/p/MicrosoftIoTStarterKitStartup.html:,如需转载请自行联系原作者

相关实践学习
钉钉群中如何接收IoT温控器数据告警通知
本实验主要介绍如何将温控器设备以MQTT协议接入IoT物联网平台,通过云产品流转到函数计算FC,调用钉钉群机器人API,实时推送温湿度消息到钉钉群。
阿里云AIoT物联网开发实战
本课程将由物联网专家带你熟悉阿里云AIoT物联网领域全套云产品,7天轻松搭建基于Arduino的端到端物联网场景应用。 开始学习前,请先开通下方两个云产品,让学习更流畅: IoT物联网平台:https://iot.console.aliyun.com/ LinkWAN物联网络管理平台:https://linkwan.console.aliyun.com/service-open
相关文章
|
SQL 物联网 Apache
使用Apache IoTDB进行IoT相关开发的架构设计与功能实现(11)
目前,IoTDB中不存在冲突的权限,因此用户的真正权限是用户自身权限和用户角色权限的结合。也就是说,要确定用户是否可以执行操作,取决于用户自己的权限之一或用户角色的权限是否允许该操作。用户自己的特权和用户角色的特权可能会重叠,但这并不重要。
202 1
|
存储 物联网 数据管理
使用Apache IoTDB进行IoT相关开发的架构设计与功能实现(12)
现在到了使用Apache IoTDB进行IoT相关开发的架构设计与功能实现的最后一个环境,在本文中我将向大家介绍IoTDB的查询语言。IoTDB为咱们广大开发者提供了类似SQL的查询语言,用于与IoTDB进行交互,查询语言可以分为4个主要部分:架构语句、数据管理语句、数据库管理语句、功能。
209 0
|
SQL 传感器 物联网
使用Apache IoTDB进行IoT相关开发的架构设计与功能实现(10)
物联网提供限制/限制条款和偏移/偏移子句,以使用户对查询结果有更多的控制权。使用 LIMIT 和 SLIMIT 子句允许用户控制查询结果的行数和列数,使用 OFFSET 和 SOFSET 子句允许用户设置结果的起始位置进行显示。
142 0
|
1月前
|
Rust 资源调度 安全
为什么使用 Rust over C++ 进行 IoT 解决方案开发
为什么使用 Rust over C++ 进行 IoT 解决方案开发
68 7
|
3月前
|
存储 分布式计算 物联网
Apache IoTDB进行IoT相关开发实践
当今社会,物联网技术的发展带来了许多繁琐的挑战,尤其是在数据库管理系统领域,比如实时整合海量数据、处理流中的事件以及处理数据的安全性。例如,应用于智能城市的基于物联网的交通传感器可以实时生成大量的交通数据。据估计,未来5年,物联网设备的数量将达数万亿。物联网产生大量的数据,包括流数据、时间序列数据、RFID数据、传感数据等。要有效地管理这些数据,就需要使用数据库。数据库在充分处理物联网数据方面扮演着非常重要的角色。因此,适当的数据库与适当的平台同等重要。由于物联网在世界上不同的环境中运行,选择合适的数据库变得非常重要。 原创文字,IoTDB 社区可进行使用与传播 一、什么是IoTDB 我
176 9
Apache IoTDB进行IoT相关开发实践
|
4月前
|
存储 分布式计算 物联网
Apache IoTDB进行IoT相关开发实践
IoTDB是专为物联网(IoT)设计的开源时间序列数据库,提供数据收集、存储、管理和分析。它支持高效的数据写入、查询,适用于处理大规模物联网数据,包括流数据、时间序列等。IoTDB采用轻量级架构,可与Hadoop和Spark集成,支持多种存储策略,确保数据安全和高可用性。此外,它还具有InfluxDB协议适配器,允许无缝迁移和兼容InfluxDB的API和查询语法,简化物联网项目的数据管理。随着物联网设备数量的快速增长,选择适合的数据库如IoTDB对于数据管理和分析至关重要。
248 12
|
4月前
|
存储 分布式计算 物联网
Apache IoTDB进行IoT相关开发实践
The article introduces IoTDB, an open-source time-series database designed for efficient management of IoT-generated data. It addresses challenges like real-time integration of massive datasets and security. IoTDB supports high-performance storage,
142 0
Apache IoTDB进行IoT相关开发实践
|
5月前
|
存储 分布式计算 物联网
Apache IoTDB进行IoT相关开发实践
IoTDB是面向物联网的时序数据库,专注于时间序列数据管理,提供高效的数据处理、集成Hadoop和Spark生态、支持多目录存储策略。它还具有InfluxDB协议适配器,允许无缝迁移原本使用InfluxDB的业务。文章讨论了IoTDB的体系结构,包括数据文件、系统文件和预写日志文件的存储策略,并介绍了如何配置数据存储目录。此外,还提及了InfluxDB版本和查询语法的支持情况。IoTDB在物联网数据管理和分析中扮演关键角色,尤其适合处理大规模实时数据。
101 5
|
5月前
|
存储 分布式计算 物联网
Apache IoTDB进行IoT相关开发实践
物联网技术带来数据库管理挑战,特别是实时数据整合与安全性。IoTDB是一个专为时间序列数据设计的数据库,提供数据收集、存储和分析服务,适用于海量物联网数据。其架构包括数据文件、系统文件和预写日志文件的管理,并支持多目录存储策略。此外,IoTDB还开发了InfluxDB协议适配器,使得用户能无缝迁移原有InfluxDB业务。此适配器基于IoTDB的Java服务接口,转换InfluxDB的元数据格式,实现与IoTDB的数据交互。目前,适配器支持InfluxDB 1.x版本及部分查询语法。
191 5
|
SQL 物联网 Java
使用Apache IoTDB进行IoT相关开发的架构设计与功能实现(9)
GROUP BY 语句为用户提供了三种类型的指定参数: 参数1:时间轴上的显示窗口 参数2:划分时间轴的时间间隔(应为正) 参数3:时间滑动步长(可选,不应小于时间间隔,如果未设置,则默认等于时间间隔)
244 0
使用Apache IoTDB进行IoT相关开发的架构设计与功能实现(9)