• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      基于RSSI定位的RFID物品管理門禁系統(tǒng)設(shè)計(jì)*

      2015-08-14 08:03:24亢雄偉高澤華高峰房延鵬
      關(guān)鍵詞:讀卡器服務(wù)器端線程

      亢雄偉,高澤華,高峰,房延鵬

      (北京郵電大學(xué),北京100876)

      亢雄偉、房延鵬(碩士研究生),研究領(lǐng)域?yàn)槲锫?lián)網(wǎng)中RFID和ZigBee技術(shù);高澤華(副教授),研究領(lǐng)域?yàn)闊o線移動(dòng)IP與增值業(yè)務(wù)、射頻識(shí)別RFID與智能交通;高峰(博士),研究領(lǐng)域?yàn)閃LAN技術(shù)。

      引 言

      門禁系統(tǒng)的關(guān)鍵在于當(dāng)前物體位置的確定,只要能確定位置,就可以進(jìn)行具體的邏輯判斷,本系統(tǒng)是基于接收信號(hào)強(qiáng)度指示(Receive Signal Strength Indicator,RSSI)定位原理而設(shè)計(jì)的,目前主要用來做貴重物品的防盜處理,當(dāng)物品從屋內(nèi)移到屋外時(shí),會(huì)發(fā)出警報(bào)信息,引起管理者的注意,從而達(dá)到防盜效果。

      1 系統(tǒng)設(shè)計(jì)

      整個(gè)系統(tǒng)由3部分組成,分別是電路設(shè)計(jì)、硬件程序以及服務(wù)器端程序。

      1.1 電路設(shè)計(jì)

      CC1110是TI公司的一款低功耗射頻識(shí)別芯片,硬件設(shè)計(jì)參考CC1110數(shù)據(jù)手冊中的推薦應(yīng)用電路[1],電子標(biāo)簽和讀卡器的射頻部分電路如圖1所示。

      圖1 標(biāo)簽和讀卡器的射頻電路

      讀卡器由兩部分組成,除了上文所述的射頻電路外,還需要有一個(gè)能將串口數(shù)據(jù)轉(zhuǎn)成網(wǎng)口數(shù)據(jù)的模塊,本系統(tǒng)采用HLK-RM04模塊來實(shí)現(xiàn)這部分功能,通過配置參數(shù),可以自動(dòng)將速率為57 600kbps的串口數(shù)據(jù)轉(zhuǎn)成網(wǎng)口數(shù)據(jù)。另外,配置參數(shù)時(shí)還需要指定遠(yuǎn)端IP地址和端口,這里的IP地址應(yīng)該設(shè)置成服務(wù)器的IP地址,端口號(hào)可以任意,但是服務(wù)器端程序監(jiān)聽的端口要與此處保持一致,因此,只要將讀卡器、路由器和服務(wù)器通過網(wǎng)線連接起來,就可以把讀卡器接收到的數(shù)據(jù)上傳到服務(wù)器。

      1.2 硬件相關(guān)程序

      系統(tǒng)硬件相關(guān)程序分成兩部分(一部分用來數(shù)據(jù)發(fā)送,另一部分用來數(shù)據(jù)接收),最后分別下載到標(biāo)簽和讀卡器中,使得標(biāo)簽和讀卡器可以正常工作,程序使用C語言開發(fā),采用IAR集成開發(fā)環(huán)境。

      發(fā)送端的作用是發(fā)送數(shù)據(jù),該部分的防碰撞算法如下:當(dāng)信道被占用時(shí),會(huì)等待一個(gè)1~10ms的隨機(jī)時(shí)間后再次發(fā)送數(shù)據(jù),如果連續(xù)發(fā)送3次都沒有成功,則表明發(fā)送失敗。為了實(shí)現(xiàn)低功耗,采用隨機(jī)休眠喚醒機(jī)制,休眠時(shí)間為0.7~1.7s的一個(gè)隨機(jī)數(shù),這樣就使得每個(gè)標(biāo)簽的喚醒時(shí)間不同,從而提高該算法的魯棒性。

      接收端除了接收8個(gè)字節(jié)的標(biāo)簽信息外,還要接收RSSI的值,CC1110提供了兩種獲得RSSI的方式:一種是配置寄存器PKTCTRL1.APPEND_STATUS=1,在這種方式下,RSSI值會(huì)自動(dòng)添加到接收數(shù)據(jù)幀的后面;另一種是直接讀取RSSI寄存器的值[1]。為了方便處理,本系統(tǒng)采用第一種方式,配置寄存器PKTCTRL1=0x04,將接收到的數(shù)據(jù)存儲(chǔ)后再取得下一位接收的數(shù)據(jù),即本次接收得到的RSSI。

      讀取到的RSSI是以二進(jìn)制補(bǔ)碼的形式存放的,需要將單位轉(zhuǎn)為dBm,轉(zhuǎn)換方式如下:

      ① 將讀取的十六進(jìn)制數(shù)轉(zhuǎn)成十進(jìn)制,記為RSSI_dec;

      ② 如果RSSI_dec≥128,則 RSSI_dBm = (RSSI_dec-128)/2-RSSI_offset;

      ③ 如果RSSI_dec<128,則 RSSI_dBm = RSSI_dec/2-RSSI_offset。

      通過以上步驟,得到的RSSI_dBm就是RSSI轉(zhuǎn)為dBm后的值,其中,RSSI_offset是一個(gè)偏移值,由于本系統(tǒng)的主頻為433MHz,數(shù)據(jù)速率為250kbps,根據(jù)CC1110的數(shù)據(jù)手冊,這個(gè)值取為73。硬件發(fā)送端和接收端的程序流程圖分別如圖2和圖3所示。

      標(biāo)簽負(fù)責(zé)發(fā)送攜帶自身ID信息的數(shù)據(jù)幀,幀結(jié)構(gòu)如圖4所示。

      幀中第1個(gè)字節(jié)為固定的0x4C,用來在接收端進(jìn)行驗(yàn)證和同步,第2個(gè)字節(jié)代表標(biāo)簽的電量信息,0x00表示電量正常,0x10表示電量過低,這一位被接收端解析后,會(huì)重新設(shè)為0x00。第3~8個(gè)字節(jié)是一個(gè)不重復(fù)的序列號(hào),整個(gè)數(shù)據(jù)幀構(gòu)成一個(gè)標(biāo)簽的ID號(hào)碼。讀卡器接收數(shù)據(jù)成功后,可以獲得指向該數(shù)據(jù)幀幀頭的指針,從這個(gè)指針開始讀取數(shù)據(jù),讀到的前8個(gè)字節(jié)就是標(biāo)簽發(fā)送的數(shù)據(jù)幀,第9個(gè)字節(jié)是本次接收的RSSI值。

      圖2 標(biāo)簽端的發(fā)送程序流程

      圖3 讀卡器端的接收程序流程

      讀卡器負(fù)責(zé)接收數(shù)據(jù),并將其解析并重新封裝成新的數(shù)據(jù)幀發(fā)給服務(wù)器,幀結(jié)構(gòu)如圖5所示。

      幀中的第1個(gè)字節(jié)為幀頭,固定取值為0xE5;第3個(gè)字節(jié)為總幀長,因?yàn)槭?8個(gè)字節(jié),因此取值為0x12;第7~8個(gè)字節(jié)是讀卡器ID;第9~16個(gè)字節(jié)是標(biāo)簽的ID號(hào)碼;第17個(gè)字節(jié)是RSSI值。

      圖4 標(biāo)簽發(fā)送的數(shù)據(jù)幀結(jié)構(gòu)

      圖5 讀卡器發(fā)送的數(shù)據(jù)幀結(jié)構(gòu)

      1.3 服務(wù)器端程序

      服務(wù)器端程序采用Java編寫,編程依據(jù)是通過讀卡器接收到的RSSI值來確定當(dāng)前標(biāo)簽與讀卡器之間的距離,最后利用定位算法來確定該標(biāo)簽的坐標(biāo)。該部分用來實(shí)時(shí)監(jiān)測每個(gè)讀卡器上報(bào)的信息,最后進(jìn)行數(shù)據(jù)的分析和處理,并將結(jié)果顯示出來,具體流程如圖6所示。

      首先對(duì)讀卡器的RM04模塊進(jìn)行設(shè)置,網(wǎng)絡(luò)協(xié)議選擇為TCP客戶端,遠(yuǎn)端IP設(shè)置為服務(wù)器的IP地址,端口設(shè)置為6000,串口參數(shù)波特率選擇57 600,并啟用DHCP,這樣就可以通過網(wǎng)絡(luò)將讀卡器封裝的數(shù)據(jù)幀上傳到服務(wù)器。

      服務(wù)器端啟用一條線程一直監(jiān)聽6000端口,網(wǎng)絡(luò)中每接入一個(gè)讀卡器,服務(wù)器就會(huì)啟用一條新線程作為客戶端線程,該線程專門用來接收該讀卡器上傳的數(shù)據(jù),因?yàn)樽x卡器封裝的數(shù)據(jù)幀以18個(gè)字節(jié)為單位,所以這條線程以18個(gè)字節(jié)為單位不斷接收網(wǎng)線上傳的數(shù)據(jù),每接收到一幀數(shù)據(jù)就進(jìn)行解析,并根據(jù)RSSI和距離的關(guān)系換算出當(dāng)前標(biāo)簽到讀卡器的距離d,最后將讀卡器ID和距離以鍵值對(duì)的形式保存在同一個(gè)Map中。

      圖6 服務(wù)器端程序流程

      同時(shí),再額外啟用一條線程,專門對(duì)各個(gè)讀卡器保存在Map中的數(shù)據(jù)做統(tǒng)一處理。這條線程和其他的線程之間通過Java的線程同步技術(shù)CyclicBarrier來實(shí)現(xiàn)同步,所有的線程之間彼此等待,當(dāng)所有客戶端都讀取一幀數(shù)據(jù)之后喚醒數(shù)據(jù)處理線程來處理數(shù)據(jù),處理的方式是根據(jù)定位算法計(jì)算出當(dāng)前標(biāo)簽的坐標(biāo),并把計(jì)算結(jié)果顯示出來,處理完成后再通知其他線程繼續(xù)讀取數(shù)據(jù),如此循環(huán)。

      2 定位方法

      2.1 RSSI確定距離

      RSSI反映了特定信道下的接收信號(hào)強(qiáng)度等級(jí),在無線應(yīng)用中,可以通過RSSI來評(píng)估當(dāng)前發(fā)送者到接收者的距離,計(jì)算公式如下:

      式中,P(d)代表收發(fā)距離為d時(shí)接收的RSSI值,單位為dBm;p(d0)為路徑損耗指數(shù),一般取值2~5;ε是一個(gè)均值為0的高斯隨機(jī)變量。

      選取d0為1m時(shí),就可以得到RSSI和距離的關(guān)系,但是RSSI在實(shí)際中受到環(huán)境變化的影響較大,需要進(jìn)行擬合,才能降低誤差。

      圖7是距離為1m時(shí)實(shí)際測量的135個(gè)RSSI值,從中可以看出,當(dāng)距離不變、環(huán)境不變的情況下,讀取到的RSSI值變化幅度很小,故可以測量不同距離下的RSSI并計(jì)算其平均值,最后根據(jù)平均值來擬合RSSI和距離的關(guān)系。

      圖7 距離為1m時(shí)RSSI的實(shí)測值

      與測量距離為1m時(shí)的方法相同,再去測量不同距離下的RSSI值,測量距離分別為2m、3m、4m、5m、7.5m、9m、12.4m、14.7m、17.8m,最后取平均值,并使用 Matlab進(jìn)行曲線擬合,擬合結(jié)果如圖8所示。

      從圖8中可以看出,隨著距離的增大,RSSI不斷降低,當(dāng)距離超過10m時(shí),趨于穩(wěn)定,最后通過擬合的曲線來驗(yàn)證誤差,得到誤差的均值為1.27,方差為1.44。這說明擬合結(jié)果精確度較高,最后擬合的多項(xiàng)式是RSSI=-0.02d3+0.8d2-10.77d-28.35,d的取值范圍為0~18m,這樣就得到了RSSI和距離的關(guān)系,根據(jù)每次接收到的RSSI,解這個(gè)方程就能得到距離d的值。

      圖8 RSSI和距離的擬合關(guān)系

      2.2 定位算法

      給服務(wù)器連接3個(gè)讀卡器,并為其選取合適的中心坐標(biāo),記為 A(x1,y1)、B(x2,y2)、C(x3,y3),每個(gè)讀卡器都讀取一幀數(shù)據(jù),并通過RSSI值來計(jì)算當(dāng)前標(biāo)簽到各個(gè)讀卡器的距離,得到d1、d2、d3,以 A、B、C為圓心、d1、d2、d3為半徑,可以畫出3個(gè)圓,根據(jù)這3個(gè)圓來確定標(biāo)簽當(dāng)前的位置,定位算法示意圖如圖9所示。

      圖9 定位算法示意圖

      2.3 結(jié)果分析

      將3個(gè)固定坐標(biāo)設(shè)置為(-3.04,0)、(4.15,4.05)、(3.87,0),單位為 m。當(dāng)標(biāo)簽處于坐標(biāo)(1,1)時(shí),程序進(jìn)行了100組的坐標(biāo)計(jì)算,最后計(jì)算平均值,得到的結(jié)果是(1.27,1.48),與實(shí)際位置非常接近,方差為0.15。

      門禁系統(tǒng)的實(shí)現(xiàn)需要確定門的坐標(biāo),坐標(biāo)的設(shè)定和門的寬度w、厚度t有關(guān)。首先需要確定門的一邊的中點(diǎn)為坐標(biāo)原點(diǎn)(0,0),其次設(shè)定4個(gè)坐標(biāo)作為門限值,分別為(0,-t/2-1)、(0,t/2+1)、(w,-t/2-1)、(w,t/2+1);然后將3個(gè)讀卡器中的兩個(gè)放在門外,一個(gè)放在門內(nèi),使得三者的交叉區(qū)覆蓋門的范圍;最后將程序計(jì)算出來的坐標(biāo)(x,y)和門的坐標(biāo)進(jìn)行對(duì)比,當(dāng)x>t/2+1+0.15、標(biāo)簽當(dāng)前狀態(tài)在門外同時(shí)成立,或者t/2<x<t/2+1+0.15、y>w或y<0,并且標(biāo)簽當(dāng)前狀態(tài)在門外同時(shí)成立時(shí),判決為進(jìn)門,并更新標(biāo)簽的狀態(tài)為門內(nèi);當(dāng)x<-t/2-1-0.15、標(biāo)簽當(dāng)前狀態(tài)在門內(nèi)同時(shí)成立,或者-t/2-1-0.15<x<-t/2、y>w或y<0并且標(biāo)簽當(dāng)前狀態(tài)在門內(nèi)同時(shí)成立時(shí),判決為出門,并更新標(biāo)簽的狀態(tài)為門外。

      結(jié) 語

      本文介紹了一種以RSSI定位原理為基礎(chǔ)而設(shè)計(jì)的物品管理門禁系統(tǒng),重點(diǎn)做了RSSI與距離關(guān)系的擬合,效果較為理想。系統(tǒng)的設(shè)計(jì)難點(diǎn)在于硬件相關(guān)程序的編寫、RSSI的測量,以及服務(wù)器端程序的控制。通過借鑒Web開發(fā)中的分層思想,使得整個(gè)系統(tǒng)結(jié)構(gòu)清晰,分成了3級(jí),每一級(jí)各司其職,標(biāo)簽和讀卡器之間可通過無線電波進(jìn)行交互,讀卡器和服務(wù)器之間通過網(wǎng)絡(luò)交互,這種設(shè)計(jì)有利于日后進(jìn)行系統(tǒng)維護(hù)并提高擴(kuò)充性。

      [1]TexasInstruments.CC1110PRELIMINARY Data Sheet[EB/OL].(2010-07)[2015-06].http://www.lierda.com/upload/product/down_path/070122/032237200 1169 434729.pdf.

      [2]丁海強(qiáng),何熊熊,莊華亮,等.基于RFID的監(jiān)獄智能定位系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].杭州電子科技大學(xué)學(xué)報(bào),2014,34(1):71-73.

      [3]李文仲,段朝玉.CC1110/CC2510無線單片機(jī)和無線自組織網(wǎng)絡(luò)入門與實(shí)戰(zhàn)[M].北京:北京航空航天大學(xué)出版社,2008.

      [4]李文仲,段朝玉.CC1010無線SoC高級(jí)應(yīng)用[M].北京:北京航空航天大學(xué)出版社,2007.

      [5]劉艷,吳蒙.基于ZigBee技術(shù)的室內(nèi)定位系統(tǒng)的研究[J].計(jì)算機(jī)技術(shù)與發(fā)展,2014,24(4):181-183.

      [6]張潔穎,孫懋珩,王俠.基于RSSI和LQI的動(dòng)態(tài)距離估計(jì)算法[J].電子測量技術(shù),2007,30(2):141-144.

      [7]張潔穎.基于ZigBee網(wǎng)絡(luò)的定位跟蹤研究與實(shí)現(xiàn)[D].上海:同濟(jì)大學(xué),2007.

      [8]侯亞娜,胡維平.無線傳感器網(wǎng)絡(luò)中基于聚類平均的定位算法[J].計(jì)算機(jī)應(yīng)用研究,2010,27(4):1455-1457.

      猜你喜歡
      讀卡器服務(wù)器端線程
      與淘汰命運(yùn)抗?fàn)帯】炊P記本的讀卡器
      淺析異步通信層的架構(gòu)在ASP.NET 程序中的應(yīng)用
      成功(2018年10期)2018-03-26 02:56:14
      淺談linux多線程協(xié)作
      基于EMV非接通信規(guī)范的非接觸讀卡器設(shè)計(jì)
      為二維碼識(shí)別的獻(xiàn)禮之作——評(píng)測平治二維碼門禁讀卡器
      在Windows中安裝OpenVPN
      MATLAB實(shí)現(xiàn)組態(tài)王中TCP/IP讀卡器監(jiān)控方法
      Linux線程實(shí)現(xiàn)技術(shù)研究
      網(wǎng)頁防篡改中分布式文件同步復(fù)制系統(tǒng)
      么移動(dòng)中間件線程池并發(fā)機(jī)制優(yōu)化改進(jìn)
      吉木萨尔县| 大悟县| 鹿泉市| 龙门县| 延寿县| 铜山县| 金溪县| 龙州县| 黄骅市| 姜堰市| 平和县| 新田县| 千阳县| 个旧市| 镇江市| 张掖市| 米林县| 班玛县| 双柏县| 绥江县| 庆阳市| 中山市| 个旧市| 伊吾县| 阜康市| 平塘县| 芦山县| 雷州市| 沅陵县| 巨野县| 江都市| 阳原县| 安宁市| 无棣县| 饶阳县| 八宿县| 新宾| 江门市| 盈江县| 黎平县| 鄂尔多斯市|