基于物联网的环境监控系统设计与实现
2018-01-25肖鹏陈健姜培
肖鹏 陈健 姜培
摘 要:文中设计了一套基于物联网的远程环境监控系统,实现了对广州市大学城,广州市五山和惠州市广工大物联网协同创新研究院等三地温湿度、光强的监测,并对灯泡亮灭进行远程控制。利用Qt平台开发的基于安卓操作系统的移动客户端应用程序,通过简洁友好的界面展示了不同位置的环境信息以及供用户使用的控制按钮。
关键词:物联网;网关;设备云;远程监控
中图分类号:TP399 文献标识码:A 文章编号:2095-1302(2018)01-00-03
0 引 言
物联网的概念于1999年由麻省理工学院的Auto-ID实验室提出,基于无线传感网络和射频识别技术,实现物体的定位和状态识别[1]。其目的在于实现一个全面感知,无缝互联的高度智能世界。随着因特网技术和无线传感网技术的进步,一个万物互联的时代已悄悄来临。据IDC预测:“到2020年,物联网网络的连接设备数量将达到290亿,到2025年,这些设备产生的数据将驱动11万亿美元的经济价值”[2]。通常来说,物联网由感知层,传输层,应用层构成[3]。感知层主要负责信息采集和短距离传输;传输层主要负责将感知层的数据进行长距离传输;应用层用于实现对数据的处理和决策,主要包括各类应用服务,如环境监控,智能电网,工业控制,绿色农业,智能家居,公共安全等。物联网和和云计算技术为物联网基础平台应用提供了新的机遇,在物联网应用过程中,传感器采集的数据将会被存储在云环境中[4]。云计算技术为用户提供了三种不同的服务模式,即基础设施及服务(LaaS)、平台及服务(PaaS)、软件及服务(SaaS),这些服务可以运行在公有云、私有云和混合云当中[5]。
本文基于物联网传感技术和DiGi云平台的PaaS模式,设计并实现了一套環境监控系统。通过在广州市大学城、广州市五山和惠州市广工大物联网协同创新研究院(简称惠州市广工大研究院)分别部署执行器和传感器,利用DIGI公司的XBee适配器将数据汇集到物联网网关协调器,使用Python语言在网关上部署应用程序。一方面网关通过ZigBee技术与感知层设备交互,另一方面网关可以通过以太网与设备云交互。设备云可以对网关上传的数据进行分析、存储和展示。利用Qt平台设计的Android手机应用客户端可通过调用设备云提供的应用程序接口(API)实现对执行器的控制,并以灯泡的亮灭显示;可对当前环境的温度、湿度及光强进行监测。该系统大大提高了用户对远程环境的感知能力。
1 系统总体实现
在本系统中,感知层部署了两个终端节点,分别为信息采集传感器节点和灯泡控制节点,其中信息采集传感器可以采集温度(T)、湿度(H)和光强(L);终端节点利用ZigBee技术将数据传送至网关协调器,网关利用以太网将数据上传至设备云。此时可以通过本地浏览器或者安卓客户端监控感知层节点。整体系统框图如图1所示。
1.1 T/H/L传感器节点与灯泡执行器节点
本系统的T/H/L传感器节点采用XBee传感器模块,该模块可实时读取温度、湿度、光强参数,并通过ZigBee技术进行数据传送;灯泡执行器节点使用XBee数字I/O适配器,该适配器拥有4个支持集电极开路上拉和下拉的接口,可通过配置引脚模式来控制适配器的端口状态。二者皆可配合网关将数据送至设备云,也可通过网关下发指令,控制适配器输出引脚的高低电平。
1.2 物联网网关
物联网网关的作用在于衔接感知层与应用层,主要功能涵盖节点管理、多种信息交互(TCP,HTTP,UDP,SMTP,SMS等)、信息记录与管理、云端信息安全管理等[6,7]。本系统使用DIGI公司的XBee Gateway-ZigBee to Ethernet/WiFi,该网关通过ZigBee技术与其他XBee模块连接,使用了开源的Python开发环境,可通过开发应用程序实现设备云与感知层节点的数据交互。图2所示为该网关的软硬件架构。
网关核心处理器为Fresscale公司生产的i.MX28 ARM9处理器,ZigBee网络信息交互采用DIGI公司生产的XBee S2C ZigBee模块。该模块采用SMT封装,拥有PRO版本的物理层,传输距离更远。XBee S2C采用Ember357单片机,与XBee S2采用相同的Ember ZigBee 协议栈,二者之间可以相互通信。网关中用户应用程序可使用20 MB RAM和10 MB Flash。
1.3 DIGI设备云
设备云处在整个系统的应用层,具有数据分析、数据存储、数据显示和设备管理等功能,并提供丰富的API。DIGI设备云是一个设备托管服务平台,具备PaaS服务能力,可提供设备管理、设备实时通信以及数据存储服务等[8,9]。考虑到DIGI设备云不仅提供了免费的应用开发平台,以及业界领先的安全协议和可即时连接任何M2M设备,更可对存储时间序列数据进行智能分析的优势,因此将其作为本系统的云服务平台。本系统设备云作为应用层数据的获取源,同时也作为数据展现和设备控制的平台。
1.4 移动客户端应用
设计基于安卓的客户端是为了实现移动监控功能,由于Qt拥有跨平台的C++应用程序开发框架,且提供了自由软件的用户协议,使得它可以被广泛应用在各平台上的开放源代码软件开发中,因此选择Qt作为开发平台。使用Qt开发的软件,相同的代码可以在任何支持的平台上编译、运行,无需修改源代码,可自动根据平台的变化而表现出平台特有的图形界面风格[10]。本系统开发的移动客户端主要基于安卓操作系统。
2 系统软件设计与实现
2.1 网关应用程序设计
2.1.1 灯泡控制应用程序
在XBee数字I/O适配器的一个输出端口接MOSFET三极管的栅极,适配器+12 V电源输出端通过灯泡接到漏极,适配器的地与源极相连,可通过控制输出口的电平实现控制灯泡亮灭的目标。适配器输出端的电平通过调用XBee封装的库函数实现,常用的几个库函数见表1。
本程序中主要用到了 xbee.ddo_set_param()和idigidata.register_callback()模块。idigidata.register_callback()函数实现了回调功能。应用程序按照预先制定的协议解析指令内容,实现对适配器端口状态的控制。在本系统中,指令协议只有六条,分别为HUI4 ,HUI5,DA4,DA5,WU4,WU5,其中4代表开灯,5代表关灯,数字前面的字母代表不同的位置。主要程序片段如下:
Def data_callback(data_callback_example,xml:
If xml.find(“HUI4”)>-1:
xbee.ddo_set_param(DESTINATION0, ‘D4, 4)
elif xml.find(“HUI5”)>-1:
xbee.ddo_set_param(DESTINATION0, ‘D4, 5)
handle=iDIGIdata.register_callback(“data_callback_example”, data_callback)
当网关程序部署好后,使用设备云提供的API进行调试,可及时验证网关程序的运行效果,同时为后续的App开发提供可靠依据。00000000-00000000-00409DFF-FF5E0EBF为网关的Id,API 调试程序如下:
HUI4
2.1.2 传感器数据读取应用程序
在将传感器采集的数据上传到设备云的过程中,网关应用程序的主要功能包括获取数据、封装数据格式、上传数据。下面分别就实现三个功能的主要代碼作简单介绍。
数据获取调用 sock.recvfrom()模块,该函数以近似Socket套接字通信的方式将底层传感器的数据上传到网关。根据I/O采样的数据手册可以分别提取出温度、湿度和光强数据。部分代码如下:
payload,src_addr=sock.recvfrom(200)
light=float(ord(payload[6])*256+ord(payload[7]))*1200/1023
temp_c=(float(ord(payload[8])*256+ord(payload[9]))*1200/1023-500)/10
hum=float(ord(payload[10])*256+ord(payload[11]))*1200/1023
humidity=((hum*108.2/33.2)/5000-0.16)/0.0062
封装数据格式主要是指将数据封装为可扩展标记语言格式(XML),XML语言是一种简单的数据存储语言,也是用于数据交换的公共语言。通过设计的fmt_dp()函数可以将数据以XML的格式封装。部分代码如下,其中参数payload为上一步采集的数据。
upload_data=fmt_dp(payload, “serial_data_0621hz”, time.time() * 1000, “String”, “b6 encoded”)
数据上传是将已封装好的数据通过idigidata.send_to_idigi()函数送至设备云,主要程序如下,其中参数upload_data 为上一步封装为XML的数据。
status, number, error_msg = idigidata.send_to_idigi(upload_data, “DataPoint/stream_0703dxc.xml”)
DataPoint/stream_0703dxc.xml是事先在设备云建立的数据点,数据最终保存到该文件下。
至此,传感器所在环境的数据已采集完毕并上传到设备云,可在设备云上直接查看。
2.2 移动客户端应用的设计与实现
基于安卓的移动客户端设计主要分为五个模块,分别为用户登录模块,灯泡控制模块,灯泡显示模块,T/H/L显示模块以及系统信息模块,其框架如图3所示。
关于移动客户端的UI设计以简洁明了为主旨,设计了监测模式和控制模式。在监测模式下,三个位置的现场都将在同一个页面展现;在控制模式下,可以选择和切换不同位置。图4所示为客户端UI图。
3 实验结果
系统运行效果如图5所示,各传感器所在地的相关环境信息都展现在App上,同时可通过App打开灯泡。
可在设备云的数据服务窗口查看各类参数的走势。图6所示为最近一周的温度走势图。
通过实验证明,此系统实现了对传感器所在环境的温度、湿度和光强的监测,也实现了对开关的控制,并可将监控结果友好地展现在移动终端。
4 结 语
本文利用DIGI公司生产的XBee系列产品搭建起了基本的硬件平台,通过设计并部署物联网网关应用程序,成功将广州大学城,广州五山和惠州广工大研究院三个不同位置的环境信息上传到设备云端;设计的基于安卓的移动App通过调用设备云提供的API,实现了对三个位置的环境信息的监测以及对灯泡亮灭的控制。该系统将一个完整的物联网基础架构成功应用在实际中。未来的主要工作是在设备的安全性以及信息的互通性方面进行优化,以适应更加多变的环境,满足更加复杂的需求。在传输方式的选择上,可以考虑低功耗广域网。
参考文献
[1]丁天明.基于RFID技术的物联网在现代物流领域的应用[J].中国物流与采购, 2011(4):54-55.
[2] Columbus L. Roundup Of Internet of Things Forecasts And Market Estimates,2015[Z]. Forbes, December, 2015, 27.
[3] Gubbi J, Buyya R, Marusic S, et al. Internet of Things (IoT): A vision, architectural elements, and future directions[J].Future generation computer systems,2013,29(7): 1645-1660.
[4]孙利民,沈杰,朱红松.从云计算到海计算:论物联网的体系结构[J].中兴通讯技术,2011,17(1):3-7.
[5]张建勋,古志民,郑超.云计算研究进展综述[J].计算机应用研究.2010,27(2):429-433.
[6]车楠,刘胜辉.物联网技术原理及实现—AnduiBee 开源物联网解决路线[M].北京:人民邮电出版社,2014.
[7]汪永鹏. 物联网感知层智能网关及开放服务接口的研究与实现[D].北京:北京邮电大学, 2013.
[8] Digi. iDigi Device Cloud - Application Platform for Device Networks.datasheet[EB/OL]. http://www.digi.com/pdf/dsidigidevicecloud.pdf, Jan 2012.
[9]陈斌.云计算在物联网中的作用[J].中国防伪报道.2012(1):52-54.
[10]曹龙,刘炜,曾力.基于Qt on Android平台的空气质量监测系统手机客户端设计[J].电子技术与软件工程,2017(2):56-57.