羅家兵
(廣州大學華軟軟件學院計算機系,廣州 510990)
智能實驗箱的設計與實現
羅家兵
(廣州大學華軟軟件學院計算機系,廣州 510990)
設計一款能夠自動檢測實驗設備狀態、自動記錄實驗設備使用情況的智能實驗箱,其主要由設備信息檢測、傳輸兩部分組成。在硬件方面,主要研究ZigBee無線網絡、超聲波傳感器、觸碰傳感器、RFID讀卡器、壓力傳感器、繼電器、s5pv210嵌入式開發板的外圍設備;在軟件方面,主要研究Linux操作系統、QT的串口編程、網絡編程、JSON數據的解析等。
傳感器;ZigBee無線網絡;嵌入式Linux
目前,存放實驗設備的實驗箱僅僅作為存放實驗設備的一個容器而已,無法自動記錄實驗設備的相關信息,隨著物聯網技術的廣發應用,有必要讓實驗箱進行信息化的改造,實現實驗箱的智能化:
(1)可以預先設定實驗箱的可能打開時間,例如上午九點某某班來做微機原理實驗,學生只需要在實驗臺上登錄驗證,實驗箱即可自動打開,這樣實驗管理員就不用跑到實驗室逐個登記、發放實驗箱;
(2)實驗管理員坐在值班室就可以遠程觀察各實驗箱的狀態;
(3)如果某臺實驗箱出現問題,由于實驗箱的自動記載使用記錄,這樣可以追查到是否是故意損壞。
近年來,物聯網技術的逐步應用已經給人們的生產、生活帶來了巨大的便利,相關的技術人員也在試圖把物聯網應用到更加廣泛的領域。在各個科研機構、高校都會用到大量的實驗設備,也需要對實驗設備進行有效的管理。物聯網技術也開始在實驗設備管理方面應用起來。
目前市面上有關人員研究最多的是把物聯網的RFID技術應用到實驗設備的管理,其主要是給每一實驗設備都貼上了一個RFID標簽,通過該標簽、讀寫器、后臺數據庫即可完成設備的智能化識別、管理,技術層面上都大致涉及下面幾個方面:
①為實驗箱配備具有唯一ID號的RFID標簽,作為實驗箱的識別標志;
②為實驗箱的每一模塊配備具有唯一ID號的RFID標簽,作為模塊的識別標志;
③RFID閱讀器讀寫RFID標簽的ID號,通過Zig-Bee網絡將讀取的數據發送到主節點;
④主節點將數據傳送給上位機,進行數據分析、存檔和處理,實現實驗箱和模塊的入庫、借出、查詢和歸還等功能。
已有的物聯網在實驗設備上的應用主要是從設備的類別、數量上進行了有效的管理,也的確大大提高了管理的效率,但是卻沒有對存放實驗設備的實驗箱的管理,這樣就無法自動獲取實驗設備何時從實驗箱里取走、放回的信息。
2.1 系統模塊分析
系統可以分為三層:感知程、網絡傳輸層、應用層,
如圖1所示。

圖1 系統模塊結構圖
(1)Android手機App與Web應用模塊
Web作為服務器實現對MySQL數據庫的增刪改查,方便管理人員后臺的處理以及提供相關的接口實現與嵌入式Linux網關的數據交互。Android手機App應用主要是讓管理員能夠實時的觀察到實驗箱的狀態,以及學生的一些相關信息,必要時可以控制實驗箱的開關。
(2)嵌入式Linux網關數據傳輸模塊
嵌入式Linux是整個系統的核心,在整個系統中起著承上啟下的作用。底層ZigBee無線網絡通過串口與嵌入式Linux網關進行數據的交互,使得底層數據能夠有效的上發到應用層;而應用層與嵌入式Linux網關通過HTTP協議進行數據的交互,讓上層應用可以間接的控制到底層。ZigBee無線網絡數據采集與控制模塊。
利用RFID讀卡器采集學生的卡號、超聲波模塊檢測實驗箱是否存在、觸碰傳感器檢測實驗箱的開關狀態、壓力傳感器檢測實驗箱內模塊是否存在,實時的把信息發送到嵌入式Linux網關。在底層ZigBee無線網絡中還使用了繼電器、電磁鎖來控制實驗箱的開與關。實現了底層數據的采集與控制。
2.2 系統架構設計
根據圖2所示,基于物聯網的智能實驗箱分為三大層。感知層:包括RFID讀卡器、超聲波模塊、壓力傳感器、繼電器、電磁鎖、ZigBee節點、ZigBee協調器;網絡傳輸層:包括嵌入式Linux、Web服務器、MySql數據庫;應用層:包括手機android端、網頁端。整個系統實現了從感知層到應用層、從應用層到感知層數據之間的傳輸,實現了數據的存儲,以及底層的控制。
嵌入式Linux網關與ZigBee主要是通過串口進行數據的交互。ZigBee協調器通過HalUARTWrite函數把數據通過串口發送給嵌入式Linux網關,嵌入式Linux網關則調用串口的readAll函數進行數據的接收;嵌入式Linux網關通過串口的write函數給ZigBee協調器發送數據,ZigBee則通過回調函數與HalUARTRead函數進行數據的接收

圖2 系統架構圖
3.1 網關與ZigBee通信協議的設計
嵌入式Linux網關與ZigBee相關接口:
(1)網關串口讀寫接口

(2)ZigBee串口接口

3.2 網關與web服務器通信協議設計
嵌入式Linux網關與Web服務器之間的數據交互主要是通過HTTP協議實現。嵌入式Linux網關通過get請求向Web服務器請求服務,而Web服務器則以JSON的格式返回相關數據,嵌入式Linux網關接收到JSON數據后,進行數據解析并做相關的數據處理。
嵌入式Linux網關與Web服務器相關接口:
(1)狀態接口
請求參數
state:0試驗箱不存在,1存在
door:0柜子關閉1打開
matel_00表示器材名稱00表示器材編號0表示不存在1表示存在
matel_01如上
返回參數

(2)登錄接口
請求參數
rfid_id:用戶id
opernation:open打開試驗箱
返回參數
errorcode00成功
msg服務器提示信息

4.1 實驗箱信息檢測模塊的實現
(1)實驗設備存在檢測模塊的實現
超聲波模塊HC-SR04主要用于測距,檢測實驗箱是否被取走,它有VCC、trig(控制端),echo(接收端)、GND四個引腳。其主要工作原理是先給trig(控制端)高電平延時至少10us后再給trig(控制端)低電平,此時模塊自動發送8個40KHz的方波,自動檢測是否有信號返回,有信號返回,通過計算echo(接收端)高電平持續的時間,最后通過公式(測試距離=(高電平時間*聲速(340m/s))/2)得到距離。
(1)對trig(控制端),echo(接收端)兩個I/O口進行初始化

(2)先給trig(控制端)高電平延時至少10us后再給trig(控制端)低電平

(3)計算echo(接收端)高電平持續的時間
while(Echo==0);//等待ECHO管腳變為高電平

(4)通過公式(測試距離=(高電平時間×聲速(340m/ s))/2)得到距離。
通過上面的步驟就可以獲取超聲波傳感器獲取的距離,由于考慮到ZigBee無線網絡傳輸的效率比較低,所以當距離超過10cm是認為實驗箱是被取走的,否則實驗箱就是沒被取走。然后發送0和1表示這兩個狀態。
(2)實驗箱打開模塊的實現
繼電器通過控制電磁鎖上電與不上電來控制實驗柜的開關。繼電器模塊接口有VCC接5V、GND接電源負極、IN可以高或低電平控制繼電器吸合、繼電器常開接口,繼電器吸合前懸空,吸合后與COM短接、繼電器公用接口、繼電器常閉接口,繼電器吸合前與COM短接,吸合后懸空。電磁鎖是利用電生磁的原理,當電流通過硅鋼片時,電磁鎖會產生強大的吸力緊緊的吸住吸附鐵板達到鎖實驗柜的效果。當沒有電流通過硅鋼片時,電磁鎖失去吸力即可開實驗柜??刂评^電器的開是通過命令“01O”來實現的,其中01代表實驗柜的ID好,O表示open的意思,即打開實驗柜01。當實驗柜打開3s之后,會重新給電磁鎖上電,以保證實驗柜能被鎖上。
代碼實現步驟如下:
(1)繼電器I/O口初始化,默認電磁鎖是鎖上的。

(2)通過接收到ZigBee協調器發來的命令來控制電磁鎖斷電
//ZigBee節點接收ZigBee協調器發來的數據的函數

4.2 實驗箱信息傳輸模塊的實現
ZigBee節點采集到各個傳感器之后需要把數據通過ZigBee無線網絡發送到ZigBee協調器。ZigBee節點需要做的工作分為以下幾步,第一:在OSAL_SampleApp.c文件中的tasksArr[]添加新任務的事件處理函數;第二:在OSAL_SampleApp.c文件中的void osalInit-Tasks(void)函數中添加新任務的初始化函數;第三:編寫新任務的初始化函數;第四:編寫新任務的事件處理函數;第五:編寫ZigBee節點數據發送函數和ZigBee協調器數據接收函數。
代碼實現步驟如下:
(1)在OSAL_SampleApp.c文件中的tasksArr[]添加新任務的事件處理函數SampleApp_ProcessEvent
(2)在OSAL_SampleApp.c文件中的void osalInit-Tasks(void)函數中添加新任務的初始化函數SampleApp_Init(taskID);
(3)編寫新任務的初始化函數void SampleApp_Init (byte task_id),主要工作是初始化任務的優先級、設備狀態、節點描述符,用afRegister(&SampleApp_epDesc)函數將節點描述符進行注冊。
(4)編寫新任務的事件處理函數,對消息進行處理。
(5)編寫ZigBee節點數據發送函數。
(6)編寫ZigBee協調器數據接收函數的代碼。
4.3 網關的實現
嵌入式Linux網關與Web服務器之間的數據交互實現步驟如下:
嵌入式Linux網關與Web服務器之間的數據交互實現步驟如下:
(1)實例化一個QNetworkRequest對象
QNetworkRequest*request=new QNetworkRequest();
//創建網絡請求對象
(2)數據請求

(3)數據處理
當Web返回數據時,嵌入式Linux網關通過函數finishedSlot(QNetworkReply*reply)來接收JSON數據
(4)嵌入式Linux網關JOSN數據解析及處理
//獲取要解析的JSON數據
QByteArray bytes=reply->readAll();
QString string=QString::fromUtf8(bytes);
//通過實例化一個QScriptEngine對象進行JSON數據解析


本文從實驗設備管理的智能化出發,應用傳感技術、自動控制技術、無線通信技術設計和實現了一款基于物聯網技術的智能實驗箱,能夠自動檢測實驗設備信息、使用狀況,經過測試運行良好,能夠給實驗設備的管理帶來方便。
[1]馬建.物聯網技術概論[M].北京:機械工業出版社,2011.2.
[2]王占軍,李虹,史良偉.基于物聯網架構的實驗室智能管理系統的研究[J].工業控制計算機,2014,27(2).
[3]許毅,陳建軍.RFID原理與應用[M].北京:清華大學出版社,2013.1
[4]霍雷,劉盛德,胡咸斌.ZigBee技術及應用[M].北京:北京航空航天大學出版社,2007.
[5]喬大雷.基于ARM9的嵌入式ZigBee網關設計與實現[D].中國礦業大學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
羅家兵,男,講師,碩士研究生,研究方向為嵌入式軟件開發和物聯網應用技術
2016-09-06
2016-10-18