摘 要: 介紹了通過(guò)在ARM+μClinux+Web+SQLite平臺(tái)下擴(kuò)展CAN總線,并以RFID讀卡器作為控制節(jié)點(diǎn)而實(shí)現(xiàn)的電子門票系統(tǒng),。一方面可以方便持卡者查詢門票使用情況,、場(chǎng)所路線以及館內(nèi)人流量,幫助其更好地選擇相關(guān)路線,;另一方面有助于舉辦方實(shí)時(shí)了解各片區(qū)的人流情況及追蹤目標(biāo),,以便做出調(diào)度和提高安防工作效率。
關(guān)鍵詞: RFID,;CAN總線,;ARM;Web Server,;SQLite
由于RFID電子門票具有防偽性能好,、可靠性高、適應(yīng)性強(qiáng),、成本低等特點(diǎn),,已被普遍應(yīng)用于各種大型公共活動(dòng)中。本文提出一種經(jīng)濟(jì)型,、基于嵌入式技術(shù)的RFID電子門票系統(tǒng),。
1 RFID的原理
射頻識(shí)別(RFID)利用射頻信號(hào)的空間耦合或反射的傳輸特性,對(duì)被識(shí)別物體自動(dòng)識(shí)別,,是一種非接觸式自動(dòng)識(shí)別技術(shù),。RFID主要由電子標(biāo)簽(Tag)和閱讀器(Reader)兩部分組成。電子標(biāo)簽由耦合元件和芯片組成,,其工作能量來(lái)源于閱讀器發(fā)出的射頻脈沖,,通過(guò)無(wú)線電波與讀寫設(shè)備進(jìn)行數(shù)據(jù)交換。閱讀器主要由無(wú)線收發(fā)模塊,、天線,、控制模塊和接口電路組成,其主要任務(wù)是控制射頻模塊向電子標(biāo)簽發(fā)射讀取信號(hào),,并接收電子標(biāo)簽的應(yīng)答,,對(duì)電子標(biāo)簽的標(biāo)識(shí)信息進(jìn)行解碼,將標(biāo)識(shí)信息及其他相關(guān)信息傳輸?shù)街鳈C(jī)以便處理,。該系統(tǒng)選用低頻(125 kHz)RFID系統(tǒng),,性能不受環(huán)境影響,,價(jià)格低廉,因此適合大規(guī)模生產(chǎn)使用,。
2 CAN總線技術(shù)[1]
CAN是由ISO定義的串行通信總線,,具有高位速率,、高抗電磁干擾性,、高可靠性等特點(diǎn),而且能夠檢測(cè)到產(chǎn)生的任何錯(cuò)誤,。CAN在微控制器之間互相通信或微控制器與遠(yuǎn)程的外圍器件互相通信的情況下是一個(gè)理想的解決方法,。CAN相比于RS485采用了新技術(shù)及獨(dú)特的設(shè)計(jì),具有多主節(jié)點(diǎn)的網(wǎng)絡(luò)特性,,總線利用率高,,數(shù)據(jù)傳輸速度快,可擴(kuò)充性好,,通信距離長(zhǎng),,具有可靠的錯(cuò)誤處理和檢錯(cuò)機(jī)制,個(gè)別節(jié)點(diǎn)失效并不影響整個(gè)通信網(wǎng)絡(luò)的運(yùn)行,,實(shí)時(shí)性好,。因此在自動(dòng)化各個(gè)行業(yè),CAN取代RS485將是一種不可逆轉(zhuǎn)的趨勢(shì),。
3 ARM+μClinux平臺(tái)下實(shí)現(xiàn)動(dòng)態(tài)Web[2]
在μClinux環(huán)境下,,httpd、thttpd和Boa是三個(gè)主要的Web服務(wù)器,。這里選擇非常適合嵌入式系統(tǒng)的Boa Web服務(wù)器,,它支持認(rèn)證、CGI等,。Boa是一個(gè)單任務(wù)的http服務(wù)器,,μClinux代碼已經(jīng)自帶了Boa的源碼,配置和修改源碼后,,在配置內(nèi)核時(shí)把Boa選進(jìn)內(nèi)核實(shí)現(xiàn)入網(wǎng),,通過(guò)瀏覽器就可以訪問(wèn)嵌入式網(wǎng)頁(yè)。
迄今,,實(shí)現(xiàn)動(dòng)態(tài)Web頁(yè)面有CGI,、ASP、PHP和JSP四種技術(shù)可供選擇,,由于目前μClinux還不支持ASP,、PHP等動(dòng)態(tài)Web頁(yè)面技術(shù),因此本設(shè)計(jì)選擇CGI,。CGI提供Web服務(wù)器一個(gè)執(zhí)行外部程序的通道,,這種服務(wù)端技術(shù)使得瀏覽器和服務(wù)器之間具有交互性。CGI程序接收Web瀏覽器發(fā)送給Web服務(wù)器的信息,進(jìn)行處理后執(zhí)行相應(yīng)的任務(wù),。本系統(tǒng)選擇與平臺(tái)無(wú)關(guān)的C語(yǔ)言編寫CGI程序,。
4 嵌入式數(shù)據(jù)庫(kù)SQLite及其在μClinux上的移植[3]
4.1 嵌入式數(shù)據(jù)庫(kù)SQLite簡(jiǎn)介
嵌入式數(shù)據(jù)庫(kù)SQLite較其他大型數(shù)據(jù)庫(kù)的特點(diǎn)是程序直接調(diào)用相應(yīng)的API實(shí)現(xiàn)對(duì)數(shù)據(jù)的存取操作,無(wú)需獨(dú)立運(yùn)行的數(shù)據(jù)庫(kù)引擎,。SQLite不具有外部依賴性,,完全獨(dú)立,并且提供了對(duì)SQL92標(biāo)準(zhǔn)的大多數(shù)支持:支持多表和索引,、事務(wù),、視圖、觸發(fā)和一系列的用戶接口及驅(qū)動(dòng),。在嵌入式系統(tǒng)中移植SQLite數(shù)據(jù)庫(kù)成為一種很好的解決方案,。
4.2 SQLite開發(fā)技術(shù)
SQLite本身提供了C語(yǔ)言的API接口,使得對(duì)數(shù)據(jù)庫(kù)的操作十分簡(jiǎn)單,,主要是對(duì)3個(gè)API函數(shù)的調(diào)用,。
(1)打開數(shù)據(jù)庫(kù)
int sqlite3_open(const char*filename,sqlite3**ppDb),;
sqlite3_open()用于打開指定的數(shù)據(jù)庫(kù),,數(shù)據(jù)庫(kù)文件名稱由filename參數(shù)指定,并通過(guò)ppDb參數(shù)返回合法的數(shù)據(jù)庫(kù)句柄,。
(2)執(zhí)行數(shù)據(jù)庫(kù)
int sqlite3_exec(sqlite3*,,const char *sql,sqlite_callback,, void*,,char**errmsg);
第一個(gè)參數(shù)sqlite3*是前面open函數(shù)得到的指針,。第二個(gè)參數(shù)const char*sql是一條SQL語(yǔ)句或多條SQL語(yǔ)句,,語(yǔ)句間必須用“;”號(hào)隔開,,以\0結(jié)尾,。第三個(gè)參數(shù)是回調(diào),當(dāng)這條SQL語(yǔ)句執(zhí)行之后,,SQLite3會(huì)調(diào)用該回調(diào)函數(shù),。第四個(gè)參數(shù)void*是傳遞給回調(diào)函數(shù)的參數(shù),如果不需要傳遞指針給回調(diào)函數(shù),,可以賦NULL給該參數(shù),。第五個(gè)參數(shù)char**errmsg用來(lái)保存錯(cuò)誤信息。
(3)關(guān)閉數(shù)據(jù)庫(kù)
int sqlite3_close(sqlite3*db),;
參數(shù)db就是打開時(shí)的結(jié)構(gòu)體,,即數(shù)據(jù)庫(kù)句柄,。
4.3 SQLite應(yīng)用程序交叉編譯
要將嵌有SQLite的CGI程序應(yīng)用到S3C44b0+μClinux開發(fā)平臺(tái)上,必須對(duì)CGI程序進(jìn)行交叉編譯,。由于交叉編譯要用到romfs格式的libsqlite.a庫(kù)文件,,因此必須先對(duì)SQLite源代碼進(jìn)行修改,以便生成靜態(tài)庫(kù)文件libsqlite3.a,。然后交叉編譯生成cgi格式文件,,與內(nèi)核一起編譯后下載到開發(fā)板。
5 電子門票系統(tǒng)的設(shè)計(jì)
在S3C44B0+μClinux+Web+SQLite嵌入式平臺(tái)下,,通過(guò)CAN總線與RFID讀卡器進(jìn)行通信,。整體構(gòu)架如圖1所示。該系統(tǒng)可以分為兩個(gè)模塊:第一部分為各個(gè)場(chǎng)所的刷卡點(diǎn),,包括CAN總線和RFID讀卡器的設(shè)計(jì),該模塊的功能是采集數(shù)據(jù),。第二部分為ARM嵌入式遠(yuǎn)程控制功能,,實(shí)現(xiàn)數(shù)據(jù)的讀取、儲(chǔ)存以及處理,,數(shù)據(jù)包括CAN總線數(shù)據(jù)和Web內(nèi)建表單數(shù)據(jù),。
5.1 CAN通信節(jié)點(diǎn)工作原理[4]
當(dāng)持卡者將RFID電子門票靠近讀卡器時(shí),通過(guò)固有頻率的射頻載波向無(wú)源電子標(biāo)簽傳送信號(hào),,無(wú)源電子門票進(jìn)入讀寫器的天線工作區(qū)域后被激活,,并將載有個(gè)人信息的射頻信號(hào)經(jīng)卡內(nèi)收發(fā)模塊發(fā)射出去;讀卡器天線接收到無(wú)源電子標(biāo)簽發(fā)來(lái)的射頻信號(hào),,經(jīng)過(guò)處理后,,提取出個(gè)人信息,通過(guò)CAN現(xiàn)場(chǎng)總線送至ARM處理器處理,。
5.2 ARM數(shù)據(jù)處理核心[5]
ARM把CAN總線傳過(guò)來(lái)的信息進(jìn)行解析,,得到卡號(hào)和位置的信息,并且更新數(shù)據(jù)庫(kù)里面各項(xiàng)信息,。持卡者或者主辦方通過(guò)Web服務(wù)器就可以查詢信息,。CGI程序在收到Web頁(yè)面內(nèi)建表單的數(shù)據(jù),對(duì)數(shù)據(jù)進(jìn)行處理,,進(jìn)而調(diào)用相應(yīng)的SQLite語(yǔ)言進(jìn)行處理,,例如select、update等操作,。CGI程序完成處理后的輸出被重定向到客戶瀏覽器,,持卡者或主辦方通過(guò)瀏覽器查詢到相關(guān)的信息。
本論文討論了基于嵌入式和RFID技術(shù)的電子門票系統(tǒng),,是一個(gè)經(jīng)濟(jì)實(shí)用的解決方案,。傳統(tǒng)的紙質(zhì)門票功能單一,、效率低、客戶管理和跟蹤很難實(shí)施,。RFID門票是票務(wù)行業(yè)探索的熱點(diǎn),,相信RFID門票將會(huì)被更多的企業(yè)、景區(qū),、活動(dòng)主辦方,、比賽場(chǎng)所接受并應(yīng)用。
參考文獻(xiàn)
[1] 陽(yáng)憲惠.現(xiàn)場(chǎng)總線技術(shù)及應(yīng)用[M].北京:清華大學(xué)出版社,,2003.
[2] 吳堅(jiān),,張家奇,蔣平.μClinux下Web Server及CGI技術(shù)的實(shí)現(xiàn)[J].測(cè)控技術(shù),,2007,,26(4):64-70.
[3] 莊宗輝,薛毓強(qiáng),,連瑞紅.嵌入式數(shù)據(jù)庫(kù)SQLite在遠(yuǎn)程監(jiān)控系統(tǒng)中的應(yīng)用[J].現(xiàn)代電子技術(shù),,2007(8):62-64.
[4] 柯建華,魏學(xué)業(yè).基于RFID與CAN的煤礦井下人員定位系統(tǒng)研究[J].煤炭工程,,2006(11):104-106.
[5] 王國(guó)寧.基于嵌入式Internet的CAN總線遠(yuǎn)程監(jiān)控系統(tǒng)的研究與實(shí)現(xiàn)[D].上海:東華大學(xué),,2006.