文献标识码: A
DOI:10.16157/j.issn.0258-7998.2015.08.004
中文引用格式: 朱智星,白鹏飞,罗智杰,等. 基于微信公众平台的云智能采集系统的设计[J].电子技术应用,2015,41(8):17-19.
英文引用格式: Zhu Zhixing,Bai Pengfei,Luo Zhijie,et al. Design of cloud intelligent acquisition system based on WeChat public platform[J].Application of Electronic Technique,2015,41(8):17-19.
0 引言
智能采集系统完成了对数据的实时采集和对传感设备的实时控制,它经历了较长时间的发展,并且取得了快速的进步。但是随着社会的发展,网络技术的进步,特别是物联网技术的发展,使得人们对智能采集系统也提出了更高的要求,在追求可视化的同时,希望可以更加方便快捷地参与到系统的监控与操作当中,并且系统可以接入互联网进而通过网络来控制系统。本文所研究的智能采集系统利用时下十分流行的微信公众平台作为媒介,使用微信便可以可视化地完成对采集设备的远程控制和对采集数据的收集,从而使用户实时地参与到了系统之中,真正意义上实现了云系统的设计。
1 基于微信公众平台和ZYBO的云智能采集系统
1.1 系统研究背景
当前的嵌入式设计中,对于高性能、低功耗且扩展性强的处理器的要求越来越高的同时,追求软件和硬件的协同设计、软件和硬件的协同调试以及嵌入式处理器和I/O口在单芯片内的完美结合。传统的数据采集系统大多采用ARM或者FPGA方案,并不能满足这样的设计要求。本设计采用的ZYBO(ZYnq BOard)是一款基于Xilinx-7000系列Z-7010构建的高性能、低功耗的嵌入式即用型软件和数字电路开发平台。Z-7010是基于Xilinx全可编程片上系统(ALL Programmable System-on-Chip)结构,该结构在单芯片内集成了一个双核ARM Cortex-A9处理器和Xilinx 7系列的FPGA。ARM+FPGA的体系结构提供灵活的通信和外部扩展的功能,体现了软硬结合的设计思想,能够很好地完成处理器在与微信进行通信的同时还能控制外部传感器外设的设计需求。
现存的数据采集系统在用户参与方面存在一些不足,本设计创新性地使用了微信公众平台,使得用户参与性更强,弥补了之前的不足,实现了云系统设计的概念。微信是腾讯公司于2011年1月21日推出的一款免费的即时通信软件,支持跨系统平台、跨通信运营商通过网络发送文字、语音、图片和视频等信息。微信提供公众平台、朋友圈、消息推送等功能,可以通过摇一摇、搜索号码、附近的人、扫二维码方式添加好友和关注公众平台[1]。微信公众平台是腾讯公司在微信连接人与人的基础上建立的服务功能模块,于2012年8月18日推出。通过微信公众平台,实现了微信与第三方的连接,也就是实现了人与服务的连接。通过这一平台,每一个人都可以打造属于自己的一个微信公众帐号,从而实现与特定群体的文字、图片和语音的全方位沟通互动[2]。
1.2 系统实现架构
图1为本设计的总体实现框图。ZYBO主控模块完成与蓝牙模块和传感器模块的互连。主控模块又可分为处理系统(Processing System,PS)部分和可编程逻辑(Programmable Logic,PL)部分。PS部分包括双核ARM Cortex-A9、存储器接口以及通用外设接口等资源。PL部分也就是常规的FPGA,通过PL生成的IP核可以作为ARM内核的扩展外围设备或者ARM内核的加速部件[3]。其中PS部分通过串口与蓝牙模块相连,本设计使用的是主从一体TI CC2541蓝牙4.0 BLE串口模块。在PL部分建立IP核驱动传感器模块,本设计使用的传感器是PmodHMT高精度温湿度传感器。该传感器支持ZYBO板上的Pmod接口,具有多种分辨率,可以通过用户寄存器的配置来适应实际应用的需求。该传感器模块完成了本系统的数据采集功能,可对范围-40 ℃~85 ℃的温度和0~100%的相对湿度进行测量,温湿度分辨率分别为14 bit和12 bit。蓝牙模块与手机微信之间通过4.0 BLE蓝牙相连接,具体协议为微信蓝牙外设协“AirSync”。该协议支持经典蓝牙和4.0 BLE蓝牙,支持iOS和Android系统。该协议打通了主控开发板、蓝牙模块与自己建立的服务器之间的数据通路,支持将开发板上的数据发送到自己建立的服务器,同时也支持将服务器中的数据发送到开发板。不仅如此,该协议还打通了开发板与微信服务器之间的数据通路,使得开发板与微信服务器之间也可以实现数据互传。
2 开发板端设计
本设计的主控开发板是ZYBO,由于其本身PS+PL的架构,故将开发板端的设计分为PS部分的设计和PL部分的设计。又因为ZYBO是软硬件均可进行编程的设计平台,所以开发板端的设计同时包括了硬件设计和软件设计。图2为开发板端的设计框图。
2.1 PS部分设计
PS部分以双ARM Cortex-A9核为主体,针对本设计利用UART接口与蓝牙串口模块进行串行通信。PS内部有两个UART,UART控制器通过APB总线和PS进行内部连接[4],而本设计仅使用一个UART接口。同时这部分设计还包括对于一些存储器的控制。
由于本设计使用了PL部分,而PL可以看成是PS的一个可以重新配置的外设,所以PS与PL的通信成为一个很重要的问题。PS与PL之间可以通过使用多个接口和信号实现紧密或者松散的耦合关系,用于PS与PL数据交换的总线接口有2个AXI_GP主设备接口、2个AXI_GP从设备接口、4个AXI_HP从设备接口和1个AXI_ACP接口,这些接口属于功能性接口,基于AXI总线协议[4]。PS内部的AXI总线是按照AMBA总线协议[5]来设计的。本设计在PS部分采用了AXI_GP主设备接口M_AXI_GP0,这就提供了PS对PL的访问机制。
2.2 PL部分设计
PL的本质就是Xilinx FPGA,它的加入为传统的ARM SoC芯片提供了更多的灵活性设计,同时也提供了更丰富的可配置资源。
由于本设计使用了PmodHMT高精度温湿度传感器,从而需要使用Pmod接口。Pmod接口是由Digilent公司开发的用于低速LPC外设与主控板之间的接口协议[4],ZYBO上有6个Pmod接口,其中有5个Pmod接口(JA、JB、JC、JD、JE)连接到ZYBO的PL部分,另外一个Pmod接口(JF)连接到PS部分的MIO总线。PmodHMT只需使用标准Pmod接口(JE),即把传感器模块与PL部分连接起来当作PS的外设。PS部分使用了AXI_GP接口,由于本设计对传感器的控制所传输的数据量较小,只需要采用AXI_Lite接口即可。
本设计需要构建一个用户IP核以实现对传感器的控制,该IP核基于AXI_Lite规范,控制温湿度传感器采集环境的温度和湿度信息。用户IP核与PS端的M_AXI_GP0之间的连接需要AXI Interconnect模块,但该模块不需要用户设计,系统会自动生成,同时生成的还有PS端的reset模块。
3 微信端设计
微信端的设计目的是以“AirSync”为基础,通过对微信服务器和自己建立的服务器的配置以完成开发板端与微信端的数据通信。本设计的具体功能是用户使用微信扫描开发板上的二维码,绑定开发板;然后进入公众号,微信会自动与开发板端连接,当用户点击公众号中的“采集”菜单时,传感器会采集实时的温湿度信息,然后将信息发送到服务器,服务器收到消息后,再将信息发送到公众平台显示,内容为温湿度的详情。微信官方的微信蓝牙外设协议框图如图3,在本设计中外设对应开发板端,厂商服务器对应自己建立的服务器。
微信端的设计首先要注册公众账号(服务号),然后开通相关的硬件功能权限。自己建立的服务器需要在公众平台中接入,但要注意填写服务器地址(URL)、Token和EncodingAESKey。然后需要把所需的代码部署到服务器,但要注意微信公众号接口只支持80接口[6]。
服务器的开发需要完成处理设备的绑定、解绑等功能,同时还需要完成和设备进行消息收发的功能。设计的流程框图如图4和图5。
图4为用户进入公众平台并进行关注和绑定开发板的过程。当用户关注公众号和绑定时,微信会把消息推送给服务器,服务器收到消息后会反馈消息给用户显示绑定成功。完成绑定后用户便可以通过微信控和制操作设备。在绑定的过程中,服务器要将用户与设备之间的绑定关系进行存储,以便接下来用户通过微信操作设备时,查询到具体的设备信息,然后精确地进行数据和控制信息的收发。
图5为绑定成功后操作设备的具体过程。用户点击功能菜单后,点击信息会推送给服务器,然后服务器会给设备推送push信息,设备收到该消息不需要回复服务器,只需要作出相应的动作。本设计中传感器会进行温湿度的测量。测量后,设备会向服务器发出一个req消息,服务器收到该消息后必须回复一个resp消息给设备以表示收到设备的请求。最后服务器发送消息给微信端,内容为具体的测量结果。
4 结束语
本设计采用高性能、低功耗的嵌入式软硬件协同设计的ZYBO设计平台,PS部分利用串口控制蓝牙模块,PL部分构建了一个用户IP核来控制传感器模块,PS部分与PL部分通过AXI总线进行通信。开发板端与微信端以微信蓝牙外设协议为基础实现数据通信,使得用户可以通过公众平台实时地参与到该云采集系统中来。接下来的工作可以在了解更多微信公众平台功能的基础上优化设计功能和细节,例如可以加入语音输入控制和地理位置显示等功能。
参考文献
[1] 肖金华,黄丽红.基于微信的图书馆信息服务模式研究[J].现代情报,2013(6):55-57.
[2] 陈锦波.基于微信的图书馆信息资源推送研究[J].四川图书馆学报,2013(4):7-10.
[3] 高伟林,曹峰,佟川,等.基于Zynq的图形生成电路设计与实现[J].液晶与显示,2014,29(6):944-949.
[4] 陆佳华,潘祖龙,彭竞宇,等.嵌入式系统软硬件协同设计实战指南:基于Xilinx ZYNQ(第2版)[M].北京:机械工业出版社,2014.
[5] 何宾.Xilinx All Programmable Zynq 7000 SoC设计指南[M].北京:清华大学出版社,2013.
[6] 腾讯.微信公众平台开发者文档[EB/OL].[2015-04-15].http://mp.weixin.qq.com/wiki/home/index.html.