射頻卡流量管理系統

首先讀取IC卡,將IC卡存儲的信息顯示出來,如果顯示成功,則打開電磁閥,開啟外部中斷計數脈沖,根據脈沖個數進行相應的扣款操作。比如每10個脈沖扣相應的金額,完成扣款后同時返回余額,并顯示出來。寫一個上位機對姓名,錢包,學號等進行更改。

  • RFID
  • 流量管理
  • 電子DIY
Image placeholder
蟲子先生 2017-05-01 08:00

讓大家久等了,電子制作射頻卡流量管理系統在立馬分享給大家!
希望不管您覺得我做得好還是不好,都回復一下,渴求您寶貴的意見,也期待您的鼓勵!
----------------------------------------------------------------------------------
? ?? ????先來個全家福!!!
*****************************************************

dd4e4f08a68e81a5d06aab4dc8ee12ad.jpg?


******************************************************
? ?? ???首先介紹下制作的理由,想對淋浴,飲水等進行流量控制,目前我校是按時間消費的,這個不科學,飲水機一般是平攤費用,有了流量收費,我們可以根據自己的流量付費,基本是公平的。并且現在很多大學都用的是IC卡,IC卡有很多優點:
? ?? ??a、存儲容量大。磁卡的存儲容量大約在200個字符;IC卡的存儲容量根據型號不同,小的幾百個字符,大的上百萬個字符。

? ?? ? b、安全保密性好,不容易被復制,IC卡上的信息能夠隨意讀取、修改、擦除,但都需要密碼。

? ?? ? c、CPU卡具有數據處理能力。在與讀卡器進行數據交換時,可對數據進行加密、解密,以確保交換數據的準確可靠;而磁卡則無此功能。

? ?? ?d、使用壽命長,可以重復充值。

? ?? ?e、IC卡具有防磁、防靜電、防機械損壞和防化學破壞等能力,信息保存年限長,讀寫次數在數萬次以上。

-------------------------------------------------------------------------------
? ?? ??思路:
? ?? ???? ???首先讀取IC卡,將IC卡存儲的信息顯示出來,如果顯示成功,則打開電磁閥,開啟外部中斷計數脈沖,根據脈沖個數進行相應的扣款操作。比如每10個脈沖扣相應的金額,完成扣款后同時返回余額,并顯示出來。寫一個上位機對姓名,錢包,學號等進行更改。
? ??
-------------------------------------------------------------------------------
? ???材料:
? ?? ???EHY射頻卡讀寫模塊? ?? ?? ?? ?? ?? ? 2? ?? ?? ?? ?? ? 串口協議? ? 用于讀寫射頻卡
? ?? ???STC12C5A60S2單片機? ?? ?? ?? ?? ?2? ?? ?? ?? ?? ? 選他是因為是雙串口,并且速度還不錯
? ?? ???繼電器? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?2? ?? ?? ?? ?? ???控制電磁閥
? ?? ???三極管? ?8050? ?8550? ?? ?? ?? ?? ? 若干,? ?? ?? ? 驅動蜂鳴器,繼電器
? ?? ???LED? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?若干
? ?? ???7805穩壓? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?2
? ?? ???12864液晶? ?? ?? ?? ?? ?? ?? ?? ?? ?? ? 2
? ?? ???流量計? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ???2? ?? ?? ?? ?? ?? ? 一熱一冷(熱的是銅材質的)
? ?? ???電磁閥? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ???2? ?? ?? ?? ?? ?? ? 一熱一冷(熱的是銅材質的)?
? ?? ???等
------------------------------------------------------------------------------
??好了,咱們開始吧
??加上上課的時間,研究了射頻卡,基礎知識必須要,不然不知道怎么用他的,我選用了X寶的EHY射頻卡讀寫模塊,他是使用串口協議做的一個模塊,由于我自己高頻布線沒經驗,如果自己做要很久的時間估計,還是自己本身的欠缺。先說下這個串口協議的缺點,我也是用了才知道的,他的所有命令都是以AA BB開頭,最后一位數據是前面出開頭以外的異或結果,串口收數據的時候本來就不知道收多長,他這個版本的模塊沒有解決這個問題, 舉個例子 : 尋卡的命令是AA BB 02??20??22? ?,AA??BB開頭,22是前面02和20的異或結果。推薦大家使用其他協議的。

------------------------------------------------------------------------------ ?
原理圖以及PCB圖
------------------------------------------------------------------------------ ?
首先設計電路圖,IO口沒幾個的其實

8609bfed65ec66e8794b4f60aa21e270.jpg?

*****************************************

5d7b755440e2eaee817799ae21ff1201.jpg?


****************************************

說下圖里面的錯誤,驅動繼電器的三極管大家用8050,然后是PCB上,液晶倒數第二腳沒接VCC,出現的問題就是液晶有數據不顯示,后來發現,原理圖里面沒有接,郁悶了,大家可以重新畫


-----------------------------------------------------------------------------?
驅動12864
----------------------------------------------------------------------------- ??

b9dc255ca3f25b425b28a1d069d945fd.jpg

*************************************
沒有用戶,等待模式
**************************************

733500abcd3ef6e6e1f0792e0a09a7eb.jpg

?
*************************************
讀到卡了,顯示姓名,學號,錢包
*************************************

73728e43ca222796043faf886e91219f.jpg

**************************************
隨著流量計脈沖個數增長,單片機進行計費,同時進行扣款操作,操作完畢顯示當前余額
**********************************************************************

1e910fc00c9b180ece6abf62a26dc3ac.jpg

?
*************************************
用戶移走卡,蜂鳴器長鳴一聲,提示卡已移走
*********************************************************************

上位機(改變姓名,充值,初始化等操作,依賴于模塊)?用C#寫的哈!
------------------------------------------------------------------------------------------------- ?

434280e1691ecdc950a3f83829b1bec8.jpg

**************************************
沒選擇串口前所有的都是灰色,表示不可操作
**************************************

426f3884a0795d7458ab8da788a2f52b.jpg

***************************************
選擇串口后,按鈕可操作,更改框可以進行改寫
****************************************

d4c9b35a7cbd620c0df2f051f9e0b4a1.jpg

**************************************
單擊讀卡按鈕后的顯示
*************************************
注:下面操作幾個就點開始執行即可,這里不贅述,上位機源代碼在文章最后
-------------------------------------------------------------------------------------------------??
射頻卡通訊設備? ?(和上位機搭配使用)
-------------------------------------------------------------------------------------------------

? ?
406057ab12125875373ed4bb288e4641.jpg?


*****************************************************************************
上面黃色的紙是打印的,雙面膠貼上去,內部是一個USB轉TTL,還有個射頻卡讀寫卡模塊。
******************************************************************************?

-------------------------------------------------------------------------------------------------??
程序部分

-------------------------------------------------------------------------------------------------??
扣費的時候需要注意下
***************************************************
EX0?=?0;
countflag?=?0;//脈沖標志清零
feetemp?=?0x01;//這里是扣的金額
feecount?=?feecount?+?feetemp;//計算使用總額,需要顯示也可以顯示的
ComDecrPurse[12]?=?feetemp;//寫入扣錢金額
j?=?Command_choic(7);//100個脈沖減少一分錢
*******************************************************************************
然后個數的問題,在外部中斷里面去修改下就好了,建議大家使用宏定義直接可以在頂部修改即可
**************************************************************************
???count++;
???if?(count?==?1)?//這里更改脈沖個數
???{?????????????????????????????????????????
??????countflag?=?1;
??????????count?=?0;
???}
********************************************************************************

注:本次為什么使用雙串口單片機是有原因的,因為一邊要和模塊通信,一邊要打印數據出來觀察是否正確,所以要使用兩個串口,當然我用的串口2和模塊去通信,這也是為什么用12C5A60S2的原因哈.

f2556ad103781762b10523dcda4b73ea.jpg


8066ad28072c0300c9a34075c51c8111.jpg




9d4bbb586efb54720c656f15862a517b.jpg

4a8c21e86c3b8915736052c348df8dfc.jpg

ce65a801f9022fe06447ee7efd7adec5.jpg

d47e555a0cff28f82baa9016fc429e88.jpg

***************************************
最后就是這個屌絲樣子

c7f279b1ded943e76ad19fbd0ac038f8.jpg

評論0