Monday, September 30, 2019

The Mega Enigma, an Universal Enigma Machine Simulator is feature complete

The menu system has been completed.

All of the enigma settings (machine type, rotor types, ring settings, wheel settings) can now be changed. The plugs, being physical, are not settable via the menu.

A lampfield / keyboard self test feature has been added.

The lampfield brightness can now be changed.

When the settings are changed, they are saved to EEPROM

Pressing the menu button for a few seconds zeroises the machine by returning it to a default configuration and saves that to EEPROM, deleting the previously configured machine. Might write a separate byte to EEPROM to indicate that a memory wipe is in progress in case it is interrupted. Upon boot, the machine will check this memory location and if set, resume wiping EEPROM.

The new cases have arrived, they need assembly.

Demo Video coming soon...

Saturday, September 21, 2019

Universal Enigma Engine for the Arduino Mega Enigma is working

The Arduino Universal Enigma Engine now handles settable reflectors on 4 wheel machines like the Enigma D, Swiss K, Rocket (R), Tirpitz (T), A-865, G-111, G-260 and G-312. The only features left are the UKW D and the programmable stepping rotors.

Here is a table with the characteristics of each machine.

Here is an older video showing how double stepping on lever machines and gear stepping works. At the time, geared machines did not encode correctly, now they do.

More posts on instagram:

Source Code:

Saturday, September 14, 2019

Mega Enigma Progress: M4 Works

The four rotor M4 Enigma Machine is working 100%. Now lets get the other 20 machines working.

An interesting thing about this simulator is that it is continuously calculating the path through the rotors for the current key pressed.

The hardware allows for multiple key presses and the software is written to use this functionality. For example, if the key A is pressed, the rotors are advanced when they stop, the result of encrypting that letter is shown. If another key is pressed, the rotors stay put and the result of encrypting that letter is also simultaneously shown on the plugboard.

As in the real machine, the keys must be kept pressed until the rotors stop spinning to illuminate the lampfield. Releasing the key immediately turns off the lampfield. Brief key presses advance the rotors, but do not illuminate the encrypted result.

Another thing that is possible is changing the rotors while a key is pressed. The lampfield is updated to show the new encrypted result for the same key with the current rotor position.

If two keys are pressed and the rotors are changed, the two lamps in the lampfield are updated.

A feature that is still not implemented is turning off the lampfield if a key and its encrypted key are both pressed. Let's say that C is pressed and it encrypts to F, if the F key is also pressed without releasing C, both the C and F lampfield lights should turn off since the Enigma Machine circuitry connects the lamps to the rotor maze through the normally closed contact in the key, pressing that key opens that contact.

The plugboard is also continuously scanned, inserting (or removing) a plug while a key is pressed will update the lampfield if that plug is part of the encryption path.

These features make this simulator one of the most electrically accurate out there.

A bonus feature is that the Mega2560 Pro Mini  at the heart of this project uses the same ATMEGA16U2 as the Arduino UNO for USB connectivity. If you happen to have an External Lamp Field for your original Touchscreen Arduino Enigma, it will work with the Mega Enigma as well.

View this post on Instagram

A post shared by Arduino Enigma (@arduinoenigma) on

Source code:

View more pictures on Instagram: