謝作如 池夢茹
密碼鎖是鎖的一種,開啟時用的是一系列的數(shù)字或符號,在生活中十分常見。圖1是一個常見的密碼鎖,用于鎖皮箱、抽屜等私人空間。圖2所示的也是密碼鎖,這是一個密碼水龍頭,只有輸入正確的數(shù)字密碼,才能打開。當(dāng)然,這個設(shè)計在實際使用中未必很方便,但誰也不能否認(rèn)這是個有趣的想法:連水龍頭都可以設(shè)置密碼,還有什么不可以設(shè)置密碼呢?
常見的密碼鎖一般使用機械結(jié)構(gòu),轉(zhuǎn)動一組刻有數(shù)字的撥輪圈,可以帶動鎖內(nèi)部的機械。Boson Kit(具體介紹見上期文章)為我們提供了與、或、非等邏輯模塊,那么能否用它來做一個基于邏輯的數(shù)字密碼鎖呢?本案例將具體介紹如何用Boson Kit設(shè)定密碼來控制一只小燈。
● 功能分析
Boson Kit主板電源的功能很簡單,只要輸出給小燈的是高電位,就能控制小燈亮。但是我們希望達(dá)到的功能是:按下相應(yīng)的按鈕才能點亮小燈。為了使按鈕能穩(wěn)定在“按下”和“彈起”兩種狀態(tài),我們選擇了自鎖開關(guān)模塊作為密碼按鍵。自鎖開關(guān)是一種能夠鎖住自己的開關(guān),在第一次按開關(guān)按鈕時,開關(guān)接通并保持,即自鎖;在第二次按開關(guān)按鈕時,開關(guān)斷開,同時開關(guān)按鈕彈出來。用計算機的0、1表示其工作輸出值,按下為1,彈起為0。如果想要一個數(shù)字密碼鍵,只要給開關(guān)的按鈕貼上數(shù)字就可以了。
假設(shè)我們的密碼鍵有1、2、3三個數(shù)字,而我們的密碼是3、1,只有先按下3再按下1,按鍵2處于彈起的狀態(tài)時,才算解鎖成功。下面,我們來逐步分析設(shè)置密碼的過程。
1.利用And(邏輯與)模塊實現(xiàn)3、1要同時按下才能解鎖
在And模塊的幫助下,實現(xiàn)按下2位數(shù)字解鎖十分容易,如圖3所示。
但是,這肯定存在問題:當(dāng)按鍵1、2、3全部被按下的時候,小燈自然就亮了,完全沒有達(dá)到密碼的功效。
2.利用or(邏輯非)模塊實現(xiàn)按鈕2彈起狀態(tài)才能解鎖
要讓按鍵1、3被按下而按鍵2未被按下,這里又多了一個條件,這就需要用到or(邏輯非)模塊。線路圖可以參考圖4所示,此時只有按下1和3且2未按下,燈才能亮起。
3.實現(xiàn)3、1的先后次序按鍵才能解鎖
細(xì)心的讀者肯定能發(fā)現(xiàn),完成了第二步后,其實還沒有真正完成任務(wù),因為還沒有為密碼設(shè)置順序。因為無論是按1、3,還是按3、1,都是同樣的效果,所以還需要再次改進(jìn)。
我們可以采用一個有趣的思路,當(dāng)用戶(解鎖人)先按下1,則輸出一條線路,讓3按下不起效果。但是如果先按下3,利用延時模塊將信號保持1~2秒左右。只要在規(guī)定時間內(nèi)按下1,就能點亮燈泡(解鎖)。雖然按下1按鍵同樣會導(dǎo)致3按鍵不可用,但是信號已經(jīng)延時了,不受影響。連接圖可參考圖5所示。
● 拓展研究
密碼之所以為密碼,正是因為他人不知道密碼的設(shè)置規(guī)律。這個裝置的密碼雖然簡單,卻非常好玩。為了降低猜中密碼的概率,我們可以選擇增加一些按鍵進(jìn)行干擾。回到上面的例子,密碼可能的組合有6種,即12、13、23、21、31、32這六種,因此猜對密碼的概率為六分之一,如果增加一個按鍵使得按鍵總數(shù)為4個,而密碼仍然為兩位數(shù)的密碼,那么密碼的可能組合就有12種,即12、13、14、23、24、34、21、31、41、32、42、43,猜對密碼的概率就變成十二分之一,降低了一半的概率。連接圖可以參考圖6所示。
該圖的密碼仍然是13。2、4處于彈開狀態(tài)時,先按下1,再按下3,才能最終實現(xiàn)開燈的效果。
只要按鍵足夠,還可以設(shè)置更多組合的密碼,設(shè)置只有自己知道的奇葩密碼。順便說一下,其實多接幾個無關(guān)緊要的按鈕,也可以起到迷惑解鎖人的作用。
● 外觀美化
用密碼控制開燈的功能已經(jīng)實現(xiàn),剩下的就是給它一個美麗的包裝。建議找一個紙盒,挖幾個小孔,將按鍵露出來(如圖7)。當(dāng)然,點亮燈沒什么意思,可以裝一個錄音模塊,按對密碼就播放一句鼓勵的話。也可以裝一個馬達(dá),按對密碼,盒子自動打開,超酷。
● 背后的數(shù)學(xué)知識
設(shè)置一個密碼后,對于不知道密碼的人而言,他猜中密碼的概率是多少呢?像上面的例子概率是比較容易算的,但是當(dāng)按鍵比較多的時候,一一列舉就顯得很不現(xiàn)實,如10個數(shù)字的按鍵密碼鎖,密碼是2位不同的數(shù)字,我們可以列出密碼的“可能組合”有90種,用數(shù)學(xué)中的樹狀圖表示如圖8所示。
所有的組合有90種,即每一個數(shù)字開頭的都有9個組合,一共10個數(shù)字,計算公示為:10×9=90。同理,假設(shè)仍是10個數(shù)字,密碼為3位有序數(shù)字,再用樹狀圖表示部分情況,我們很快就知道組成的可能有10×9×8=720種,而真實密碼只有一個,所以答對的概率為七百二十分之一。這樣回到上面的例子,如果是4個數(shù)字的密碼按鍵,密碼是有序的2個數(shù),則組合總數(shù)為4×3=12,答對的概率為十二分之一??梢娪肂oson Kit是無法做出安全性很高的密碼鎖的,但是完成一個密碼鎖原型卻毫無懸念。
如果對相關(guān)內(nèi)容感興趣,請關(guān)注主持人博客。