羅家兵
(廣州大學(xué)華軟軟件學(xué)院計(jì)算機(jī)系,廣州 510990)
智能實(shí)驗(yàn)箱的設(shè)計(jì)與實(shí)現(xiàn)
羅家兵
(廣州大學(xué)華軟軟件學(xué)院計(jì)算機(jī)系,廣州 510990)
設(shè)計(jì)一款能夠自動(dòng)檢測(cè)實(shí)驗(yàn)設(shè)備狀態(tài)、自動(dòng)記錄實(shí)驗(yàn)設(shè)備使用情況的智能實(shí)驗(yàn)箱,其主要由設(shè)備信息檢測(cè)、傳輸兩部分組成。在硬件方面,主要研究ZigBee無(wú)線網(wǎng)絡(luò)、超聲波傳感器、觸碰傳感器、RFID讀卡器、壓力傳感器、繼電器、s5pv210嵌入式開發(fā)板的外圍設(shè)備;在軟件方面,主要研究Linux操作系統(tǒng)、QT的串口編程、網(wǎng)絡(luò)編程、JSON數(shù)據(jù)的解析等。
傳感器;ZigBee無(wú)線網(wǎng)絡(luò);嵌入式Linux
目前,存放實(shí)驗(yàn)設(shè)備的實(shí)驗(yàn)箱僅僅作為存放實(shí)驗(yàn)設(shè)備的一個(gè)容器而已,無(wú)法自動(dòng)記錄實(shí)驗(yàn)設(shè)備的相關(guān)信息,隨著物聯(lián)網(wǎng)技術(shù)的廣發(fā)應(yīng)用,有必要讓實(shí)驗(yàn)箱進(jìn)行信息化的改造,實(shí)現(xiàn)實(shí)驗(yàn)箱的智能化:
(1)可以預(yù)先設(shè)定實(shí)驗(yàn)箱的可能打開時(shí)間,例如上午九點(diǎn)某某班來(lái)做微機(jī)原理實(shí)驗(yàn),學(xué)生只需要在實(shí)驗(yàn)臺(tái)上登錄驗(yàn)證,實(shí)驗(yàn)箱即可自動(dòng)打開,這樣實(shí)驗(yàn)管理員就不用跑到實(shí)驗(yàn)室逐個(gè)登記、發(fā)放實(shí)驗(yàn)箱;
(2)實(shí)驗(yàn)管理員坐在值班室就可以遠(yuǎn)程觀察各實(shí)驗(yàn)箱的狀態(tài);
(3)如果某臺(tái)實(shí)驗(yàn)箱出現(xiàn)問題,由于實(shí)驗(yàn)箱的自動(dòng)記載使用記錄,這樣可以追查到是否是故意損壞。
近年來(lái),物聯(lián)網(wǎng)技術(shù)的逐步應(yīng)用已經(jīng)給人們的生產(chǎn)、生活帶來(lái)了巨大的便利,相關(guān)的技術(shù)人員也在試圖把物聯(lián)網(wǎng)應(yīng)用到更加廣泛的領(lǐng)域。在各個(gè)科研機(jī)構(gòu)、高校都會(huì)用到大量的實(shí)驗(yàn)設(shè)備,也需要對(duì)實(shí)驗(yàn)設(shè)備進(jìn)行有效的管理。物聯(lián)網(wǎng)技術(shù)也開始在實(shí)驗(yàn)設(shè)備管理方面應(yīng)用起來(lái)。
目前市面上有關(guān)人員研究最多的是把物聯(lián)網(wǎng)的RFID技術(shù)應(yīng)用到實(shí)驗(yàn)設(shè)備的管理,其主要是給每一實(shí)驗(yàn)設(shè)備都貼上了一個(gè)RFID標(biāo)簽,通過該標(biāo)簽、讀寫器、后臺(tái)數(shù)據(jù)庫(kù)即可完成設(shè)備的智能化識(shí)別、管理,技術(shù)層面上都大致涉及下面幾個(gè)方面:
①為實(shí)驗(yàn)箱配備具有唯一ID號(hào)的RFID標(biāo)簽,作為實(shí)驗(yàn)箱的識(shí)別標(biāo)志;
②為實(shí)驗(yàn)箱的每一模塊配備具有唯一ID號(hào)的RFID標(biāo)簽,作為模塊的識(shí)別標(biāo)志;
③RFID閱讀器讀寫RFID標(biāo)簽的ID號(hào),通過Zig-Bee網(wǎng)絡(luò)將讀取的數(shù)據(jù)發(fā)送到主節(jié)點(diǎn);
④主節(jié)點(diǎn)將數(shù)據(jù)傳送給上位機(jī),進(jìn)行數(shù)據(jù)分析、存檔和處理,實(shí)現(xiàn)實(shí)驗(yàn)箱和模塊的入庫(kù)、借出、查詢和歸還等功能。
已有的物聯(lián)網(wǎng)在實(shí)驗(yàn)設(shè)備上的應(yīng)用主要是從設(shè)備的類別、數(shù)量上進(jìn)行了有效的管理,也的確大大提高了管理的效率,但是卻沒有對(duì)存放實(shí)驗(yàn)設(shè)備的實(shí)驗(yàn)箱的管理,這樣就無(wú)法自動(dòng)獲取實(shí)驗(yàn)設(shè)備何時(shí)從實(shí)驗(yàn)箱里取走、放回的信息。
2.1 系統(tǒng)模塊分析
系統(tǒng)可以分為三層:感知程、網(wǎng)絡(luò)傳輸層、應(yīng)用層,
如圖1所示。
圖1 系統(tǒng)模塊結(jié)構(gòu)圖
(1)Android手機(jī)App與Web應(yīng)用模塊
Web作為服務(wù)器實(shí)現(xiàn)對(duì)MySQL數(shù)據(jù)庫(kù)的增刪改查,方便管理人員后臺(tái)的處理以及提供相關(guān)的接口實(shí)現(xiàn)與嵌入式Linux網(wǎng)關(guān)的數(shù)據(jù)交互。Android手機(jī)App應(yīng)用主要是讓管理員能夠?qū)崟r(shí)的觀察到實(shí)驗(yàn)箱的狀態(tài),以及學(xué)生的一些相關(guān)信息,必要時(shí)可以控制實(shí)驗(yàn)箱的開關(guān)。
(2)嵌入式Linux網(wǎng)關(guān)數(shù)據(jù)傳輸模塊
嵌入式Linux是整個(gè)系統(tǒng)的核心,在整個(gè)系統(tǒng)中起著承上啟下的作用。底層ZigBee無(wú)線網(wǎng)絡(luò)通過串口與嵌入式Linux網(wǎng)關(guān)進(jìn)行數(shù)據(jù)的交互,使得底層數(shù)據(jù)能夠有效的上發(fā)到應(yīng)用層;而應(yīng)用層與嵌入式Linux網(wǎng)關(guān)通過HTTP協(xié)議進(jìn)行數(shù)據(jù)的交互,讓上層應(yīng)用可以間接的控制到底層。ZigBee無(wú)線網(wǎng)絡(luò)數(shù)據(jù)采集與控制模塊。
利用RFID讀卡器采集學(xué)生的卡號(hào)、超聲波模塊檢測(cè)實(shí)驗(yàn)箱是否存在、觸碰傳感器檢測(cè)實(shí)驗(yàn)箱的開關(guān)狀態(tài)、壓力傳感器檢測(cè)實(shí)驗(yàn)箱內(nèi)模塊是否存在,實(shí)時(shí)的把信息發(fā)送到嵌入式Linux網(wǎng)關(guān)。在底層ZigBee無(wú)線網(wǎng)絡(luò)中還使用了繼電器、電磁鎖來(lái)控制實(shí)驗(yàn)箱的開與關(guān)。實(shí)現(xiàn)了底層數(shù)據(jù)的采集與控制。
2.2 系統(tǒng)架構(gòu)設(shè)計(jì)
根據(jù)圖2所示,基于物聯(lián)網(wǎng)的智能實(shí)驗(yàn)箱分為三大層。感知層:包括RFID讀卡器、超聲波模塊、壓力傳感器、繼電器、電磁鎖、ZigBee節(jié)點(diǎn)、ZigBee協(xié)調(diào)器;網(wǎng)絡(luò)傳輸層:包括嵌入式Linux、Web服務(wù)器、MySql數(shù)據(jù)庫(kù);應(yīng)用層:包括手機(jī)android端、網(wǎng)頁(yè)端。整個(gè)系統(tǒng)實(shí)現(xiàn)了從感知層到應(yīng)用層、從應(yīng)用層到感知層數(shù)據(jù)之間的傳輸,實(shí)現(xiàn)了數(shù)據(jù)的存儲(chǔ),以及底層的控制。
嵌入式Linux網(wǎng)關(guān)與ZigBee主要是通過串口進(jìn)行數(shù)據(jù)的交互。ZigBee協(xié)調(diào)器通過HalUARTWrite函數(shù)把數(shù)據(jù)通過串口發(fā)送給嵌入式Linux網(wǎng)關(guān),嵌入式Linux網(wǎng)關(guān)則調(diào)用串口的readAll函數(shù)進(jìn)行數(shù)據(jù)的接收;嵌入式Linux網(wǎng)關(guān)通過串口的write函數(shù)給ZigBee協(xié)調(diào)器發(fā)送數(shù)據(jù),ZigBee則通過回調(diào)函數(shù)與HalUARTRead函數(shù)進(jìn)行數(shù)據(jù)的接收
圖2 系統(tǒng)架構(gòu)圖
3.1 網(wǎng)關(guān)與ZigBee通信協(xié)議的設(shè)計(jì)
嵌入式Linux網(wǎng)關(guān)與ZigBee相關(guān)接口:
(1)網(wǎng)關(guān)串口讀寫接口
(2)ZigBee串口接口
3.2 網(wǎng)關(guān)與web服務(wù)器通信協(xié)議設(shè)計(jì)
嵌入式Linux網(wǎng)關(guān)與Web服務(wù)器之間的數(shù)據(jù)交互主要是通過HTTP協(xié)議實(shí)現(xiàn)。嵌入式Linux網(wǎng)關(guān)通過get請(qǐng)求向Web服務(wù)器請(qǐng)求服務(wù),而Web服務(wù)器則以JSON的格式返回相關(guān)數(shù)據(jù),嵌入式Linux網(wǎng)關(guān)接收到JSON數(shù)據(jù)后,進(jìn)行數(shù)據(jù)解析并做相關(guān)的數(shù)據(jù)處理。
嵌入式Linux網(wǎng)關(guān)與Web服務(wù)器相關(guān)接口:
(1)狀態(tài)接口
請(qǐng)求參數(shù)
state:0試驗(yàn)箱不存在,1存在
door:0柜子關(guān)閉1打開
matel_00表示器材名稱00表示器材編號(hào)0表示不存在1表示存在
matel_01如上
返回參數(shù)
(2)登錄接口
請(qǐng)求參數(shù)
rfid_id:用戶id
opernation:open打開試驗(yàn)箱
返回參數(shù)
errorcode00成功
msg服務(wù)器提示信息
4.1 實(shí)驗(yàn)箱信息檢測(cè)模塊的實(shí)現(xiàn)
(1)實(shí)驗(yàn)設(shè)備存在檢測(cè)模塊的實(shí)現(xiàn)
超聲波模塊HC-SR04主要用于測(cè)距,檢測(cè)實(shí)驗(yàn)箱是否被取走,它有VCC、trig(控制端),echo(接收端)、GND四個(gè)引腳。其主要工作原理是先給trig(控制端)高電平延時(shí)至少10us后再給trig(控制端)低電平,此時(shí)模塊自動(dòng)發(fā)送8個(gè)40KHz的方波,自動(dòng)檢測(cè)是否有信號(hào)返回,有信號(hào)返回,通過計(jì)算echo(接收端)高電平持續(xù)的時(shí)間,最后通過公式(測(cè)試距離=(高電平時(shí)間*聲速(340m/s))/2)得到距離。
(1)對(duì)trig(控制端),echo(接收端)兩個(gè)I/O口進(jìn)行初始化
(2)先給trig(控制端)高電平延時(shí)至少10us后再給trig(控制端)低電平
(3)計(jì)算echo(接收端)高電平持續(xù)的時(shí)間
while(Echo==0);//等待ECHO管腳變?yōu)楦唠娖?/p>
(4)通過公式(測(cè)試距離=(高電平時(shí)間×聲速(340m/ s))/2)得到距離。
通過上面的步驟就可以獲取超聲波傳感器獲取的距離,由于考慮到ZigBee無(wú)線網(wǎng)絡(luò)傳輸?shù)男时容^低,所以當(dāng)距離超過10cm是認(rèn)為實(shí)驗(yàn)箱是被取走的,否則實(shí)驗(yàn)箱就是沒被取走。然后發(fā)送0和1表示這兩個(gè)狀態(tài)。
(2)實(shí)驗(yàn)箱打開模塊的實(shí)現(xiàn)
繼電器通過控制電磁鎖上電與不上電來(lái)控制實(shí)驗(yàn)柜的開關(guān)。繼電器模塊接口有VCC接5V、GND接電源負(fù)極、IN可以高或低電平控制繼電器吸合、繼電器常開接口,繼電器吸合前懸空,吸合后與COM短接、繼電器公用接口、繼電器常閉接口,繼電器吸合前與COM短接,吸合后懸空。電磁鎖是利用電生磁的原理,當(dāng)電流通過硅鋼片時(shí),電磁鎖會(huì)產(chǎn)生強(qiáng)大的吸力緊緊的吸住吸附鐵板達(dá)到鎖實(shí)驗(yàn)柜的效果。當(dāng)沒有電流通過硅鋼片時(shí),電磁鎖失去吸力即可開實(shí)驗(yàn)柜。控制繼電器的開是通過命令“01O”來(lái)實(shí)現(xiàn)的,其中01代表實(shí)驗(yàn)柜的ID好,O表示open的意思,即打開實(shí)驗(yàn)柜01。當(dāng)實(shí)驗(yàn)柜打開3s之后,會(huì)重新給電磁鎖上電,以保證實(shí)驗(yàn)柜能被鎖上。
代碼實(shí)現(xiàn)步驟如下:
(1)繼電器I/O口初始化,默認(rèn)電磁鎖是鎖上的。
(2)通過接收到ZigBee協(xié)調(diào)器發(fā)來(lái)的命令來(lái)控制電磁鎖斷電
//ZigBee節(jié)點(diǎn)接收Z(yǔ)igBee協(xié)調(diào)器發(fā)來(lái)的數(shù)據(jù)的函數(shù)
4.2 實(shí)驗(yàn)箱信息傳輸模塊的實(shí)現(xiàn)
ZigBee節(jié)點(diǎn)采集到各個(gè)傳感器之后需要把數(shù)據(jù)通過ZigBee無(wú)線網(wǎng)絡(luò)發(fā)送到ZigBee協(xié)調(diào)器。ZigBee節(jié)點(diǎn)需要做的工作分為以下幾步,第一:在OSAL_SampleApp.c文件中的tasksArr[]添加新任務(wù)的事件處理函數(shù);第二:在OSAL_SampleApp.c文件中的void osalInit-Tasks(void)函數(shù)中添加新任務(wù)的初始化函數(shù);第三:編寫新任務(wù)的初始化函數(shù);第四:編寫新任務(wù)的事件處理函數(shù);第五:編寫ZigBee節(jié)點(diǎn)數(shù)據(jù)發(fā)送函數(shù)和ZigBee協(xié)調(diào)器數(shù)據(jù)接收函數(shù)。
代碼實(shí)現(xiàn)步驟如下:
(1)在OSAL_SampleApp.c文件中的tasksArr[]添加新任務(wù)的事件處理函數(shù)SampleApp_ProcessEvent
(2)在OSAL_SampleApp.c文件中的void osalInit-Tasks(void)函數(shù)中添加新任務(wù)的初始化函數(shù)SampleApp_Init(taskID);
(3)編寫新任務(wù)的初始化函數(shù)void SampleApp_Init (byte task_id),主要工作是初始化任務(wù)的優(yōu)先級(jí)、設(shè)備狀態(tài)、節(jié)點(diǎn)描述符,用afRegister(&SampleApp_epDesc)函數(shù)將節(jié)點(diǎn)描述符進(jìn)行注冊(cè)。
(4)編寫新任務(wù)的事件處理函數(shù),對(duì)消息進(jìn)行處理。
(5)編寫ZigBee節(jié)點(diǎn)數(shù)據(jù)發(fā)送函數(shù)。
(6)編寫ZigBee協(xié)調(diào)器數(shù)據(jù)接收函數(shù)的代碼。
4.3 網(wǎng)關(guān)的實(shí)現(xiàn)
嵌入式Linux網(wǎng)關(guān)與Web服務(wù)器之間的數(shù)據(jù)交互實(shí)現(xiàn)步驟如下:
嵌入式Linux網(wǎng)關(guān)與Web服務(wù)器之間的數(shù)據(jù)交互實(shí)現(xiàn)步驟如下:
(1)實(shí)例化一個(gè)QNetworkRequest對(duì)象
QNetworkRequest*request=new QNetworkRequest();
//創(chuàng)建網(wǎng)絡(luò)請(qǐng)求對(duì)象
(2)數(shù)據(jù)請(qǐng)求
(3)數(shù)據(jù)處理
當(dāng)Web返回?cái)?shù)據(jù)時(shí),嵌入式Linux網(wǎng)關(guān)通過函數(shù)finishedSlot(QNetworkReply*reply)來(lái)接收J(rèn)SON數(shù)據(jù)
(4)嵌入式Linux網(wǎng)關(guān)JOSN數(shù)據(jù)解析及處理
//獲取要解析的JSON數(shù)據(jù)
QByteArray bytes=reply->readAll();
QString string=QString::fromUtf8(bytes);
//通過實(shí)例化一個(gè)QScriptEngine對(duì)象進(jìn)行JSON數(shù)據(jù)解析
本文從實(shí)驗(yàn)設(shè)備管理的智能化出發(fā),應(yīng)用傳感技術(shù)、自動(dòng)控制技術(shù)、無(wú)線通信技術(shù)設(shè)計(jì)和實(shí)現(xiàn)了一款基于物聯(lián)網(wǎng)技術(shù)的智能實(shí)驗(yàn)箱,能夠自動(dòng)檢測(cè)實(shí)驗(yàn)設(shè)備信息、使用狀況,經(jīng)過測(cè)試運(yùn)行良好,能夠給實(shí)驗(yàn)設(shè)備的管理帶來(lái)方便。
[1]馬建.物聯(lián)網(wǎng)技術(shù)概論[M].北京:機(jī)械工業(yè)出版社,2011.2.
[2]王占軍,李虹,史良偉.基于物聯(lián)網(wǎng)架構(gòu)的實(shí)驗(yàn)室智能管理系統(tǒng)的研究[J].工業(yè)控制計(jì)算機(jī),2014,27(2).
[3]許毅,陳建軍.RFID原理與應(yīng)用[M].北京:清華大學(xué)出版社,2013.1
[4]霍雷,劉盛德,胡咸斌.ZigBee技術(shù)及應(yīng)用[M].北京:北京航空航天大學(xué)出版社,2007.
[5]喬大雷.基于ARM9的嵌入式ZigBee網(wǎng)關(guān)設(shè)計(jì)與實(shí)現(xiàn)[D].中國(guó)礦業(yè)大學(xué)2007
Design and Implementation of Intelligent Experiment Box
LUO Jia-bing
(Department of Computer Science,South China Institute of Software Engineering,Guangzhou 510990)
Designs a model can automatically detect the device status,use of automatic recording equipment,intelligent experiment box,the main information detection of equipment,transmission of two parts.In the aspect of hardware,mainly studies the ZigBee wireless network,ultrasonic sensor,touch sensor,RFID reader,pressure sensor,relay,s5pv210 embedded development board peripherals;in the aspect of software,studies the Linux operating system,QT serial port programming,network programming,parsing the JSON data,etc.
Sensor;ZigBee Wireless Network;Embedded Linux
1007-1423(2016)30-0065-05
10.3969/j.issn.1007-1423.2016.30.017
羅家兵,男,講師,碩士研究生,研究方向?yàn)榍度胧杰浖_發(fā)和物聯(lián)網(wǎng)應(yīng)用技術(shù)
2016-09-06
2016-10-18