這個作品是2013年無線電單片機競賽的亞軍。感謝所有支持這個作品的你們!
在對稱加密學(xué)當(dāng)中,恩尼格碼機絕對是承前啟后的存在。它將密碼學(xué)研究從以前的語言文字學(xué)中心完全轉(zhuǎn)移到了數(shù)學(xué)身上。在這里牽涉的密碼并不是我們平時郵箱、銀行帳號那種狹義概念,那種頂多叫做口令。這里說的密碼就是通過某種轉(zhuǎn)換規(guī)律方式,把一篇文章變得面目全非,非常人能閱讀,以達到保密效果。這篇文章適于電腦控、軍事控、歷史控、數(shù)學(xué)控閱讀,請做好燒腦準(zhǔn)備。
第1步:
在對稱加密學(xué)當(dāng)中,恩尼格碼機絕對是承前啟后的存在。它將密碼學(xué)研究從以前的語言文字學(xué)中心完全轉(zhuǎn)移到了數(shù)學(xué)身上。在這里牽涉的密碼并不是我們平時郵箱、銀行帳號那種狹義概念,那種頂多叫做口令。這里說的密碼就是通過某種轉(zhuǎn)換規(guī)律方式,把一篇文章變得面目全非,非常人能閱讀,以達到保密效果。這篇文章適于電腦控、軍事控、歷史控、數(shù)學(xué)控閱讀,請做好燒腦準(zhǔn)備。
這是我們的初號機。以下教程將手把手教你如何完美山寨史上著名的德國恩尼格瑪密碼機(以下稱啞謎機,不清楚歷史的可以到維基、百度等地方腦補一下)。這個基于Arduino的開源程序能夠加解密任何啞謎機M4型(海軍型)的信息。
這個第一臺全功能開源完美啞謎機復(fù)制品是根據(jù)sketchsk3tch寫的《Kid’s Game to Arduino Enigma Machine》(從兒童玩具到Arduino恩尼格瑪機)所作。
采用多路復(fù)用LED電路,僅用38個針腳的115個發(fā)光二極管和4個針腳的36個按鍵所連接的整個電路,全靠在鍵盤回路里準(zhǔn)確放置的電阻以及P型號晶體管得以實現(xiàn)。要不然,4個16段顯示器,以及每個按鍵上的LED將大幅增加所需針腳總量,即使用了Arduino Mega板但如果沒用上述兩個方法也不能如此簡潔。 面對電路的超額需求,我們在http://www.stgeotronics.com設(shè)計了專用的PCB板。直接跳到第10步和以后的步驟可以找到更多信息。同時,我們以測試過的完整電子組裝套裝發(fā)布。
第2步:
面包板上的論證
第3步:
在開始制作電子啞謎機之前,我們先要確保能驅(qū)動16段LED顯示。如果能的話,我們就能做接下來的所有步驟,除了數(shù)學(xué)上的問題,一切都是浮云。
第4步:
萬事具備
第5步:
布置零件
第6步:
第7步:
第8步:
第9步:
6*8寸無線電面包版是最合適放置所有元件的,既不多余也不擁擠,而且和啞謎機盒子內(nèi)部完美吻合。
最初我們將面包等分三塊區(qū)域,但很快意識到如此一來,電子版啞謎機將比原版機械啞謎機長。于是我們將所有零件縮放到正好夠占用的空間。
每個元件位置就緒,下一步就是焊接。
第10步:
第11步:
我焊,我焊,我焊焊焊……
第12步:
第13步:
第14步:
第15步:
第16步:
好吧,在單一作品身上,我從沒焊接如此多次。16段顯示的18個針腳,還有26個字母鍵乘以每個4個腳,外加26個鍵盤燈,一些其他LED,一個三擲開關(guān),真乃“成吉思焊”。
當(dāng)初我們的決定是使這些16段LED顯示看起來像老式電子管的感覺,增加了不少焊點,“巨焊”!
Arduino Mega板上針腳的分配: 17段:
第17步:
第18步:
第19步:
在原版M4型木盒內(nèi)得到確定位置數(shù)據(jù)后,我們買了一塊膠合板,將它切塊,然后砌盒子。
我們從舊服務(wù)器機架上卸了一塊鋼板,厚度正合需要。將模具(上面早已畫好每個按鍵和燈位,并切好了洞洞)蓋在鋼板上,然后用記號筆畫出需要切出的洞洞。
接著,我們用噴漆把它涂黑,就像真的啞謎機那樣。
第20步:
組裝測試
第21步:
第22步:
第23步:
第24步:
第25步:
第26步:
首先把金屬板在面包版上永久固定,確保所有按鍵正常工作,所有LED都能發(fā)光。
接著就是把這一大坨東東裝入木盒,確保沒有空隙位置。
第27步:
第28步:
在組裝硬件過程中,我們也寫了個小型Arduino程序框架,用以測試特定幾個需要關(guān)注的部分:
用來測試每個按鍵信號能準(zhǔn)確讀取,還有測試10個功能按鍵的代碼。
Enigma_POST(上電自檢)確保在每種模式下所有鍵盤等都能準(zhǔn)確亮起,在每種模式下每個LED信號都能傳送。我們對原本面包板上的代碼做了修正,確保4個16段LED顯示的每個部件無懈可擊。
但,即使所有手上的程序片段都說明機器狀態(tài)完好,重現(xiàn)M4海軍型啞謎機加解密功能,數(shù)學(xué)方面居功至偉。
所有Arduino程序片段在我們剛剛建好的云端都能找到。
以下是Enigma_POST程序片段(上電自檢):
第29步:
第30步:
第31步:
第32步:
第33步:
第34步:
第35步:
第36步:
第37步:
首先,我們寫了個函數(shù),給每個啞謎機工作模式用。
在模式0、默認(rèn)模式,啞謎機僅僅是一臺普通打字機,以跑馬燈方式顯示它的型號。
模式1下,允許用戶從八個轉(zhuǎn)子中選取三個,兩個反射器中選擇一個進行使用。
模式2下,允許用戶排列轉(zhuǎn)子次序。
模式3用于自定義轉(zhuǎn)子初始字母排列。
選擇模式4,用戶最多可以使用接線板上10對交換字母排列。
模式5是運行模式,此時啞謎機能加解密任何從鍵盤錄入的信息。
如果有足夠利潤,我們將研發(fā)印刷電路板,裝載更容易組裝的全功能啞謎機復(fù)制品。
第38步:
電路圖
第39步:
徇眾要求,電路圖兩份在此。
第一個是仿電子管(4個16段顯示單元)如何布線,用于顯示轉(zhuǎn)子在啞謎機上的輸出信號。同時,它們也用于每種調(diào)試模式,反饋用戶機器設(shè)定信息。
第二幅電路圖顯示26個字母按鍵及10個功能鍵、26個鍵盤燈和5個LED是如何布線的。
所有LED電阻都是470歐,而開關(guān)電阻則都是1千歐。 印刷電路設(shè)計檔仍在修正中。 希望您享受我們第一份制作教程,感謝您抽出寶貴時間閱讀!
第40步:
PCB樣機版
第41步:
徇眾要求,我們設(shè)計及定制了一些印刷電路板。
它們終于面世了,如此清純可愛!我們忙于組裝,并測試其中一塊樣品,確保它在功能上與外觀一樣完美無暇。更重要的是,能和那臺原型測試機一樣的功能。 訂購回來的底板幾乎完美,只需一點引腳線去修補設(shè)計瑕疵。而這些瑕疵對功能沒有影響,修理它們是小菜一碟。 有了這些引腳,你能更容易制作自己的啞謎復(fù)刻機,比起教程里的布線方便多了。我們在此很高興宣布,測試完成,新型板一樣給力!
第42步:
組裝完成的作品
第43步:
第44步:
第45步:
第46步:
第47步:
花了一晚上組裝完成
-
Arduino
+關(guān)注
關(guān)注
188文章
6477瀏覽量
187571
發(fā)布評論請先 登錄
相關(guān)推薦
評論