基于嵌入式紙幣識別系統(tǒng)的設(shè)計與實現(xiàn)
1 引言
紙幣識別系統(tǒng)已經(jīng)廣泛應(yīng)用于金融、商業(yè)、交通、電信、公用事業(yè)、文化娛樂等各個領(lǐng)域的自動存款機、自助信息亭、自動充值機、自動售貨機、自動售卡機、自動售票機、紙硬幣兌換機、自動繳費機等等。經(jīng)過幾十年的發(fā)展,紙幣識別技術(shù)已經(jīng)發(fā)展到了比較成熟的階段,能夠達到比較高的識別水平。識別器的機械、電機控制方面也已比較完善。但目前國內(nèi)外主要廠商的主流產(chǎn)品都是基于單片機(無操作系統(tǒng)),在功能、擴展性等方面比較有限。隨著技術(shù)的革新和自助服務(wù)在國內(nèi)的迅速興起,基于單片機的紙幣識別系統(tǒng)已經(jīng)越來越不能滿足市場需求。
基于單片機的紙幣識別系統(tǒng)中,由于處理器處理能力和系統(tǒng)資源的限制,采集系統(tǒng)在采集時獨占處理器,其他系統(tǒng)只有等采集結(jié)束后才能處理采集到的數(shù)據(jù),這樣使得整個處理的時間延遲了不少。并且單片機本身功能簡單,對現(xiàn)在很多新增功能不能很好的支持。
本文從uClinux操作系統(tǒng)[1]和S3C4510B的特點[2]出發(fā),結(jié)合紙幣識別系統(tǒng)采集系統(tǒng)的要求,采用中斷方式實現(xiàn)采集,本采集系統(tǒng)將采集到的數(shù)據(jù)送往非實時程序與采集系統(tǒng)共享的內(nèi)存區(qū),縮短了其他模塊的訪問時間,這樣將提高整個紙幣識別系統(tǒng)的并發(fā)處理能力,充分利用處理器的強大處理能力和系統(tǒng)資源。在軟件識別部分選取預(yù)處理之后的紙幣圖像的尺寸特征用模糊邏輯推理方法識別圖像的面值, 提取矩作為特征,采用RBF神經(jīng)網(wǎng)絡(luò)來識別紙幣的正反面和正反向及判斷紙幣的真假,并通過實驗證明該系統(tǒng)的有效性和可行性。
2 特征采集系統(tǒng)
2.1 硬件簡介
特殊光發(fā)光/接收電路是紙幣識別系統(tǒng)的關(guān)鍵信號收集電路,具體結(jié)構(gòu)如圖1所示。在紙幣通道上、下設(shè)有特殊光發(fā)光部件和接收部件,S3C4510B對發(fā)光部件進行強度控制。當(dāng)有紙幣通過時,接收部件將檢測到的特殊光信號傳給模數(shù)轉(zhuǎn)換器TLC1543。共有三路類似的特殊光發(fā)光/接收電路,這三路信號通過TLC1543后由SPI串行總線傳回S3C4510B。
圖1 特殊光發(fā)光/接收電路
光有以上特殊光發(fā)光/接收電路還是不夠的,要采集多個不同點的信息還要借助其他的硬件設(shè)備,碼盤光耦信號收集電路和馬達電機驅(qū)動電路必不可少。
馬達電機的作用是帶動傳動裝置將放入紙幣通道的紙幣卷進紙幣器。在紙幣通道上下都有特殊的發(fā)光部件和接受部件,它們在紙幣被卷入紙幣器時是保存不動的,那么紙幣上的多個點就能被特殊的發(fā)光部件掃描,這樣就實現(xiàn)了對紙幣上多個點的數(shù)據(jù)采集。馬達電機驅(qū)動電路如圖2所示。S3C4510B通過大電流電機驅(qū)動芯片L298驅(qū)動步進電機,電機的過載信號也由L298傳回。
圖2 馬達電機驅(qū)動電路
碼盤是安裝在電機旁對電機進行測速的角度傳感器,碼盤光耦是測速光信號的發(fā)生器和接收器。碼盤光耦將接收到的信號經(jīng)施密特觸發(fā)器整形后,傳送到S3C4510B的I/O口。這個電路對實現(xiàn)采集系統(tǒng)的意義重大。而本文所設(shè)計的采集系統(tǒng)也是依賴這一電路產(chǎn)生的反饋信號,形成中斷,從而實現(xiàn)對采集數(shù)據(jù)的讀取。碼盤光耦信號收集電路如圖3 所示。[!--empirenews.page--]
圖3 碼盤光耦信號收集電路
以上的硬件電路再加上傳動裝置等,就構(gòu)成了采集系統(tǒng)的硬件基礎(chǔ)設(shè)備。
2.2 程序設(shè)計
本文設(shè)計的采集系統(tǒng),所采集的數(shù)據(jù)是紙幣上等距離點上的數(shù)據(jù),采集到的數(shù)據(jù)作為RBF神經(jīng)網(wǎng)絡(luò)分類器的輸入,并用它來判斷紙幣的真假,從而使紙幣識別系統(tǒng)決定是否接受被檢測的紙幣??梢?,能正確的取得紙幣的數(shù)據(jù)對這些算法來說是非常重要的。當(dāng)紙幣的一端進入紙幣通道時,位置傳感器提示系統(tǒng),紙幣進入預(yù)定的開始進入位置,而后通過馬達和傳動裝置,紙幣就被卷入紙幣器中。馬達轉(zhuǎn)過相同的角度,紙幣也就移動相同的距離,而碼盤光耦電路每產(chǎn)生一個反饋信號,馬達轉(zhuǎn)過的角度是一個固定值,紙幣移動距離也就是一個固定值,那么根據(jù)這個反饋信號就能實現(xiàn)固定等距離點的采集, 所以硬件的設(shè)計是能保證,當(dāng)紙幣上的定點到達紙幣識別系統(tǒng)特殊光發(fā)光部件和接收部件中間時,通知采集程序此時數(shù)據(jù)有效。馬達轉(zhuǎn)過多少角度碼盤光耦產(chǎn)生反饋信號,是由碼盤光耦的規(guī)格決定。
數(shù)據(jù)采集系統(tǒng)的程序部分要解決的問題,就是能夠及時根據(jù)碼盤光耦電路的反饋信號,實時的將特殊光傳感器中的數(shù)據(jù)讀出,而后保存。由于uClinux操作系統(tǒng)本身的限制,紙幣識別系統(tǒng)中只有一個實時任務(wù)即采集,所以考慮采用中斷的方式解決這個問題 。
在本系統(tǒng)中,根據(jù)采樣原理,每6毫秒采集一次數(shù)據(jù),選用了適合本采集系統(tǒng)規(guī)格的馬達和碼盤光耦。為了使基于S3C4510B和uClinux的紙幣識別系統(tǒng)充分發(fā)揮同時采集和處理數(shù)據(jù)的能力,可以從S3C4510B的內(nèi)存中開辟一個獨立的區(qū)域,該區(qū)域是用來提供給非實時程序和采集系統(tǒng)共享的內(nèi)存,專門用來存儲采集數(shù)據(jù),這樣非實時程序就不需要調(diào)用系統(tǒng)調(diào)用或者驅(qū)動程序去訪問采集到的數(shù)據(jù),從而大大提高了將采集數(shù)據(jù)送給非實時程序的速度,提高了處理速度。
3 紙幣識別
3.1 紙幣識別硬件設(shè)計
根據(jù)前面討論的要求,采用S3C4510B芯片設(shè)計的紙幣識別器硬件結(jié)構(gòu)如圖4所示,它包含的主要功能模塊有:S3C4510B中央處理器、系統(tǒng)時鐘和復(fù)位模塊、外擴存儲單元、板載電源模塊、串口通信模塊、網(wǎng)絡(luò)通信模塊、電機驅(qū)動模塊、紙幣檢測模塊以及相關(guān)的信號采集模塊。
圖4 紙幣器硬件結(jié)構(gòu)圖
為了支持日常工作和智能升級的需要,外存存儲單元采用兩片F(xiàn)LASH存儲芯片和一片SDRAM, 串口通信模塊的設(shè)計時使用MDB和RS232,采用S3C4510B UART單元提供的兩個異步串行I/O端口分別給MDB和RS232各一個。在網(wǎng)絡(luò)接口設(shè)計時,由于S3C4510B內(nèi)嵌一個以太網(wǎng)控制器,這里采用一個PHY芯片RTL8201BL與其搭配實現(xiàn)一個10M/100M以太網(wǎng)接口,對外接頭使用RJ45接頭。
3.2 紙幣識別軟件設(shè)計
3.2.1 軟件流程
整個系統(tǒng)的軟件設(shè)計采用模塊化結(jié)構(gòu),其主體框架是通信和識別分時共享。主程序主要以通信模塊為主,通過設(shè)置各種標(biāo)志位,然后把相應(yīng)模塊作為子程序嵌入其中。當(dāng)紙幣未到時,程序工作在通信模塊中,通過檢測各個標(biāo)志位執(zhí)行相應(yīng)操作,保持與上位機的通信。 當(dāng)上位機允許識別器識別的標(biāo)志位有效,并且紙幣到的標(biāo)志位有效時,程序轉(zhuǎn)入識別模塊,這時識別器與上位機的通信斷開,當(dāng)識別處理完成后,喚醒通信模塊繼續(xù)通信。這樣整個系統(tǒng)分時共享,程序流程簡單明了,可讀性和可擴展性好。主程序流程為:
(1) 初始化部分 包括通信的初始化和識別的初始化。[!--empirenews.page--]
(2) 自檢部分 分為上電自檢和正常自檢, 上電自檢是開機上電時,程序檢測硬件系統(tǒng)的狀態(tài),如有錯誤給出錯誤信息。正常自檢是維持正常工作時作的必要的檢測。
(3) 命令處理部分 包括命令的接受和分類處理. 在命令處理過程中,售貨的上位機既發(fā)送紙幣命令,也發(fā)送硬幣命令,兩者交錯發(fā)送,各通信識別器只響應(yīng)上位機發(fā)給自己的命令。
(4) 識別部分 將紙幣信息與標(biāo)準樣本比較可識別紙幣的真假,并置相應(yīng)的標(biāo)志位。
3.2.2 基于RBF神經(jīng)網(wǎng)絡(luò)的紙幣識別
為了能準確快速的識別人民幣,在識別紙幣之前需對其進行必要的預(yù)處理。圖像的傾斜往往會影響到圖像的定位以及待識別信息的提取。因此需要進行圖像的傾斜矯正[3]。二值化處理是把灰度圖像信號變成二值(0,1)的數(shù)字信號。二值化方法通常有整體閾值法和自適應(yīng)的動態(tài)閾值法。實際處理的紙幣圖像比較復(fù)雜,為了更好的適應(yīng)質(zhì)量差的紙幣圖像,采用動態(tài)閾值法[4]。
這里測量了以下5 種人民幣: 第4 版100 元和50元及第5 版100 元、50 元和20 元的高和寬的尺寸(其它面值的圖像處理方法一樣) , 應(yīng)用模糊邏輯推理方法對紙幣面值進行分類[5]。在得到紙幣面值的基礎(chǔ)上, 接著進行紙幣正反面和正反向的識別,并識別出紙幣的真假。中心矩與圖像的平移無關(guān), 故提取中心矩作為特征用于紙幣識別。在紙幣圖像的右上角和左下角均為48×96 的區(qū)域內(nèi)分別提取5 個1-2 階的中心矩合在一起作為10 個識別特征, 然后使用RBF神經(jīng)網(wǎng)絡(luò)對紙幣進行識別,其結(jié)構(gòu)如圖5所示。
圖5 RBF 神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)
RBF神經(jīng)網(wǎng)絡(luò)由:輸入層﹑隱含層和輸出層組成,輸入層節(jié)點只傳遞到隱層,隱層節(jié)點由基函數(shù)構(gòu)成,輸出層節(jié)點通常是線性的。隱層節(jié)點通過徑向基函數(shù)對輸入信號產(chǎn)生一個局部響應(yīng),RBF神經(jīng)網(wǎng)絡(luò)的輸出層節(jié)點是隱層基函數(shù)的輸出進行線性加權(quán)組合,即輸出層的輸出為:
4結(jié)論
本文創(chuàng)新點:設(shè)計一種基于S3C4510B和uClinux的紙幣特征實時采集和識別系統(tǒng),考慮到uClinux操作系統(tǒng)本身的特點,將采集的實現(xiàn)放在了中斷處理子程序中,方便uClinux上的程序快速讀取采集的數(shù)據(jù),滿足紙幣特征實時采集系統(tǒng)要求。在軟件識別部分根據(jù)紙幣圖像的尺寸特征使用模糊推理方法識別出圖像的面值,然后提取識別后圖像的矩特征,采用RBF網(wǎng)絡(luò)進一步識別紙幣的正反面和判別紙幣的真假,這樣提高了識別的速度和精確度。