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用的。所以,这两部分硬件的概要图是这个样子的。

从性能上来看,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。

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

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

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

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

5. 设置Azure IoTHub连接字符串

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

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

可见,其中已经包含了一些必须的文件。这些文件在出厂的时候已经设置好了,需要修改的就是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目录下。如下图所示。

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

7. 运行程序并监控数据

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

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

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

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

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

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

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

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

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

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

后记

整个项目调试过程中,需要注意在输入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/

Microsoft IoT Starter Kit 开发初体验的更多相关文章

  1. Microsoft IoT Starter Kit 开发初体验-反馈控制与数据存储

    在上一篇文章<Microsoft IoT Starter Kit 开发初体验>中,讲述了微软中国发布的Microsoft IoT Starter Kit所包含的硬件介绍.开发环境搭建.硬件 ...

  2. Microsoft IoT Starter Kit

    Microsoft IoT Starter Kit 开发初体验 1. 引子 今年6月底,在上海举办的中国国际物联网大会上,微软中国面向中国物联网社区推出了Microsoft IoT Starter K ...

  3. Xamarin.iOS开发初体验

    aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAKwAAAA+CAIAAAA5/WfHAAAJrklEQVR4nO2c/VdTRxrH+wfdU84pW0

  4. IOS开发初体验

    IOS开发初体验 搭建开发环境 不多说什么了,开发环境的搭建太简单了,上App Store搜索XCode下载就行了,说多了都是眼泪 创建第一个IOS项目--HolleIOS 创建工程 选择工程创建位置 ...

  5. 中文代码示例之NW.js桌面应用开发初体验

    先看到了NW.js(应该是前身node-webkit的缩写? 觉得该起个更讲究的名字, 如果是NorthWest之意的话, logo(见下)里的指南针好像也没指着西北啊)和Electron的比较文章: ...

  6. Online开发初体验——Jeecg-Boot 在线配置图表

    Online开发——初体验(在线配置图表) 01 通过JSON数据,快速配置图形报表 02 通过SQL数据,快速配置图形报表 03 图表模板配置,实现不同数据源图表合并展示 04 图表布局,支持单排. ...

  7. ThinkPHP -- 开发初体验及其几个配置文件的介绍

    ThinkPHP是一款不错的轻量级的PHP+MVC框架,它吸取了Ruby On Rails的特性,不仅将Model.View.Controller分开,而且实现了ORM.模板标签等高级特性.    开 ...

  8. Windows Phone 8 开发初体验

    Windows Phone 8 是当前除了Android.IPhone之外,第3大智能手机运行平台.作为微软技术的忠实fans,一直关注和跟进微软技术的最新进展.这里就给大家简单介绍一下,如何进行Wi ...

  9. Adobe Html5 Extension开发初体验

    一.背景介绍       Adobe公司出品的多媒体处理软件产品线较多,涵盖了音视频编辑.图像处理.平面设计.影视后期等领域.为了扩展软件的功能,Adobe公司为开发者提供了两种方式来增加软件的功能: ...

随机推荐

  1. 移动开发框架剖析(二) Hammer专业的手势控制

    浏览器底层并没有给元素提供类似,单击,双击,滑动,拖动这些直接可以用的控制接口,一切的手势动作都只能通过模拟出来.移动端浏览器唯一给我们提供的就只是mousedown -> mousemove ...

  2. Map排序

    HashMap: 最常用的Map,它根据键的HashCode 值存储数据,根据键可以直接获取它的值,具有很快的访问速度.HashMap最多只允许一条记录的键为Null(多条会覆盖);允许多条记录的值为 ...

  3. MySQL 调优基础(三) Linux文件系统

    Linux的文件系统有点像MySQL的存储引擎,它支持各种各样的文件系统.它最上层是通过 virtual files system虚拟文件系统作为一个抽象接口层来对外提供调用的.然后下层的各种文件系统 ...

  4. SpringMVC 配置定时执行任务

    1.在SpringMVC配置文件中添加 xmlns:task="http://www.springframework.org/schema/task" http://www.spr ...

  5. [Sdoi2010]星际竞速

    个人对山东省选已经十分无语了,做了三道题,都TM是费用流,这山东省选是要干什么,2009--2011连续三年,只要会费用流,然后建个边,跑一跑就过了. 10 年一度的银河系赛车大赛又要开始了.作为全银 ...

  6. 跟我一起读postgresql源码(十五)——Executor(查询执行模块之——control节点(上))

    控制节点 控制节点用于完成一些特殊的流程执行方式.由于PostgreSQL为査询语句生成二叉树状的査询计划,其中大部分节点的执行过程需要两个以内的输入和一个输出.但有一些特殊的功能为了优化的需要,会含 ...

  7. jenkins 构建到最后报权限的问题

    参考链接  https://blog.csdn.net/sinat_25306771/article/details/54633921 近整理虚拟机的密码  把Jenkins构建相关的远程执行脚本的服 ...

  8. swift - 本地通知

    1. AppDelegate  注册 class AppDelegate: UIResponder, UIApplicationDelegate { var window: UIWindow? fun ...

  9. elastix php session保存地点

    这段时间要做 asterisk 的HA 放啊,需要同步session,所以做了下来研究. 1)elastix中的session 其实是存放在 /tmp/目录中的.可是/etc/php.ini中的[se ...

  10. nodepad++添加新主题

    https://www.cnblogs.com/d0main/p/6915460.html