參、系統功能規格與動作


本次的製作和論壇前兩篇文章一樣,都是設計一個市面上已經很常見到的RFID門禁管制系統,只是把單晶片微電腦改成Arduino,而RFID/Mifare卡讀寫器模組也改成了Arduini專用的RC522模組板;接下來所有的功能與動作說明,還是以使用者可以實際看得到和接觸到的畫面與操作過程來為讀者們解說。

三、1 系統功能規格

接下來就讓我們看看這次製作的”使用RFID之門禁管制系統”具有那些功能與動作,基本上來說和前兩次製作的功能大同小異,由於Arduino Uno模組板所使用的ATmega328單晶片微電腦晶片中,內建有1K bytes的EEPROM記憶體,而每張RFID/Mifare卡的序號使用4 bytes的值,且每張卡使用了四位數的密碼,也就是說每張卡片或使用者會佔用8bytes的空間,因此一塊Arduino Uno模組板最多可存放 1024/(4+4)=128組的使用者資料;在本次的製作中筆者打算把這些EEPROM記憶體作最大效率的利用,所以把使用者的數目從上次的100位擴充到120位,讓我們的系統應看起來更能符合實際市場的需求。

接著就讓我們看看這個系統的功能與規範:

1.本系統使用符合ISO14443A(Mifare)規範的電子標籤(Tag)作為門禁管制認證用的憑證,即一般的悠遊卡、學生證、會員證或鑰匙圈等,只要符合上述規範的電子標籤都可作為認證裝置;在使用時認證裝置必須靠近系統感應裝置,距離應介於2~5公分之間,以確保資料讀取正常。

2.本系統在出廠前的初始設定僅提供一可管理所有使用者及解除門禁的主控制卡,此卡預設初始密碼為1234的4位數密碼,此卡若遺失或損壞,則必須進行出廠的初始設定才可更換。此系統的管理者據有新增及刪除一般使用者的權限,並可更改任一使用者(包含其本身)的密碼,而一般的使用者只能在輸入正確的密碼後執行解除或開啟門禁的功能。

3.系統中預設提供120個使用者(含主控制卡),每個使用者的認證裝置(即RFID/Mifare卡)是透過學習的方式將卡片序號儲存在系統的非揮發性記憶體中,由持有主控制卡的管理者進行學習與設定密碼的動作,一般的使用者無法自行更改密碼,每一個使用者將擁有一唯一的使用者號碼及密碼。在新增使用者卡片時系統會自動比對是否已經儲存在非揮發性記憶體中,若已經學習過系統不會重複儲存,如果是全新的卡片或電子標籤,則會自動將新增的卡片資料儲存在非揮發性記憶體中最後的位置上。

4.本系統提供管理者(即主控制卡的持有者)刪除使用者的功能,當刪除特定使用者後,最後一個現存使用者的編號會被改成被刪除使用者原來的號碼。

5.如果未經學習過的卡片靠近系統的RFID感應裝置時系統將不予以理會,只有在已學習過的卡片或標籤靠近感應區時才會出現輸入密碼的提示訊息;而當已學習過的合法使用者卡片密碼輸入錯誤超過3次(含)時,系統會進入待機狀態,並等待10分鐘之後才會解除鎖定狀態,恢復正常使用功能,以防止卡片失竊後被人隨機測試導致密碼被破解。

6.如果要更換新的主控制卡時必須使用出廠初始設定功能,此時管理者可選擇只更換新的主控制卡,但保留其他學習過卡片的資料,或是將所有的舊資料全部抹除,恢復到出廠時的狀態。

以上便是我們系統的相關功能規範與動作內容,看起來和一般市售的RFID卡門禁管制系統是不是差不多?接下就讓我們看看系統的一些實際操作過程,與動作時系統所使用的LCD顯示器會出現的操作提示畫面。

  在我們的系統中使用了一個標準的4X4鍵盤作為使用者的人機輸入介面裝置,此4X4鍵盤外觀如圖1所示,而所有的輸出訊息畫面則由一常見的兩行(一行可顯示20個英文或數字字元)型式,可顯示英文字形的LCD顯示器來負責,接下來筆者就以這兩項裝置的使用與操作過程為各位說明我們系統的功能與動作。

  

 圖1. 本機所使用之4X4鍵盤外觀與排列

三、2 系統動作說明

3.2-1 系統開機測試與初始設定

  當我們的系統一接上電源開始起動時,首先LCD顯示器會出現如圖2所示的招牌開機測試畫面,也就是依序將LCD顯示器上下兩行填上兩次的0~9的ASCII字碼,以確認每一個位置都能正常顯示,且每一行的字數為20個。



圖2.開機時的系統自我測試畫面


等LCD顯示器上所有的位置都掃瞄顯示過後,便進入圖3的RFID讀寫器模組型號”畫面,在此我們使用的是型號為RC522的RFID讀寫器模組。這個部份的動作主要是確認RFID讀寫器模組功能正常,而且和我們的系統正確連接,如果圖3畫面不是出現類似的內容,就必須仔細檢查圖RFID模組型是否正常?及連接線是否正確無誤?



圖3.開機測試完成顯示RFID模組型號畫面

  

如果系統在電源接上時偵測到主控制卡設定接腳有被短接,也就是說要進入出廠時的主控制卡設定功能的話,則LCD顯示器會出現圖4的提示訊息,以等待使用者將要作為主控制卡的卡片放到RFID讀寫器模組上可感測到的距離內;如果卡片種類不對,或是距離過遠等因素造成RFID讀寫器模組無法正確讀取出該卡片的序號的話,系統會出現圖5的”主控制卡設定讀取失敗”畫面,這時使用者必須先將卡片移開,然後按下任意按鍵重新來過。



圖4.主控制卡設定等待卡片到來畫面




圖5.主控制卡設定讀取失敗畫面


當使用者正確的將作為主控制卡的卡片放到RFID讀寫器模組上,則系統會將該卡片的4個byte的序號(因為是十六進制所以會看到八個數字)顯示在LCD顯示器螢幕上方,並把主控制卡的序號及初始預設密碼1234”寫入Arduino Uno模組板的EEPROM非揮發性記憶體內;若寫入成功會出現如圖6所示”主控制卡設定成功”畫面,假如失敗則會顯示圖7”主控制卡儲存至Arduino Uno模組板失敗”的畫面,並在卡片拿開之後回到圖3的”開機測試完成顯示RFID模組型號”畫面,以便重新開始。



圖6.主控制卡出廠設定成功畫面



圖7.主控制卡資料儲存至Arduino Uno模組板失敗畫面


  由於新設定主控制卡的動作一般來說都是在這個系統出廠時的初始化設定,有時則是因為主控制卡遺失或損壞,所以必須更換主控制卡片;可是這兩者的意義是不太一樣的,尤其是後者,除了更換主控制卡之外,其它已經學習儲存在系統內的一般使用者卡片資料都必須保存下來,因此筆者也針對這兩種狀況提供使用者不同的後續處理動作。在進入圖6所示”主控制卡設定成功”畫面之後,當使用者拿開卡片時系統會跳到圖8”系統初始化選擇”畫面,其中有兩個選項,第一個”1.Keep Card Setting.”是針對前面所提到的第二種狀況,也就是說只更換主控制卡,而其它使用者的卡片資料會保持原來的狀態;如果使用者按下”1”這個按鍵,代表保留原來所有使用者卡片的資料;假如使用者按下的是”2”這個按鍵,則系統會將該卡片的4個byte的序號顯示在LCD顯示器螢幕上方,並把新主控制卡的序號及初始預設密碼1234”寫入Arduino Uno板上的ATMega328晶片內的非揮發性記憶體上;等所有動作完成後系統同樣會回到圖10的”系統開機完成後正常門禁管制功能待機”畫面重新開始。



圖8.系統初始化選擇畫面


當使用者按下”2”這個按鍵,則系統會執行出廠初始化的設定,把所有的卡片資料都抹除掉,只留下主控制卡的資料在系統內,並且送出圖9”系統初始化完成”畫面,這時系統就等同於剛出廠時的初始空白狀態,在本次的製作中系統會在等待2秒後直接則進入圖10的”系統開機完成後正常門禁管制功能待機”畫面。




圖9.系統初始化完成畫面


3.2-2 系統待機與正常工作狀態

如果系統是在一般正常的開機狀態下,則在出現圖3的”開機測試完成顯示RFID模組型號”畫面後,便會進入圖10的”系統開機完成後正常門禁管制功能待機”畫面;在此畫面的狀態中系統會一直等待RFID/Mifare卡片的到來,直到有任何一個已經學習並儲存在系統中的卡片出現為止;為了節省電源在沒有偵測到任何的有效卡片出現前,LCD顯示器的背光電源會被切斷。如果有卡片進入我們所使用的RFID讀寫器模組感應範圍內,可是它並不是標準RFID/Mifare規格的卡,或是說不曾被學習過,則我們的系統將不會有任何的反應,為了讓使用者感覺到差異,筆者讓LCD顯示器螢幕第二行的最後面位置顯示兩個小點”..”,即圖11所示的”門禁管制系統偵測到未學習過卡片”畫面,在發出一警告聲及等待一秒後,系統會將此小點清除,等使用者將該卡片拿開後,再次回到圖10的”系統開機完成後正常門禁管制功能待機”畫面去。



圖10.系統開機完成後正常門禁管制功能待機畫面



圖11.門禁管制系統偵測到未學習過卡片畫面


當有任何一個已經被學習並儲存在系統中的卡片出現在RFID讀寫器模組感應範圍內時,系統會進入圖12的”RFID卡片密碼輸入”畫面,在LCD顯示器螢幕上一行的訊息是這張卡片在系統中的儲存位置,也就是使用者的號碼;因為我們的系統在學習新的卡片時會自動將這個新的卡片儲存在非揮發性記憶體中最後的位址上,在正常操作時這個號碼是用不到的,所以一般的使用者大概也不會去管它,有時連管理者也不會去記憶它。可是當我們要變更卡片的密碼時就必須指定是那一個編號的卡片,這樣才能正確的修改密碼,所以才在每次感測到卡片時順便把卡片的內部編號也顯示出來,這樣使用者就不會忘記,以方便管理。



圖12.RFID卡片密碼輸入畫面


  在圖12的”RFID卡片密碼輸入”畫面的第二行是使用者輸入密碼的位置,在LCD顯示器螢幕中密碼輸入的部份為了安全起見會以”XXXX”的訊息來取代實際的輸入數值,以避免被旁邊的人看到;如果輸入的4位數密碼錯誤,系統會顯示圖13的”RFID卡片密碼輸入錯誤”畫面,並發出兩聲警告音提醒使用者;假如使用者連續輸入錯誤達到3次以上(含),則系統會進入圖14的”RFID卡片密碼輸入錯誤到達三次停機10分鐘”狀態,這時除了關閉電源重新起動之外,就是必須等待10分鐘以後系統才會再次接受新的使用者的輸入動作。在前面有提到如果不是已經學習過的卡片即使出現在RFID讀寫器模組感應範圍內,我們的系統將不會有任何的反應,主要也是為了避免當不相關的卡片出現在RFID讀寫器模組感應範圍內卻可以輸入密碼的話(雖然也不會起動我們的門禁密碼鎖),不管是因為好奇或故意,如果隨便亂輸入的話,很容易就會讓系統進入圖14的”RFID卡片密碼輸入錯誤到達三次停機10分鐘”停機的狀態,這麼一來就會帶給使用者很大的不便。



圖13.RFID卡片密碼輸入錯誤畫面




圖14.RFID卡片密碼輸入錯誤到達三次停機10分鐘畫面


  當輸入的密碼正確而該使用者是一般的使用者的話,系統便會立即起動門禁管制(一般而言就是電鎖),並在LCD顯示器中顯示圖15的”密碼輸入成功閘門開啟”的提示訊息;如果是管理者卡片,則會顯示圖16的”主控制卡密碼輸入成功”的畫面,在這個畫面中主控制卡也就是系統的管理者除了一般的開啟門禁的功能之外(選項1),還可以進行其他使用者卡片的管理(選項2),當系統的管理者按下按鍵”時,系統會出現圖17的”主控制卡執行閘門開啟”提示訊息畫面,並起動門禁系統,如果按下的是按鍵”則會進入圖18的”主控制卡卡片管理功能選擇”畫面。



圖15.密碼輸入成功而RFID卡片為一般使用者之閘門開啟畫面




圖16.密碼輸入成功而RFID卡片為主控制卡功能畫面



圖17.主控制卡執行閘門開啟畫面


  為了保護系統的安全及系統操作的方便性,當系統進入圖12的”RFID卡片密碼輸入”畫面時,如果使用者在10秒之內沒有按下任何按鍵的話,系統便會自動跳回圖10的”系統開機完成後待機”畫面,而且每一次密碼輸入都會執行同樣的機制;筆者所以會這樣設計,是因為假如任一使用者在密碼輸入的階段因為某種原因離開時,如果系統不能自動回到初始的待機狀態,則下一個使用者就無法再使用,而且當使用者密碼輸入錯誤未達到三次想停止輸入時,只要不再按下任何鍵,便可讓系統回到原來的待機狀態,如此才不會因為使用者忘記密碼造成卡機或被迫輸入錯誤密碼到達三次,而使得系統進入停機10分鐘的狀態。


3.2-3 主控制卡功能操作與設定



圖18.主控制卡卡片管理功能選擇畫面


在圖18的”主控制卡卡片管理功能”中筆者提供了4個卡片管理的功能選項,分別是:

  1. 新增卡片功能(1.Add)

  2. 卡片刪除功能(2.Del. Card)

  3. 更改卡片密碼功能(3.Chg. PW)

  4. 系統還原與重置功能(4.Init.Sys)


接著就讓我們看看這4種選項功能的內容及意義:

1.新增卡片功能

選項1的”1.Add”代表要新增一般使用者的卡片,在使用者按下按鍵”後LCD顯示器中顯示會出現圖19-1的提示畫面,開始等待新增卡片的到來,這時系統管理者只要把新卡放在RFID讀寫器模組上便可執行新增卡片的功能;可是如果系統所學習與儲存的卡片數目如果已經到達我們設定的上限,也就是120張的話,則會出現19-2的提示畫面,提醒使用者卡片已滿檔,這時系統就無法再新增卡片,並且會強制回到圖18的”主控制卡卡片管理功能”畫面中。有時候新增的卡片可能已經學習儲存過,則系統會出現圖20的”新增卡片已經儲存過”提示畫面及提示音後,再次回到圖19的提示畫面上。當系統在圖19的等待卡片靠近的狀態時,如果在10秒之內沒有任何卡片被系統偵測到,或是使用者按下任一按鍵的話,系統會自動退回上一層的圖18”主控制卡卡片管理功能”選擇畫面,以結束這次新增卡片的學習動作。



圖19-1.選擇”1.Add Card”新增卡片功能等待新卡到來畫面




圖19-2.儲存卡片數目已滿畫面




圖20.新增卡片已經學習儲存過畫面


如果RFID讀寫器模組偵測到的是一張全新的卡片,則會進入圖21的”新增卡片輸入密碼”畫面,此時便可在LCD顯示器的第二行輸入所欲給定的4位數密碼;當密碼輸入完成後,系統會如圖22所示在LCD顯示器的第一行顯示 A-Accept C-Cancel:”訊息,等待使用者決定是否接受之前在LCD顯示器第二行所輸入的4位數密碼?如果同意則需按下按鍵”,假如一切正確無誤系統會顯示圖22的”新增卡片儲存成功”畫面,此時使用者只要按下任意鍵,便可回到圖19的”主控制卡選擇新增卡片功能”等待新卡到來狀態,繼續新增下一張新的卡片。假如要取消或更改本次輸入的密碼,則可按下按鍵”,系統便會回到圖20的”新增卡片輸入密碼”畫面,讓使用者再次的輸入密碼。當使用者想要停止新增卡片的功能時只要連續按下按鍵”,便可回到更上一層的圖18”主控制卡選擇卡片管理功能”畫面。




圖21.新增卡片輸入密碼畫面


此外在前所提到的那些操作選項的過程中,凡是有要求使用者按下按鍵去選擇的部份,如果按下的不是系統所提示的選項按鍵而是”按鍵的話,都會回到該選擇操作畫面的上一層畫面,也就是說大部份的操作畫面都可以用按鍵”去回到該選擇操作畫面的上一層。如果在輸入密碼的過程中使用者在10秒之內沒有按下任何按鍵的話,系統同樣會結束該次的輸入動作,回到圖10的”系統開機完成後正常門禁管制功能待機”畫面,這樣便可以避免因為使用者臨時離開,或者忘記繼續操作而使得系統處在不安全的狀態之下。



圖22.新增卡片密碼輸入完成等待使用者確認畫面



圖23.新增卡片儲存成功畫面



圖24.新增卡片數目超過儲存容量提示畫面



圖25.新增卡片動作結束畫面


  在圖23的”新增卡片儲存成功”畫面中讀者可以看到,LCD顯示器第一行的文字內容是” Card Number=120”,這代表目前已經學習到第120張卡片了,在前面介紹我們這個系統的功能與規範時曾經提到,最大的卡片儲存上限連管理者在內是120張,如果使用者再繼續新增學習卡片的話便會看到圖24的”卡片數目儲存容量已滿”提示訊息畫面,這時系統就再也無法新增使用者卡片了;一般來說120張卡片的容量上限對一般家庭或小公司是夠用的,如果想要增加使用者的數目,就必須在Arduino UNO板外面接上容量更大的記憶體。除此之外,當新增卡片動作結束時,系統會先顯示圖25的”新增卡片動員結束”畫面提醒使用者之後,才會回到上一層的圖18”主控制卡選擇卡片管理功能”畫面。


2.卡片刪除功能

  接著讓我們回頭看圖18”主控制卡卡片管理功能”中的功能選項2“2.Del. Card”,這項功能是用來刪除特定編號的卡片資料,在使用者按下按鍵’2’後LCD顯示器上會出現圖26的提示畫面,由於我們所使用的鍵盤為4X4共16個按鍵,除了數字”0~9”之外,還有英文字元”A~F”,可是一般人都是習慣使用十進制,所以在此筆者僅容許使用者輸入輸入”0~9”的數字,或者是代表取消輸入的’’及代表輸入完成的’F’鍵,當輸入卡片號碼時,如果按到了”0~9”的數字及’’ 與’F’以外的英文字元,我們的系統都會視為錯誤的輸入,這時LCD顯示器上會出現圖27的輸入錯誤警告畫面且按鍵的內容不會顯示在螢幕上。



圖26.欲刪除卡片號碼輸入畫面



圖27.欲更改密碼卡片號碼鍵盤輸入錯誤畫面


  在此筆者使用按鍵’作為取消輸入鍵以回到上一層操作畫面之用,而按鍵’F’則有兩種用途,一是如果在圖26的提示畫面時,假如使用者還沒有輸入任何一個數字,此時如果按下按鍵’F’,則視為結束刪除卡片的動作,系統會顯示圖28的”刪除卡片動作結束”提示畫面,然後回到上一層的圖18”主控制卡選擇卡片管理功能”功能畫面。由於我們的系統最多可學習儲存120張卡片,也就是說卡片的數字最多可到3位數,為了方便使用者的操作,筆者設計的程式容許使用者只輸入1或2位數字,不到3位數時前面不必加’’,此時只要按下按鍵’F’便可結束輸入的動作,當卡片號碼輸入到達3位數時系統便會自動結束輸入的動作。



圖28.刪除卡片動作結束畫面



圖29.欲刪除卡片號碼為主控制卡錯誤訊息畫面



圖30.欲刪除卡片號碼大於已儲存卡片數目錯誤訊息畫面


  當使用者輸入完要刪除的卡片號碼後。筆者還設計一些防呆的機制。一是如果使用者輸入的卡號是’1’時。由於這就是系統管理者的卡片號碼。如果刪除了就會天下大亂!所以此時系統會如顯示圖29所示的”欲刪除卡片號碼為主控制卡錯誤訊息”畫面,以提醒操作者;當然最後並不會真正執行刪除卡片的動作,而是在約2秒後回到圖26的”欲刪除卡片號碼輸入”畫面,讓使用者重新輸入卡號。除此之外當操作者輸入的卡號大於目前已學習及儲存在系統中卡片的數目時則LCD顯示器上會出現圖30的”欲刪除卡片號碼大於已儲存卡片數目錯誤訊息”畫面,然後同樣的在約2秒後回到圖26的”欲刪除卡片號碼輸入”畫面,要求使用者重新輸入卡號。



圖31.欲刪除卡片功能成功畫面


  如果一切操作正常,則當刪除卡片動作完成時,系統會顯示圖31的”欲刪除卡片功能成功”畫面,然後會回到圖26的”欲刪除卡片號碼輸入”狀態,讓使用者再次執行刪除卡片的動作;如果想要結束此功能,只須在圖26的畫面時按下按鍵’取消目前的動作以回到上一層操作畫面(會先回到圖28”刪除卡片動作結束”畫面,再返回圖18的”主控制卡選擇卡片管理功能”功能畫面);或者就是不理它,直到時間超過按鍵未按下的預設值(即10秒)後,由系統自動結束本項的卡片刪除功能,直接回到圖10的”系統開機完成後正常門禁管制功能待機”畫面。

  由於儲存的卡片被刪除後記憶體中會出現一個空缺,如果不作處理,則會讓我們的系統記憶體出現許多未被使用的空位,這樣一來會降低可儲存使用者的數目;如果要在新增使用者卡片功能中去管理這些未被使用到的空間,除了要花一些額外的記憶體去儲存它們之外,如何管理也會變得很複雜,這時程式的設計將很難處理,所以我們不會採取這樣的方式去處理這些被刪除的空間。一般來說遇到這種刪除卡片的動作有兩種處理的方式,一是將被刪除卡片號碼之後的卡片資料全部往前移一格,可是這樣一來可能必須執行大量的資料搬移,除此之外這些被移動資料使用者的卡號就都會被更動,如果多刪除幾次,可能就搞不清楚這些使用者的號碼了,這麼一來在管理上就會造成困擾。另外一種方法就是本次製作筆者所使用的方法,也就是說只把之前儲存的最後一個使用者的資料搬移到被刪除者的位址上,這麼一來只有一筆資料需要移動,而且除了他之外其他的使用者都會維持原來的卡片號碼,這樣使用者的管理工作便會最簡單最容易。


3.更改卡片密碼功能

在圖18的”主控制卡卡片管理功能”的功能選項中,如果使用者按下按鍵3” 3.Chg. PW.”時LCD顯示器中顯示會出現圖32的”更改密碼卡片號碼輸入”畫面,代表要執行更改使用者密碼的功能;LCD顯示器所以會只看到這麼短的提示訊息,主要是受限於所使用的LCD顯示器每一行只能顯示20個ASCII字碼之故,並不是筆者偷懶!LCD顯示器第一行的文字內容是在等待使用者輸入要更改密碼的卡片或者說使用者的號碼;和前面刪除卡片動作一樣,由於我們的所使用的4X4鍵盤除了0~9的數字之外,還有英文的A~F按鍵,而後者並不在我們容許的輸入範圍之內,所以當使用者不小心按到這幾個英文鍵時系統會發出警告聲,並顯示圖33的”改密碼卡片號碼鍵盤輸入錯誤”畫面。



圖32.欲更改密碼卡片號碼輸入畫面



圖33.欲更改密碼卡片號碼鍵盤輸入錯誤畫面




圖34.更改卡片密碼功能結束或完成畫面


  如果在輸入卡號的過程中使用者有按下按鍵’,代表使用者要取消更改密碼的動作,則程式會先到圖34的”更改卡片密碼功能結束”畫面,然後再返回更上一層的圖18”主控制卡選擇卡片管理功能”功能畫面。

  本次製作的規格中使用者的數目可達120位也就是3位數,可是系統中實際儲存使用的卡片數目可能只有個位數或2位數,因此當管理者輸入號碼只有1或2位數時必須按下按鍵”F”作為結束,如果輸入的號碼是3位數,則系統會自動結束卡號輸入的過程。當使用者輸入的卡片號碼完成後如果超過目前系統已儲存卡片數時,程式會出現圖35的”欲更改密碼卡片輸入號碼超過已儲存數目”畫面,以提醒使用者注意,然後跳回圖32的”更改密碼卡片號碼輸入”畫面,讓使用者重新輸入卡片號碼。如果沒有超過上限值,則會要求使用者開始直接輸入新的密碼值(如圖36所示)。



圖35.欲更改密碼卡片輸入號碼超過已儲存數目畫面




圖36.欲更改卡片密碼新密碼輸入畫面


當密碼輸入完成時系統一樣會詢問使用者是否接受所輸入的密碼?其畫面如圖37所示,看起來和前面新增卡片過程中輸入密碼的圖22大同小異;使用者可以按下按鍵”代表接受,接著系統會顯示圖38的”更改卡片密碼完成”畫面,停止兩秒後再跳到圖39的”新增卡片儲存成功”畫面,然後等使用者按下任意鍵,便可以回到圖32的”更改密碼卡片號碼輸入”畫面,以便繼續下一張卡片密碼的更改動作。假如要結束本次密碼修改的功能,可按下按鍵”便可以回到更上一層的圖18”主控制卡選擇卡片管理功能”畫面。

在圖37的畫面中如果使用者按下的是按鍵”,表示不接受目前所鍵入的密碼值,則程式會跳回圖36的”更改卡片密碼新密碼輸入”畫面,讓使用者重新輸入新的密碼值。



圖37.欲更改卡片密碼新密碼輸入完成等待確認畫面



圖38.更改卡片密碼完成畫面



圖39.新增卡片儲存成功畫面


4.系統還原與重置功能

在圖18”主控制卡選擇卡片管理功能”畫面中如果使用者選擇的是第四個選項” 4.Init Sys.,代表使用者要執行系統重置或是初始化的動作,也就是說把所有的使用者(除了管理者本身)都清除掉,這是很嚴重的事情,因此系統會先顯示圖40”選擇系統初始化”提示畫面一次,然後再顯示圖41的”系統初始化選擇再次確認”畫面,請使用者再次確認是否要進行初始化的動作?如果使用者按下了按鍵則系統會將除了管理者本身之外的所有已儲存使用者資料都都清除掉,這等於是回到出廠時的狀態,所以在使用這個功能時一定要特別注意與小心,免得一下子就把辛苦建立的使用者資料全部都毀掉了!當初始化的動作完成之後,系統會先顯示圖42的”系統初始化完成”畫面,然後才回到更上一層的圖18”主控制卡選擇卡片管理功能”畫面;假如使用者按下的是按鍵C”,則便會直接回到更上一層的圖18畫面,以便再次執行管理者的卡片管理動作。



圖40.選擇系統初始化提示畫面




圖41.系統初始化選擇再次確認畫面




圖42.系統初始化完成畫面


上面說明便是本次製作我們系統在操作使用時的一些動作與畫面,有了這些藍圖之後我們就可以按圖索驥照表操課,用我們所設計的電路及軟體程式將上述的功能一一去實現了。


沒有留言:

張貼留言

陸、全體程式列表

#include <LiquidCrystal.h> #include <EEPROM.h> #include <SPI.h> #include <MFRC522.h> /* * Signal     Pin            ...