基于RFID與Android平臺(tái)的物品清點(diǎn)系統(tǒng)
RFID技術(shù)是一種非接觸式自動(dòng)識(shí)別技術(shù),由電子標(biāo)簽及讀寫(xiě)器組成,具有信息容量大、保密性高、無(wú)需人工干預(yù)、識(shí)別效率高等優(yōu)點(diǎn)。其與上層應(yīng)用軟件及后臺(tái)數(shù)據(jù)庫(kù)相結(jié)合,可實(shí)現(xiàn)物品管理、物品防偽、物品定位、身份識(shí)別等功能,被廣泛使用于物流管理、交通運(yùn)輸、工業(yè)自動(dòng)化等領(lǐng)域。
在智能家居中,RFID主要用于門(mén)禁系統(tǒng)、人員定位[1]等。智能家居(Smart Home)是以住宅為平臺(tái),兼?zhèn)浣ㄖ?、網(wǎng)絡(luò)通信、信息家電、設(shè)備自動(dòng)化等功能,集系統(tǒng)、結(jié)構(gòu)、服務(wù)、管理為一體的,體現(xiàn)高效、舒適、安全、便利、環(huán)保的居住環(huán)境[2].智能家居的核心功能是安防報(bào)警與智能控制。當(dāng)前市場(chǎng)上的智能家居系統(tǒng)主要有基于樓宇對(duì)講技術(shù)的智能家居系統(tǒng)、基于現(xiàn)場(chǎng)總線技術(shù)的家庭自動(dòng)化系統(tǒng)和基于智能手機(jī)的智能家居系統(tǒng)三大類(lèi)[3].主要的產(chǎn)品有:智能鎖、監(jiān)控設(shè)備、各類(lèi)環(huán)境傳感器、智能電動(dòng)窗簾系統(tǒng)、家電控制等。國(guó)內(nèi)智能家居行業(yè)起步較晚,智能家居產(chǎn)品存在系統(tǒng)復(fù)雜、價(jià)格昂貴、不切實(shí)際等問(wèn)題。智能家居企業(yè)所銷(xiāo)售的并不是產(chǎn)品,而是為特定的某部分人量身定做的一套完整的個(gè)性化服務(wù),價(jià)格昂貴,是面向富人群體的消費(fèi),且系統(tǒng)設(shè)計(jì)復(fù)雜,產(chǎn)品也不夠多元化。這將不利于智能家居的長(zhǎng)期發(fā)展[4].
因此,在當(dāng)前客戶(hù)個(gè)性化需求強(qiáng)烈的市場(chǎng)狀況下,開(kāi)發(fā)適合大眾消費(fèi)、操作方便的智能家居產(chǎn)品具有重要意義。本文基于便攜式RFID與Android智能終端,是一款適用人群較廣、操作方便的智能物品清點(diǎn)的移動(dòng)應(yīng)用系統(tǒng),用于實(shí)現(xiàn)家庭式倉(cāng)儲(chǔ)管理。
1相關(guān)技術(shù)
1.1 RFID技術(shù)
無(wú)線電射頻識(shí)別RFID(Radio Frequency Identification)是一種利用無(wú)線電的自動(dòng)識(shí)別技術(shù)。典型的RFID系統(tǒng)通常由電子標(biāo)簽、讀寫(xiě)器、RFID中間件和應(yīng)用系統(tǒng)軟件組成[5].電子標(biāo)簽及讀寫(xiě)器通過(guò)無(wú)線電天線進(jìn)行通信,可讀取標(biāo)簽中的物品ID信息,實(shí)現(xiàn)非接觸識(shí)別,并能同時(shí)識(shí)別多個(gè)標(biāo)簽。電子標(biāo)簽具有一定的存儲(chǔ)容量,能唯一標(biāo)識(shí)物品,具有使用壽命長(zhǎng)、可重復(fù)使用等優(yōu)點(diǎn)。RFID中間件是讀寫(xiě)器與應(yīng)用系統(tǒng)軟件的中介,管理著讀寫(xiě)器及其讀取的數(shù)據(jù),并將數(shù)據(jù)交付給上層的應(yīng)用軟件(如數(shù)據(jù)庫(kù))。帶無(wú)線通信功能(如藍(lán)牙、WiFi)的RFID讀寫(xiě)器將無(wú)線通信模塊嵌入讀寫(xiě)器中,上層軟件通過(guò)無(wú)線通信信號(hào)獲取電子標(biāo)簽信息,使得用戶(hù)可以隨時(shí)隨地獲取RFID標(biāo)簽信息,解決有線讀寫(xiě)器不可移動(dòng)的限制。
RFID系統(tǒng)按其使用的無(wú)線電頻率可分為低頻RFID系統(tǒng)、高頻RFID系統(tǒng)及超高頻RFID系統(tǒng)。被廣泛應(yīng)用于門(mén)禁系統(tǒng)、身份識(shí)別、產(chǎn)品管理、集裝箱管理、生產(chǎn)線自動(dòng)化管理等領(lǐng)域。在識(shí)別距離方面,讀寫(xiě)器的可識(shí)別范圍與其制作工藝有關(guān),比如天線設(shè)計(jì)、讀寫(xiě)器功率設(shè)計(jì)等。一般的,低高頻系統(tǒng)讀寫(xiě)距離較小,在10 cm左右,高頻標(biāo)準(zhǔn)ISO15693在降低傳輸速率、加大天線設(shè)計(jì)與讀寫(xiě)功率的情況下,識(shí)別距離可達(dá)1 m;超高頻在較大工作范圍,能做到較快的傳輸速率,工作距離可達(dá)3 m~10 m,但是超高頻電波受環(huán)境影響大,不能穿透許多材料,比如水、灰塵等。在實(shí)際應(yīng)用中,需要考慮價(jià)格、讀寫(xiě)距離、安全特性、存儲(chǔ)信息量等因素,用于確定合適的頻段及方案[6].
1.2藍(lán)牙技術(shù)
藍(lán)牙是一種低功耗、中短距離的無(wú)線通信技術(shù),為移動(dòng)設(shè)備之間提供快速、方便的無(wú)線通信連接,被廣泛應(yīng)用于手機(jī)中,其中藍(lán)牙耳機(jī)是一個(gè)典型的應(yīng)用。藍(lán)牙通信規(guī)范是全球統(tǒng)一的,工作頻段為全球統(tǒng)一開(kāi)放的2.4 GHz頻段,該頻段的使用無(wú)需向各國(guó)的無(wú)線電資源管理部門(mén)申請(qǐng)?jiān)S可證。不同的藍(lán)牙設(shè)備通信時(shí),可以建立臨時(shí)性的實(shí)時(shí)對(duì)等連接。皮網(wǎng)(Piconet)是藍(lán)牙最基本的一種網(wǎng)絡(luò)形式,通常由一個(gè)主設(shè)備(即主動(dòng)發(fā)起連接請(qǐng)求的藍(lán)牙設(shè)備)和幾個(gè)從設(shè)備組成,能同時(shí)實(shí)現(xiàn)一對(duì)多的通信[7].藍(lán)牙技術(shù)的優(yōu)點(diǎn)是:可以方便地建立無(wú)線連接;移植性強(qiáng),適用面廣;安全性較高;設(shè)備功耗低,成本較低;開(kāi)發(fā)設(shè)計(jì)較簡(jiǎn)單。
1.3安卓系統(tǒng)藍(lán)牙編程
藍(lán)牙技術(shù)的開(kāi)發(fā)核心是根據(jù)藍(lán)牙標(biāo)準(zhǔn)所實(shí)現(xiàn)的藍(lán)牙協(xié)議棧。該協(xié)議棧包含了眾多協(xié)議,主要有邏輯鏈路控制和適配協(xié)議(L2CAP)、服務(wù)發(fā)現(xiàn)協(xié)議(SDP)、串口模擬協(xié)議(RFCOMM)等。其中SDP協(xié)議是一個(gè)基于C/S結(jié)構(gòu)的協(xié)議,是藍(lán)牙協(xié)議棧中的核心協(xié)議。在藍(lán)牙系統(tǒng)中,用戶(hù)依靠SDP獲取建立藍(lán)牙連接所需的設(shè)備信息、服務(wù)信息及服務(wù)特征[8].
Android SDK從2.0版本開(kāi)始支持藍(lán)牙功能,應(yīng)用程序必須在AndroidManifest.xml文件中加入一定的權(quán)限才能使用藍(lán)牙服務(wù):android.permission.BLUETOOTH權(quán)限允許用戶(hù)連接藍(lán)牙設(shè)備,android.permission.BLUETOOTH_ADMIN權(quán)限允許用戶(hù)管理藍(lán)牙硬件及使用相關(guān)服務(wù),包括開(kāi)啟或關(guān)閉藍(lán)牙硬件、掃描可連接藍(lán)牙設(shè)備、傳送數(shù)據(jù)等。相關(guān)的藍(lán)牙API在android.bluetooth包中進(jìn)行定義,包含以下幾個(gè)主要類(lèi):
(1)BluetoothAdapter類(lèi)代表設(shè)備上的藍(lán)牙硬件;
(2)BluetoothDevice類(lèi)定義遠(yuǎn)程藍(lán)牙設(shè)備;
(3)BluetoothServerSocket類(lèi)用來(lái)打開(kāi)監(jiān)聽(tīng)到達(dá)連接的套接字,并且在連接后提供一個(gè)BluetoothSocket對(duì)象;
(4)BluetoothSocket類(lèi)用來(lái)建立同遠(yuǎn)程設(shè)備的連接,獲取輸入輸出流。
通過(guò)藍(lán)牙進(jìn)行數(shù)據(jù)傳輸?shù)倪^(guò)程包括:
(1)檢查可用的藍(lán)牙硬件。并不是所有Android終端都具有藍(lán)牙功能,因此使用前需確定是否有可用的藍(lán)牙硬件;
(2)開(kāi)啟藍(lán)牙;
(3)查詢(xún)已配對(duì)設(shè)備;
(4)搜索設(shè)備;
(5)建立設(shè)備間的連接;
(6)數(shù)據(jù)交互;
(7)關(guān)閉藍(lán)牙硬件。
當(dāng)兩個(gè)設(shè)備連接后,各自擁有一個(gè)BluetoothSocket對(duì)象,并獲得用來(lái)讀取信息的InputStream對(duì)象和發(fā)送信息的OutputStream對(duì)象[9].
1.4 Android平臺(tái)數(shù)據(jù)存儲(chǔ)方式
基于Android平臺(tái)的數(shù)據(jù)存儲(chǔ)方式分外部存儲(chǔ)和內(nèi)部存儲(chǔ)兩類(lèi)。外部存儲(chǔ)方式指:內(nèi)容提供器和網(wǎng)絡(luò)數(shù)據(jù)庫(kù),內(nèi)部存儲(chǔ)方式有:系統(tǒng)配置、文件存儲(chǔ)、SQLite數(shù)據(jù)庫(kù)[10].在實(shí)際應(yīng)用開(kāi)發(fā)中主要使用內(nèi)部存儲(chǔ)方式。系統(tǒng)配置方式指通過(guò)Android平臺(tái)提供的SharedPreferences類(lèi),保存應(yīng)用程序的一些簡(jiǎn)單的配置信息的機(jī)制。文件存儲(chǔ)方式使用Java中的IO類(lèi)實(shí)現(xiàn)對(duì)內(nèi)部存儲(chǔ)器或SD卡等外部存儲(chǔ)設(shè)備中的文件的讀寫(xiě)與解析,該方式實(shí)現(xiàn)數(shù)據(jù)插入與修改操作較復(fù)雜,每次操作都需讀取整個(gè)文件,效率較低。SQLite是一款超輕量級(jí)的嵌入式數(shù)據(jù)庫(kù),支持SQL語(yǔ)句,能實(shí)現(xiàn)查詢(xún)、插入、刪除、修改等操作,具有小、安全、免費(fèi)等特點(diǎn)。本文提到的系統(tǒng)所選擇的數(shù)據(jù)存儲(chǔ)方式便是SQLite數(shù)據(jù)庫(kù),對(duì)數(shù)據(jù)進(jìn)行操作簡(jiǎn)單而快速。
2系統(tǒng)概述
在日常生活中,當(dāng)家庭里物品被閑置一段時(shí)間后,會(huì)出現(xiàn)被遺忘的狀況,而得不到再次使用;在外出需要攜帶較多物品時(shí),常常在清點(diǎn)過(guò)后,依然會(huì)出現(xiàn)遺漏東西的狀況。本系統(tǒng)的功能是幫助人們記錄物品信息,能自動(dòng)識(shí)別對(duì)物品進(jìn)行清點(diǎn),并顯示清點(diǎn)結(jié)果(該步操作類(lèi)似于倉(cāng)庫(kù)管理中的出庫(kù),對(duì)照出庫(kù)清單清點(diǎn)出庫(kù)物品是否有遺漏)。其系統(tǒng)結(jié)構(gòu)如圖1所示。
圖1 系統(tǒng)結(jié)構(gòu)圖
首先根據(jù)物品的不同特性,準(zhǔn)備好合適的RFID電子標(biāo)簽,貼或掛在物品上;使用帶藍(lán)牙通信功能的手機(jī)和便攜式RFID讀寫(xiě)器。當(dāng)系統(tǒng)工作時(shí),由讀寫(xiě)器讀取標(biāo)簽上的ID信息,通過(guò)藍(lán)牙傳給手機(jī)應(yīng)用程序端;在應(yīng)用程序上填寫(xiě)與標(biāo)簽ID對(duì)應(yīng)的物品名稱(chēng),并保存于本地的SQLite數(shù)據(jù)庫(kù)中。登記完標(biāo)簽信息后,用戶(hù)可根據(jù)每次不同需求,選中要清點(diǎn)的物品名稱(chēng),通過(guò)RFID讀寫(xiě)器的掃描后,便可完成對(duì)一定空間內(nèi)的物品的清點(diǎn)。
3軟硬件設(shè)計(jì)及系統(tǒng)評(píng)價(jià)
3.1軟件設(shè)計(jì)
軟件開(kāi)發(fā)所涉及模塊有:物品RFID標(biāo)簽信息添加、物品信息刪除、物品信息修改、物品選擇、物品RFID標(biāo)簽清點(diǎn)掃描等。
應(yīng)用程序的工作流程如圖2所示。
圖2 工作流程圖
應(yīng)用程序在實(shí)現(xiàn)物品RFID標(biāo)簽信息添加及物品RFID標(biāo)簽清點(diǎn)掃描前,應(yīng)首先打開(kāi)藍(lán)牙連接,搜索附近的藍(lán)牙設(shè)備,然后選擇與便攜RFID讀寫(xiě)器建立連接。在進(jìn)行添加操作時(shí),應(yīng)用程序向讀寫(xiě)器發(fā)送單標(biāo)簽掃描的命令,讀寫(xiě)器返回標(biāo)簽的ID,用戶(hù)輸入物品名稱(chēng)后,應(yīng)用程序?qū)⑵滗浫霐?shù)據(jù)庫(kù)中并標(biāo)注為未選中狀態(tài)。
在列出所有物品界面中,用戶(hù)可對(duì)需要清點(diǎn)的物品進(jìn)行選中或取消選中。當(dāng)用戶(hù)選中物品后,物品的狀態(tài)屬性(THING_STATUS)值為“1”,表示該物品將要被清點(diǎn);否則為“0”,表示該物品已在數(shù)據(jù)庫(kù)中登記,但暫時(shí)不需要清點(diǎn)。
應(yīng)用程序清點(diǎn)掃描物品時(shí),向讀寫(xiě)器發(fā)送防沖突識(shí)別(多標(biāo)簽識(shí)別)命令,讀寫(xiě)器不斷返回帶標(biāo)簽ID信息的數(shù)據(jù)流。應(yīng)用程序從數(shù)據(jù)流中提取出標(biāo)簽ID,并在數(shù)據(jù)庫(kù)中查詢(xún)其狀態(tài),若為“1”,則在已掃描列表中以系統(tǒng)默認(rèn)字體顏色(灰色)顯示其物品名稱(chēng);若為“0”,則以其他非系統(tǒng)默認(rèn)字體顏色(深灰色)顯示物品名稱(chēng)。掃描個(gè)數(shù)是在掃描過(guò)程中實(shí)時(shí)顯示已被讀寫(xiě)器掃描到的、并進(jìn)行登記過(guò)的標(biāo)簽個(gè)數(shù)。
當(dāng)識(shí)別完一定空間內(nèi)的物品后,用戶(hù)按下讀寫(xiě)器上的停止識(shí)別按鈕,讀寫(xiě)器向應(yīng)用程序發(fā)送停止識(shí)別的響應(yīng)。應(yīng)用程序接收后,在未掃描列表中輸出已被選中未被掃描到的物品名稱(chēng),掃描結(jié)果顯示界面如圖3所示。
圖3 掃描結(jié)果顯示界面
3.2硬件選擇
現(xiàn)如今,藍(lán)牙通信在智能手機(jī)中是一種十分常見(jiàn)的功能。本系統(tǒng)開(kāi)發(fā)選用Android 2.3版本系統(tǒng)的觸屏手機(jī),有藍(lán)牙硬件模塊,具備藍(lán)牙通信功能,且自帶SQLite數(shù)據(jù)庫(kù),無(wú)需用戶(hù)安裝。RFID讀寫(xiě)器的選擇要考慮讀寫(xiě)距離不能太短,否則識(shí)別效率較低,容易掃描不全;價(jià)格應(yīng)較適合大眾消費(fèi);為了便于使用及攜帶,外形應(yīng)小巧。因此選擇帶藍(lán)牙通信功能的超高頻讀寫(xiě)器,讀寫(xiě)距離20 cm左右,體積小,易于攜帶,如圖4所示。當(dāng)按下圖中所示的扇形按鈕“R”時(shí),讀寫(xiě)器開(kāi)始或停止識(shí)別標(biāo)簽。
圖4 藍(lán)牙便攜式
評(píng)論