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

高效機(jī)器學(xué)習(xí):AI13分鐘破譯Enigma密碼
密碼學(xué)基因?qū)⒔o區(qū)塊鏈技術(shù)帶來新的愿景
單片機(jī)制作的新型安全密碼鎖

評(píng)論