文獻(xiàn)標(biāo)識(shí)碼: A
DOI:10.16157/j.issn.0258-7998.2015.08.004
中文引用格式: 朱智星,白鵬飛,羅智杰,等. 基于微信公眾平臺(tái)的云智能采集系統(tǒng)的設(shè)計(jì)[J].電子技術(shù)應(yīng)用,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 引言
智能采集系統(tǒng)完成了對(duì)數(shù)據(jù)的實(shí)時(shí)采集和對(duì)傳感設(shè)備的實(shí)時(shí)控制,它經(jīng)歷了較長(zhǎng)時(shí)間的發(fā)展,并且取得了快速的進(jìn)步。但是隨著社會(huì)的發(fā)展,網(wǎng)絡(luò)技術(shù)的進(jìn)步,特別是物聯(lián)網(wǎng)技術(shù)的發(fā)展,使得人們對(duì)智能采集系統(tǒng)也提出了更高的要求,在追求可視化的同時(shí),希望可以更加方便快捷地參與到系統(tǒng)的監(jiān)控與操作當(dāng)中,并且系統(tǒng)可以接入互聯(lián)網(wǎng)進(jìn)而通過(guò)網(wǎng)絡(luò)來(lái)控制系統(tǒng)。本文所研究的智能采集系統(tǒng)利用時(shí)下十分流行的微信公眾平臺(tái)作為媒介,使用微信便可以可視化地完成對(duì)采集設(shè)備的遠(yuǎn)程控制和對(duì)采集數(shù)據(jù)的收集,從而使用戶實(shí)時(shí)地參與到了系統(tǒng)之中,真正意義上實(shí)現(xiàn)了云系統(tǒng)的設(shè)計(jì)。
1 基于微信公眾平臺(tái)和ZYBO的云智能采集系統(tǒng)
1.1 系統(tǒng)研究背景
當(dāng)前的嵌入式設(shè)計(jì)中,對(duì)于高性能、低功耗且擴(kuò)展性強(qiáng)的處理器的要求越來(lái)越高的同時(shí),追求軟件和硬件的協(xié)同設(shè)計(jì)、軟件和硬件的協(xié)同調(diào)試以及嵌入式處理器和I/O口在單芯片內(nèi)的完美結(jié)合。傳統(tǒng)的數(shù)據(jù)采集系統(tǒng)大多采用ARM或者FPGA方案,并不能滿足這樣的設(shè)計(jì)要求。本設(shè)計(jì)采用的ZYBO(ZYnq BOard)是一款基于Xilinx-7000系列Z-7010構(gòu)建的高性能、低功耗的嵌入式即用型軟件和數(shù)字電路開發(fā)平臺(tái)。Z-7010是基于Xilinx全可編程片上系統(tǒng)(ALL Programmable System-on-Chip)結(jié)構(gòu),該結(jié)構(gòu)在單芯片內(nèi)集成了一個(gè)雙核ARM Cortex-A9處理器和Xilinx 7系列的FPGA。ARM+FPGA的體系結(jié)構(gòu)提供靈活的通信和外部擴(kuò)展的功能,體現(xiàn)了軟硬結(jié)合的設(shè)計(jì)思想,能夠很好地完成處理器在與微信進(jìn)行通信的同時(shí)還能控制外部傳感器外設(shè)的設(shè)計(jì)需求。
現(xiàn)存的數(shù)據(jù)采集系統(tǒng)在用戶參與方面存在一些不足,本設(shè)計(jì)創(chuàng)新性地使用了微信公眾平臺(tái),使得用戶參與性更強(qiáng),彌補(bǔ)了之前的不足,實(shí)現(xiàn)了云系統(tǒng)設(shè)計(jì)的概念。微信是騰訊公司于2011年1月21日推出的一款免費(fèi)的即時(shí)通信軟件,支持跨系統(tǒng)平臺(tái)、跨通信運(yùn)營(yíng)商通過(guò)網(wǎng)絡(luò)發(fā)送文字、語(yǔ)音、圖片和視頻等信息。微信提供公眾平臺(tái)、朋友圈、消息推送等功能,可以通過(guò)搖一搖、搜索號(hào)碼、附近的人、掃二維碼方式添加好友和關(guān)注公眾平臺(tái)[1]。微信公眾平臺(tái)是騰訊公司在微信連接人與人的基礎(chǔ)上建立的服務(wù)功能模塊,于2012年8月18日推出。通過(guò)微信公眾平臺(tái),實(shí)現(xiàn)了微信與第三方的連接,也就是實(shí)現(xiàn)了人與服務(wù)的連接。通過(guò)這一平臺(tái),每一個(gè)人都可以打造屬于自己的一個(gè)微信公眾帳號(hào),從而實(shí)現(xiàn)與特定群體的文字、圖片和語(yǔ)音的全方位溝通互動(dòng)[2]。
1.2 系統(tǒng)實(shí)現(xiàn)架構(gòu)
圖1為本設(shè)計(jì)的總體實(shí)現(xiàn)框圖。ZYBO主控模塊完成與藍(lán)牙模塊和傳感器模塊的互連。主控模塊又可分為處理系統(tǒng)(Processing System,PS)部分和可編程邏輯(Programmable Logic,PL)部分。PS部分包括雙核ARM Cortex-A9、存儲(chǔ)器接口以及通用外設(shè)接口等資源。PL部分也就是常規(guī)的FPGA,通過(guò)PL生成的IP核可以作為ARM內(nèi)核的擴(kuò)展外圍設(shè)備或者ARM內(nèi)核的加速部件[3]。其中PS部分通過(guò)串口與藍(lán)牙模塊相連,本設(shè)計(jì)使用的是主從一體TI CC2541藍(lán)牙4.0 BLE串口模塊。在PL部分建立IP核驅(qū)動(dòng)傳感器模塊,本設(shè)計(jì)使用的傳感器是PmodHMT高精度溫濕度傳感器。該傳感器支持ZYBO板上的Pmod接口,具有多種分辨率,可以通過(guò)用戶寄存器的配置來(lái)適應(yīng)實(shí)際應(yīng)用的需求。該傳感器模塊完成了本系統(tǒng)的數(shù)據(jù)采集功能,可對(duì)范圍-40 ℃~85 ℃的溫度和0~100%的相對(duì)濕度進(jìn)行測(cè)量,溫濕度分辨率分別為14 bit和12 bit。藍(lán)牙模塊與手機(jī)微信之間通過(guò)4.0 BLE藍(lán)牙相連接,具體協(xié)議為微信藍(lán)牙外設(shè)協(xié)“AirSync”。該協(xié)議支持經(jīng)典藍(lán)牙和4.0 BLE藍(lán)牙,支持iOS和Android系統(tǒng)。該協(xié)議打通了主控開發(fā)板、藍(lán)牙模塊與自己建立的服務(wù)器之間的數(shù)據(jù)通路,支持將開發(fā)板上的數(shù)據(jù)發(fā)送到自己建立的服務(wù)器,同時(shí)也支持將服務(wù)器中的數(shù)據(jù)發(fā)送到開發(fā)板。不僅如此,該協(xié)議還打通了開發(fā)板與微信服務(wù)器之間的數(shù)據(jù)通路,使得開發(fā)板與微信服務(wù)器之間也可以實(shí)現(xiàn)數(shù)據(jù)互傳。
2 開發(fā)板端設(shè)計(jì)
本設(shè)計(jì)的主控開發(fā)板是ZYBO,由于其本身PS+PL的架構(gòu),故將開發(fā)板端的設(shè)計(jì)分為PS部分的設(shè)計(jì)和PL部分的設(shè)計(jì)。又因?yàn)閆YBO是軟硬件均可進(jìn)行編程的設(shè)計(jì)平臺(tái),所以開發(fā)板端的設(shè)計(jì)同時(shí)包括了硬件設(shè)計(jì)和軟件設(shè)計(jì)。圖2為開發(fā)板端的設(shè)計(jì)框圖。
2.1 PS部分設(shè)計(jì)
PS部分以雙ARM Cortex-A9核為主體,針對(duì)本設(shè)計(jì)利用UART接口與藍(lán)牙串口模塊進(jìn)行串行通信。PS內(nèi)部有兩個(gè)UART,UART控制器通過(guò)APB總線和PS進(jìn)行內(nèi)部連接[4],而本設(shè)計(jì)僅使用一個(gè)UART接口。同時(shí)這部分設(shè)計(jì)還包括對(duì)于一些存儲(chǔ)器的控制。
由于本設(shè)計(jì)使用了PL部分,而PL可以看成是PS的一個(gè)可以重新配置的外設(shè),所以PS與PL的通信成為一個(gè)很重要的問(wèn)題。PS與PL之間可以通過(guò)使用多個(gè)接口和信號(hào)實(shí)現(xiàn)緊密或者松散的耦合關(guān)系,用于PS與PL數(shù)據(jù)交換的總線接口有2個(gè)AXI_GP主設(shè)備接口、2個(gè)AXI_GP從設(shè)備接口、4個(gè)AXI_HP從設(shè)備接口和1個(gè)AXI_ACP接口,這些接口屬于功能性接口,基于AXI總線協(xié)議[4]。PS內(nèi)部的AXI總線是按照AMBA總線協(xié)議[5]來(lái)設(shè)計(jì)的。本設(shè)計(jì)在PS部分采用了AXI_GP主設(shè)備接口M_AXI_GP0,這就提供了PS對(duì)PL的訪問(wèn)機(jī)制。
2.2 PL部分設(shè)計(jì)
PL的本質(zhì)就是Xilinx FPGA,它的加入為傳統(tǒng)的ARM SoC芯片提供了更多的靈活性設(shè)計(jì),同時(shí)也提供了更豐富的可配置資源。
由于本設(shè)計(jì)使用了PmodHMT高精度溫濕度傳感器,從而需要使用Pmod接口。Pmod接口是由Digilent公司開發(fā)的用于低速LPC外設(shè)與主控板之間的接口協(xié)議[4],ZYBO上有6個(gè)Pmod接口,其中有5個(gè)Pmod接口(JA、JB、JC、JD、JE)連接到ZYBO的PL部分,另外一個(gè)Pmod接口(JF)連接到PS部分的MIO總線。PmodHMT只需使用標(biāo)準(zhǔn)Pmod接口(JE),即把傳感器模塊與PL部分連接起來(lái)當(dāng)作PS的外設(shè)。PS部分使用了AXI_GP接口,由于本設(shè)計(jì)對(duì)傳感器的控制所傳輸?shù)臄?shù)據(jù)量較小,只需要采用AXI_Lite接口即可。
本設(shè)計(jì)需要構(gòu)建一個(gè)用戶IP核以實(shí)現(xiàn)對(duì)傳感器的控制,該IP核基于AXI_Lite規(guī)范,控制溫濕度傳感器采集環(huán)境的溫度和濕度信息。用戶IP核與PS端的M_AXI_GP0之間的連接需要AXI Interconnect模塊,但該模塊不需要用戶設(shè)計(jì),系統(tǒng)會(huì)自動(dòng)生成,同時(shí)生成的還有PS端的reset模塊。
3 微信端設(shè)計(jì)
微信端的設(shè)計(jì)目的是以“AirSync”為基礎(chǔ),通過(guò)對(duì)微信服務(wù)器和自己建立的服務(wù)器的配置以完成開發(fā)板端與微信端的數(shù)據(jù)通信。本設(shè)計(jì)的具體功能是用戶使用微信掃描開發(fā)板上的二維碼,綁定開發(fā)板;然后進(jìn)入公眾號(hào),微信會(huì)自動(dòng)與開發(fā)板端連接,當(dāng)用戶點(diǎn)擊公眾號(hào)中的“采集”菜單時(shí),傳感器會(huì)采集實(shí)時(shí)的溫濕度信息,然后將信息發(fā)送到服務(wù)器,服務(wù)器收到消息后,再將信息發(fā)送到公眾平臺(tái)顯示,內(nèi)容為溫濕度的詳情。微信官方的微信藍(lán)牙外設(shè)協(xié)議框圖如圖3,在本設(shè)計(jì)中外設(shè)對(duì)應(yīng)開發(fā)板端,廠商服務(wù)器對(duì)應(yīng)自己建立的服務(wù)器。
微信端的設(shè)計(jì)首先要注冊(cè)公眾賬號(hào)(服務(wù)號(hào)),然后開通相關(guān)的硬件功能權(quán)限。自己建立的服務(wù)器需要在公眾平臺(tái)中接入,但要注意填寫服務(wù)器地址(URL)、Token和EncodingAESKey。然后需要把所需的代碼部署到服務(wù)器,但要注意微信公眾號(hào)接口只支持80接口[6]。
服務(wù)器的開發(fā)需要完成處理設(shè)備的綁定、解綁等功能,同時(shí)還需要完成和設(shè)備進(jìn)行消息收發(fā)的功能。設(shè)計(jì)的流程框圖如圖4和圖5。
圖4為用戶進(jìn)入公眾平臺(tái)并進(jìn)行關(guān)注和綁定開發(fā)板的過(guò)程。當(dāng)用戶關(guān)注公眾號(hào)和綁定時(shí),微信會(huì)把消息推送給服務(wù)器,服務(wù)器收到消息后會(huì)反饋消息給用戶顯示綁定成功。完成綁定后用戶便可以通過(guò)微信控和制操作設(shè)備。在綁定的過(guò)程中,服務(wù)器要將用戶與設(shè)備之間的綁定關(guān)系進(jìn)行存儲(chǔ),以便接下來(lái)用戶通過(guò)微信操作設(shè)備時(shí),查詢到具體的設(shè)備信息,然后精確地進(jìn)行數(shù)據(jù)和控制信息的收發(fā)。
圖5為綁定成功后操作設(shè)備的具體過(guò)程。用戶點(diǎn)擊功能菜單后,點(diǎn)擊信息會(huì)推送給服務(wù)器,然后服務(wù)器會(huì)給設(shè)備推送push信息,設(shè)備收到該消息不需要回復(fù)服務(wù)器,只需要作出相應(yīng)的動(dòng)作。本設(shè)計(jì)中傳感器會(huì)進(jìn)行溫濕度的測(cè)量。測(cè)量后,設(shè)備會(huì)向服務(wù)器發(fā)出一個(gè)req消息,服務(wù)器收到該消息后必須回復(fù)一個(gè)resp消息給設(shè)備以表示收到設(shè)備的請(qǐng)求。最后服務(wù)器發(fā)送消息給微信端,內(nèi)容為具體的測(cè)量結(jié)果。
4 結(jié)束語(yǔ)
本設(shè)計(jì)采用高性能、低功耗的嵌入式軟硬件協(xié)同設(shè)計(jì)的ZYBO設(shè)計(jì)平臺(tái),PS部分利用串口控制藍(lán)牙模塊,PL部分構(gòu)建了一個(gè)用戶IP核來(lái)控制傳感器模塊,PS部分與PL部分通過(guò)AXI總線進(jìn)行通信。開發(fā)板端與微信端以微信藍(lán)牙外設(shè)協(xié)議為基礎(chǔ)實(shí)現(xiàn)數(shù)據(jù)通信,使得用戶可以通過(guò)公眾平臺(tái)實(shí)時(shí)地參與到該云采集系統(tǒng)中來(lái)。接下來(lái)的工作可以在了解更多微信公眾平臺(tái)功能的基礎(chǔ)上優(yōu)化設(shè)計(jì)功能和細(xì)節(jié),例如可以加入語(yǔ)音輸入控制和地理位置顯示等功能。
參考文獻(xiàn)
[1] 肖金華,黃麗紅.基于微信的圖書館信息服務(wù)模式研究[J].現(xiàn)代情報(bào),2013(6):55-57.
[2] 陳錦波.基于微信的圖書館信息資源推送研究[J].四川圖書館學(xué)報(bào),2013(4):7-10.
[3] 高偉林,曹峰,佟川,等.基于Zynq的圖形生成電路設(shè)計(jì)與實(shí)現(xiàn)[J].液晶與顯示,2014,29(6):944-949.
[4] 陸佳華,潘祖龍,彭競(jìng)宇,等.嵌入式系統(tǒng)軟硬件協(xié)同設(shè)計(jì)實(shí)戰(zhàn)指南:基于Xilinx ZYNQ(第2版)[M].北京:機(jī)械工業(yè)出版社,2014.
[5] 何賓.Xilinx All Programmable Zynq 7000 SoC設(shè)計(jì)指南[M].北京:清華大學(xué)出版社,2013.
[6] 騰訊.微信公眾平臺(tái)開發(fā)者文檔[EB/OL].[2015-04-15].http://mp.weixin.qq.com/wiki/home/index.html.