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/