A tiny but capable Universal Enigma Machine Simulator that's Arduino based, open source and hackable.Designed by Arduino Enigma in United States of America
This is #PicoEnigma by @arduinoenigma. It is a very small, Arduino based Universal Enigma Machine Simulator that's open source and hackable. Scroll all the way to the bottom for a demonstration vi...Read More…
This is #PicoEnigma by @arduinoenigma. It is a very small, Arduino based Universal Enigma Machine Simulator that's open source and hackable.
Scroll all the way to the bottom for a demonstration video.
PicoEnigma simulates all well known enigma machines that have 26 keys. There are a couple of oddball machines like the Swedish Enigma B A-133 and the Enigma Z30 that this does not simulate. For machines with a plugboard, one is emulated in software as well. Once 10 plugs are set, an additional scrambler, a software emulation of the UHR switch can be enabled and set to any of its 40 positions.
The accuracy of this simulator has been verified against Daniel Palloks Universal Enigma v2.5.
The list of machines emulated is as follows:
Enigma I (A, B, and C reflectors), Enigma M3 (B, C, and rewirable UKWD reflector). Enigma M4 (thin B and thin C reflectors), Norway "NorEnigma", S "Sonder-Enigma", D (commercial), K (Swiss), R "Rocket" (Railway), T "Tirpitz" (Japan), KD with rewirable UKWD, A-865 Zählwerk (1928), G-111 (Hungary/Munich), G-260 (Abwehr, Argentina), G-312 (Abwehr, Bletchley)
The menu structure is as follows, upon powerup, the simulator shows the rotor position (AAAA) and is ready to encode with the current settings loaded from non-volatile internal storage memory (FLASH). Pressing an A-Z key animates the rotors rotating.
Depending on the rotor position and the machine type, anywhere from 1 to 4 rotors will turn. For lever stepping machines, the double stepping anomaly is faithfully replicated and can be observed by setting the rotors to AADQ. Geared stepping machines and their more frequent irregular stepping are also simulated.
Once a key is pressed and held down, the encoded result is shown in the lamp-field. Because of the reflector, which sends back electricity through another set of rotor contacts, a letter can never encode to itself. This property was exploited by Bletchley Park to break the Enigma Cipher.
The following 3 behaviors were implemented in this simulator for that extra physical realism. They were verified with an actual Enigma Machine.
1) While a key is held down, the rotors can be manually moved forward by pressing the button under each rotor, and a new lamp corresponding to the result for the new rotor position and pressed key will illuminate in the lampfield, this may or may-not help in cryptanalysis of Enigma. If the stepping lever is not engaged, the left rotors can be moved backwards by pressing the button above the rotors. Since the stepping lever is always engaged in the rightmost rotor when a key is pressed down, the rotor can only be advanced, never moved back. Once the middle rotors are in position after the double stepping anomaly has just occurred, they cannot be moved backwards either, only forward.
2) While a key is held down, a key from another row can be pressed as well and the result for the additional key will illuminate in the lamp fields. Due to limitations of the keyboard circuit, only one key per row can be pressed without distorting the position shown in the rotors. If a key encodes to a lamp in a different row and that key is pressed, both lamps are turned off, as the normally closed contacts in the keyboard are opened up, releasing either key illuminates one light in the lampfield. For example, if pressing Y, illuminates G, while holding down Y, G is pressed, the G lamp turns off. If G is released, G illuminates.
3) Up to three keys (one in each row) can be pressed at the same time, one of the rotor change buttons can be pressed as well, the rotors will change and up to three lamps will illuminate.
Pressing the red button enters the configuration menu. Holding the red button for approximately two seconds performs an emergency zeroise of the machine configuration. It returns to an M4 with B reflector, Rotors B 3 2 1, Ring settings A A A A and all plugs are removed. Those settings are then saved to internal non-volatile memory.
The machine can be identified as a glance as being in the configuration menu since multiple lamps in the lampfield will be illuminated without any keys being pressed. The illuminated letters will match the menu name, for the MACH menu, the M, A, C and H keys in the lampfield will be lit.
The menu structure is as follows, the machine starts at AAAA in the encryption mode, pushing the red menu button once changes to MACH, the first level menus. Pushing the menu button changes between (AAAA, MACH, UKWD, ROTOR, RING, PLUG, UHR, V16). Once in a first level menu, pushing either of the rotor change buttons enters the second level menu and examines the current setting for that menu, pushing the red menu button again advances to the next first level menu without change. Pushing the rotor change buttons again while inside a menu, changes that setting. All of the settings can be changed in order, or one at a time. Keyboard accelerators can be used in some of the submenus.
For example, while inside the MACH menu, pushing N, instantly changes to the Norenigma machine. The ukwd, ring and plug settings can be set with the up/down buttons or by typing them. Some of the menus, like UKWD and PLUG can be hidden if the currently selected machine did not have those features.
The last menu entry shows the software version running on the simulator (V16). If any of the rotor change buttons is pressed, the lamps are illuminated one at a time. Their brightness can be adjusted by pressing the rotor up/down keys. Once all the lamps are illuminated, pressing a key turns off the corresponding lamp. Once all the lamps are extinguished, the simulator returns to AAAA, the encoding mode.
Pushing the menu button repeatedly exits to AAAA, the encoding mode. The menu button is then disregarded for one second to prevent reentering the MACH menu accidentally.
While going from V16 to AAAA to exit the menu, if any of the settings have been changed, the display blanks for a second while the machine configuration is saved to internal non-volatile memory (FLASH). The settings are saved in duplicate so in the unlikely event that the power cuts off during the write operation, the last known good settings can be recovered from the unaffected memory block.
This can also be operated through the included USB cable. Connect it to a computer and open the Arduino Serial Monitor at 9600 baud. Any characters sent will be encoded and displayed in groups of 4 or 5 characters depending on the machine selected. The position of the rotors can be altered through the serial port by first sending an exclamation mark ! followed by the rotor position (!aaaa) any extra characters after the 3 or 4 rotor position will be encoded. (!aaaaencodethis). The machine type and configuration cannot be changed via Serial Port. The machine needs to be the encoding mode for the Serial Port encoding to work. Any characters sent while inside the menu will be disregarded.
This device can be powered from an external battery (4-9V) through a standard Arduino center positive barrel jack, an internal 9V battery or through the exposed USB connector. The power switch is used to select between the internal and the external power sources. To turn the unit off, select a power source that is not connected. The USB connector is unswitched and can be used to power up the unit indefinitely. A 9V battery lasts approximately 6 hours in standby mode.
The case is made from laser-cut 3mm Birch plywood.
This device is hackable, want to turn it into a Akafugu word clock? Go ahead, it uses an Arduino Mega compatible Meduino Mega2560 R3 Pro Mini ATMEGA16U2 with 253KB available program space, 8KB RAM and 8KB FLASH. The source code for this simulator is provided at GitLab.
What do you get:
1x PicoEnigma S/N PE0003
2x 9V Barrel Jack Power Plug
2x 9V Batteries
1x USB Cable
Dimensions: 105mm x 95mm x 43mm
Weight (empty / with internal 9v battery): 188g / 234g
The front panel of this product is the actual Printed Circuit Board (PCB) to which all the components are mounted. As such, be careful with electrostatic discharges to any of the exposed contacts. I have not fried one yet and if careful, neither will you.
This is not a toy, but a delicate product, the hinges and nails are small, if treated with care, it will provide years of service. I still have simulators made in 2015 that work just fine.
This is a not a factory made product, it is hand-made and has its unique imperfections. You are getting the actual product shown in the pictures. Ships immediately within the USA. (If outside the USA, there is an eBay listing for this product).
Lastly: A lot of care went into making this. Enjoy...
|Shipping Rate||Ships From||First item||Additional items|
United States Postal Service: Parcel Post
We recognize our top users by making them a Tindarian. Tindarians have access to secret & unreleased features.
We look for the most active & best members of the Tindie community, and invite them to join. There isn't a selection process or form to fill out. The only way to become a Tindarian is by being a nice & active member of the Tindie community!