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

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

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

给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/

本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
 

最新文章

  1. 代码的坏味道(18)——依恋情结(Feature Envy)
  2. 【Codeforces 738B】Spotlights
  3. python 读写文件和设置文件的字符编码
  4. Unable to add App ID because the '10' App ID limit in '7' days has been exceeded.
  5. 嵌入式LINUX入门到实践(一)
  6. 常用原生JS兼容性写法汇总
  7. Course(简单的字符串处理问题)
  8. graphical Layout调大一点
  9. PHP扩展开发 第一课 为什么要写扩展及hello world
  10. springcloud学习资料汇总
  11. 初入linux系统
  12. PyCharm激活(License server)
  13. hystrix参数详解
  14. Eclipse中Git的使用以及IDEA中Git的使用
  15. python网络编程(四)
  16. react-router v4 使用 history 控制路由跳转
  17. PAT甲题题解-1102. Invert a Binary Tree (25)-(建树,水题)
  18. xcode从8升级到9出现的问题
  19. Alpha阶段敏捷冲刺⑤
  20. #error和line

热门文章

  1. 怎样cp文件夹时忽略指定的文件夹和文件
  2. python2.7一步步实现键盘和鼠标检测
  3. [Angular2 Form] Check password match
  4. jQuery 中 is() 函数常见使用方法
  5. Voronoi Diagram——维诺图
  6. Lucene学习总结之三:Lucene的索引文件格式(1) 2014-06-25 14:15 1124人阅读 评论(0) 收藏
  7. 建立空间参考 ISpatialReference
  8. Android中HandlerThread的使用及源代码解析
  9. PHP移动互联网开发笔记(4)——自定义函数及数组
  10. 后台报错java.lang.IllegalArgumentException: Invalid character found in the request target.