<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 消費(fèi)電子 > 設(shè)計應(yīng)用 > 公交車的遠(yuǎn)卡自動收費(fèi)系統(tǒng)設(shè)計

          公交車的遠(yuǎn)卡自動收費(fèi)系統(tǒng)設(shè)計

          作者: 時間:2016-10-15 來源:網(wǎng)絡(luò) 收藏

          引言

          本文引用地址:http://www.ex-cimer.com/article/201610/306934.htm

          隨著社會的發(fā)展,城市公共交通已變成我們生活中不可或缺的一部分。目前,公交收費(fèi)主要有人工售票和刷卡投幣收費(fèi)兩種方式。人工售票雖然具有監(jiān)督性強(qiáng)、能有效防止偷票漏票現(xiàn)象的優(yōu)點(diǎn),但是每月需要給售票員發(fā)放工資,進(jìn)而使得成本提高。刷卡和投幣收費(fèi)能解決成本問題,但是乘客上下車非常不便,特別是高峰期,大大減緩了上下車速度。當(dāng)前國內(nèi)外公交車收費(fèi)采用的卡與收費(fèi)機(jī)操作距離不超過0.1 m(下面簡稱這種卡為“近卡”),乘客繳費(fèi)需要從衣袋,包內(nèi)取卡,貼近收費(fèi)機(jī)刷卡,再將卡放回衣袋、包內(nèi),這些動作減緩了乘客上車速度,特別對雙手?jǐn)y帶東西的乘客,刷卡操作會很不方便。

          本文研究的公交車自動收費(fèi)系統(tǒng)使用有源標(biāo)簽完成公交卡的設(shè)計,在保證較長使用壽命的基礎(chǔ)上,使感應(yīng)距離增大到1 m左右。將車載系統(tǒng)放置在距離公交車上客門口約1 m左右的距離,乘客上車時經(jīng)過車載系統(tǒng)就能夠成功刷卡,同時使用的防碰撞算法保證了在乘客上車擁擠的情況下也能夠成功刷卡,成本低且效率高。近年來,地鐵交通的大力發(fā)展也為人們的出行帶來極大的方便,本系統(tǒng)經(jīng)過修改后同樣可以用于地鐵的自動收費(fèi),應(yīng)用空間比較廣闊。

          1 系統(tǒng)的整體構(gòu)成

          公交車系統(tǒng)總體分為兩大部分:公交卡和車載系統(tǒng)。公交卡主要由nRF24LEl模塊和組成;車載系統(tǒng)主要由主處理器、GPS定位模塊、液晶顯示電路、存儲電路、語音報站電路、等構(gòu)成。系統(tǒng)總體結(jié)構(gòu)如圖1所示。

          公交車的遠(yuǎn)卡自動收費(fèi)系統(tǒng)設(shè)計

          當(dāng)乘客攜帶公交卡上車經(jīng)過車載系統(tǒng)時,公交卡的ATA5283接收到車載系統(tǒng)讀卡器端ATA5276芯片發(fā)送的125 kHz電磁波后,激活處在睡眠模式下的公交卡,公交卡進(jìn)入發(fā)送模式,將自己的ID號、卡內(nèi)金額發(fā)送給車載系統(tǒng)。車載系統(tǒng)給公交卡發(fā)送信息,蜂鳴器響一下表示刷卡成功,并在液晶屏顯示成功信息。同時,車載系統(tǒng)將此公交卡的ID號、金額、上車位置保存在AT24C512存儲器里,當(dāng)乘客要下車將公交卡再次靠近讀卡器時,公交卡再次被喚醒并向車載系統(tǒng)發(fā)送數(shù)據(jù)。車載系統(tǒng)的處理器根據(jù)此公交卡的ID號找到上車時刷卡的信息來計算所需要扣費(fèi)的金額,并向公交卡發(fā)送扣費(fèi)數(shù)據(jù);同時,會將本次乘車信息保存在數(shù)據(jù)庫中,以備查詢使用。公交車到達(dá)終點(diǎn)站后將會進(jìn)行復(fù)位操作,如果有乘客下車時未能感應(yīng)上,則按照到達(dá)終點(diǎn)站的路程進(jìn)行扣費(fèi)。

          2 系統(tǒng)主要部分硬件實現(xiàn)

          2.1 公交卡的硬件設(shè)計

          采用nRF24LE1作為標(biāo)簽芯片,ATA5283作為喚醒芯片組成公交卡的硬件電路。nRF24LE1是一款帶有處理器的2.4 GHz收發(fā)芯片,在一個很小的芯片上集成了51內(nèi)核和nRF24L0 1收發(fā)內(nèi)核,與nRF24L01采用相同的內(nèi)嵌協(xié)議和GFSK調(diào)制方式,具有串口、SPI、I2C、PWM發(fā)生器、隨機(jī)函數(shù)發(fā)生器等豐富的外設(shè)資源,該芯片功耗極低且具有非易失性數(shù)據(jù)存儲器。

          ATA5283是一款檢測靈敏度高和功耗超低的125kHz無線喚醒芯片,具有1 mV的靈敏度,在待機(jī)偵聽125kHz數(shù)據(jù)狀態(tài)時,功耗僅為1~2μA,在接收125 kHz數(shù)據(jù)的過程中,功耗為2~4μA。在接收125 kHz數(shù)據(jù)時,至少檢測到125 kHz載波持續(xù)時間為5.64 ms才進(jìn)入正常工作模式。其中,前1.54 ms的載波周期的時間用于喚醒此芯片,后4.1 ms的載波周期用于進(jìn)行自增益調(diào)整,把接收信號的放大增益調(diào)整到合適的值。兩者再加上紐扣電池等外圍電路構(gòu)成了有源式公交卡,能實現(xiàn)遠(yuǎn)距離的信號發(fā)射與接收。公交卡硬件電路如圖2所示。

          公交車的遠(yuǎn)卡自動收費(fèi)系統(tǒng)設(shè)計

          在沒有檢測到125 kHz信號時,ATA5283芯片以非常低的功耗處于待機(jī)模式。在此模式下,COIL引腳的天線端一直在檢測是否有載波信號到來,N_DATA和N_WAKEUP引腳為高電平,復(fù)位引腳RESET處在低電平狀態(tài)。當(dāng)COIL引腳的天線端接收至少704個載波序列后,ATA5283芯片進(jìn)入工作模式,N_DATA開始接收載波數(shù)據(jù),N_WAKEUP變?yōu)榈碗娖?,喚醒nRF24L E1。由于只需要喚醒功能,無需有效的載波數(shù)據(jù)傳輸,因此,只需將N_WAKEUP與nRF24LE1的P0.6引腳相連。最后,nRF24LE1的P0.0引腳給ATA5283的RESET引腳一個高電平,使ATA5283復(fù)位,讓芯片重新回到待機(jī)監(jiān)聽模式。

          2.2 車載系統(tǒng)射頻模塊電路設(shè)計

          采用的nRF24L01射頻模塊與nRF24LE1的射頻部分是相互兼容的,也工作在2.4GHz頻率段,是通用ISM頻段的無線收發(fā)芯片。內(nèi)置射頻發(fā)送接收器、數(shù)據(jù)緩沖器、GFSK調(diào)制/解調(diào)器、增強(qiáng)模式控制單元及與處理器連接的SPI接口。nRF24L01采用SPI總線方式與處理器通信,處理器自帶SPI接口。

          本設(shè)計將時鐘控制信號SCK、串行數(shù)據(jù)輸出MISO、串行數(shù)據(jù)輸入MOSI、芯片使能引腳CSN、中斷信號IRQ、射頻使能引腳CE分別與處理器的PA5、PA6、PA7、PC4、PB0、PC5引腳直接相連,具體電路如圖3所示。同時,該芯片的增強(qiáng)模式具有自動重發(fā)和自動應(yīng)答功能,中斷信號IRQ用來告訴處理器其接收和發(fā)送數(shù)據(jù)的狀態(tài),使處理器及時根據(jù)狀態(tài)來做出相應(yīng)的處理,這些功能大大減少了MCU的工作量。

          公交車的遠(yuǎn)卡自動收費(fèi)系統(tǒng)設(shè)計

          2.3 車載系統(tǒng)低頻喚醒發(fā)射電路設(shè)計

          采用不斷發(fā)射低頻125 kHz電磁波的形式去激活有源標(biāo)簽,發(fā)射芯片采用ATA5276,它能發(fā)射頻率為125kHz的信號,該芯片驅(qū)動天線線圈的峰值電流是可調(diào)的,輸出的最大峰值電流可以達(dá)到1.5 A,調(diào)制方式是ASK調(diào)制,波特率可達(dá)4Kps,芯片工作電壓范圍為8~24 V。處在待機(jī)模式時電流消耗小于50 μA,傳輸?shù)?25 kHz電磁波傳給相應(yīng)的接收器,通過的PD0引腳可以控制該芯片工作。

          公交車的遠(yuǎn)卡自動收費(fèi)系統(tǒng)設(shè)計

          設(shè)置DIO腳與STM32的唧引腳連接,如圖4所示,PD0引腳平時處于低電平狀態(tài),當(dāng)PD0發(fā)出高電平時,三極管導(dǎo)通,DIO引腳變?yōu)榈碗娖?,ATA 5276從待機(jī)模式轉(zhuǎn)為工作發(fā)射模式;此時,DIO為低電平,L1和C4組成的串聯(lián)諧振電路開始起振,125 kHz能量通過電感以磁場的形式傳播出去,當(dāng)DIO引腳檢測到低電平時停止諧振。

          3 系統(tǒng)軟件實現(xiàn)

          軟件設(shè)計主要包括車載系統(tǒng)程序設(shè)計和公交卡程序設(shè)計,車載系統(tǒng)程序包括舡24C512存儲器的I2C總線程序、GPS的串口通信程序、nRF24L01和ISD4004的SPI總線程序以及CD 12864的并口程序設(shè)計。公交卡程序主要包括nRF24LE1低功耗和防碰撞程序設(shè)計,采用的編程語言為C語言,靈活方便。軟件開發(fā)平臺是MDK,其集成度高,具有在線仿真和調(diào)試功能,非常適合嵌入式開發(fā)。

          3.1 公交卡軟件設(shè)計

          公交卡軟件設(shè)計要確保標(biāo)簽信息準(zhǔn)確及時地發(fā)送出去,并及時接收讀卡器處理完的數(shù)據(jù)。主要包括三部分:標(biāo)簽的發(fā)射與接收、低功耗設(shè)計、防碰撞算法的設(shè)計。軟件流程如圖5所示。

          公交車的遠(yuǎn)卡自動收費(fèi)系統(tǒng)設(shè)計

          3.2 車載系統(tǒng)射頻模塊軟件設(shè)計

          車載系統(tǒng)射頻模塊nRF24L01的功能是:接收卡片的數(shù)據(jù)信息,交給處理器處理。與STM32通信采用SPI總線協(xié)議,STM32帶SPI口,并且使用STM32庫函數(shù)開發(fā),大大簡化了程序設(shè)計,只要對接口函數(shù)做出相應(yīng)配置,就可以操作SPI寄存器。nRF24L01有多種工作模式,本設(shè)計主要使用基本的發(fā)送和接收模式,為了實現(xiàn)自動應(yīng)答、自動處理字頭和CRC校驗碼,采用 Enhanced ShockBurstTM 增強(qiáng)型的模式,這樣簡化了程序設(shè)計,減小了處理器的負(fù)擔(dān),而且使接收和發(fā)送數(shù)據(jù)更及時準(zhǔn)確。軟件實現(xiàn)流程如圖6所示。

          公交車的遠(yuǎn)卡自動收費(fèi)系統(tǒng)設(shè)計

          結(jié)語

          本設(shè)計的車載系統(tǒng)需要在前門和后門各設(shè)置一個感應(yīng)裝置,要求乘客前門上車,后門下車。當(dāng)前門的讀卡器檢測到乘客上車時,公交卡發(fā)送信息給車載系統(tǒng),車載系統(tǒng)做出回應(yīng)并記錄公交卡發(fā)送來的信息。車輛運(yùn)行時,不發(fā)送125 kHz的喚醒信號,因此公交卡不能被喚醒,只有在車門被打開、乘客靠近讀卡器時,才能被喚醒。當(dāng)乘客下車、被后門感應(yīng)器檢測到時,將接收到的公交卡信息與上次檢測到的信息比較,做出相應(yīng)扣費(fèi)處理。模擬程序設(shè)計是每隔1分鐘,站數(shù)加1,表示公交車走了1站,扣費(fèi)標(biāo)準(zhǔn)為每10站扣1元。采用10張公交卡進(jìn)行了測試。測試結(jié)果表明,該系統(tǒng)能及時完成對卡片的數(shù)據(jù)讀取和數(shù)據(jù)處理。

          • STM32單片機(jī)中文官網(wǎng)
          • STM32單片機(jī)官方開發(fā)工具
          • STM32單片機(jī)參考設(shè)計


          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();