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