張興
摘 要
利用基于Linux系統(tǒng)樹莓派的硬件電路,編寫Python腳本操作IC卡讀寫模塊處理M1型IC卡信息,通過在樹莓派上搭建PHP服務(wù)器顯示人員刷卡登記數(shù)量及具體信息,最終實現(xiàn)人員門禁管理系統(tǒng)并在某海上移動平臺塢修期間得到應(yīng)用驗證。利用該方法可在其他類似硬件上快速構(gòu)建一套人員安全管理的門禁系統(tǒng)。
【關(guān)鍵詞】樹莓派 門禁 ISO14443B協(xié)議 Python PHP 局域網(wǎng) IC卡讀寫模塊
近年來,隨著電子和信息化技術(shù)的不斷發(fā)展,門禁系統(tǒng)已被廣泛應(yīng)用于人員及物料進(jìn)出管理、樓宇物業(yè)管理、車庫管理中。門禁系統(tǒng)作為一種安防措施,能夠起到良好的隔離作用,防止外界未授權(quán)人員及車輛進(jìn)入,提升相關(guān)區(qū)域的安全管理等級。
本文介紹一種快速構(gòu)建低成本門禁系統(tǒng)的設(shè)計方法,該方法基于嵌入式Linux樹莓派硬件系統(tǒng),利用現(xiàn)有的IC卡讀寫器模塊構(gòu)建門禁系統(tǒng)硬件系統(tǒng);軟件系統(tǒng)則使用Python和PHP腳本語言,經(jīng)過快捷的二次開發(fā),最終實現(xiàn)門禁軟件系統(tǒng)構(gòu)建與應(yīng)用。
目前利用該方法構(gòu)建的門禁系統(tǒng)已成功應(yīng)用于某石油平臺塢修項目的人員管理中。
1 門禁系統(tǒng)硬件構(gòu)成
一般IC卡芯片都遵循ISO14443技術(shù)協(xié)議,該協(xié)議規(guī)定了非接觸式IC卡的物理特性、射頻能量及接口、防碰撞協(xié)議、數(shù)據(jù)傳輸協(xié)議等內(nèi)容,如果從零開始設(shè)計一套門禁系統(tǒng),則需花費大量時間、人力、物力,最終成本和效果上會大打折扣。為加快設(shè)計應(yīng)用進(jìn)度,這里筆者推薦使用IC卡讀寫器模塊開發(fā),目前市場上的IC卡讀寫器模塊有RS232,RS485 ,USB等多種接口形式,這些模塊已將IC卡芯片的讀寫命令封裝打包,用戶無需開發(fā)底層復(fù)雜驅(qū)動程序,而通過廠家提供的接口協(xié)議二次開發(fā)使用。
本文中使用YMC150系列IC卡模塊,該模塊工作電壓5V,RS232通訊接口,TTL接口電平,默認(rèn)波特率9600Bit/s,可直接連接樹莓派電路串口,無需電平轉(zhuǎn)換芯片,這樣便于設(shè)備連接及調(diào)試。主要工作模式包括主動讀卡號、主動讀數(shù)據(jù)塊、主動讀取卡號與數(shù)據(jù)塊、命令模式。工作頻率為13.56MHz,支持ISO14443A協(xié)議,可實現(xiàn)功能讀卡號,讀數(shù)據(jù)塊,扇區(qū)加密,增減值等,本文軟件設(shè)計基于模塊主動讀取卡號與數(shù)據(jù)塊信息的工作模式。
樹莓派微型電腦最早于2012年3月面市,基于32位ARM芯片設(shè)計,外形只有信用卡大小,卻具有電腦的所有基本功能,具有USB、以太網(wǎng)、音頻、視頻接口等,另外還包括GPIO、SPI、I2C、UART等多種擴(kuò)展接口;其軟件系統(tǒng)基于Debian Linux,可安裝運行Python、PHP等多種高級編程及腳本語言。
利用樹莓派和IC卡模塊構(gòu)建的門禁系統(tǒng)結(jié)構(gòu)示意圖如下圖1所示。
從圖1可見,該門禁系統(tǒng)利用樹莓派串口連接YMC150系列讀卡器模塊,而通過HDMI接口連接一臺顯示器作為信息輸出,從而構(gòu)建門禁系統(tǒng),該系統(tǒng)硬件結(jié)構(gòu)簡單,利用了樹莓派的硬件串口和顯示器接口,而1代樹莓派還帶有RCA電視信號接口,也可直接連接老式電視作為顯示器,在一定程度上降低了該門禁系統(tǒng)構(gòu)建成本。
2 門禁系統(tǒng)軟件設(shè)計
門禁軟件系統(tǒng)利用Python串口模塊pySerial讀取樹莓派串口接收的IC卡信息, 解碼人員信息后存放在Sqlite數(shù)據(jù)庫里,利用PHP服務(wù)器讀取Sqlite數(shù)據(jù)庫并顯示在主頁上。這部分主要包括:人員信息存儲與IC卡信息編解碼設(shè)計、人員信息處理及顯示。
2.1 人員信息存儲與編、解碼設(shè)計
本文中使用標(biāo)準(zhǔn)M1卡存儲人員信息,該卡內(nèi)部芯片遵循ISO14443A協(xié)議,其內(nèi)部存儲空間為8092*1b,即1024Bytes,1KB. 內(nèi)部存儲具體又分為16個扇區(qū),每個扇區(qū)分為4個塊,每個塊為16字節(jié)。其中第0扇區(qū)的塊0(絕對地址0塊)存儲廠家信息,用戶不能更改。
除0扇區(qū)外,其余扇區(qū)都有3個數(shù)據(jù)塊和1個尾塊。尾塊一般用于加密保護(hù)。
這里將某個空閑數(shù)據(jù)塊作為人員信息編碼儲存區(qū),16位字節(jié)做如下圖2分配:2字節(jié)人員編號+12字節(jié)人員姓名拼音編碼+2字節(jié)單位或部門編碼。其中須對人員姓名編碼拼音長度約束,否則會出現(xiàn)異常。
這里說明一下16字節(jié)數(shù)據(jù)與ASCII編碼的關(guān)系。16個字節(jié),1個字節(jié)8位,而ASCII碼表示的字符正好為1個字節(jié)。因此剛好可以將人員姓名信息用ASCII編碼來表示。而人員編號和單位部門信息直接用數(shù)字表示,無需ASCII編碼轉(zhuǎn)換。例如,對人員張三編號,人員編號設(shè)置為1001,姓名為zhangsan,單位部門編碼為0001,那么經(jīng)過編碼的信息為:10017a68616e6773616e000000000001。其中7a68616e6773616e為zhangsan字符串的ASCII編碼。而開頭4位1001以及末尾4位0001則分別代表人員編號和部門編碼。通過廠家提供demo軟件可以將該信息寫入到IC卡的空閑數(shù)據(jù)塊內(nèi)即可完成人員信息存儲。
姓名字符串編碼使用Python的ord函數(shù)直接將字符轉(zhuǎn)換為ASCII碼,chr函數(shù)可正常解碼得到人員姓名拼音。
2.2 人員信息系統(tǒng)處理及實時顯示。
上文中人員編碼約束了字節(jié)數(shù),信息處理時根據(jù)人員編碼規(guī)則對IC卡模塊傳送的串口信息進(jìn)行處理即可。樹莓派支持Python腳本運行,通過導(dǎo)入pySerial模塊來處理串口數(shù)據(jù)。
通過查閱IC卡模塊通訊技術(shù)協(xié)議(如圖3所示),可知IC讀卡器模塊返回數(shù)據(jù)包為28個字節(jié)數(shù)據(jù)信息,16字節(jié)信息位于11--26位,那么利用Python腳本處理該信息并寫入到sqlite數(shù)據(jù)庫里,Python腳本自帶sqlite3模塊,使用十分便捷。
門禁系統(tǒng)的顯示通過搭建PHP腳本服務(wù)器實現(xiàn),具體架構(gòu)為Linux+Apache+PHP+MySQL。服務(wù)器利用PHP腳本來操作sqlite數(shù)據(jù)庫,統(tǒng)計人員信息,并顯示在網(wǎng)頁上,完成門禁系統(tǒng)的搭建。一旦將該系統(tǒng)接入局域網(wǎng),可以實現(xiàn)信息局域網(wǎng)內(nèi)共享。
具體信息處理流程如圖4所示。
3 門禁系統(tǒng)整體使用情況
目前,這種門禁管理系統(tǒng)已于2016年3月份成功在某海洋石油平臺塢修項目中得到應(yīng)用和驗證,系統(tǒng)完全可用于管理平臺修
理期間的上下平臺人員。由于平臺塢修期間承包商種類及作業(yè)人員數(shù)量多,作業(yè)類型復(fù)雜,最高峰時作業(yè)人數(shù)曾達(dá)到280人,為掌控作業(yè)人員數(shù)量和降低作業(yè)風(fēng)險,必須采用門禁刷卡系統(tǒng),避免作業(yè)人員因為趕工、加班或者違法進(jìn)入平臺作業(yè)等因素導(dǎo)致監(jiān)管丟失而發(fā)生意外。
在門禁系統(tǒng)構(gòu)建完畢后,筆者專門與塢修平臺的安全監(jiān)督、各項目主管梳理項目人員及部門、工種信息,不斷完善編碼方法,通過對不同單位人員及工種區(qū)別編碼,充分發(fā)揮該門禁系統(tǒng)作用。
由于目前開源硬件系統(tǒng)發(fā)展迅速,基于Linux的硬件平臺層出不窮,除了樹莓派電腦外,還出現(xiàn)了Cubieboard,Nano Pi,Banana Pi,Orange Pi等多種硬件平臺,在這些平臺上都可以仿照該方法搭建一套門禁管理系統(tǒng)。
4 總結(jié)
本文利用樹莓派微型電腦的強(qiáng)大功能快速構(gòu)建并實現(xiàn)了一種門禁系統(tǒng),并已成功應(yīng)用,該系統(tǒng)目前可實現(xiàn)人員上下平臺信息統(tǒng)計及顯示,未來可以通過收集塢修人員的健康信息和特種作業(yè)持證信息建立相關(guān)數(shù)據(jù)庫,來對人員證件是否在有效期內(nèi)進(jìn)行實時監(jiān)管,一旦證件過期則出現(xiàn)提示和報警,這樣可有效防止人員無證上崗。
參考文獻(xiàn)
[1]青島東合信息科技有限公司.RFID開發(fā)技術(shù)及實踐[M].西安.西安電科技大學(xué)出版社,2014.
[2] Magnus Lie Hetland.Python基礎(chǔ)教程(第2版.修訂版)[M].北京.人民郵電出版社,2014.
[3]深圳市昱閔科技有限公司[Z].HF高頻讀寫器系列協(xié)議手冊V1.0.3
[4]樹莓派實驗室.在樹莓派上搭建LAMP服務(wù)[EB].http://shumeipai.nxez.com/2013/10/13/install-and-config-lamp.html