EDIT: This Instructable has won Second prize in the 2013 Radio Shack Microcontroller Contest. Thank You to all who voted!
This is our very first Instructable and this step by step guide will show you how to build a fully functional electronic replica of the world famous German Enigma machine. This Arduino based Open Source project is able to encrypt & decrypt any Enigma M4 encoded message.
This first ever fully functional Open Source Enigma “exact ” Replica was inspired by the Kid’s Game to Arduino Enigma Machine by sketchsk3tch.
Using Charlie-plexing Multiplexing for the LEDs, this circuit with 115 light emitting diodes uses only 38 pins and the 36 push buttons use only 4 pins total thanks to properly placed resistors (and the P-Channel MOSFETs) in the keyboard loop. These 4 16-Segment displays & an LED for each keyboard button would add up quickly the total number of pins required and even the Arduino Mega would have ran out of pins without the 2 methods mentioned above….
In response to the overwhelming demand, we designed the PCB and made it available through www.stgeotronics.com. Skip to Step 10 & beyond for more info. We also offer it as a complete electronics kit & an assembled & tested complete product.
Step 1: Proof of concept on Breadboard
Before going all out on the development of this electronic Enigma replica, we wanted to make sure we could properly drive the 16 Segment LEDs. If we can do that, than we will be able to do everything as the rest is only Math…
Step 2: Gather the raw materials…
[box color=”#985D00″ bg=”#FFF8CB” font=”verdana” fontsize=”14 ” radius=”20 ” border=”#985D12″ float=”right” head=”Major Components in Project” headbg=”#FFEB70″ headcolor=”#985D00″]
You will need:
1 Arduino Mega
26 Alpha Buttons
26 1/4″ Jacks Mono
10 1/4″ Plugs Mono
1 On/Off/On Switch
4 16Segment Orange
4 Injection molded 2-Liter Soda Bottle preform (test tubes)
1 Case Plywood
1 Hinge & Hooks
1 Half-Mortise Lock
38 Resistors 470 Ohms
40 Resistors 1K Ohms
7 IRF9Z24N P-Channel MOSFET
1 Piece of Metal & Spray paint[/box]
If we were to do it again, we wouldn’t use 1/4″ Jacks & Plugs as these are pretty big and tend to overwhelm the whole Enigma. Banana plugs & jacks are smaller & closer to the original connectors used by the real German Enigmas.
Step 3: Lay the components down
The Radio Shack 6″ x 8″ Micro Perboard is the perfect size to host all components as it provides just the right amount of space to fit everything on & will fit perfectly inside the Enigma box.
We started dividing the space on the Perfboard equally between the 3 regions, but realized soon that this would make the electonic Enigma longer than the real one, so we compressed everything down to the proper spacing.
Once satisfied with the positioning of each components, next step is soldering.
Step 4: Soldering, soldering & a little more soldering
OK, this proved to be the most solder I have used on a single project ever. With 18 pins per 16 Segment, times 4 plus 26 keyboard keys + 26 keyboard lamps + a few LEDs & 1 SPDT on/off/on switch, that was a lot of solder.
Our decision to raise the 16 Segment displays up to make them look like old-time Nixie tubes certainly added a lot of solder points!
Our Arduino Mega Pin assignment:
Seg Pin Wire DuinoPin
a 2 blue 24
b 1 white 22
c 16 wh-bl 25
d 13 green 31
e 9 wh-br 38
f 8 brown 36
g 6 green 32
h 5 wh-or 30
k 4 orang 28
m 3 wh-bl 26
n 17 blue 23
p 15 orang 27
r 12 wh-gr 33
s 11 brown 35
t 7 wh-gr 34
u 14 wh-or 29
dp 10 wh-br 37
anode1 18 red 39
anode2 18 red 41
anode3 18 red 43
anode4 18 red 45
anode1 (First Row) 11
anode2 (Second Row) 12
anode3 (Third Row) 13
First Row A1
Second Row A2
Third Row A3
Step 5: Make a box and cut & drill the top plate.
After obtaining the exact dimensions of the original M4 wooden box, we purchased a sheet of plywood & cut it in pieces so we could assemble our case.
We decided to cut a steel plate from an obsolete rack mounted server as it had just the right thickness of metal for our needs. After making a transparency that showed where every button/lamp was located & cutting it out, we were able to superimpose it on the metal piece and draw each required hole with a sharpie.
We then spray painted it textured black to look like the real Enigma.
Step 6: Integration Tests
First is the permanent fitting of the metal plate on top of the perfboard making sure every button is working and every LED can shine.
Then is the fitting of this solid assembly into the wooden case ensuring we didn’t introduce a short anywhere.
Step 7: Software – Ohhhh…. Ouch!
During each hardware assembly phase, we had created small Arduino sketches that would test the specific individual section we were working on:
A code that tests that each keyboard button is read accurately.
A second code that tests each of the 10 function buttons.
An Enigma_POST (Power On Self Test) sketch that tests that each keyboard lamp can be lit precisely and move each LED through each mode, with some modifications to the original breadboard code to ensure each segment of the 4 16-Segment LEDs is working perfectly.
But, even with all these sample codes on hand that tested every piece of hardware on the machine, the task of reproducing the encrypting/decrypting functionality of a real M4 Enigma was a Mathematics tour-de-force!
Read more: Make your own Enigma Replica