我的賬戶
中國電子DIY

科技成就未來

親愛的游客,歡迎!

已有賬號,請

如尚未注冊?

射頻卡流量管理系統(禁止轉載)

  [復制鏈接]
43254 333
蟲子先生 發表于 2013-12-12 21:34:11 | 只看該作者 |只看大圖 |閱讀模式 打印 上一主題 下一主題
本帖最后由 gazelle 于 2014-8-29 14:20 編輯

發現有人在轉載我的帖子,所以下載源文件的權限已經更改,以防那些惡心的人輕松拿到。
只想說一句,你轉載應該經過我的同意!感謝wannabaw2009會員及時反饋信息。

不是怕轉載,有些朋友轉載了,隨意涂改圖片,甚至刪減文字

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

         先來個全家福!!!
*****************************************************
         
******************************************************
        首先介紹下制作的理由,想對淋浴,飲水等進行流量控制,目前我校是按時間消費的,這個不科學,飲水機一般是平攤費用,有了流量收費,我們可以根據自己的流量付費,基本是公平的。并且現在很多大學都用的是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口沒幾個的其實

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

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

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

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

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

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

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

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

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


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

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

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

*****************************************************************************
上面黃色的紙是打印的,雙面膠貼上去,內部是一個USB轉TTL,還有個射頻卡讀寫卡模塊。
******************************************************************************
-------------------------------------------------------------------------------------------------  
程序部分
-------------------------------------------------------------------------------------------------  
++++++++++++++++++++++++++++++++++++++++++++++++++
注:個人覺得本次程序寫得很垃圾,忘各位看官大神海涵,正在提升自我中,不過還是實現了功能吧,初學單片機的壇友請不要模仿。害怕影響你們,真心的。
+++++++++++++++++++++++++++++++++++++++++++
//        search card and get card serial number
uchar xdata ComSearchCard[5]  = {0xAA,0xBB,0x02,0x20};//尋卡,返回AA BB 06 20 92 BF 72 59 20
//        read block No.x
uchar xdata ComReadBlock[13]  = {0xAA, 0xBB, 0x0a, 0x21, 0x00, 0x08, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff};//讀哪一塊第六位就是0x0幾。
//        read block No.8
//uchar ComReadBlock6[13]  = {0xAA, 0xBB, 0x0a, 0x21, 0x00, 0x06, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff};
//        write block No.8 with 0x01 to 0x0f
uchar xdata ComWriteBlock[29] = {0xAA, 0xBB, 0x1a, 0x22, 0x00, 0x08, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,//0xff是密碼
                                                   0x02, 0x00, 0x01, 0x01, 0x00, 0x07, 0x00, 0x01,//
                                                   0x04, 0x02, 0x04, 0x08, 0x00, 0x00, 0x00, 0x00};//要寫的數據
//         initialize block No.8 as a purse with value: 0x12345678
uchar xdata ComIntiPurse[17]  = {0xAA, 0xBB, 0x0e, 0x23, 0x00, 0x05, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,//初始化錢包。分區5為錢包                             
                                                   0xff, 0xff, 0x00, 0x00};
//        read purse value of block No.5
uchar xdata ComReadPurse[13]  = {0xAA,0xBB,0x0a, 0x24, 0x00, 0x05, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff};//讀取分區5的錢包  返回四字節的數據
//        purse in block No.5 increase with value "2"
uchar xdata ComIncrPurse[17]  = {0xAA,0xBB,0x0e, 0x25, 0x00, 0x05, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, //增加錢包的余額
                                                   0x01, 0x00, 0x00, 0x00};//要增加的值
//        purse in block No.5 decrease with value "1"
uchar xdata ComDecrPurse[17]  = {0xAA,0xBB,0x0e, 0x26, 0x00, 0x05, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,//扣費
                                                   0x01, 0x00, 0x00, 0x00};//要減少的值
//  halt the card selected
uchar xdata ComHaltCard[5]    = {0xAA,0xBB,0x02,0x28};//
//  the purse final value after INC & DEC
/********************************************************************
*
*             接收從IC卡返回的數據 。用數組存儲
*  
***********************************************************************/
uchar xdata ICSearchCard[9]={0};//5-7位是卡的序列號
uchar xdata ICReadBlock[21]={0};
uchar xdata ICWriteBlock[5]={0};
uchar xdata ICIntiPurse[5]={0};
uchar xdata ICReadPurse[9]={0};
uchar xdata ICIncrPurse[5]={0};
uchar xdata ICDecrPurse[5]={0};
uchar xdata ICHaltCard[5]={0};
/*****************************提取數據的數組*********************/
uchar xdata user_block8[12]={0}; //學號
uchar xdata user_card[4]={0};  //卡號
uchar xdata user_cash[4]={0}; //現金
uchar xdata user_name[6]={0}; //姓名

/////////////////////////////////////////////
以上是要用到命令數組,處理數組,顯示數組等等
////////////////////////////////////////////

這個是命令選擇入口函數,注釋寫得很詳細,大家自己去看哈,又不懂的可以跟帖。然后就是12864顯示的函數,還有串口什么的初始化。
扣費的時候需要注意下
***************************************************
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的原因哈

上位機的程序也是爛得很有品味各位看官見諒了,實在忍不住,你們就批斗吧!
上位機代碼就不拿上來獻丑了,在附件里,大家有興趣的可以看看,有BUG的,我自己發現了一個。不好意思說啦

-------------------------------------------------------------------------------------------------------------------
搭建管道系統,對飲水機進行改裝模擬,(實際上淋浴系統應該比飲水機好改)
-------------------------------------------------------------------------------------------------------------------

*********************************************************************************
熱水管道系統,前面是流量計,后面是電磁閥
*******************************************************************************


*************************************
熱水冷水搭建即將結束
************************************

*******************************************
差不多了,冷水管道也好了,拐了幾道彎啊
**********************************************

****************************************
接上控制系統,那個小的是射頻卡讀寫模塊
****************************************


***************************************
最后就是這個屌絲樣子,
****************************************
------------------------------------------------------------------------------------
系統目前存在的不足與缺陷
------------------------------------------------------------------------------------

1.流量計我選用的四分,結果其實飲水機的流量沒那么大,四分流量計采用如圖所示很久才有一個反應,感覺還是意外法神的,
沒辦法,估計要改成2分的,但是大家記得電磁閥一定要用四分的,因為2分電磁閥過不鳥水,就是感覺堵著,我直接用嘴吹都吹不動,很費力,然后就是后期我要么自己改成2分,要么整個增壓的,不然不能正常工作
2.如您所見,丑陋之極,表示找不到地方安裝。
3.程序寫得有些亂
4.建議:           a,建議大家寫程序注意部分
                         b,寫程序多用枚舉和結構體,方便,高效
                         c,做這個東西之前,我以為自己想得很周到,沒想到一路出問題,特別是飲水機壓強和電磁閥里面的軟墊子需要一定的壓力才可以開啟,表示無盡的蛋疼

好吧,就到這里了,馬上周末了,祝大家周末愉快,下面是分享給大家的東西,如果您對這個管理系統有什么意見或是批評,望帥哥美女們不吝賜教!小生在此謝過!
------------------------------------------------------------------------------------
附件在此!看官們,回復下給點兒意見唄!謝謝
------------------------------------------------------------------------------------

************************************************
都在里面了,原理圖,上位機,源代碼,射頻卡資料什么的
************************************************
射頻卡流量管理系統發布.zip (10.18 MB, 下載次數: 745)
參與人數 19下載幣 +1 貢獻 +73 刀幣 +290 收起 理由
茅草屋 + 8 + 10 很給力!
黃世仁 + 130 最佳原創帖
ynqjzzh + 10 + 10 精品文章
727462808 + 4 這是練過的嗎?這么強大
ozhaojie + 10
數電menmenchaig + 10 + 10 高科技,支持一下
兄弟當頭GX + 10 + 10
LC丶 + 5 + 10
農夫三拳 + 2 + 5
流星也會永恒 + 10 精品文章

查看全部評分總評分 : 下載幣 +1 貢獻 +73 刀幣 +290

收藏
收藏43
分享
分享
支持
支持0
反對
反對0

精彩評論333

跳轉到指定樓層
2#
葉嘉飛 發表于 2013-12-12 21:34:52 | 只看該作者
搶沙發   嘻嘻  看看
回復

使用道具 舉報

3#
西瓜 發表于 2013-12-12 21:46:45 | 只看該作者
32個贊······強哥好棒·····
回復

使用道具 舉報

4#
大閩江電子 發表于 2013-12-12 21:47:23 | 只看該作者
不錯啊   樓主很強啊
回復

使用道具 舉報

5#
 樓主| 蟲子先生 發表于 2013-12-12 21:50:52 | 只看該作者
大閩江電子 發表于 2013-12-12 21:47
不錯啊   樓主很強啊

過獎了,有很多問題覺得,希望你們覺得那里有問題就批評指正
回復

使用道具 舉報

6#
木頭風火輪 發表于 2013-12-12 21:57:06 | 只看該作者
刷飯卡打水???這個以前在成都有所專科學校里面見識過, 他們是刷卡用熱水洗澡
回復

使用道具 舉報

7#
 樓主| 蟲子先生 發表于 2013-12-12 21:58:32 | 只看該作者
木頭風火輪 發表于 2013-12-12 21:57
刷飯卡打水???這個以前在成都有所專科學校里面見識過, 他們是刷卡用熱水洗澡

可以滴,但是他們是算時間滴
回復

使用道具 舉報

8#
夜曲cjx 發表于 2013-12-12 22:01:08 | 只看該作者
話說這個做的的確很實用,不過我們學校的沐浴是流量計費的
回復

使用道具 舉報

9#
 樓主| 蟲子先生 發表于 2013-12-12 22:02:46 | 只看該作者
夜曲cjx 發表于 2013-12-12 22:01
話說這個做的的確很實用,不過我們學校的沐浴是流量計費的

嗯嗯,我們學校是擠時間啊,覺得很不合適啊
回復

使用道具 舉報

10#
無悔 發表于 2013-12-12 22:19:14 | 只看該作者
不錯,記下了,以后研究!!!!!!!!!!
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 注冊

本版積分規則

關注0

粉絲24

帖子59

發布主題
最新發布
推薦閱讀
關注我們
中國電子DIY官方微信

客服電話:000-000-0000

客服郵箱:776513803@qq.com

周一至周五 9:00-18:00

公司地址:深圳市南山區美麗灣大廈B座

Powered by Discuz! X3.4@ 2001-2013 Comsenz Inc.