于韶東,解品星,李聰
(上汽通用東岳汽車有限公司,山東煙臺,264010)
現代汽車廠有許多叉車、電瓶車、物料運輸車等特種車輛,為了安全起見,需要針對這些特種車輛進行權限管理,掌握車輛運行狀態,駕駛人的信息。基于STM32開發的工廠級IC刷卡機,從應用安全入手,通過原理分析,設計實現搭載無線射頻技術與紅外傳感器的刷卡機,安裝在各特種車輛上,使工廠管理人員對各特種車輛進行權限管理、信息數據收集等得到高效利用,同時對操作特種車輛增加雙重安全保護。
本系統將工卡分為超級卡、管理卡、會員卡三種。
超級卡:直接將卡號寫再單片機內部,掉電不會丟失,每個系統僅有一張,作用是授權管理卡。
管理卡:授權會員卡,將讀取的卡號會寫在存儲器,完成授權,可授權2張管理卡,授權完成的2張管理卡可獨立對會員卡授權。
會員卡:由管理卡授權,將新刷入的卡將被依次記憶在地址1-16中(可以擴展到256,增加EEPROM單元),完成授權,具有DRIVER功能,即具有操作特種車輛的權限。
只有在人體感應開關感應狀態下,會員卡操作才能使特種車輛上電;操作完成后,人體感應開關沒被感應超過10秒,特種車輛自動斷電。
刷卡機系統邏輯圖如圖1所示。
2.1.1 重要參考參數
EEPROM: 8K位;
扇區:16個扇區,每個扇區有4個塊,每塊16個字節,塊是其基本存儲單位;
工作頻率:13.56MHZ;
讀寫距離:10 cm以內;
讀寫次數:寫10萬次,可改寫10萬次,讀無限次;
工作溫度:-20℃~50℃(濕度為90%)。

圖1 刷卡機系統邏輯圖
2.1.2 組成及功能
卡片組成:天線和ASIC。
天線:卡片的天線是只有幾組繞線的線圈,很適于封裝到IS0卡片中。
ASIC:卡片的ASIC由一個高速(106KB波特率)的RF接口,一個控制單元和一個 8K位EEPROM組成。電氣原理圖如圖2所示。
工作原理:讀寫器向M1卡發一組固定頻率的電磁波,卡片內有一個LC串聯諧振電路,其頻率與讀寫器發射的頻率相同,在電磁波的激勵下,LC諧振電路產生共振,從而使電容內有了電荷,在這個電容的另一端,接有一個單向導通的電子泵,將電容內的電荷送到另一個電容內儲存,當所積累的電荷達到2V時,此電容可做為電源為其它電路提供工作電壓,將卡內數據發射出去或接取讀寫器的數據。
功能:具有防沖突機制,支持多卡操作;無電源,自帶天線;內含加密控制邏輯和通訊邏輯電路。

圖2 RC522原理圖
每個扇區有4個塊,塊0、塊1、塊2是數據塊,塊3是控制塊。每個扇區的密碼和存取控制是獨立的,可根據需求進行設定。
存取控制有4個字節,共32位。每個塊有三個控制位,以正和反兩種形式存在于存取控制字節中,決定了該塊的訪問權限。
2.1.4 通訊邏輯
射頻卡與讀寫器的通訊:通過復位應答、防沖突機制的判斷、選擇卡片和進行三次相互確認后進行數據操作。
對數據塊的操作: 讀、寫、加、減、存儲、傳輸、中止。RC522通訊邏輯如圖3所示。

圖3 RC522通訊邏輯圖
選用AT24C02作為 EEPROM存儲電路的芯片,增加卡號存儲需用。原理圖如圖4所示。
特點:低壓和標準電壓操作-2.7(VCC=2.7V至5.5V)-1.8(VCC=1.8V至5.5V);兩線串行接口,施密特觸發器、濾波輸入以抑制噪聲;雙向數據傳輸協議,100k Hz(1.8V)和400k Hz(2.7V,5V)兼容性;為硬件數據保護編寫保護銷;自動計時寫周期(5msmax),100萬寫周期。

圖4 AT24C02原理圖
刷卡機電路板有DC 5V和DC 3.3V電壓的需求,而工廠中電動叉車、電瓶車、物流運輸車具有不同的電壓等級,有輸入DC 24V、DC 36V、DC 48V等,為了滿足各類車輛對不同輸入電壓的需求,在設計電源電路時,選用型號:LM2576HV-5.0V穩壓芯片,設計電路將輸入轉換成穩定的DC 5V;選用型號:AMS1117-3.3V穩壓芯片,同樣設計電路獲得所需的DC 3.3V。
2.3.1 穩壓芯片LM2576HV-5.0特點
能提供降壓開關穩壓器的各種功能,優異的線性和負載調整能力;內部有頻率補償器和固定頻率振蕩器,減少外部元件的數量,不需要加外部散熱片使用方便;TTL關斷能力,低功耗待機模式;能驅動3A的負載,熱關斷及電流限制保護;輸入范圍廣,最高可達DC 60V,滿足各電壓等級的特種車輛使。
2.3.2 穩壓芯片AMS1117-3.3V特點
低dropout電壓調節器,可提供高達1A的輸出電流;優異的過載及過熱保護能力,防止環境影響;最大負載調整率:0.5%;高效的線性調節,優化電壓輸出。
(1)超級卡的卡號已經寫進單片機,掉電不會丟失,用來授權管理卡。當滿足授權條件,刷一次超級卡,便可以對管理卡進行授權。
//檢測到超級卡
if((SN[0]==admin[0])&&(SN[1]==admin[1])&&(S N[2]==admin[2])&&(SN[3]==admin[3])&&(newcard_bit==1)&&(card_id[0]==88))
{ count[0]=count[1]=count[2]=count[3]=0;
AT24CXX_Write(200,count,4);
admin_bit=1; admincard_bit=1;card_id[0]=99;newcard_bit=0;
(2)將需要授權的管理卡,寫進EEPROM中定義的地址。
//管理卡寫入2402地址0
if((newcard_bit==1)&&(card_id[0]==99)&&(SN[0]!=199))//寫管理卡
{ AT24CXX_Read(232,datatemp,4); delay_ms(100);
{if((datatemp[0]==8)&&(datatemp[1]==8)&&(datate mp[2]==8)&&(datatemp[3]==8))
{ LED0=LED1=1; AT24CXX_Write(248,SN,4); delay_ms(100);
LED0=0;admin_bit=99;newcard_bit=99;admincard_bit=99;newcard_bit=0; card_id[0]=77; LED0=0;LED1=1;}
if((datatemp[0]!=8)&&(datatemp[1]!=8)&&(datatem p[2]!=8)&&(datatemp[3]!=8))
{ AT24CXX_Write(240,SN,4); delay_ms(100);
LED0=0;admin_bit=99;newcard_bit=99;admincard_bit=99;newcard_bit=0;
card_id[0]=11; LED0=0;LED1=1;
AT24CXX_Write(232,NEXT,4); delay_ms(100);// Main Number of Card } }
(3)經過授權后的管理卡,在滿足條件的情況解便可以對會員卡進行授權。
//檢測到管理卡
AT24CXX_Read(240,datatemp,4); delay_ms(100);
if((SN[0]==datatemp[0])&&(SN[1]==datatemp[1])&&(SN[2]==datatemp[2])&&(SN[3]==datatemp[3])&&(newc ard_bit==1))//檢測管理卡
{ LED0=LED1=1; admin1_bit=1; newcard_bit=0;card_id[0]=66; LED1=0;}
AT24CXX_Read(248,datatemp,4); delay_ms(100);
if((SN[0]==datatemp[0])&&(SN[1]==datatemp[1])&&(SN[2]==datatemp[2])&&(SN[3]==datatemp[3])&&(newc ard_bit==1))//檢測管理卡
{LED0=LED1=1; admin1_bit=2; newcard_bit=0;card_id[0]=33; LED1=0;}
(4)授權的管理卡號會被依次寫進EEPROM相對應的地址,完成會員卡的授權。
//授權DRIVER
if((newcard_bit==1)&&(admin1_bit==1)&&(card_id[0]==66)&&(SN[0]!=199))
{ AT24CXX_Read(200,count,4);
j=count[2]; j++;
AT24CXX_Write(member[j],SN,4); delay_ms(10);
count[0]=count[1]=count[2]=count[3]=j;
AT24CXX_Write(200,count,4);delay_ms(10);
card_id[0]=55; admin1_bit=0;newcard_bit=0;
for(i=1;i<16;i++) }
(5)授權完成的會員卡,具有DRIVER功能,即具有操作特種車輛的權限。
//判斷是不是會員
if(newcard_bit==1)
{ LED0=LED1=1; for(i=0;i<20;i++)
{LED1=!LED1; AT24CXX_Read(member[i],datatemp,4);
if((SN[0]==datatemp[0])&&(SN[1]==datatemp[1])&&(SN[2]==datatemp[2])&&(SN[3]==datatemp[3]))//檢測到會員卡
{ f=1;} }
if(f==1){newcard_bit=0;Car_in_ok=!
Car_in_ok;delay_ms(2000);f=0;SystemInit();}
if(f!=1){ newcard_bit=0; f=0; } LED0=newcard_bit; }
(6)紅外感應開關的作用是:只有在感應的狀態下,會員卡才具有DRIVER功能;當操作特種車輛時,紅外為被感應超過5秒便會被斷電,需要被感應重新刷一次會員卡。
//紅外感應
if(KEY0==0) {delay_ms(2000);delay_ms(2000);delay_ms(1000);if(KEY0==0){Car_in_ok=1; newcard_bit=0;LED0=LED1=1;SystemInit();} }
}}
本文通過對工廠特種車輛使用權限管理的調研,設計實現了基于STM32工業級刷卡器,通過紅外技術實現了雙重安全保護,并且采用性價比高的芯片等電子元器件,可以批量應用于工廠內不同輸入電壓等級的特種車輛、具有可管控的特種設備等。此款工業級刷卡器制作成本低,安全可靠性強,應用實效簡單,可推廣使用,助力安全生產。