tag:blogger.com,1999:blog-65087409335533086642024-03-12T19:40:35.986-07:00Arduino Enigma Machine Simulator An Enigma Simulator was created using an Arduino Uno and a touchscreen LCD. This device simulates an Enigma 1, Enigma M3 and M4 machines. Also home to PicoEnigma and MegaEnigma, two Universal Enigma Machine SimulatorsUnknownnoreply@blogger.comBlogger85125tag:blogger.com,1999:blog-6508740933553308664.post-163440903151461432099-12-31T21:37:00.006-08:002020-11-05T22:32:25.997-08:00Enigma Machine Simulator Documentation<div style="text-align: left;">Product documentation, build instructions and software for Enigma Uno, Enigma Z30, Mega Enigma and Pico Enigma, all of our Enigma Machine Simulators:</div><div><div style="text-align: left;"><a href="https://arduinoenigma.blogspot.com/p/enigma-machine-simulator.html " style="margin-left: 1em; margin-right: 1em; text-align: center;" target="_blank"><img border="0" data-original-height="1836" data-original-width="2504" height="147" src="https://1.bp.blogspot.com/-kQDbXLUD7Kk/XsdmiHHo_hI/AAAAAAAAOs8/-4wDQKzPTecq61FY9H5OrY7IbNmMCd72ACK4BGAsYHg/w200-h147/AllSims-Cropped.jpg" width="200" /></a></div>
<div style="text-align: center;"><a href="https://arduinoenigma.blogspot.com/p/enigma-machine-simulator.html">https://arduinoenigma.blogspot.com/p/enigma-machine-simulator.html</a> </div><div>
<div style="text-align: center;"></div></div></div>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-6508740933553308664.post-23468348912030544992022-03-09T21:16:00.007-08:002022-03-09T21:22:11.669-08:00Cipher Machines and Cryptology has moved<p> </p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEiZ0tnjrIsbjcyCC9Gh9nvX3fKH1Yjuxd5gfAjgvcUcFTDfhugaZT14sUaeovPy7Z92stdty197LkxJyBwMV2V0pTkkBzLJRN1TREHUapzxwPnULbZOlCBFCSq1ppk7DqEbKX69GqiL7XXOcirZKaXVTKHWHBpPrQQq3lKHJ-twiLQKbSbUoiUYF3cy=s860" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="757" data-original-width="860" height="353" src="https://blogger.googleusercontent.com/img/a/AVvXsEiZ0tnjrIsbjcyCC9Gh9nvX3fKH1Yjuxd5gfAjgvcUcFTDfhugaZT14sUaeovPy7Z92stdty197LkxJyBwMV2V0pTkkBzLJRN1TREHUapzxwPnULbZOlCBFCSq1ppk7DqEbKX69GqiL7XXOcirZKaXVTKHWHBpPrQQq3lKHJ-twiLQKbSbUoiUYF3cy=w400-h353" width="400" /></a></div><br /><p></p><p>Dirk Rijmenants (drdefcom) Cipher Machines and Cryptology has moved from it's long time address at telenet.be to its own domain.</p><p><a href="https://www.ciphermachinesandcryptology.com/" target="_blank">https://www.ciphermachinesandcryptology.com/</a></p><p>This move was announced in the Enigma World Code Group Forum</p><p><a href="https://enigmaworldcodegroup.freeforums.net/thread/266/cipher-machines-cryptology-moved" target="_blank">https://enigmaworldcodegroup.freeforums.net/thread/266/cipher-machines-cryptology-moved</a></p><p>If you are looking for the Enigma Simulator or the Enigma Codebook Generation tool, those can be downloaded at the links below:</p><p><a href="http://www.ciphermachinesandcryptology.com/en/enigmasim.htm" target="_blank">www.ciphermachinesandcryptology.com/en/enigmasim.htm</a></p><p><a href="http://www.ciphermachinesandcryptology.com/en/codebook.htm" target="_blank">www.ciphermachinesandcryptology.com/en/codebook.htm</a></p><p>There is also a blog at:</p><p><a href="https://rijmenants.blogspot.com/" target="_blank">https://rijmenants.blogspot.com/</a></p><p>Want to read more? Here is a page with a lot of information on the Enigma Machine and Cryptology. (H/T E.K.)</p><p><a href="https://www.emissary.ai/the-encrypted-text-of-enigma-machines/" target="_blank">https://www.emissary.ai/the-encrypted-text-of-enigma-machines/</a></p><p><br /></p>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-6508740933553308664.post-35129493585462837572021-07-25T06:38:00.035-07:002021-07-25T08:33:45.078-07:00Setting Up Arduino IDE to Compile Dual Screen Apollo DSKY Sketches<p>Here are the instructions to setup an Arduino IDE to successfully compile the source code for the Dual Screen Apollo DSKY and other Arduino sketches that use the GPIO fast pin library and/or the FastSeedTFTv2 graphics library for the Seeed TFT Touch Shield v2</p><p>For more information on the Dual Scrren Apollo DSKY:</p><p><a href="https://arduinoenigma.blogspot.com/p/dual-screen-apollo-dsky.html" target="_blank">https://arduinoenigma.blogspot.com/p/dual-screen-apollo-dsky.html</a></p><p>To update the arduino sketches:</p><p>The Arduino IDE must be installed first. This is generally an uncomplicated step that involves downloading the appropriate software from the Arduino website:</p><p><a href="https://www.arduino.cc/en/software" target="_blank">https://www.arduino.cc/en/software</a></p><p>The next step is to download the zip files for the following three projects, direct links to the zip files can be found below, all links open in a new window:</p><p>Project pages:</p><p><a href="https://gitlab.com/arduinoenigma/dualscreendsky" target="_blank">https://gitlab.com/arduinoenigma/dualscreendsky</a></p><p><a href="https://gitlab.com/arduinoenigma/Arduino-GPIO" target="_blank">https://gitlab.com/arduinoenigma/Arduino-GPIO</a></p><p><a href="https://gitlab.com/arduinoenigma/FastSeedTFTv2" target="_blank">https://gitlab.com/arduinoenigma/FastSeedTFTv2</a></p><p>Direct links to the zip files:</p><p><a href="https://gitlab.com/arduinoenigma/dualscreendsky/-/archive/main/dualscreendsky-main.zip" target="_blank">https://gitlab.com/arduinoenigma/dualscreendsky/-/archive/main/dualscreendsky-main.zip</a></p><p><a href="https://gitlab.com/arduinoenigma/Arduino-GPIO/-/archive/master/Arduino-GPIO-master.zip" target="_blank">https://gitlab.com/arduinoenigma/Arduino-GPIO/-/archive/master/Arduino-GPIO-master.zip</a></p><p><a href="https://gitlab.com/arduinoenigma/FastSeedTFTv2/-/archive/master/FastSeedTFTv2-master.zip" target="_blank">https://gitlab.com/arduinoenigma/FastSeedTFTv2/-/archive/master/FastSeedTFTv2-master.zip</a></p><p>If prompted, save all the zip files to your Downloads folder, which should look like this:<a href="https://1.bp.blogspot.com/-UcHD3gqo0ac/YP1mH-we2gI/AAAAAAAARII/E_koYa3SS1YDojVO_wEMoOWjd37hURxRACLcBGAsYHQ/s623/1-Download%2BFiles.png" style="margin-left: 1em; margin-right: 1em; text-align: center;"><img border="0" data-original-height="196" data-original-width="623" height="202" src="https://1.bp.blogspot.com/-UcHD3gqo0ac/YP1mH-we2gI/AAAAAAAARII/E_koYa3SS1YDojVO_wEMoOWjd37hURxRACLcBGAsYHQ/w640-h202/1-Download%2BFiles.png" width="640" /></a></p><span><a name='more'></a></span><p>Open the dualscreendsky-main.zip file, select and copy (Ctrl+C) the two folders, DSKYMegaMainProcessor and DSKYUniversalScreen, the README.md file can be ignored.<a href="https://1.bp.blogspot.com/-1iamPeTgD18/YP1mXB0oAlI/AAAAAAAARI0/gPXb61D0FOk07XsuPwTJwznSgPHLgJbsQCLcBGAsYHQ/s624/2-Extract%2BSketches.png" style="margin-left: 1em; margin-right: 1em; text-align: center;"><img border="0" data-original-height="205" data-original-width="624" height="210" src="https://1.bp.blogspot.com/-1iamPeTgD18/YP1mXB0oAlI/AAAAAAAARI0/gPXb61D0FOk07XsuPwTJwznSgPHLgJbsQCLcBGAsYHQ/w640-h210/2-Extract%2BSketches.png" width="640" /></a></p><div><br /></div><div>Navigate to the Arduino folder, located just below the Documents folder and Paste (Ctrl+V) the two folders copied on the step above. The Arduino folder should look like this now:<a href="https://1.bp.blogspot.com/-MGxZ3goJjPc/YP1mZLlOfQI/AAAAAAAARJQ/645H-L0Beu8P2v17wSzwwGWYlvarpIrsACLcBGAsYHQ/s620/3-Copy%2BSketches%2Bto%2BArduino%2BFolder.png" style="margin-left: 1em; margin-right: 1em; text-align: center;"><img border="0" data-original-height="201" data-original-width="620" height="208" src="https://1.bp.blogspot.com/-MGxZ3goJjPc/YP1mZLlOfQI/AAAAAAAARJQ/645H-L0Beu8P2v17wSzwwGWYlvarpIrsACLcBGAsYHQ/w640-h208/3-Copy%2BSketches%2Bto%2BArduino%2BFolder.png" width="640" /></a><div><br /></div>Launch the Arduino IDE. Click Tools->Board and select "Arduino Mega or Mega 2560":<a href="https://1.bp.blogspot.com/-wdv0aVVGduA/YP1mcZzmEoI/AAAAAAAARKA/IVCgD_sVKXEG4AjbTf8Gufh_UFFYqlvewCLcBGAsYHQ/s662/4-Select%2BMega.png" style="margin-left: 1em; margin-right: 1em; text-align: center;"><img border="0" data-original-height="600" data-original-width="662" height="580" src="https://1.bp.blogspot.com/-wdv0aVVGduA/YP1mcZzmEoI/AAAAAAAARKA/IVCgD_sVKXEG4AjbTf8Gufh_UFFYqlvewCLcBGAsYHQ/w640-h580/4-Select%2BMega.png" width="640" /></a></div><div><div><br /></div>Click File->Open and navigate to the DSKYMegaMainProcessor folder. Click on the Arduino Sketch to open it. <a href="https://1.bp.blogspot.com/-zUzDPv5Ss9k/YP1md5dwyJI/AAAAAAAARKQ/Txc7SDjzLjMdFHQz3wnM0Hm2RyScLhlTgCLcBGAsYHQ/s603/5-Open%2BMega%2BSketch.png" style="margin-left: 1em; margin-right: 1em; text-align: center;"><img border="0" data-original-height="603" data-original-width="579" height="640" src="https://1.bp.blogspot.com/-zUzDPv5Ss9k/YP1md5dwyJI/AAAAAAAARKQ/Txc7SDjzLjMdFHQz3wnM0Hm2RyScLhlTgCLcBGAsYHQ/w614-h640/5-Open%2BMega%2BSketch.png" width="614" /></a><br /><br /></div><div>Click on the "Verify" checkmark button on the toolbar. If the GPIO library has not been installed on your computer, the compilation will fail:<a href="https://1.bp.blogspot.com/-oY3ufnMYwZ4/YP1meLt6IvI/AAAAAAAARKU/JM2Iq-731R4QGCsZMm94EHM82Zz-5-ZSgCLcBGAsYHQ/s603/6-Verify%2BFails%2BMissing%2BLibrary.png" style="margin-left: 1em; margin-right: 1em; text-align: center;"><img border="0" data-original-height="603" data-original-width="499" height="640" src="https://1.bp.blogspot.com/-oY3ufnMYwZ4/YP1meLt6IvI/AAAAAAAARKU/JM2Iq-731R4QGCsZMm94EHM82Zz-5-ZSgCLcBGAsYHQ/w530-h640/6-Verify%2BFails%2BMissing%2BLibrary.png" width="530" /></a><br /><br /></div><div>If the compilation fails, the GPIO library needs to be added to the Arduino IDE. This step needs to be done only once. That's why we tried to compile the sketch first, to see if the library was already installed. To install the library, click Sketch->Include Library->Add .ZIP Library <a href="https://1.bp.blogspot.com/-CL_myYMVDak/YP1meqcaU3I/AAAAAAAARKY/xw5FfJgyokcf4VpZvjLuX7x-hSDqd47sACLcBGAsYHQ/s601/7-Sketch%2BInclude%2BLibrary%2BAdd%2BZIP%2BLibrary.png" style="margin-left: 1em; margin-right: 1em; text-align: center;"><img border="0" data-original-height="601" data-original-width="585" height="640" src="https://1.bp.blogspot.com/-CL_myYMVDak/YP1meqcaU3I/AAAAAAAARKY/xw5FfJgyokcf4VpZvjLuX7x-hSDqd47sACLcBGAsYHQ/w622-h640/7-Sketch%2BInclude%2BLibrary%2BAdd%2BZIP%2BLibrary.png" width="622" /></a><br /><br /></div><div>Navigate to the Downloads folder and click on the Arduino-GPIO-master file. Click Open. That's it, the GPIO library is now installed and ready to use. This one time step does not need to be repeated:<a href="https://1.bp.blogspot.com/-VuDSX7cVd7c/YP1mex1W86I/AAAAAAAARKc/dwllBCDO5jI7u8EEkig2BxAg7XRKG0XzQCLcBGAsYHQ/s598/8-Select%2BArduino%2BGPIO%2BMaster%2Blibrary.png" style="margin-left: 1em; margin-right: 1em; text-align: center;"><img border="0" data-original-height="598" data-original-width="494" height="640" src="https://1.bp.blogspot.com/-VuDSX7cVd7c/YP1mex1W86I/AAAAAAAARKc/dwllBCDO5jI7u8EEkig2BxAg7XRKG0XzQCLcBGAsYHQ/w528-h640/8-Select%2BArduino%2BGPIO%2BMaster%2Blibrary.png" width="528" /></a></div><div><br /></div><div>Click the Verify button again and this time the sketch should compile successfully:<a href="https://1.bp.blogspot.com/-gTpi1h5goTk/YP1mfPzgVeI/AAAAAAAARKg/AZKDNXNHd-c6HH5Q-dZirzyGrCX-jeNgACLcBGAsYHQ/s605/9-Verify%2BPasses.png" style="margin-left: 1em; margin-right: 1em; text-align: center;"><img border="0" data-original-height="605" data-original-width="495" height="640" src="https://1.bp.blogspot.com/-gTpi1h5goTk/YP1mfPzgVeI/AAAAAAAARKg/AZKDNXNHd-c6HH5Q-dZirzyGrCX-jeNgACLcBGAsYHQ/w524-h640/9-Verify%2BPasses.png" width="524" /></a><br /><br /></div><div>Plug in the USB cable to the Arduino Mega located on the back of the DSKY. A new serial port will be assigned when plugging it in for the first time. After a popup appears indicating that the hardware is ready to use, click on Tool->Port and select the Arduino Mega port, make absolutely sure that the selected Board is "Arduino Mega or Mega 2560" and the Processor is "Atmega 2560 (Mega 2560)":<a href="https://1.bp.blogspot.com/-ehqF1J01OJU/YP1mUcWhQoI/AAAAAAAARIM/6j1LcMdeF_MRAMVSXczBCP4i2VUpiWXzgCLcBGAsYHQ/s679/10-Se%253Bect%2BPort%2Bfor%2BArduino%2BMega.png" style="margin-left: 1em; margin-right: 1em; text-align: center;"><img border="0" data-original-height="604" data-original-width="679" height="570" src="https://1.bp.blogspot.com/-ehqF1J01OJU/YP1mUcWhQoI/AAAAAAAARIM/6j1LcMdeF_MRAMVSXczBCP4i2VUpiWXzgCLcBGAsYHQ/w640-h570/10-Se%253Bect%2BPort%2Bfor%2BArduino%2BMega.png" width="640" /></a></div><div><br /></div><div>Click the Upload button to compile and upload the sketch to the Arduino Mega on the DSKY. It should display two progress bars, one for compilation as shown below, followed by another for uploading. Wait until the uploading is done before doing anything else.<a href="https://1.bp.blogspot.com/-CBF8Qz834dY/YP1mUfwgnOI/AAAAAAAARIQ/9n07_24LFTgRCekQC0YisoOkHbCaVuSgQCLcBGAsYHQ/s603/11-Upload.png" style="margin-left: 1em; margin-right: 1em; text-align: center;"><img border="0" data-original-height="603" data-original-width="496" height="640" src="https://1.bp.blogspot.com/-CBF8Qz834dY/YP1mUfwgnOI/AAAAAAAARIQ/9n07_24LFTgRCekQC0YisoOkHbCaVuSgQCLcBGAsYHQ/w526-h640/11-Upload.png" width="526" /></a></div><div><br /></div><div>Another progress bar will be shown when uploading the sketch. After the process succeeds, the IDE will shown "Done uploading". The Mega sketch does not output a version number to the serial port, so we are done with it at this point.<a href="https://1.bp.blogspot.com/-WqbWbbkQqB8/YP1mUUxKO0I/AAAAAAAARIU/v4RLteKvYYE84aIMTMJ-YjmmppIGl3d0QCLcBGAsYHQ/s600/12-Done%2BUploading.png" style="margin-left: 1em; margin-right: 1em; text-align: center;"><img border="0" data-original-height="600" data-original-width="493" height="640" src="https://1.bp.blogspot.com/-WqbWbbkQqB8/YP1mUUxKO0I/AAAAAAAARIU/v4RLteKvYYE84aIMTMJ-YjmmppIGl3d0QCLcBGAsYHQ/w526-h640/12-Done%2BUploading.png" width="526" /></a></div><div><br /></div><div>Unplug the Arduino Mega. Click File->Open and navigate to the DSKYUniversalScreen folder. Select the DSKYUniversalScreen sketch:<a href="https://1.bp.blogspot.com/-WVd07i0MID4/YP1mU1Py6fI/AAAAAAAARIY/uyK6-IVLjmEtiM7-zDB5jiIVEaDPDaVYQCLcBGAsYHQ/s605/13-Open%2BUniversalScreen%2BSketch.png" style="margin-left: 1em; margin-right: 1em; text-align: center;"><img border="0" data-original-height="605" data-original-width="575" height="640" src="https://1.bp.blogspot.com/-WVd07i0MID4/YP1mU1Py6fI/AAAAAAAARIY/uyK6-IVLjmEtiM7-zDB5jiIVEaDPDaVYQCLcBGAsYHQ/w608-h640/13-Open%2BUniversalScreen%2BSketch.png" width="608" /></a><br /><br /></div><div>A new Arduino window will open. To avoid confusion, close the DSKYMegaMainProcessor window.<a href="https://1.bp.blogspot.com/-9qkFsdu5I44/YP1mVPt_pKI/AAAAAAAARIc/Q-MQLhjdWxcQZcNTvlLw8qtRRJ5_3XwPACLcBGAsYHQ/s659/14-Two%2BScreens%2BOpen%2BUnplug%2Band%2BClose%2BMega%2BSketch.png" style="margin-left: 1em; margin-right: 1em; text-align: center;"><img border="0" data-original-height="659" data-original-width="549" height="640" src="https://1.bp.blogspot.com/-9qkFsdu5I44/YP1mVPt_pKI/AAAAAAAARIc/Q-MQLhjdWxcQZcNTvlLw8qtRRJ5_3XwPACLcBGAsYHQ/w534-h640/14-Two%2BScreens%2BOpen%2BUnplug%2Band%2BClose%2BMega%2BSketch.png" width="534" /></a><br /><br /></div><div>The left and right screens are run by an Arduino Nano located underneath each one. To compile the screen sketch, first select the Arduino Nano by clicking Tools->Board->Arduino Nano.<a href="https://1.bp.blogspot.com/-U-MRCPlS8Hg/YP1mVnzt_bI/AAAAAAAARIg/E_McvuKnW_4-wHINgvsSZxn-wL0k_cUjACLcBGAsYHQ/s667/15-Tools%2B-%2BBoard%2B-%2BArduino%2BNano.png" style="margin-left: 1em; margin-right: 1em; text-align: center;"><img border="0" data-original-height="604" data-original-width="667" height="580" src="https://1.bp.blogspot.com/-U-MRCPlS8Hg/YP1mVnzt_bI/AAAAAAAARIg/E_McvuKnW_4-wHINgvsSZxn-wL0k_cUjACLcBGAsYHQ/w640-h580/15-Tools%2B-%2BBoard%2B-%2BArduino%2BNano.png" width="640" /></a><br /><br /></div><div>Make absolutely sure that the Arduino Mega has been unplugged by going to Tools->Port and verify that the Mega is no longer shown. If it is still there, unplug it.<a href="https://1.bp.blogspot.com/-GkraExij-5g/YP1mWC3QsTI/AAAAAAAARIk/YbkTwonHZuIYOca1PFavGoJQP6cXkPKVgCLcBGAsYHQ/s603/16%2B-%2BDouble%2Bcheck%2Band%2Bmake%2Bsure%2BMega%2BPort%2Bis%2BNOT%2Bselected%2Bwith%2BBoard%2Bset%2Bto%2BNano.png" style="margin-left: 1em; margin-right: 1em; text-align: center;"><img border="0" data-original-height="603" data-original-width="541" height="640" src="https://1.bp.blogspot.com/-GkraExij-5g/YP1mWC3QsTI/AAAAAAAARIk/YbkTwonHZuIYOca1PFavGoJQP6cXkPKVgCLcBGAsYHQ/w574-h640/16%2B-%2BDouble%2Bcheck%2Band%2Bmake%2Bsure%2BMega%2BPort%2Bis%2BNOT%2Bselected%2Bwith%2BBoard%2Bset%2Bto%2BNano.png" width="574" /></a></div><div><br /></div><div>Click the Verify button to try to compile the Universal Screen sketch. If the graphics library has not been installed in the computer, the compilation will fail:<a href="https://1.bp.blogspot.com/-JxCZISDr43M/YP1mWSpVKsI/AAAAAAAARIo/rLpY6FmKvrAXwE28_wDBY6LTdgxe9-1xQCLcBGAsYHQ/s606/17-Verify%2BFails%2BMissing%2BLibrary.png" style="margin-left: 1em; margin-right: 1em; text-align: center;"><img border="0" data-original-height="606" data-original-width="499" height="640" src="https://1.bp.blogspot.com/-JxCZISDr43M/YP1mWSpVKsI/AAAAAAAARIo/rLpY6FmKvrAXwE28_wDBY6LTdgxe9-1xQCLcBGAsYHQ/w526-h640/17-Verify%2BFails%2BMissing%2BLibrary.png" width="526" /></a><br /><br /></div><div>If the compilation failed because the FastTFTILI9341 library was not found, add it by going to Sketch->Include Library->Add .ZIP Library<a href="https://1.bp.blogspot.com/-ww9KzGmP9lI/YP1mWsmk7tI/AAAAAAAARIs/4xMxa5XlbtcKJ_EX7Otoq0Qjxp5CEAOtgCLcBGAsYHQ/s601/18-Sketch%2BInclude%2BLibrary%2BAdd%2BZIP%2BLibrary.png" style="margin-left: 1em; margin-right: 1em; text-align: center;"><img border="0" data-original-height="601" data-original-width="571" height="640" src="https://1.bp.blogspot.com/-ww9KzGmP9lI/YP1mWsmk7tI/AAAAAAAARIs/4xMxa5XlbtcKJ_EX7Otoq0Qjxp5CEAOtgCLcBGAsYHQ/w608-h640/18-Sketch%2BInclude%2BLibrary%2BAdd%2BZIP%2BLibrary.png" width="608" /></a><br /><br /></div><div>Navigate to the Downloads folder and select the FastSeedTFTv2-master file and click Open. This is a one time step.<a href="https://1.bp.blogspot.com/-GSZBZmPvs-s/YP1mW9Xb6bI/AAAAAAAARIw/VgQm12Kva5cyAmlZp-9P4ABJvcF9zpdDACLcBGAsYHQ/s602/19-Select%2BFastSeedTFTv2-master%2Blibrary.png" style="margin-left: 1em; margin-right: 1em; text-align: center;"><img border="0" data-original-height="602" data-original-width="495" height="640" src="https://1.bp.blogspot.com/-GSZBZmPvs-s/YP1mW9Xb6bI/AAAAAAAARIw/VgQm12Kva5cyAmlZp-9P4ABJvcF9zpdDACLcBGAsYHQ/w526-h640/19-Select%2BFastSeedTFTv2-master%2Blibrary.png" width="526" /></a><br /><br /></div><div>Click the "Verify" button again and the sketch should compile:<a href="https://1.bp.blogspot.com/-8vfS11OtHuk/YP1mXUqqQ9I/AAAAAAAARI4/3IE-SH9zFDIpCOt8AgKuEwiv_FpTVlU4gCLcBGAsYHQ/s603/20a-Verify%2BPasses.png" style="margin-left: 1em; margin-right: 1em; text-align: center;"><img border="0" data-original-height="603" data-original-width="498" height="640" src="https://1.bp.blogspot.com/-8vfS11OtHuk/YP1mXUqqQ9I/AAAAAAAARI4/3IE-SH9zFDIpCOt8AgKuEwiv_FpTVlU4gCLcBGAsYHQ/w528-h640/20a-Verify%2BPasses.png" width="528" /></a><br /><br /></div><div>Time to plug the USB cable to the Arduino Nano located underneath the right screen. If the USB drivers have never been installed, the port list under Tools->Port should not change.<a href="https://1.bp.blogspot.com/-C1kpqXTMSj4/YP1mXt4GjRI/AAAAAAAARI8/HBHT9lKjDksKifQRp5bpcQSzkDMcPilMQCLcBGAsYHQ/s603/20b%2B-Plug%2BScreen%2Band%2Bit%2Bdoes%2Bnot%2Bshow%2Bup%2Bon%2Bport%2Blist.png" style="margin-left: 1em; margin-right: 1em; text-align: center;"><img border="0" data-original-height="603" data-original-width="541" height="640" src="https://1.bp.blogspot.com/-C1kpqXTMSj4/YP1mXt4GjRI/AAAAAAAARI8/HBHT9lKjDksKifQRp5bpcQSzkDMcPilMQCLcBGAsYHQ/w574-h640/20b%2B-Plug%2BScreen%2Band%2Bit%2Bdoes%2Bnot%2Bshow%2Bup%2Bon%2Bport%2Blist.png" width="574" /></a><br /><br /></div><div>Optionally, the device can be verified in the Control Panel as being unrecognized.<a href="https://1.bp.blogspot.com/-8XyVAHVy7mM/YP1mX7B9FFI/AAAAAAAARJA/hoDsu9l7TWcE6xPIb4PHjOeQX11SQ0VTQCLcBGAsYHQ/s510/21-Yak%2BShaving%2B-%2BNo%2BUSB%2BDriver.png" style="margin-left: 1em; margin-right: 1em; text-align: center;"><img border="0" data-original-height="510" data-original-width="414" height="640" src="https://1.bp.blogspot.com/-8XyVAHVy7mM/YP1mX7B9FFI/AAAAAAAARJA/hoDsu9l7TWcE6xPIb4PHjOeQX11SQ0VTQCLcBGAsYHQ/w520-h640/21-Yak%2BShaving%2B-%2BNo%2BUSB%2BDriver.png" width="520" /></a><br /><br /></div><div>A one time setup is needed. First, download the CH340G drivers for the Arduino Nano clone by visiting the manufacturer's download website (opens in a new window):</div><div><a href="http://www.wch.cn/downloads/CH341SER_ZIP.html" target="_blank">http://www.wch.cn/downloads/CH341SER_ZIP.html</a></div><div><br /></div><div>Click the Blue Button with a Cloud and Down Arrow icon located just below the model numbers supported by this driver. Only the ZIP file is needed, do not download EXE or other files.<a href="https://1.bp.blogspot.com/-gBSAT5aGNtU/YP1mYGmrPSI/AAAAAAAARJE/rLANmBUc9WEB6d00yhoa9sOamlGwcDLfQCLcBGAsYHQ/s814/22-Download%2BCH341SER.ZIP%2Bfrom%2Bmanufacturer%2Bwebsite.png" style="margin-left: 1em; margin-right: 1em; text-align: center;"><img border="0" data-original-height="489" data-original-width="814" height="384" src="https://1.bp.blogspot.com/-gBSAT5aGNtU/YP1mYGmrPSI/AAAAAAAARJE/rLANmBUc9WEB6d00yhoa9sOamlGwcDLfQCLcBGAsYHQ/w640-h384/22-Download%2BCH341SER.ZIP%2Bfrom%2Bmanufacturer%2Bwebsite.png" width="640" /></a></div><div><br /></div><div>Save the CH341SER.ZIP file to the Downloads folder. Right click this file and select "Extract All..."<a href="https://1.bp.blogspot.com/-7tZrPtUn0tI/YP1mYQTJcmI/AAAAAAAARJI/c5Pfl3NOnCMJwxnrXa-AwZD4Rjm97t1EACLcBGAsYHQ/s528/23-Right%2BClick%2BExtract%2BAll%2B.png" style="margin-left: 1em; margin-right: 1em; text-align: center;"><img border="0" data-original-height="236" data-original-width="528" height="286" src="https://1.bp.blogspot.com/-7tZrPtUn0tI/YP1mYQTJcmI/AAAAAAAARJI/c5Pfl3NOnCMJwxnrXa-AwZD4Rjm97t1EACLcBGAsYHQ/w640-h286/23-Right%2BClick%2BExtract%2BAll%2B.png" width="640" /></a><br /><br /></div><div>Extract the files to a sub-folder in the Downloads folder as shown below:<a href="https://1.bp.blogspot.com/-jq10ajGvbJk/YP1mY_ifWkI/AAAAAAAARJM/75qcTAlLvkkCMECxgJUZbacFllrFUurywCLcBGAsYHQ/s623/24-Extract%2Bto%2BDownloads%2BFolder.png" style="margin-left: 1em; margin-right: 1em; text-align: center;"><img border="0" data-original-height="461" data-original-width="623" height="474" src="https://1.bp.blogspot.com/-jq10ajGvbJk/YP1mY_ifWkI/AAAAAAAARJM/75qcTAlLvkkCMECxgJUZbacFllrFUurywCLcBGAsYHQ/w640-h474/24-Extract%2Bto%2BDownloads%2BFolder.png" width="640" /></a><br /><br /></div><div>Next, open the Device Manager by whatever method you are familiar with. One is to use the search box on the Windows 10 taskbar:<a href="https://1.bp.blogspot.com/-avZomm6hzSU/YP1mZhOGdBI/AAAAAAAARJU/C3NjsoJg0foYldi-H5GekzKtmoa7Hq32ACLcBGAsYHQ/s676/30-Search%2Bfor%2BDevice%2BManager.png" style="margin-left: 1em; margin-right: 1em; text-align: center;"><img border="0" data-original-height="676" data-original-width="393" height="640" src="https://1.bp.blogspot.com/-avZomm6hzSU/YP1mZhOGdBI/AAAAAAAARJU/C3NjsoJg0foYldi-H5GekzKtmoa7Hq32ACLcBGAsYHQ/w372-h640/30-Search%2Bfor%2BDevice%2BManager.png" width="372" /></a><br /><br /></div><div>Locate the USB2.0-Serial icon with the yellow warning sign:<a href="https://1.bp.blogspot.com/-yHRhfOSja1M/YP1mZzekLTI/AAAAAAAARJY/Us2vTnXREvI6DnYm_d9JrM38BtaT4AMLQCLcBGAsYHQ/s345/31-USB2.0%2BSerial%2Bhas%2Ba%2Bproblem.png" style="margin-left: 1em; margin-right: 1em; text-align: center;"><img border="0" data-original-height="345" data-original-width="298" height="640" src="https://1.bp.blogspot.com/-yHRhfOSja1M/YP1mZzekLTI/AAAAAAAARJY/Us2vTnXREvI6DnYm_d9JrM38BtaT4AMLQCLcBGAsYHQ/w552-h640/31-USB2.0%2BSerial%2Bhas%2Ba%2Bproblem.png" width="552" /></a></div><div><br /></div><div>Double click the device and its properties will open. Click on the "Update Driver..." button.<a href="https://1.bp.blogspot.com/-q5aSkCyiQLI/YP1maX3_QNI/AAAAAAAARJc/dz2Xkg5aVWoCW0DLV0UBnCgvIUGVU44VQCLcBGAsYHQ/s606/32-Click%2Bon%2BDevice%2BThen%2BClick%2Bon%2BUpdate%2BDriver.png" style="margin-left: 1em; margin-right: 1em; text-align: center;"><img border="0" data-original-height="585" data-original-width="606" height="618" src="https://1.bp.blogspot.com/-q5aSkCyiQLI/YP1maX3_QNI/AAAAAAAARJc/dz2Xkg5aVWoCW0DLV0UBnCgvIUGVU44VQCLcBGAsYHQ/w640-h618/32-Click%2Bon%2BDevice%2BThen%2BClick%2Bon%2BUpdate%2BDriver.png" width="640" /></a><br /><br /></div><div>Click on the "Browse my computer for drivers" button.<a href="https://1.bp.blogspot.com/-Etr0JQd3F5Q/YP1masv2GqI/AAAAAAAARJg/SMTrF9jUPWgdpFkYkIqCkwoG9ml5ZbIaACLcBGAsYHQ/s625/33-Browse%2BMy%2BComputer%2BFor%2BDrivers.png" style="margin-left: 1em; margin-right: 1em; text-align: center;"><img border="0" data-original-height="467" data-original-width="625" height="478" src="https://1.bp.blogspot.com/-Etr0JQd3F5Q/YP1masv2GqI/AAAAAAAARJg/SMTrF9jUPWgdpFkYkIqCkwoG9ml5ZbIaACLcBGAsYHQ/w640-h478/33-Browse%2BMy%2BComputer%2BFor%2BDrivers.png" width="640" /></a><br /><br /></div><div>Navigate to where the drivers where unzipped, the CH341SER folder located under Downloads and click OK.<a href="https://1.bp.blogspot.com/-o-k9rMbJsP8/YP1o5lMIV3I/AAAAAAAARK8/JpbChz9BsVEUQIsYDnS4KsKjTLosgMmxgCLcBGAsYHQ/s626/34-Select%2BCH341SER%2Bfolder%2Bin%2BDownloads%2Band%2BClick%2BNext.png" style="margin-left: 1em; margin-right: 1em; text-align: center;"><img border="0" data-original-height="463" data-original-width="626" height="474" src="https://1.bp.blogspot.com/-o-k9rMbJsP8/YP1o5lMIV3I/AAAAAAAARK8/JpbChz9BsVEUQIsYDnS4KsKjTLosgMmxgCLcBGAsYHQ/w640-h474/34-Select%2BCH341SER%2Bfolder%2Bin%2BDownloads%2Band%2BClick%2BNext.png" width="640" /></a></div><div><br /></div><div>The drivers for the CH340 USB adapter will be installed, a serial port number unique to your computer will be assigned and a success window will be shown. Click "Close" and also close the Device Manager window. This concludes the Yak Shaving.<a href="https://1.bp.blogspot.com/-PncjxlpPz4Q/YP1mbOk0fsI/AAAAAAAARJo/C3j6Kvb4aR8u3GqJCw4R0SkQ25jGVlZEgCLcBGAsYHQ/s624/35%2B-Success%2B-%2BEnd%2BYak%2BShaving.png" style="margin-left: 1em; margin-right: 1em; text-align: center;"><img border="0" data-original-height="464" data-original-width="624" height="476" src="https://1.bp.blogspot.com/-PncjxlpPz4Q/YP1mbOk0fsI/AAAAAAAARJo/C3j6Kvb4aR8u3GqJCw4R0SkQ25jGVlZEgCLcBGAsYHQ/w640-h476/35%2B-Success%2B-%2BEnd%2BYak%2BShaving.png" width="640" /></a></div><div><br /></div><div>Going back to the Arduino IDE, click on Tools->Port and select the newly created port. Make absolutely sure that the USB cable is plugged in to an Arduino NANO, NOT to the Arduino MEGA and that Board shows "Arduino Nano" and Processor shows "ATmega328p". </div><div><br /></div><div><b>Bad things could happen if the selected board does not match the board that is plugged in.</b><a href="https://1.bp.blogspot.com/-ZhgEkkGSurg/YP1mbVEC9OI/AAAAAAAARJs/hjy5mLFQ9Z811qaTyRllSh4W-dxxCEQ-gCLcBGAsYHQ/s603/36%2B-%2BLaunch%2BArduino%2BIDE%2B-%2BSelect%2BTools%2B-%2BPort%2B-%2BNew%2BPort.png" style="margin-left: 1em; margin-right: 1em; text-align: center;"><img border="0" data-original-height="603" data-original-width="542" height="640" src="https://1.bp.blogspot.com/-ZhgEkkGSurg/YP1mbVEC9OI/AAAAAAAARJs/hjy5mLFQ9Z811qaTyRllSh4W-dxxCEQ-gCLcBGAsYHQ/w576-h640/36%2B-%2BLaunch%2BArduino%2BIDE%2B-%2BSelect%2BTools%2B-%2BPort%2B-%2BNew%2BPort.png" width="576" /></a><br /><br /></div><div>To make sure that the screen sketch is uploading correctly, change the date shown below and click Upload. Depending on the age of the Arduino IDE installed on your computer, the upload will either pass, or fail with a bootloader error:<a href="https://1.bp.blogspot.com/-ERZCZEK8XVU/YP1mbiPjqSI/AAAAAAAARJw/tyfh1GmMxj8Gn-cs717G8h9Ijo2KxQv6ACLcBGAsYHQ/s514/37%2B-%2BUpload%2Bthrows%2Bbootloader%2Bsync%2Berrors.png" style="margin-left: 1em; margin-right: 1em; text-align: center;"><img border="0" data-original-height="514" data-original-width="497" height="640" src="https://1.bp.blogspot.com/-ERZCZEK8XVU/YP1mbiPjqSI/AAAAAAAARJw/tyfh1GmMxj8Gn-cs717G8h9Ijo2KxQv6ACLcBGAsYHQ/w618-h640/37%2B-%2BUpload%2Bthrows%2Bbootloader%2Bsync%2Berrors.png" width="618" /></a><br /><br /></div><div>If the bootloader error is show, click on Tools->Processor and select "ATmega328p (Old Bootloader)"<a href="https://1.bp.blogspot.com/-arsensYQGhc/YP1mb_15u7I/AAAAAAAARJ4/FLc2PlCjZ8UmMgaz6s2HFIsg5TtpyKdBACLcBGAsYHQ/s668/38-Select%2BTools%2B-%2BProcessor%2B-%2BATmega%2B328p%2BOld%2BBootloader.png" style="margin-left: 1em; margin-right: 1em; text-align: center;"><img border="0" data-original-height="510" data-original-width="668" height="488" src="https://1.bp.blogspot.com/-arsensYQGhc/YP1mb_15u7I/AAAAAAAARJ4/FLc2PlCjZ8UmMgaz6s2HFIsg5TtpyKdBACLcBGAsYHQ/w640-h488/38-Select%2BTools%2B-%2BProcessor%2B-%2BATmega%2B328p%2BOld%2BBootloader.png" width="640" /></a><br /><br /></div><div>Click the Upload button again and the process should succeed:<a href="https://1.bp.blogspot.com/-HFCX7Eu4U1M/YP1mcLf9uvI/AAAAAAAARJ8/DW0hzxqvhtYbrScpoC58l8u26brqFymygCLcBGAsYHQ/s513/39%2B-%2BUpload%2Bpasses.png" style="margin-left: 1em; margin-right: 1em; text-align: center;"><img border="0" data-original-height="513" data-original-width="502" height="640" src="https://1.bp.blogspot.com/-HFCX7Eu4U1M/YP1mcLf9uvI/AAAAAAAARJ8/DW0hzxqvhtYbrScpoC58l8u26brqFymygCLcBGAsYHQ/w626-h640/39%2B-%2BUpload%2Bpasses.png" width="626" /></a><br /><br /></div><div>To verify that the screen sketch has been updated, click Tools->Serial Monitor:<a href="https://1.bp.blogspot.com/-uxldYSKB_3M/YP1mdNRYBcI/AAAAAAAARKE/Mk_DGYbhUZkaubNxAZD_YwYZ6TNK5IHsgCLcBGAsYHQ/s511/40%2B-%2BLaunch%2BSerial%2BMonitor.png" style="margin-left: 1em; margin-right: 1em; text-align: center;"><img border="0" data-original-height="511" data-original-width="496" height="640" src="https://1.bp.blogspot.com/-uxldYSKB_3M/YP1mdNRYBcI/AAAAAAAARKE/Mk_DGYbhUZkaubNxAZD_YwYZ6TNK5IHsgCLcBGAsYHQ/w622-h640/40%2B-%2BLaunch%2BSerial%2BMonitor.png" width="622" /></a><br /><br /></div><div>At the bottom of the screen, make sure "9600 baud" is selected and the screen should show the new date on the sketch name:<a href="https://1.bp.blogspot.com/-hYyyjErsSOA/YP1mdcW215I/AAAAAAAARKI/bjXqFEVBimI2DWNvcY_slS37swBDSqvOgCLcBGAsYHQ/s634/41%2B-%2BChanged%2Bdate%2Bshows%2Bsketch%2Bhas%2Bbeen%2Bupdated.png" style="margin-left: 1em; margin-right: 1em; text-align: center;"><img border="0" data-original-height="384" data-original-width="634" height="388" src="https://1.bp.blogspot.com/-hYyyjErsSOA/YP1mdcW215I/AAAAAAAARKI/bjXqFEVBimI2DWNvcY_slS37swBDSqvOgCLcBGAsYHQ/w640-h388/41%2B-%2BChanged%2Bdate%2Bshows%2Bsketch%2Bhas%2Bbeen%2Bupdated.png" width="640" /></a><br /><br /></div><div>Unplug the USB cable from the right screen, plug it into the Arduino NANO located under the left screen (NOT the Arduino MEGA) and click Upload. The sketch for the left screen should be updated:</div><div><br /></div><div><b>Bad things could happen if the selected board does not match the board that is plugged in.</b><a href="https://1.bp.blogspot.com/-tKj9Tb5s7s8/YP1mdmXzYYI/AAAAAAAARKM/jZGioRi5e_s8AQcW1I_VXF0ZBntAFvxPQCLcBGAsYHQ/s513/42%2B-%2BChange%2Bplug%2Bto%2Bsecond%2Bscreen%2Band%2Bpress%2BUpload.png" style="margin-left: 1em; margin-right: 1em; text-align: center;"><img border="0" data-original-height="513" data-original-width="502" height="640" src="https://1.bp.blogspot.com/-tKj9Tb5s7s8/YP1mdmXzYYI/AAAAAAAARKM/jZGioRi5e_s8AQcW1I_VXF0ZBntAFvxPQCLcBGAsYHQ/w626-h640/42%2B-%2BChange%2Bplug%2Bto%2Bsecond%2Bscreen%2Band%2Bpress%2BUpload.png" width="626" /></a></div><div><br /></div><div>This concludes the steps for setting up the Arduino IDE, installing the libraries needed by the DSKY sketches, installing the CH340G USB drivers for the Arduino Nano clones and uploading the sketches to their respective boards. </div><div><br /></div><div>To setup the computer so the DSKY can be used to simulate a space mission using a modified copy of the Apollo Guidance Computer (AGC) Simulator MoonJS, follow the link below (opens in a new window)</div><div><p><a href="https://arduinoenigma.blogspot.com/2021/07/setup-instructions-for-dual-screen.html" target="_blank">https://arduinoenigma.blogspot.com/2021/07/setup-instructions-for-dual-screen.html</a></p></div>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-6508740933553308664.post-12439442798151650432021-07-10T12:45:00.005-07:002021-07-25T08:32:56.284-07:00Setup Instructions for Dual Screen Apollo DSKY<p></p><div class="separator" style="clear: both; text-align: center;"><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-OYiOUEuG22g/YOn5iwmvmII/AAAAAAAARFM/9fwSMmnLfbIds0BGUsNw82ONAH4HJCsNACLcBGAsYHQ/s1600/External%2BDSKY%2BConnected%2Bto%2BHost%2BComputer.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="900" data-original-width="1600" height="360" src="https://1.bp.blogspot.com/-OYiOUEuG22g/YOn5iwmvmII/AAAAAAAARFM/9fwSMmnLfbIds0BGUsNw82ONAH4HJCsNACLcBGAsYHQ/w640-h360/External%2BDSKY%2BConnected%2Bto%2BHost%2BComputer.png" width="640" /></a></div><p>For more information on the Dual Scrren Apollo DSKY</p><p><a href="https://arduinoenigma.blogspot.com/p/dual-screen-apollo-dsky.html" target="_blank">https://arduinoenigma.blogspot.com/p/dual-screen-apollo-dsky.html</a></p><p>To use with a computer:</p><p><b>1) Install Arduino Virtual Serial Port Drivers.</b></p><p>To function properly, the DSKY needs the Arduino Serial Port drivers installed in the host computer. If there is any version of the Arduino Software installed on the computer, this step can be skipped. </p><p>If the Arduino Software is not installed, download it from:</p><p><a href="http://arduino.cc" target="_blank">http://arduino.cc</a> and click on the "Software" button on the bar at the top of the screen</p><p>or for a direct link to the English version:</p><p><a href="https://www.arduino.cc/en/software" target="_blank">https://www.arduino.cc/en/software</a></p><p>Follow the instructions for your operating system to install it.</p><p><b>2) Connect Arduino Mega on back of DSKY to host computer.</b></p><p>Once the Arduino Software has been installed, it is time to plug in the DSKY so it gets assigned a serial port number.</p><p>There are three Arduinos on the DSKY. The Two Arduino Nano in the front are only used to drive the Screens, they are not connected to the host computer except to modify the programs (sketches) running on them.</p><p>Flip the DSKY and connect the USB cable to the large Arduino Mega on the back. Connect the other end of the cable to the host computer.</p><p>The host computer will install the serial port drivers and assign a serial port number to the Arduino Mega. Communication can be verified by launching the Arduino Software. Click Tools -> Board -> Arduino/Genuino Mega or Mega 2560. Click Tools -> Port and select the newly created port. Click Tools -> Serial Monitor and on the bottom right of the screen, select 9600 baud. On the Top Line of the Serial Monitor type A and press Send, the "UPLINK ACTY" indicator should illuminate. Type Q and press Send and the "COMP ACTY" indicator should illuminate. Sending lowercase a and q will turn those indicators off. Exit the Serial Monitor, otherwise MoonJS cannot connect to an open serial port.</p><p><b>3) Install modified copy of MoonJS on host computer.</b></p><p>Download SerialMoonJS from:</p><p><a href="https://gitlab.com/arduinoenigma/serialmoonjs" target="_blank">https://gitlab.com/arduinoenigma/serialmoonjs</a></p><p>A direct link to the software is here:</p><p><a href="https://gitlab.com/arduinoenigma/serialmoonjs/-/archive/master/serialmoonjs-master.zip" target="_blank">https://gitlab.com/arduinoenigma/serialmoonjs/-/archive/master/serialmoonjs-master.zip</a></p><p>Unzip the file to a folder in the host computer.</p><p><b>4) Launch MoonJS and Connect to DSKY Serial Port.</b></p><p>Ensure the DSKY is first plugged in to the Arduino Mega port before launching MoonJS</p><p>Navigate to the folder where SerialMoonJS was unpacked.</p><p>The modified MoonJS software uses WebSerial, which runs on Chromium based browsers if a special command line flag is used when launching the browser.</p><p>There are two launchers included in the zip file</p><p>LAUNCH.CMD opens SerialMoonJS using Google Chrome</p><p>LAUNCH-EDGE.CMD uses Microsoft Edge</p><p>Other Chromium based browsers may be supported, the command line parameters are:</p><p>--allow-file-access-from-files --enable-experimental-web-platform-features</p><p>The first one is needed to allow html files to open files in the local computer. The second one enables WebSerial and a host of other experimental features. </p><p>Needless to say this is not the most secure browsing environment, so a browser in this state should not be used to browse the web.</p><p>Click either on LAUNCH.CMD or LAUNCH-EDGE.CMD</p><p>The launcher makes sure the browser is installed and not currently running, showing error messages if either of those conditions are detected.</p><p>A final warning message to not use this browser on the open internet is displayed before proceeding to MoonJS, the AGC simulator. </p><p>Once MoonJS launches, click on the "Connect" button on the top right side of the screen. A new dialog box will show a list of serial ports, select the "Arduino Mega 2560"and click the "Connect" button on the dialog box.</p><p>The screens on the external DSKY should update to match what is shown on the computer. To verify connectivity, on the external DSKY press: VERB 3 5 ENTR</p><p>A displays will show a flashing selft test on both the host computer and the external DSKY.</p><p>If the USB cable is disconnected without clicking the "Disconnect" button first, the page must be reloaded before being able to click the "Connect" button again.</p><p>To use MoonJS, click on the "Launch checklist" link on the top left of the screen and follow the instructions.</p><p>press V37E00E</p><p>click on "Enable IMU"</p><p>press V91E</p><p>press V35E</p><p>press PRO, repeat until NO ATT turns off</p><p>press V37E01E</p><p>when PROG changes to 02, click on "Launch"</p><p><b>(optional) Manual Control of External DSKY</b></p><p>follow the instructions above to use Serial Monitor to connect.</p><p>The left screens uses upper case A B C D E F G H I J K L M O to turn on each indicator, a lower case letter turns the indicator off. The right screen uses Q to turn the COMP ACTY indicator on. send P99 to display the PROG indicator, V99 displays the VERB indicator, N99, displays the NOUN indicator. The bottom three lines are controlled with X+88888 Y-99999 and Z300000. The first character of the X Y and Z commends must be a + or - anything else gets ignored. Press keys on the external DSKY and they will be shown in the Serial Monitor.</p><p>If you have made it this far, try pressing the NOUN key and without releasing it, press the RSET key.</p>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-6508740933553308664.post-51529594699455914302021-05-16T10:59:00.007-07:002021-05-16T23:23:45.804-07:00How to use PicoEnigma, an Enigma Z30 Simulator<p>PicoEnigma is an Enigma Z30 simulator, a rare, numbers only Enigma Machine. </p><p>Its mode of operation is similar to other Enigma machines, it has a keyboard and a lampfield, pushing a key sends electricity to the entry rotor (ETW), then the electricity goes from right to left through the rotor pack, comes back through the reflector (UKW), and returns from left to right through another set of wires in the rotor pack, goes into the ETW and out to a lamp. </p><p>In this machine, the rotors can be rearranged, the ring setting can be changed and the rotor starting position can be set. To successfully decrypt a message, the machine settings must be the same used to enctypt it.</p><p>This simulator is designed to operate the same as the Enigma Z30 Simulator for the KIM Uno:</p><p><a href="https://arduinoenigma.blogspot.com/p/enigma-z30-for-kim-uno.html" target="_blank">https://arduinoenigma.blogspot.com/p/enigma-z30-for-kim-uno.html</a></p><p>After the simulator is turned on, it is ready to encrypt a message. The rotor starting position is 4321. Pressing a key advances the rotors and lights the result. The result will be illuminated while the key is being pushed. Releasing the key turns the lamps off. </p>
<div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-JHElSD7YlDA/YJ_j8cnzkjI/AAAAAAAAQ1U/wbBhOTmCDN0SLPP5AUsQ3DYW6QGlWX7OACLcBGAsYHQ/s2048/20210515_083003.jpg" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1152" data-original-width="2048" src="https://1.bp.blogspot.com/-JHElSD7YlDA/YJ_j8cnzkjI/AAAAAAAAQ1U/wbBhOTmCDN0SLPP5AUsQ3DYW6QGlWX7OACLcBGAsYHQ/s320/20210515_083003.jpg" width="320" /></a></div><p>During machine operation, all the lamps will be off if none of the black keys are pressed, or one lamp will illuminate when a black key is pressed. Pressing the red key enters the configuration mode. To indicate at a glance that the machine is in the configuration mode, all of the lamps are lit except for one. </p><p>When only the first lamp is turned off, the rotor types are being changed. Pushing the keys above or below the displays changes the rotor type for that position. Each rotor can only be used once. Once a unique rotor combination is selected, pushing the red key again advances to the next setting. </p>
<div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-LE_LnafH1vI/YJ_kB9p2zrI/AAAAAAAAQ1c/nZ_TxRsSb4cJicde55JCs2Bck5yLKD8agCLcBGAsYHQ/s2048/20210515_083011.jpg" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1152" data-original-width="2048" src="https://1.bp.blogspot.com/-LE_LnafH1vI/YJ_kB9p2zrI/AAAAAAAAQ1c/nZ_TxRsSb4cJicde55JCs2Bck5yLKD8agCLcBGAsYHQ/s320/20210515_083011.jpg" width="320" /></a></div><p>When the second lamp is turned off, the ring settings are being changed. The up and down keys are used to change this setting, Each rotor can be set differently to a number from 0 to 9. Pressing the red menu key advances to the next setting.</p>
<div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-Dat5r8zI99U/YJ_kB4mI2hI/AAAAAAAAQ1g/uUOmxnLBE4ATBgtJQhnxa8y-5HOYDOe5gCLcBGAsYHQ/s2048/20210515_083019.jpg" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1152" data-original-width="2048" src="https://1.bp.blogspot.com/-Dat5r8zI99U/YJ_kB4mI2hI/AAAAAAAAQ1g/uUOmxnLBE4ATBgtJQhnxa8y-5HOYDOe5gCLcBGAsYHQ/s320/20210515_083019.jpg" width="320" /></a></div><p>When the third lamp is turned off, the stepping mode is being changed. There were two kinds of machines, one with a traditional lever stepping and another with geared stepping. The lever stepping machines suffered from a double stepping anomaly where a 9 in any position steps that wheel and the one to its left. A double stepping sequence is: 0088 0089 0090 0101 Geared stepping works like a car odometer and no digits are skipped. </p><p>The stepping mode is indicated by the digit on the right. If it shows a 0, the machine is using lever stepping, if it shows a 1, it is using geared stepping. In this screen, pushing the leftmost up and down button also changes the brightness of the lampfield digits. </p>
<div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-wOxda9jY48c/YJ_kBE0D0_I/AAAAAAAAQ1Y/a9qBFgeWoSYZMgOoJPOVCm5-l01Kf-YdwCLcBGAsYHQ/s2048/20210515_083027.jpg" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1152" data-original-width="2048" src="https://1.bp.blogspot.com/-wOxda9jY48c/YJ_kBE0D0_I/AAAAAAAAQ1Y/a9qBFgeWoSYZMgOoJPOVCm5-l01Kf-YdwCLcBGAsYHQ/s320/20210515_083027.jpg" width="320" /></a></div><p>Pushing the red menu button again turns all the lamps off and returns to the operating mode screen.</p><div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-12m8Ke-940k/YKFc2U_pA9I/AAAAAAAAQ2I/_KG2i2y0Ey8lPxJFst9I1FyRqNpOqK-uQCLcBGAsYHQ/s2048/20210515_083003.jpg" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1152" data-original-width="2048" src="https://1.bp.blogspot.com/-12m8Ke-940k/YKFc2U_pA9I/AAAAAAAAQ2I/_KG2i2y0Ey8lPxJFst9I1FyRqNpOqK-uQCLcBGAsYHQ/s320/20210515_083003.jpg" width="320" /></a></div><p>Pushing the up and down buttons changes the rotor starting position. The machine is now ready to encrypt numbers. </p><p>To send a text message, an encoding scheme must be devised. Either substitute letters by two numbers A 01 B 02 ... Y25 Z26 or use a codebook where words are substituted by numbers, first translate the message to numbers then encrypt the numbers. </p><p>To decrypt the message ensure the machine is set up exactly as the machine used to send the message. Ensure the starting position is set the same as well.</p><p>For example, to encrypt the message TEST, use the table below.</p><p><span style="font-family: courier;"> A B C D E F G H I J K L M</span></p><p><span style="font-family: courier;">01 02 03 04 05 06 07 08 09 10 11 12 13</span></p><p><span style="font-family: courier;"> N O P Q R S T U V W X Y Z</span></p><p><span style="font-family: courier;">14 15 16 17 18 19 20 21 22 23 24 25 26</span></p><p>The word TEST would be encoded as 20 05 19 20</p><p>Typing and holding one number at a time in the machine using the default settings after power up yields 44 57 43 94</p><p>The wheels should be at position 4329 after all the numbers have been typed. </p><p>To decrypt it, use the up and down keys to reset the wheels to the starting position of 4321. Then type the encrypted message (44 57 ...) and the original message (20 05 ...) will be displayed.</p><p><br /></p>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-6508740933553308664.post-20868435262481950872021-01-21T22:17:00.001-08:002021-01-21T22:18:55.450-08:00Dual Screen DSKY talks to host computer via Virtual Serial Port<p style="text-align: left;">This is a new project, a DSKY, the Display Keyboard interface for the Apollo Guidance Computer (AGC), using two 240x320 LCD screens and a keypad made with Kailh Cherry clone keys.</p><p style="text-align: left;">This DSKY uses an Arduino Mega 2560 to interface with the host computer via a USB Virtual Serial Port. The Arduino Mega uses two of its auxiliary serial ports to communicate with the Arduino Nano on each screen. The Arduino Mega is also responsible for scanning the DSKY keyboard and sending keypresses back to the host computer. </p><p style="text-align: left;">Each indicator on the left and right screen is controlled by a command from the host computer. For example to illuminate the indicators below, the host computer sends to the Mega the following string "C F P V00 N00 X 00000 Y 00000 Z 000 ". The Mega receives commands from the host computer and forwards them to both screens. The left screen reacts to single character commands A..O. Upper case commands illuminate an indicator, lower case commands turn them off. The right screen uses the Q command to illuminate the COMP ACTY indicator and the P, V, N, X, Y, Z commands to display numeric data which may include a leading positive or negative sign. </p><div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-hTZmykfp8rk/YAphej2dcuI/AAAAAAAAQRg/a66iHa1bE48pXolIKX4lBN-6y801ID0agCLcBGAsYHQ/s2048/20210122_000926.jpg" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1152" data-original-width="2048" height="360" src="https://1.bp.blogspot.com/-hTZmykfp8rk/YAphej2dcuI/AAAAAAAAQRg/a66iHa1bE48pXolIKX4lBN-6y801ID0agCLcBGAsYHQ/w640-h360/20210122_000926.jpg" width="640" /></a></div><div class="separator" style="clear: both; text-align: center;"><br /></div><div class="separator" style="clear: both; text-align: center;"><br /></div><div class="separator" style="clear: both; text-align: left;">This DSKY is being made to interface to a modified version of Moonjs, An Online Apollo Guidance Computer (AGC) Simulator (<a href="https://svtsim.com/moonjs/agc.html" target="_blank">https://svtsim.com/moonjs/agc.html</a>). The simulator has been modified to use the experimental Web Serial API available in the Google Chrome browser in order to both send screen data to the external DSKY as well as be controlled by keypresses from the external DSKY. </div><div class="separator" style="clear: both; text-align: left;"><br /></div><div class="separator" style="clear: both; text-align: left;">The modified simulator accepts keypress commands from the external DSKY via Serial Port. The commands correspond to the first letter of each key legend. For example if KEY REL is pressed in the external DSKY, it sends K to the simulator. Thus, to calibrate the IMU as part of the launch checklist, the simulator receives V 3 7 E 0 1 E from the external DSKY. </div><div class="separator" style="clear: both; text-align: left;"><br /></div><div class="separator" style="clear: both; text-align: left;">The modified simulator is available at <a href="https://gitlab.com/arduinoenigma/serialmoonjs" target="_blank">https://gitlab.com/arduinoenigma/serialmoonjs</a></div><div class="separator" style="clear: both; text-align: center;"><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-kOtnxpvuFzY/YApich2MBuI/AAAAAAAAQRo/EDNkND96vQUXb5E_U9AbcDXNuPIpUWXQwCLcBGAsYHQ/s883/PC%2BAGC%2BSimulator.PNG" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="707" data-original-width="883" height="512" src="https://1.bp.blogspot.com/-kOtnxpvuFzY/YApich2MBuI/AAAAAAAAQRo/EDNkND96vQUXb5E_U9AbcDXNuPIpUWXQwCLcBGAsYHQ/w640-h512/PC%2BAGC%2BSimulator.PNG" width="640" /></a></div><div style="text-align: center;"><br /></div><div style="text-align: left;">A PCB is being designed to hold both screens and the keypad. Each screen connects to an Arduino Uno compatible pin header and is controlled by an Arduino Nano located under it. The Arduino Nano has been rotated so the USB connector is accessible Only the minimum number of signals needed to control the display using SPI have been routed from the Nano to the LCD screen pins. The RX pin on each Nano is connected to a separate auxiliary TX pin on the Mega. </div><div style="text-align: center;"><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-u4vNIQnocZw/YApivUKBHCI/AAAAAAAAQRw/YOSwdW8IrbcuZIOIAH75n1m6hqVUDkvYgCLcBGAsYHQ/s648/DualScreenDSKYConcept%2BB8.PNG" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="648" data-original-width="619" height="640" src="https://1.bp.blogspot.com/-u4vNIQnocZw/YApivUKBHCI/AAAAAAAAQRw/YOSwdW8IrbcuZIOIAH75n1m6hqVUDkvYgCLcBGAsYHQ/w612-h640/DualScreenDSKYConcept%2BB8.PNG" width="612" /></a></div><div style="text-align: center;"><br /></div><div style="text-align: left;">The minimum number of signals needed to control the SPI LCD screen was experimentally determined by using jumper wires. </div><div style="text-align: center;"><br /></div><div><img border="0" data-original-height="1152" data-original-width="2048" height="360" src="https://1.bp.blogspot.com/-CU-Bn5CSyOE/YApjXxScI2I/AAAAAAAAQSA/Qdq14wdhR7UiNS1ajjFrzmfK3n7NsG3UgCLcBGAsYHQ/w640-h360/20210102_105423.jpg" style="color: #0000ee; text-align: center;" width="640" /></div><div style="text-align: center;"><br /></div><div style="text-align: left;">Here is an OSHPark (<a href="https://oshpark.com/profiles/ArduinoEnigma" target="_blank">https://oshpark.com/profiles/ArduinoEnigma</a>) rendering of the board design so far:</div><div class="separator" style="clear: both; text-align: left;"><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-0O5jyQeM6JQ/YApi6eLrSAI/AAAAAAAAQR0/vrpTxyvo_y0cdB14RCzBF-DM-HNyZ9nnQCLcBGAsYHQ/s2048/dual%2Bscreen%2BB8%2Bfront.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="2048" data-original-width="1951" height="640" src="https://1.bp.blogspot.com/-0O5jyQeM6JQ/YApi6eLrSAI/AAAAAAAAQR0/vrpTxyvo_y0cdB14RCzBF-DM-HNyZ9nnQCLcBGAsYHQ/w610-h640/dual%2Bscreen%2BB8%2Bfront.png" width="610" /></a></div><div style="text-align: center;"><br /></div><div style="text-align: center;"><br /></div><div class="separator" style="clear: both; text-align: center;"><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-pO0edHsJn7Q/YApjAyIDLoI/AAAAAAAAQR4/S30Gch12sVAz4OnOlanDAiGb8Kk0Q8a9gCLcBGAsYHQ/s2048/dual%2Bscreen%2BB8%2Bback.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="2048" data-original-width="1951" height="640" src="https://1.bp.blogspot.com/-pO0edHsJn7Q/YApjAyIDLoI/AAAAAAAAQR4/S30Gch12sVAz4OnOlanDAiGb8Kk0Q8a9gCLcBGAsYHQ/w610-h640/dual%2Bscreen%2BB8%2Bback.png" width="610" /></a></div><div style="text-align: center;"><br /></div>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-6508740933553308664.post-80406367852189557822020-12-18T23:54:00.005-08:002020-12-18T23:55:16.001-08:00Enigma Machine PCB Rotor Wheels now available <div class="separator" style="clear: both; text-align: center;">A complete set of Enigma Machine PCB Rotor wheels for a three rotor machine is now available at the link below:</div><div class="separator" style="clear: both; text-align: center;"><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://www.ebay.com/itm/Enigma-Machine-Rotor-Wiring-PCB/114573768533" target="_blank">https://www.ebay.com/itm/Enigma-Machine-Rotor-Wiring-PCB/114573768533</a></div><div class="separator" style="clear: both; text-align: center;"><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-HlWEptCEtlE/X92w5bW1CCI/AAAAAAAAQAA/fxQ-kwqgvv0cnwhBBZrwv0cXkWmkz0s1gCLcBGAsYHQ/s1143/EnigmaPCBRotorWheels.PNG" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="689" data-original-width="1143" src="https://1.bp.blogspot.com/-HlWEptCEtlE/X92w5bW1CCI/AAAAAAAAQAA/fxQ-kwqgvv0cnwhBBZrwv0cXkWmkz0s1gCLcBGAsYHQ/s320/EnigmaPCBRotorWheels.PNG" width="320" /></a></div><br /><p><br /></p>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-6508740933553308664.post-48769991689380574252020-10-25T23:02:00.016-07:002020-11-07T07:02:09.283-08:00UHR Switch Bill Of Materials (BOM) and Assembly Instructions<div style="text-align: left;">For more information about the UhrSwitch:</div><div style="text-align: left;">(<a href="https://arduinoenigma.blogspot.com/p/uhrswitch-uhr-switch-for-megaenigma.html" target="_blank">https://arduinoenigma.blogspot.com/p/uhrswitch-uhr-switch-for-megaenigma.html</a>)</div><div style="text-align: left;"><br /></div><h2 style="text-align: left;">Bill of Materials:</h2><div style="text-align: left;"><br /></div><div style="text-align: left;">1) 1x UHR Switch PCB</div><div style="text-align: left;"><br />2) 1x Meduino, (Mega 2560 Pro Mini). Make sure the pins to the right and the left of the USB connector match<br /><a href="https://www.ebay.com/sch/i.html?_nkw=meduino" target="_blank">https://www.ebay.com/sch/i.html?_nkw=meduino</a></div><div style="text-align: left;"><br />3) 2x 0.56 inch RED 7 SEGMENT LED DISPLAY COMMON CATHODE. Get either 2x 5161AS or 2x 5611AH <br /><a href="https://www.ebay.com/sch/i.html?_nkw=5161as" target="_blank">https://www.ebay.com/sch/i.html?_nkw=5161as</a></div><div style="text-align: left;"><br />4) 1x EC11 Rotary Encoder. <br /><a href="https://www.ebay.com/sch/i.html?_nkw=ec11%20rotary%20encoder" target="_blank">https://www.ebay.com/sch/i.html?_nkw=ec11%20rotary%20encoder</a></div><div style="text-align: left;"><br />5) 1x Potentiometer Cap (you may want to substitute with something more appropriate)<br /><a href="https://www.ebay.com/sch/i.html?_nkw=potentiometer%20cap%206mm%20inside" target="_blank">https://www.ebay.com/sch/i.html?_nkw=potentiometer%20cap%206mm%20inside</a></div><div style="text-align: left;"><br />6) 1x 3pin spdt switch arduino<br /><a href="https://www.ebay.com/sch/i.html?_nkw=3pin%20spdt%20switch%20arduino" target="_blank">https://www.ebay.com/sch/i.html?_nkw=3pin%20spdt%20switch%20arduino</a></div><div style="text-align: left;"><br />7) 20x 0.5M Audio Cable 3.5mm Male to Male 90 Degree Angle. Get the 0.5M the 20cm is too short.</div><div style="text-align: left;"><a href="https://www.aliexpress.com/item/1005001526968137.html" target="_blank">https://www.aliexpress.com/item/1005001526968137.html</a></div><div style="text-align: left;"><br />8) 4x M2 25mm Female to Female Brass Standoff<br /><a href="https://www.ebay.com/sch/i.html?_nkw=M2%2025mm%20Female%20to%20Female%20Brass%20Standoff" target="_blank">https://www.ebay.com/sch/i.html?_nkw=M2%2025mm%20Female%20to%20Female%20Brass%20Standoff</a></div><div style="text-align: left;"><br /><a href="https://www.ebay.com/itm/M2-3-25mm-Female-to-Female-Brass-Standoff-Spacer-Screw-Nut-Assortment-Kit/291627236215" target="_blank">https://www.ebay.com/itm/M2-3-25mm-Female-to-Female-Brass-Standoff-Spacer-Screw-Nut-Assortment-Kit/291627236215</a><br /><br /></div><div style="text-align: left;">9) 4x M2 6mm Plastic Screw (Black)</div><div style="text-align: left;"><a href="https://www.ebay.com/sch/i.html?_nkw=plastic+m2+6mm+screw" target="_blank">https://www.ebay.com/sch/i.html?_nkw=plastic+m2+6mm+screw</a></div><div style="text-align: left;"><br /></div><div style="text-align: left;">10) 4x M2 6mm Brass Screw</div><div style="text-align: left;"><a href="https://www.ebay.com/sch/i.html?_nkw=brass+m2+6mm+screw" target="_blank">https://www.ebay.com/sch/i.html?_nkw=brass+m2+6mm+screw</a></div><div style="text-align: left;"><br /></div><div style="text-align: left;">11) 1x 3 Pin PCB Mount 5.5x2.1mm Female DC Power Jack Socket Connector<br /><a href="https://www.ebay.com/sch/i.html?_nkw=3%20Pin%20PCB%20Mount%205.5x2.1mm%20Female%20DC%20Power%20Jack%20Socket%20Connector" target="_blank">https://www.ebay.com/sch/i.html?_nkw=3%20Pin%20PCB%20Mount%205.5x2.1mm%20Female%20DC%20Power%20Jack%20Socket%20Connector</a><br /><br /></div><div style="text-align: left;">12) 1x Spacer Board<br /><a href="https://oshpark.com/shared_projects/4vSjo28Y" target="_blank">https://oshpark.com/shared_projects/4vSjo28Y</a><br /><br /></div><h2 style="text-align: left;">Component Pictures:</h2><div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-5OepCjNIXVQ/X5Zs_ERjIsI/AAAAAAAAPzg/vtdD9FLx0fYpNW91FzlHF-g-0VaVxseqgCLcBGAsYHQ/s750/OSHPcb%2BBack.jpg" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="730" data-original-width="750" src="https://1.bp.blogspot.com/-5OepCjNIXVQ/X5Zs_ERjIsI/AAAAAAAAPzg/vtdD9FLx0fYpNW91FzlHF-g-0VaVxseqgCLcBGAsYHQ/s320/OSHPcb%2BBack.jpg" width="320" /></a></div><div style="text-align: center;"><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-fX6u-69raKY/X5ZtDAuADWI/AAAAAAAAPzk/QOFpb7AniKYWn9Xbv2dKLFA22C1e4J7OQCLcBGAsYHQ/s750/OSHPcb%2BFront.jpg" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="730" data-original-width="750" src="https://1.bp.blogspot.com/-fX6u-69raKY/X5ZtDAuADWI/AAAAAAAAPzk/QOFpb7AniKYWn9Xbv2dKLFA22C1e4J7OQCLcBGAsYHQ/s320/OSHPcb%2BFront.jpg" width="320" /></a></div><div style="text-align: center;"><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-o0MQ6DB_q5c/X5Zlyblyf6I/AAAAAAAAPyg/S9yfAkxcOWk_olgZygSrYqDwBzcrF2IrwCLcBGAsYHQ/s699/Mega%2BPro%2BMini.PNG" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="610" data-original-width="699" src="https://1.bp.blogspot.com/-o0MQ6DB_q5c/X5Zlyblyf6I/AAAAAAAAPyg/S9yfAkxcOWk_olgZygSrYqDwBzcrF2IrwCLcBGAsYHQ/s320/Mega%2BPro%2BMini.PNG" width="320" /></a></div><div class="separator" style="clear: both; text-align: center;"><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-XBISjKHAv0w/X5ZmB3sYMsI/AAAAAAAAPyk/nenttDSQeQExVnob029yIeeWvWWdBKa3gCLcBGAsYHQ/s697/EC11%2BRotary%2BEncoder.PNG" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="697" data-original-width="633" height="320" src="https://1.bp.blogspot.com/-XBISjKHAv0w/X5ZmB3sYMsI/AAAAAAAAPyk/nenttDSQeQExVnob029yIeeWvWWdBKa3gCLcBGAsYHQ/s320/EC11%2BRotary%2BEncoder.PNG" /></a></div><div style="text-align: center;"><br /></div><div style="text-align: center;"><br style="background-color: white; color: #222222; font-family: Arial, Helvetica, sans-serif; font-size: small;" /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-ImDd69mXIzA/X5ZmHx5IETI/AAAAAAAAPys/muRsJQh13j88eiDRuXSVU6Wt-TUEs1viACLcBGAsYHQ/s708/Potentiometer%2BCap.PNG" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="623" data-original-width="708" src="https://1.bp.blogspot.com/-ImDd69mXIzA/X5ZmHx5IETI/AAAAAAAAPys/muRsJQh13j88eiDRuXSVU6Wt-TUEs1viACLcBGAsYHQ/s320/Potentiometer%2BCap.PNG" width="320" /></a></div><div class="separator" style="clear: both; text-align: center;"><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-rdZgw8jPeA0/X5ZmOIZk-8I/AAAAAAAAPyw/14vTIcx2LewYaKWjLYAssNSkFxnbuwkDgCLcBGAsYHQ/s454/Mini%2BPower%2BSwitch.PNG" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="372" data-original-width="454" src="https://1.bp.blogspot.com/-rdZgw8jPeA0/X5ZmOIZk-8I/AAAAAAAAPyw/14vTIcx2LewYaKWjLYAssNSkFxnbuwkDgCLcBGAsYHQ/s320/Mini%2BPower%2BSwitch.PNG" width="320" /></a></div><div style="text-align: center;"><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-BQHFX3RFsck/X5ZmSp8xnQI/AAAAAAAAPy0/sKGWjcVbCPkolYJxYvlbgzS9CKOGqd5JgCLcBGAsYHQ/s361/Power%2BJack.PNG" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="361" data-original-width="330" height="320" src="https://1.bp.blogspot.com/-BQHFX3RFsck/X5ZmSp8xnQI/AAAAAAAAPy0/sKGWjcVbCPkolYJxYvlbgzS9CKOGqd5JgCLcBGAsYHQ/s320/Power%2BJack.PNG" /></a></div><div class="separator" style="clear: both; text-align: center;"><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-iIcVQ_zKlrs/X5ZmWkF7dHI/AAAAAAAAPy4/YPIEoEThnYoa5iWSLq9xMjrbZGvsDbT9wCLcBGAsYHQ/s706/Standoffs.PNG" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="539" data-original-width="706" src="https://1.bp.blogspot.com/-iIcVQ_zKlrs/X5ZmWkF7dHI/AAAAAAAAPy4/YPIEoEThnYoa5iWSLq9xMjrbZGvsDbT9wCLcBGAsYHQ/s320/Standoffs.PNG" width="320" /></a></div><div class="separator" style="clear: both; text-align: center;"><br /></div><h2 style="clear: both; text-align: left;"><b>Assembly Steps:</b></h2><div><br /></div><div>Read all of the assembly steps and look at the pictures at the bottom before starting any soldering. The components can be placed in the PCB before soldering them in order to verify that everything fits and is on the correct layer. Start soldering only once everything is understood. </div><div><br /></div><div class="separator" style="clear: both; text-align: left;"><b>Identify Top and Bottom sides of PCB.</b></div><div class="separator" style="clear: both; text-align: left;"><b>Top:</b> only shows EXT and INT words in white</div><div class="separator" style="clear: both; text-align: left;"><b>Bottom:</b> Flag, word UHRSwitch</div><div class="separator" style="clear: both; text-align: left;"><br /></div><div class="separator" style="clear: both; text-align: left;">-Insert power switch on 3 pin header next to the words EXT and INT on top side of PCB and solder it.</div><div class="separator" style="clear: both; text-align: left;">-Insert 2x seven segment displays on headers on top side of PCB and solder them</div><div class="separator" style="clear: both; text-align: left;">-Insert ENC11 Rotary encoder on top side of PCB and solder it</div><div class="separator" style="clear: both; text-align: left;">-flip PCB to bottom side</div><div class="separator" style="clear: both; text-align: left;"><div class="separator" style="clear: both;">-Insert pin headers for Meduino into bottom side of PCB. Insert the short end of the header pins into the PCB so they do not protrude too far out the front side. Flip the PCB and place on a flat surface. Solder pins on front side of PCB. Be careful not to touch the side of the seven segment displays with the soldering iron.</div><div class="separator" style="clear: both;">-Flip PCB and insert Meduino onto long side of pin header on bottom side of PCB. Solder it</div></div><div class="separator" style="clear: both; text-align: left;">-Insert PCB Spacer on DC Power Jaack and Insert Jack into bottom side of UHRSwitch PCB. The role of the Spacer is to keep the DC Power Jack pins from protruding too far out the front side of the PCB. Solder the Power Jack.</div><div class="separator" style="clear: both; text-align: left;">-Flip PCB to top side.</div><div class="separator" style="clear: both; text-align: left;">-Insert audio cables into holes on PCB from top side. The tails of the cables should point down, away from the seven segment displays.</div><div class="separator" style="clear: both; text-align: left;">-Flip PCB to bottom side.</div><div class="separator" style="clear: both; text-align: left;">-Solder one spot from the audio cable plug to the PCB.</div><div class="separator" style="clear: both; text-align: left;">-Once all soldering is completed, sand down any mouse bites sticking out the sides of the PCB.</div><div class="separator" style="clear: both; text-align: left;"><br /></div><h2 style="clear: both; text-align: left;">Assembled Unit Pictures:</h2><div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-_U02wz7n1ZI/X6a1N9IuvQI/AAAAAAAAP3M/8mAp2em9kDgDNApC4KOVEn2g-d3qEYFewCLcBGAsYHQ/s2048/Top%2BAssembled.jpg" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1152" data-original-width="2048" src="https://1.bp.blogspot.com/-_U02wz7n1ZI/X6a1N9IuvQI/AAAAAAAAP3M/8mAp2em9kDgDNApC4KOVEn2g-d3qEYFewCLcBGAsYHQ/s320/Top%2BAssembled.jpg" width="320" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-y1zhcU9VDuo/X6a1TWvWppI/AAAAAAAAP3Q/je3sKUH407U00YrzfXiebv-1-yQxfIYaQCLcBGAsYHQ/s2048/Bottom%2BAssembled.jpg" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1152" data-original-width="2048" src="https://1.bp.blogspot.com/-y1zhcU9VDuo/X6a1TWvWppI/AAAAAAAAP3Q/je3sKUH407U00YrzfXiebv-1-yQxfIYaQCLcBGAsYHQ/s320/Bottom%2BAssembled.jpg" width="320" /></a></div><div class="separator" style="clear: both; text-align: center;"><br /></div><div class="separator" style="clear: both; text-align: left;"><br /></div>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-6508740933553308664.post-38786448424170308102020-10-16T00:00:00.002-07:002020-10-16T00:05:00.016-07:00BinaryEnigma is possibly the smallest enigma machine ever built<p>[alank2] started a class of enigma machine simulators under 10x10cm and has now announced the latest addition to this family: BinaryEnigma</p><p>This class of machines was started to take advantage of the discounted rate when ordering pcbs sized 10x10cm and under from the Far East. The original, MicroEnigma using a 2 layer board and SMT components is described here:</p><p><a href="https://enigmaworldcodegroup.freeforums.net/thread/91/microenigma">https://enigmaworldcodegroup.freeforums.net/thread/91/microenigma</a></p><p>Another member of the family, PicoEnigma is a few millimeters smaller than MicroEnigma and uses all through hole parts, but needs a two board stack. </p><p><a href="https://arduinoenigma.blogspot.com/p/picoenigma.html">https://arduinoenigma.blogspot.com/p/picoenigma.html</a></p><p>The smallest of the bunch, BinaryEnigma was announced in this forum post:</p><p><a href="https://enigmaworldcodegroup.freeforums.net/thread/245/binaryenigma">https://enigmaworldcodegroup.freeforums.net/thread/245/binaryenigma</a></p><p>It appears to use an Oshpark PCB with a minimal number of components, LEDs and pushbuttons in the front and an SMT ATtiny84a in the back along with a few support components. The whole thing is powered by a CR2032 lithium battery that lasts 200 hours of machine operation.</p><p>Here are a few videos of the members of this family:</p><p><b>MicroEnigma:</b></p><p></p><div class="separator" style="clear: both; text-align: center;"><iframe allowfullscreen="" class="BLOG_video_class" height="266" src="https://www.youtube.com/embed/TomMZATAFVY" width="320" youtube-src-id="TomMZATAFVY"></iframe></div><br /><a href="https://www.youtube.com/watch?v=TomMZATAFVY">https://www.youtube.com/watch?v=TomMZATAFVY</a><p></p><p><b>PicoEnigma:</b></p><div class="separator" style="clear: both; text-align: center;"><iframe allowfullscreen="" class="BLOG_video_class" height="266" src="https://www.youtube.com/embed/e5l5f0q9yeA" width="320" youtube-src-id="e5l5f0q9yeA"></iframe></div><p><a href="https://www.youtube.com/watch?v=e5l5f0q9yeA">https://www.youtube.com/watch?v=e5l5f0q9yeA</a></p><p><b>BinaryEnigma:</b></p><div class="separator" style="clear: both; text-align: center;"><iframe allowfullscreen="" class="BLOG_video_class" height="266" src="https://www.youtube.com/embed/PVQSm2OKFzc" width="320" youtube-src-id="PVQSm2OKFzc"></iframe></div><p><a href="https://www.youtube.com/watch?v=PVQSm2OKFzc">https://www.youtube.com/watch?v=PVQSm2OKFzc</a></p><div><br /></div>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-6508740933553308664.post-41554527526090803522020-09-12T06:09:00.003-07:002020-11-17T03:48:45.775-08:00Pico Enigma Machine Simulator Kit now available<p>Pico Enigma is now available in a Kit. This is very easy to assemble, with all the parts being thru-hole. The kit includes all the parts needed to assemble your own enigma machine simulator. The glue to put together the wood enclosure is not include. Gorilla Go2Gel is recommended. </p><div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-2EvtXizRTFk/X1zHkEFTVrI/AAAAAAAAPn4/PxReC29PXWAr9zZR07DLTUoy43tfeCgBwCLcBGAsYHQ/s2048/20200906_124920.jpg" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1152" data-original-width="2048" height="360" src="https://1.bp.blogspot.com/-2EvtXizRTFk/X1zHkEFTVrI/AAAAAAAAPn4/PxReC29PXWAr9zZR07DLTUoy43tfeCgBwCLcBGAsYHQ/w640-h360/20200906_124920.jpg" width="640" /></a></div><div class="separator" style="clear: both; text-align: center;"><br /></div><div class="separator" style="clear: both; text-align: left;">The kit is available at the link below:</div><p><a href="http://tinyurl.com/enigmastore">http://tinyurl.com/enigmastore</a></p><p>For assembly instructions:</p><p><a href="https://arduinoenigma.blogspot.com/2020/06/assembly-notes-for-picoenigma.html">https://arduinoenigma.blogspot.com/2020/06/assembly-notes-for-picoenigma.html</a></p><p><br /></p>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-6508740933553308664.post-38437531190044589712020-08-16T08:30:00.007-07:002020-08-16T10:31:16.140-07:007 Segment LED Board now drives 16 LEDs <p>The seven segment LED board can now drive 16 LED using only an Arduino Nano. Using the circuit described below it can drive 18 LEDs using a stock Arduino Uno/Nano and 20 if the LED on pin D13 is removed by desoldering it.</p><p>Here is a picture of the board showing the first 16 digits of PI</p><p>The first board gets two Arduinos. The first one, at the top of the board sends instructions to the second one at the bottom of the board. The bottom arduino is responsible for receiving serial instructions and driving the LEDs, If a packet received through the serial port is not meant for the current board, it gets relayed to the next board. The TX pin in the bottom Arduino is connected to the RX pin on the next board's Arduino Nano.</p><p></p><div class="separator" style="clear: both; text-align: left;"><a href="https://1.bp.blogspot.com/-vOCYwyGM7p0/XzlEbp216FI/AAAAAAAAPZo/V1tS2P7NNGAvNCjLh-YEGQCCok2VRUm8QCLcBGAsYHQ/s750/PI.jpg" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="750" data-original-width="750" height="640" src="https://1.bp.blogspot.com/-vOCYwyGM7p0/XzlEbp216FI/AAAAAAAAPZo/V1tS2P7NNGAvNCjLh-YEGQCCok2VRUm8QCLcBGAsYHQ/s640/PI.jpg" /></a></div><div class="separator" style="clear: both; text-align: left;"><br /></div><div class="separator" style="clear: both; text-align: left;">This is the same board when it could only drive 9 LEDs.</div><div class="separator" style="clear: both; text-align: left;"><br /></div><div class="separator" style="clear: both; text-align: left;">We have previously written about this project: </div><div class="separator" style="clear: both; text-align: left;"><br /></div><div class="separator" style="clear: both; text-align: left;"><a href="https://arduinoenigma.blogspot.com/2019/01/starting-new-project-art-installation.html" target="_blank">https://arduinoenigma.blogspot.com/2019/01/starting-new-project-art-installation.html</a></div><div class="separator" style="clear: both; text-align: left;"><br /></div><div class="separator" style="clear: both;"><a href="https://arduinoenigma.blogspot.com/2019/03/scaling-up-falling-streamer-animation.html" target="_blank">https://arduinoenigma.blogspot.com/2019/03/scaling-up-falling-streamer-animation.html</a></div><div class="separator" style="clear: both;"><br /></div><div class="separator" style="clear: both; text-align: left;"><a href="https://arduinoenigma.blogspot.com/2019/04/the-seven-segment-art-installation-has.html" target="_blank">https://arduinoenigma.blogspot.com/2019/04/the-seven-segment-art-installation-has.html</a></div><div class="separator" style="clear: both; text-align: left;"><br /></div><div class="separator" style="clear: both; text-align: left;"><br /></div><div class="separator" style="clear: both; text-align: left;"><a href="https://1.bp.blogspot.com/-e_xHom1zlm4/XzlEg2totDI/AAAAAAAAPZs/139PAmDowk8iP0TNC5BBOj6cVojOOxp9wCLcBGAsYHQ/s595/3x3.jpg" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="595" data-original-width="594" src="https://1.bp.blogspot.com/-e_xHom1zlm4/XzlEg2totDI/AAAAAAAAPZs/139PAmDowk8iP0TNC5BBOj6cVojOOxp9wCLcBGAsYHQ/s0/3x3.jpg" /></a></div><div class="separator" style="clear: both; text-align: left;"><br /></div><div class="separator" style="clear: both; text-align: left;">By daisy chaining these boards, a larger installation can be assembled. Note the Arduino shadows, the board on the top left has two Arduinos, the rest of the boards, only one.</div><div class="separator" style="clear: both; text-align: left;"><br /></div><div class="separator" style="clear: both; text-align: left;"><a href="https://1.bp.blogspot.com/-eZ1p_ReC9Os/XzlEm6zAfuI/AAAAAAAAPZw/R_6QYDD2EQ4xKKAoqB7_LRJzZyDnRGCqACLcBGAsYHQ/s750/9x9.jpg" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="750" data-original-width="750" height="640" src="https://1.bp.blogspot.com/-eZ1p_ReC9Os/XzlEm6zAfuI/AAAAAAAAPZw/R_6QYDD2EQ4xKKAoqB7_LRJzZyDnRGCqACLcBGAsYHQ/s640/9x9.jpg" /></a></div><div class="separator" style="clear: both; text-align: left;"><br /></div><div class="separator" style="clear: both; text-align: left;"><br /></div><div class="separator" style="clear: both; text-align: left;">Here is a picture of the PCB as displayed by <a href="https://fritzing.org/" target="_blank">Fritzing</a>. Note all the segment pins are connected in the top layer using vertical traces. The segment pins on each vertical stack are connected to other stacks using horizontal traces on the bottom layer and vias under each display. Notice the middle pin on the B displays is connected to the Arduino and an A and a B display are connected together. </div><div class="separator" style="clear: both; text-align: left;"><br /></div><div class="separator" style="clear: both; text-align: left;">A 5611AS display is installed in all the sockets labelled A and a 5611BS display is installed in all the sockets labelled B. Another display like the higher brightness 5161 can be used, but be sure to get the 5161AS and 5161BS, do not mix 5611 with 5161 in the same board as the brightness will not be the same.</div><div class="separator" style="clear: both; text-align: left;"><br /></div><div class="separator" style="clear: both; text-align: left;"><a href="https://1.bp.blogspot.com/-fQF_iGeNYFE/XzlE-So53II/AAAAAAAAPaA/YyIVzhotvjgtXz0RnfOoXSbW2kxIO3hYQCLcBGAsYHQ/s635/FritzingPCB.PNG" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="634" data-original-width="635" src="https://1.bp.blogspot.com/-fQF_iGeNYFE/XzlE-So53II/AAAAAAAAPaA/YyIVzhotvjgtXz0RnfOoXSbW2kxIO3hYQCLcBGAsYHQ/s0/FritzingPCB.PNG" /></a></div><div class="separator" style="clear: both; text-align: left;"><br /></div><div class="separator" style="clear: both; text-align: left;">The schematic for this board is drawn below:</div><div class="separator" style="clear: both; text-align: left;"><br /></div><div class="separator" style="clear: both; text-align: left;">The A segment is connected to all the displays. </div><div class="separator" style="clear: both; text-align: left;"><br /></div><div class="separator" style="clear: both; text-align: left;">A Common Cathode (5611AS) display and a Common Anode (5611BS) display are connected in parallel. Their common pin are tied together and become the 1/2 select line..</div><div class="separator" style="clear: both; text-align: left;"><br /></div><div class="separator" style="clear: both; text-align: left;">Unlike charliexplexing, this arrangement allows a whole digit to be illuminated at a time. To illuminate a seven (7) in the first digit, a,b,c are set to output and high, and 1/2 select is set to output and low. All other pins are set to input and low, to prevent the internal pull up resistor from weakly driving the pin high. To illuminate a one (1) in the second digit, b and c are set to output and low, and 1/2 select line is set to output and high. The circuit can be extended with as many select lines as available.</div><div class="separator" style="clear: both; text-align: left;"><br /></div><div class="separator" style="clear: both; text-align: left;"><a href="https://1.bp.blogspot.com/-syMVsyIMZu0/XzlFEQXcKRI/AAAAAAAAPaE/VmKfSXADPDMD-ki6v9mNAiPTOaQ4Wd6OACLcBGAsYHQ/s1442/Schematic.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="498" data-original-width="1442" src="https://1.bp.blogspot.com/-syMVsyIMZu0/XzlFEQXcKRI/AAAAAAAAPaE/VmKfSXADPDMD-ki6v9mNAiPTOaQ4Wd6OACLcBGAsYHQ/s640/Schematic.png" width="640" /></a></div><div class="separator" style="clear: both; text-align: left;"><br /></div><div class="separator" style="clear: both; text-align: left;">Here is a sample pin assignment for an Arduino Nano. The display segments (a..g) are connected to I.O pins. The decimal point (dp) can be connected, or turned into an additional select line </div><div class="separator" style="clear: both; text-align: left;"><br /></div><div class="separator" style="clear: both; text-align: left;">The D0/D1 pins should not be connected to avoid interfering with the built in Serial capabilities. </div><div class="separator" style="clear: both; text-align: left;"><br /></div><div class="separator" style="clear: both; text-align: left;">The D13 pin has an LED connected to it and cannot be floated by turning it to input and low, so it should be left unconnected unless the LED is removed by desoldering it.</div><div class="separator" style="clear: both; text-align: left;"><br /></div><div class="separator" style="clear: both; text-align: left;">The A0..A5 pins can be used as digital outputs, with the exception of A6/A7 which are analog input only pins and should be left unconnected.</div><div class="separator" style="clear: both; text-align: left;"><br /></div><div class="separator" style="clear: both; text-align: left;"><a href="https://1.bp.blogspot.com/-rn-5AmAI0g4/XzlHFglULoI/AAAAAAAAPac/JwpAq-4b650Lf4TUnlyFHofSdGOWPh1tQCLcBGAsYHQ/s522/Arduino%2BNano%2BPins.PNG" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="522" data-original-width="241" src="https://1.bp.blogspot.com/-rn-5AmAI0g4/XzlHFglULoI/AAAAAAAAPac/JwpAq-4b650Lf4TUnlyFHofSdGOWPh1tQCLcBGAsYHQ/s0/Arduino%2BNano%2BPins.PNG" /></a></div><div class="separator" style="clear: both; text-align: left;"><br /></div><div class="separator" style="clear: both; text-align: left;">With the above setup, 18 digits can be controlled. If the decimal point is turned to a select line, a stock Nano can display 20 digits. If the LED on D13 is removed, 22 digits can be controlled. </div><div class="separator" style="clear: both; text-align: left;"><br /></div><div class="separator" style="clear: both; text-align: left;">This board is bigger than the previous one, measuring 142 x 142mm. </div><div class="separator" style="clear: both; text-align: left;"><br /></div><div class="separator" style="clear: both; text-align: left;">There is only one place that consistently manufactures board this size: <a href="http://PCBWay.com" target="_blank">PCBWay.com</a> The boards look good, function as designed and do not have extraneous markings like manufacturing codes placed. Other fab houses have returned boards to us with job numbers in prominent places in the front layer, or noticeable silkscreen issues. </div><div class="separator" style="clear: both; text-align: left;"><br /></div><div class="separator" style="clear: both; text-align: left;">The Online Gerber Viewer was used to verify the accuracy of the files submitted:</div><div class="separator" style="clear: both; text-align: left;"><br /></div><div class="separator" style="clear: both; text-align: left;"><a href="https://www.pcbway.com/project/OnlineGerberViewer.html" target="_blank">https://www.pcbway.com/project/OnlineGerberViewer.html</a></div><div class="separator" style="clear: both; text-align: left;"><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-SISzQ_waRNI/XzlK_ObMt4I/AAAAAAAAPao/HkYOjWWLx8QVWSTzZF4NZ-TiCVD85BBkwCLcBGAsYHQ/s1543/PCBWay%2BGerber%2BViewer.PNG" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="684" data-original-width="1543" src="https://1.bp.blogspot.com/-SISzQ_waRNI/XzlK_ObMt4I/AAAAAAAAPao/HkYOjWWLx8QVWSTzZF4NZ-TiCVD85BBkwCLcBGAsYHQ/s640/PCBWay%2BGerber%2BViewer.PNG" width="640" /></a></div><div class="separator" style="clear: both; text-align: left;"><br /></div><div class="separator" style="clear: both; text-align: left;">Manufacturing took a couple of days, the progress of the board manufacturing could be tracked in the website: </div><div class="separator" style="clear: both; text-align: left;"><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-IbH1jswSSRM/XzlLFAkl4JI/AAAAAAAAPas/gUJRnrYiPccoRc1-luIowbc9AqMJ9_a3ACLcBGAsYHQ/s747/PCBWay%2BProgress%2BReport.PNG" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="719" data-original-width="747" src="https://1.bp.blogspot.com/-IbH1jswSSRM/XzlLFAkl4JI/AAAAAAAAPas/gUJRnrYiPccoRc1-luIowbc9AqMJ9_a3ACLcBGAsYHQ/s640/PCBWay%2BProgress%2BReport.PNG" width="640" /></a></div><div class="separator" style="clear: both; text-align: center;"><br /></div><div class="separator" style="clear: both; text-align: center;"><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-8TK-pDKhzq4/XzlLKDFDmdI/AAAAAAAAPaw/0dj8GKx3q9M9N-4vDWAr8-osG_R1Hq0igCLcBGAsYHQ/s595/PCBWay%2BProgress%2B100.PNG" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="580" data-original-width="595" src="https://1.bp.blogspot.com/-8TK-pDKhzq4/XzlLKDFDmdI/AAAAAAAAPaw/0dj8GKx3q9M9N-4vDWAr8-osG_R1Hq0igCLcBGAsYHQ/s0/PCBWay%2BProgress%2B100.PNG" /></a></div><div class="separator" style="clear: both; text-align: center;"><br /></div><div class="separator" style="clear: both; text-align: left;">DHL delivered this package in 4 working days. In total, it took a week from submitting files to receiving the boards in the mail.</div><div class="separator" style="clear: both; text-align: left;"><br /></div><div class="separator" style="clear: both; text-align: left;">The boards were safely packaged and they came with a free 6 year anniversary sticker and badge.</div><div class="separator" style="clear: both; text-align: left;"><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-KvWsh-WZnYE/XzlMYL5yHlI/AAAAAAAAPbE/Tz-bIH112gUmSk50EiJnag9J_qJdQdcAgCLcBGAsYHQ/s697/Package.jpg" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="697" data-original-width="640" height="640" src="https://1.bp.blogspot.com/-KvWsh-WZnYE/XzlMYL5yHlI/AAAAAAAAPbE/Tz-bIH112gUmSk50EiJnag9J_qJdQdcAgCLcBGAsYHQ/s640/Package.jpg" /></a></div><div class="separator" style="clear: both; text-align: center;"><br /></div><div class="separator" style="clear: both; text-align: left;">The badge was designed by @akirasan (instagram: <a href="https://www.instagram.com/akirasan21h_" target="_blank">https://www.instagram.com/akirasan21h_</a>) (twitter: <a href="https://twitter.com/akirasan" target="_blank">https://twitter.com/akirasan</a>)</div><div class="separator" style="clear: both; text-align: left;"><br /></div><div class="separator" style="clear: both; text-align: left;">The badge uses a 2032 battery (not included). A pin is included and is easily soldered into place. Once powered up, the onboard RGB leds light up and sweep through the color spectrum.</div><div class="separator" style="clear: both; text-align: left;"><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-HQUG5-U2z1w/XzlQGJH3-oI/AAAAAAAAPbY/LYBuSKebwnEjNrrHnI2VACiOBeC_Kuw6wCLcBGAsYHQ/s697/BadgeBack.jpg" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="697" data-original-width="640" height="640" src="https://1.bp.blogspot.com/-HQUG5-U2z1w/XzlQGJH3-oI/AAAAAAAAPbY/LYBuSKebwnEjNrrHnI2VACiOBeC_Kuw6wCLcBGAsYHQ/s640/BadgeBack.jpg" /></a></div><div class="separator" style="clear: both; text-align: left;"><br /></div><div class="separator" style="clear: both; text-align: left;"><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-3Q5sagjeOqc/XzlMdza3quI/AAAAAAAAPbI/FHoQP8cDebkmMXW07XBNG7P8fKuUrrW3ACLcBGAsYHQ/s697/Badge.jpg" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="697" data-original-width="640" height="640" src="https://1.bp.blogspot.com/-3Q5sagjeOqc/XzlMdza3quI/AAAAAAAAPbI/FHoQP8cDebkmMXW07XBNG7P8fKuUrrW3ACLcBGAsYHQ/s640/Badge.jpg" /></a></div><div class="separator" style="clear: both; text-align: left;"><br /></div><div class="separator" style="clear: both; text-align: left;">The next stage in this project is to consolidate multiple 16 display modules in the same PCB.</div><div class="separator" style="clear: both; text-align: left;"><br /></div><p></p>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-6508740933553308664.post-90551607583771247372020-08-09T11:58:00.003-07:002020-08-09T19:03:33.070-07:00Design of an Enigma Machine Rotor using PCB, pogo pins and 3D printed parts<div>Here are a set of PCB that are accurately wired like the rotors and reflectors of an Enigma Machine. This project was inspired by: <a href="https://hackaday.io/project/156935-enigma-machine">https://hackaday.io/project/156935-enigma-machine</a></div><div><br /></div><div>This project has a hackaday.io page: <a href="https://hackaday.io/project/174242-yet-another-enigma-rotor-using-a-pcb-and-pogo-pins">https://hackaday.io/project/174242-yet-another-enigma-rotor-using-a-pcb-and-pogo-pins</a></div><div><br /></div><div>Rotor dimensions from: <a href="http://enigma.hs-weingarten.de/drawings.php">http://enigma.hs-weingarten.de/drawings.php</a></div><div><br /></div><div>The gerbers are available at:</div><a href="https://oshpark.com/profiles/ArduinoEnigma/">https://oshpark.com/profiles/ArduinoEnigma/</a><div><br /><div>ETW: <a href="https://oshpark.com/shared_projects/dMMJPuiM">https://oshpark.com/shared_projects/dMMJPuiM</a></div><div><br /></div><div>Rotor1: <a href="https://oshpark.com/shared_projects/NqsFk5hz">https://oshpark.com/shared_projects/NqsFk5hz</a></div><div>Rotor2: <a href="https://oshpark.com/shared_projects/HGXvMlR7">https://oshpark.com/shared_projects/HGXvMlR7</a></div><div>Rotor3: <a href="https://oshpark.com/shared_projects/IRI0Dprv">https://oshpark.com/shared_projects/IRI0Dprv</a></div><div>Rotor4: <a href="https://oshpark.com/shared_projects/RgaVcGqp">https://oshpark.com/shared_projects/RgaVcGqp</a></div><div><br /></div><div>UKWB: <a href="https://oshpark.com/shared_projects/amMSbbJh">https://oshpark.com/shared_projects/amMSbbJh</a></div><div>UKWC: <a href="https://oshpark.com/shared_projects/8ZqqS0C1">https://oshpark.com/shared_projects/8ZqqS0C1</a></div><div><br /></div><div>Rotor Wiring: </div><div>(from <a href="http://people.physik.hu-berlin.de/~palloks/js/enigma/enigma-u_v25_en.html" target="_blank">http://people.physik.hu-berlin.de/~palloks/js/enigma/enigma-u_v25_en.html</a>)</div><div><br /></div><div>First line: RIGHT SIDE - Bottom Layer</div><div>Second line: LEFT SIDE - Top Layer</div><div><br /></div><div><div><span style="font-family: courier;">ETW<span style="white-space: pre;"> </span>ABCDEFGHIJKLMNOPQRSTUVWXYZ</span></div><div><span style="font-family: courier;"> ABCDEFGHIJKLMNOPQRSTUVWXYZ</span></div><div><span style="white-space: pre;"><span style="font-family: courier;"> </span></span></div><div><span style="font-family: courier;">I ABCDEFGHIJKLMNOPQRSTUVWXYZ</span></div><div><span style="font-family: courier;"> EKMFLGDQVZNTOWYHXUSPAIBRCJ</span></div><div><span style="white-space: pre;"><span style="font-family: courier;"> </span></span></div><div><span style="font-family: courier;">II ABCDEFGHIJKLMNOPQRSTUVWXYZ</span></div><div><span style="font-family: courier;"> AJDKSIRUXBLHWTMCQGZNPYFVOE</span></div><div><span style="white-space: pre;"><span style="font-family: courier;"> </span></span></div><div><span style="font-family: courier;">III ABCDEFGHIJKLMNOPQRSTUVWXYZ</span></div><div><span style="font-family: courier;"><span style="white-space: pre;"> </span>BDFHJLCPRTXVZNYEIWGAKMUSQO</span></div><div><span style="font-family: courier;"><br /></span></div><div><div><span style="font-family: courier;">IV<span style="white-space: pre;"> </span>ABCDEFGHIJKLMNOPQRSTUVWXYZ</span></div><div><span style="font-family: courier;"><span style="white-space: pre;"> </span>ESOVPZJAYQUIRHXLNFTGKDCMWB</span></div></div><div><span style="font-family: courier; white-space: pre;"> </span></div><div><span style="font-family: courier;">UKWB ABCDEFGHIJKLMNOPQRSTUVWXYZ</span></div><div><span style="font-family: courier;"> YRUHQSLDPXNGOKMIEBFZCWVJAT</span></div><div><span style="white-space: pre;"><span style="font-family: courier;"> </span></span></div><div><span style="font-family: courier;">UKWC<span style="white-space: pre;"> </span>ABCDEFGHIJKLMNOPQRSTUVWXYZ</span></div><div><span style="font-family: courier;"><span style="white-space: pre;"> </span>FVPJIAOYEDRZXWGCTKUQSBNMHL</span></div></div><div><br /></div><div><span style="font-family: inherit;">To use:</span></div><div><br /></div><div>The rotor PCB are bolted to a 3D printed part. The order, from left to right is:</div><div>PCB, 3D printed Part, Head of Pogo pin.</div><div><br /></div><div>The PCB markings are meant to be exposed and on the left side of the PCB when bolted to a 3D printed part. </div><div><br /></div><div>The ETW takes no pogo pins. The wires from the keyboard are soldered to either the exposed vias or the A1..Z1 contacts on the right side.</div><div><br /></div><div>The UKW will have its dark side on on the left. The contacts will be on the right and hidden when bolted to a 3D printed part.</div><div><br /></div><div>To make a machine, the minimum set of parts, from left to right are:</div><div>UKW(B or C), Rotor 3, Rotor 2, Rotor 1, ETW.</div><div><br /></div><div>The wires from the keyboard switches go to the ETW (stationary entry wheel), the signals then go through the three rotors, in and out of the UWK (stationary reflector), back through another parh through the three rotors, then out of the ETW to the lampfield.</div><div><br /></div><div>For a diagram, see <a href="https://www.cryptomuseum.com/crypto/enigma/working.htm" target="_blank">https://www.cryptomuseum.com/crypto/enigma/working.htm</a></div><div><br /></div><div class="separator" style="clear: both;"><a href="https://1.bp.blogspot.com/-qVH0BhMfbwA/XzBEvlg59DI/AAAAAAAAPRU/CPCvpySUsJgTJUqiiq4Iax9UvPl7VrlKQCLcBGAsYHQ/s1101/ETW-L.png" style="display: block; padding: 1em 0px;"><img border="0" data-original-height="1101" data-original-width="1101" height="640" src="https://1.bp.blogspot.com/-qVH0BhMfbwA/XzBEvlg59DI/AAAAAAAAPRU/CPCvpySUsJgTJUqiiq4Iax9UvPl7VrlKQCLcBGAsYHQ/s640/ETW-L.png" /></a><div class="separator" style="clear: both;"><a href="https://1.bp.blogspot.com/-802QuzbsQ1w/XzBE0EEQzpI/AAAAAAAAPRY/RMP14EGTeLgp1pjcqDDeF7dQzh-ywzazQCLcBGAsYHQ/s1101/ETW-R.png" style="display: block; padding: 1em 0px;"><img border="0" data-original-height="1101" data-original-width="1101" height="640" src="https://1.bp.blogspot.com/-802QuzbsQ1w/XzBE0EEQzpI/AAAAAAAAPRY/RMP14EGTeLgp1pjcqDDeF7dQzh-ywzazQCLcBGAsYHQ/s640/ETW-R.png" /></a><div class="separator" style="clear: both;"><a href="https://1.bp.blogspot.com/-w56C_b2ZS00/XzBE9uahzdI/AAAAAAAAPRc/6nXeAtqitDAt8C5bVod3daIziFU2HWLigCLcBGAsYHQ/s1101/UKWB-L.png" style="display: block; padding: 1em 0px;"><br /></a><a href="https://1.bp.blogspot.com/-w56C_b2ZS00/XzBE9uahzdI/AAAAAAAAPRc/6nXeAtqitDAt8C5bVod3daIziFU2HWLigCLcBGAsYHQ/s1101/UKWB-L.png" style="display: block; padding: 1em 0px;"><img border="0" data-original-height="1101" data-original-width="1101" height="640" src="https://1.bp.blogspot.com/-w56C_b2ZS00/XzBE9uahzdI/AAAAAAAAPRc/6nXeAtqitDAt8C5bVod3daIziFU2HWLigCLcBGAsYHQ/s640/UKWB-L.png" /></a><div class="separator" style="clear: both;"><a href="https://1.bp.blogspot.com/-VVCSIAgxFlo/XzBFBPJBGRI/AAAAAAAAPRk/X3SQUl9V9hEvQJLmR5lpbSdn214shaZdwCLcBGAsYHQ/s1101/UKWB-R.png" style="display: block; padding: 1em 0px;"><img border="0" data-original-height="1101" data-original-width="1101" height="640" src="https://1.bp.blogspot.com/-VVCSIAgxFlo/XzBFBPJBGRI/AAAAAAAAPRk/X3SQUl9V9hEvQJLmR5lpbSdn214shaZdwCLcBGAsYHQ/s640/UKWB-R.png" /></a></div><a href="https://1.bp.blogspot.com/-w56C_b2ZS00/XzBE9uahzdI/AAAAAAAAPRc/6nXeAtqitDAt8C5bVod3daIziFU2HWLigCLcBGAsYHQ/s1101/UKWB-L.png" style="display: block; padding: 1em 0px;"><br /></a><div class="separator" style="clear: both;"><a href="https://1.bp.blogspot.com/-tNqfBHiAWrM/XzBFErA8gTI/AAAAAAAAPRs/WM8rmhLSBBQNVJ32K2RXCHTM5tA8varEQCLcBGAsYHQ/s1101/UKWC-L.png" style="display: block; padding: 1em 0px;"><img border="0" data-original-height="1101" data-original-width="1101" height="640" src="https://1.bp.blogspot.com/-tNqfBHiAWrM/XzBFErA8gTI/AAAAAAAAPRs/WM8rmhLSBBQNVJ32K2RXCHTM5tA8varEQCLcBGAsYHQ/s640/UKWC-L.png" /></a></div><div class="separator" style="clear: both;"><a href="https://1.bp.blogspot.com/-5Se1yfKS9Zg/XzBFIgZE5ZI/AAAAAAAAPRw/PodGU6ji9lMo8pbUFU9YisjE4k_jBMDSwCLcBGAsYHQ/s1101/UKWC-R.png" style="display: block; padding: 1em 0px;"><img border="0" data-original-height="1101" data-original-width="1101" height="640" src="https://1.bp.blogspot.com/-5Se1yfKS9Zg/XzBFIgZE5ZI/AAAAAAAAPRw/PodGU6ji9lMo8pbUFU9YisjE4k_jBMDSwCLcBGAsYHQ/s640/UKWC-R.png" /></a></div><a href="https://1.bp.blogspot.com/-w56C_b2ZS00/XzBE9uahzdI/AAAAAAAAPRc/6nXeAtqitDAt8C5bVod3daIziFU2HWLigCLcBGAsYHQ/s1101/UKWB-L.png" style="display: block; padding: 1em 0px;"><br /></a><div class="separator" style="clear: both;"><a href="https://1.bp.blogspot.com/-LUjCiIhzlF4/XzBFORbuycI/AAAAAAAAPR4/tuKe-HnPFY8uQYKw8_6n3RR-iePyRVslQCLcBGAsYHQ/s1101/Rotor1-L.png" style="display: block; padding: 1em 0px;"><img border="0" data-original-height="1101" data-original-width="1101" height="640" src="https://1.bp.blogspot.com/-LUjCiIhzlF4/XzBFORbuycI/AAAAAAAAPR4/tuKe-HnPFY8uQYKw8_6n3RR-iePyRVslQCLcBGAsYHQ/s640/Rotor1-L.png" /></a></div><div class="separator" style="clear: both;"><a href="https://1.bp.blogspot.com/-Tqcjg06DK9I/XzBFVBg_XII/AAAAAAAAPSA/W7_hwLfXjJARWEiNqtcBhxpotFbYnpHuwCLcBGAsYHQ/s1101/Rotor1-R.png" style="display: block; padding: 1em 0px;"><img border="0" data-original-height="1101" data-original-width="1101" height="640" src="https://1.bp.blogspot.com/-Tqcjg06DK9I/XzBFVBg_XII/AAAAAAAAPSA/W7_hwLfXjJARWEiNqtcBhxpotFbYnpHuwCLcBGAsYHQ/s640/Rotor1-R.png" /></a><a href="https://1.bp.blogspot.com/-Tqcjg06DK9I/XzBFVBg_XII/AAAAAAAAPSA/W7_hwLfXjJARWEiNqtcBhxpotFbYnpHuwCLcBGAsYHQ/s1101/Rotor1-R.png" style="display: block; padding: 1em 0px;"><br /></a><div class="separator" style="clear: both;"><a href="https://1.bp.blogspot.com/-cEYH1avTT4s/XzBFc__CzkI/AAAAAAAAPSI/IyROXoatRCwkj3oRRPQebVHgW0ZKWsEvwCLcBGAsYHQ/s1101/Rotor2-L.png" style="display: block; padding: 1em 0px;"><img border="0" data-original-height="1101" data-original-width="1101" height="640" src="https://1.bp.blogspot.com/-cEYH1avTT4s/XzBFc__CzkI/AAAAAAAAPSI/IyROXoatRCwkj3oRRPQebVHgW0ZKWsEvwCLcBGAsYHQ/s640/Rotor2-L.png" /></a><div class="separator" style="clear: both;"><a href="https://1.bp.blogspot.com/-9HUV4aypDW4/XzBFmnKs2VI/AAAAAAAAPSQ/4rYMHHrRebUpNcgouwU5wQ3jw4v6mokwACLcBGAsYHQ/s1101/Rotor2-R.png" style="display: block; padding: 1em 0px;"><img border="0" data-original-height="1101" data-original-width="1101" height="640" src="https://1.bp.blogspot.com/-9HUV4aypDW4/XzBFmnKs2VI/AAAAAAAAPSQ/4rYMHHrRebUpNcgouwU5wQ3jw4v6mokwACLcBGAsYHQ/s640/Rotor2-R.png" /></a></div><a href="https://1.bp.blogspot.com/-cEYH1avTT4s/XzBFc__CzkI/AAAAAAAAPSI/IyROXoatRCwkj3oRRPQebVHgW0ZKWsEvwCLcBGAsYHQ/s1101/Rotor2-L.png" style="display: block; padding: 1em 0px;"><br /></a><div class="separator" style="clear: both;"><a href="https://1.bp.blogspot.com/-EiRm5NnT9S4/XzBFqWm5kXI/AAAAAAAAPSU/l4QCJBQZ1QEXW6VFIyEDA7NxnzjVEZBcwCLcBGAsYHQ/s1101/Rotor3-L.png" style="display: block; padding: 1em 0px;"><img border="0" data-original-height="1101" data-original-width="1101" height="640" src="https://1.bp.blogspot.com/-EiRm5NnT9S4/XzBFqWm5kXI/AAAAAAAAPSU/l4QCJBQZ1QEXW6VFIyEDA7NxnzjVEZBcwCLcBGAsYHQ/s640/Rotor3-L.png" /></a></div><div class="separator" style="clear: both;"><a href="https://1.bp.blogspot.com/-xAr3qFSn7mg/XzBFvK2FstI/AAAAAAAAPSY/thSTO4yrsDYNb8A9Uzdl-3D9kDDNR4ldwCLcBGAsYHQ/s1101/Rotor3-R.png" style="display: block; padding: 1em 0px;"><img border="0" data-original-height="1101" data-original-width="1101" height="640" src="https://1.bp.blogspot.com/-xAr3qFSn7mg/XzBFvK2FstI/AAAAAAAAPSY/thSTO4yrsDYNb8A9Uzdl-3D9kDDNR4ldwCLcBGAsYHQ/s640/Rotor3-R.png" /></a></div><a href="https://1.bp.blogspot.com/-cEYH1avTT4s/XzBFc__CzkI/AAAAAAAAPSI/IyROXoatRCwkj3oRRPQebVHgW0ZKWsEvwCLcBGAsYHQ/s1101/Rotor2-L.png" style="display: block; padding: 1em 0px;"><br /></a><div class="separator" style="clear: both;"><a href="https://1.bp.blogspot.com/-ILW1p6iSaYc/XzBFzQ3zQjI/AAAAAAAAPSc/KEp4PCd-YS8WbvdKrncshn45_AMpqJ_4wCLcBGAsYHQ/s1101/Rotor4-L.png" style="display: block; padding: 1em 0px;"><img border="0" data-original-height="1101" data-original-width="1101" height="640" src="https://1.bp.blogspot.com/-ILW1p6iSaYc/XzBFzQ3zQjI/AAAAAAAAPSc/KEp4PCd-YS8WbvdKrncshn45_AMpqJ_4wCLcBGAsYHQ/s640/Rotor4-L.png" /></a></div></div><div class="separator" style="clear: both;"><a href="https://1.bp.blogspot.com/-P24_DWUgpQ8/XzBF5cwODFI/AAAAAAAAPSk/Ci4fPprWKx4JZxnPHVdQ4Hbv-gfs7hm2wCLcBGAsYHQ/s1101/Rotor4-R.png" style="display: block; padding: 1em 0px;"><img border="0" data-original-height="1101" data-original-width="1101" height="640" src="https://1.bp.blogspot.com/-P24_DWUgpQ8/XzBF5cwODFI/AAAAAAAAPSk/Ci4fPprWKx4JZxnPHVdQ4Hbv-gfs7hm2wCLcBGAsYHQ/s640/Rotor4-R.png" /></a></div><a href="https://1.bp.blogspot.com/-Tqcjg06DK9I/XzBFVBg_XII/AAAAAAAAPSA/W7_hwLfXjJARWEiNqtcBhxpotFbYnpHuwCLcBGAsYHQ/s1101/Rotor1-R.png" style="display: block; padding: 1em 0px;"><br /></a></div><div class="separator" style="clear: both;"><a href="https://1.bp.blogspot.com/-r52Ng4yrihw/XzBGBZLJZ9I/AAAAAAAAPSs/nFs7Sv9XUp8SdLe94NGH7xrOw6-xTZt8wCLcBGAsYHQ/s2048/20200809_130932.jpg" style="display: block; padding: 1em 0px;"><img border="0" data-original-height="1152" data-original-width="2048" src="https://1.bp.blogspot.com/-r52Ng4yrihw/XzBGBZLJZ9I/AAAAAAAAPSs/nFs7Sv9XUp8SdLe94NGH7xrOw6-xTZt8wCLcBGAsYHQ/s640/20200809_130932.jpg" width="640" /></a></div><a href="https://1.bp.blogspot.com/-w56C_b2ZS00/XzBE9uahzdI/AAAAAAAAPRc/6nXeAtqitDAt8C5bVod3daIziFU2HWLigCLcBGAsYHQ/s1101/UKWB-L.png" style="display: block; padding: 1em 0px;"><br /></a><div class="separator" style="clear: both;"><a href="https://1.bp.blogspot.com/-jMFcRhqYCPg/XzBGGUI_9qI/AAAAAAAAPS0/hzHEDnlGc9sTuW4a4-mPYLW6Mq-vbRzJwCLcBGAsYHQ/s2048/20200809_131007.jpg" style="display: block; padding: 1em 0px;"><img border="0" data-original-height="1152" data-original-width="2048" src="https://1.bp.blogspot.com/-jMFcRhqYCPg/XzBGGUI_9qI/AAAAAAAAPS0/hzHEDnlGc9sTuW4a4-mPYLW6Mq-vbRzJwCLcBGAsYHQ/s640/20200809_131007.jpg" width="640" /></a></div><a href="https://1.bp.blogspot.com/-w56C_b2ZS00/XzBE9uahzdI/AAAAAAAAPRc/6nXeAtqitDAt8C5bVod3daIziFU2HWLigCLcBGAsYHQ/s1101/UKWB-L.png" style="display: block; padding: 1em 0px;"><br /></a></div><a href="https://1.bp.blogspot.com/-802QuzbsQ1w/XzBE0EEQzpI/AAAAAAAAPRY/RMP14EGTeLgp1pjcqDDeF7dQzh-ywzazQCLcBGAsYHQ/s1101/ETW-R.png" style="display: block; padding: 1em 0px;"><br /></a></div><a href="https://1.bp.blogspot.com/-qVH0BhMfbwA/XzBEvlg59DI/AAAAAAAAPRU/CPCvpySUsJgTJUqiiq4Iax9UvPl7VrlKQCLcBGAsYHQ/s1101/ETW-L.png" style="display: block; padding: 1em 0px;"><br /></a></div><div><br /></div></div>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-6508740933553308664.post-21609601174598877562020-06-28T16:33:00.021-07:002020-07-01T23:12:04.231-07:00Lessons learned from the last few projects<div>It is said that a picture is worth a 1000 words. This post condenses two years of learning into some instagram posts. </div><div><br /></div><div>Quoting another maker: "Just look, maintaining internal silence, until the meaning of my work becomes clear".</div><div><br /></div><div>Here is a sample of my abilities before embarking on the projects on this page. This board was autorouted by Fritzing.</div><div><a href="https://www.instagram.com/p/Bfzq9VDH3-I/" target="_blank">https://www.instagram.com/p/Bfzq9VDH3-I/</a></div><div><a href="https://www.instagram.com/p/BRt6_bBhZ64/" target="_blank">https://www.instagram.com/p/BRt6_bBhZ64/</a><br /><div><b><br /></b></div><div><b>Enigma Uno</b></div><div><br /></div><div>Keep part count low. Every added part adds complexity to a kit.</div><div><br /></div><div>How to design laser cut enclosure with finger joints using Sketchup and Inkscape</div><div><div><a href="https://www.instagram.com/p/BRRaD2aDp0Z/" target="_blank">https://www.instagram.com/p/BRRaD2aDp0Z/</a></div><div><a href="https://www.instagram.com/p/BRReGhKjcJ1/" target="_blank">https://www.instagram.com/p/BRReGhKjcJ1/</a></div></div><div><br /></div><div><a href="https://www.instagram.com/p/BcoGi_tHAJ3/" target="_blank">https://www.instagram.com/p/BcoGi_tHAJ3/</a></div><div><a href="https://www.instagram.com/p/Bam7SDYn9JA/" target="_blank">https://www.instagram.com/p/Bam7SDYn9JA/</a></div><div><br /></div><div>Pay attention to how the grain runs on the wood. In Ponoko, it runs from left to right. All the vertical pieces tend to crack when a nail is driven into them.</div><div><a href="https://www.instagram.com/p/BLm08d2hjOV/" target="_blank">https://www.instagram.com/p/BLm08d2hjOV/</a></div><div><br /></div><div><b>External Lamp Field</b></div><div><br /></div><div>How to use charlieplexing to illuminate a large number of LED <n> output lines control n*(n-1) LED</div><div><div><br /></div><div>Route PCB using horizontal lines in the front and vertical lines in the back</div></div><div><div><div><a href="https://www.instagram.com/p/BWvxGH6FxDG/" target="_blank">https://www.instagram.com/p/BWvxGH6FxDG/</a></div><div><a href="https://www.instagram.com/p/BXHfMdfhCWr/" target="_blank">https://www.instagram.com/p/BXHfMdfhCWr/</a></div></div></div><div><br /></div><div><a href="https://www.instagram.com/p/BxWVjY3ntmM/" target="_blank">https://www.instagram.com/p/BxWVjY3ntmM/</a></div><div><a href="https://www.instagram.com/p/BxRaALLhpC1/" target="_blank">https://www.instagram.com/p/BxRaALLhpC1/</a></div><div><br /></div><div><a href="https://www.instagram.com/p/BwycptABlJG/" target="_blank">https://www.instagram.com/p/BwycptABlJG/</a></div><div><br /></div><div>Do not solder/work when tired:</div><div><a href="https://www.instagram.com/p/BcyRhaqHqHk/" target="_blank">https://www.instagram.com/p/BcyRhaqHqHk/</a></div><div><b><br /></b></div><div><b>Sinclair Scientific Calculator:</b></div><div><br /></div><div>Pins A6 and A7 in the Arduino Nano are analog input only. They can be used to read buttons provided a pull-up or pull-down resistor is used.</div><div><a href="https://www.instagram.com/p/Bdlqbo-n48G/" target="_blank">https://www.instagram.com/p/Bdlqbo-n48G/</a></div><div><a href="https://www.instagram.com/p/Bd6ygN4nJ5-/" target="_blank">https://www.instagram.com/p/Bd6ygN4nJ5-/</a></div><div><a href="https://www.instagram.com/p/Bg-Wg1FnGwC/" target="_blank">https://www.instagram.com/p/Bg-Wg1FnGwC/</a></div><div><br /></div><div>Route tracks on seven segment display modules by laying down horizontal tracks under the displays and vertical lines in the back to connect the same pins on each LED module together.</div><div><a href="https://www.instagram.com/p/Bc9rP__HvXN/" target="_blank">https://www.instagram.com/p/Bc9rP__HvXN/</a></div><div><br /></div><div>Sometimes it is necessary to eliminate the current limiting resistor in order to obtain decent brightness out of LED modules (older style bubble LED displays).</div><div><a href="https://www.instagram.com/p/Bh2_0EcA4YS/" target="_blank">https://www.instagram.com/p/Bh2_0EcA4YS/</a></div><div><a href="https://www.instagram.com/p/Bjv-XJYnWEN/" target="_blank">https://www.instagram.com/p/Bjv-XJYnWEN/</a></div><div><br /></div><div>When unsure how something will fit, order a small board and try different spacings. You do not need to provide holes for all the pins. Be considerate of Oshpark and size your board so they don't lose money on shipping:</div><div><a href="https://www.instagram.com/p/BgHGx9MgSnu/" target="_blank">https://www.instagram.com/p/BgHGx9MgSnu/</a></div><div><a href="https://www.instagram.com/p/B9DKqQBnHab/" target="_blank">https://www.instagram.com/p/B9DKqQBnHab/</a></div><div><a href="https://www.instagram.com/p/B9iALTjH7HW/" target="_blank">https://www.instagram.com/p/B9iALTjH7HW/</a></div><div><br /></div><div>How to design LED and Keyboard multiplexing circuits in order to drive and read the largest possible number of displays and buttons. What happens when multiple keys are pushed at the same time.</div><div><a href="https://hackaday.io/project/91895-sinclair-scientific-calculator-emulator/log/144393-reverse-engineering-the-keyboard-and-display-circuit-on-a-real-sinclair-scientific" target="_blank">https://hackaday.io/project/91895-sinclair-scientific-calculator-emulator/log/144393-reverse-engineering-the-keyboard-and-display-circuit-on-a-real-sinclair-scientific</a></div><div><br /></div><div>If this is the first time you are doing something, breadboard it</div><div><a href="https://www.instagram.com/p/BlQKZjgAQrW/" target="_blank">https://www.instagram.com/p/BlQKZjgAQrW/</a></div><div><br /></div><div>Don't forget the mounting holes, make sure the PCB has four holes in the corners. Holes are free.</div><div><a href="https://www.instagram.com/p/Bxv6KrJH62t/" target="_blank">https://www.instagram.com/p/Bxv6KrJH62t/</a></div><div><a href="https://www.instagram.com/p/B0ZVwu9HyEs/" target="_blank">https://www.instagram.com/p/B0ZVwu9HyEs/</a></div><div><a href="https://www.instagram.com/p/BwycptABlJG/" target="_blank">https://www.instagram.com/p/BwycptABlJG/</a></div><div><a href="https://www.instagram.com/p/BvW3yEtnfCm/" target="_blank">https://www.instagram.com/p/BvW3yEtnfCm/</a></div><div><a href="https://www.instagram.com/p/Bu1SEPMHFfa/" target="_blank">https://www.instagram.com/p/Bu1SEPMHFfa/</a></div><div><br /></div><div>Don't forget any extra holes for things like lid hinges. Again, holes are free.</div><div><a href="https://www.instagram.com/p/B-GuBdIDiTE/" target="_blank">https://www.instagram.com/p/B-GuBdIDiTE/</a></div><div><br /></div><div>A PCB does not have to be square. It can have gently rounded corners or other shapes. The inner sharp corners shown here are impossible as the board fab house will cut the outline of the board with a rotating bit, they will come out webbed. </div><div><a href="https://www.instagram.com/p/Bgkg0xtgByL/" target="_blank">https://www.instagram.com/p/Bgkg0xtgByL/</a></div><div><a href="https://hackaday.io/project/91895-sinclair-scientific-calculator-emulator/log/144392-how-to-design-a-custom-pcb-shape-for-fritzing-no-more-sharp-corners" target="_blank">https://hackaday.io/project/91895-sinclair-scientific-calculator-emulator/log/144392-how-to-design-a-custom-pcb-shape-for-fritzing-no-more-sharp-corners</a></div><div><br /></div><div>Tent those vias</div><div><a href="https://www.instagram.com/p/BdVT0JwnQCO/" target="_blank">https://www.instagram.com/p/BdVT0JwnQCO/</a></div><div><a href="https://www.instagram.com/p/BmPe8wlgwe7/" target="_blank">https://www.instagram.com/p/BmPe8wlgwe7/</a></div><div><br /></div><div>The Arduino VIN pin takes anywhere from 3.9V to 12V. Operation from 4 AAA to a 9V battery is possible. A power switch can be used to select between two power sources. They do not need to be the same voltage, as long as only one is connected at a time.</div><div><a href="https://www.instagram.com/p/BeCcECHHwvd/" target="_blank">https://www.instagram.com/p/BeCcECHHwvd/</a></div><div><br /></div><div>Measure battery endurance to find out how long will a device run on batteries., either use a light sensitive CdS cell and an external arduino to record changes in resistance or save a value evey minute to EEPROM</div><div><a href="https://www.instagram.com/p/Bho8egqgcUQ/" target="_blank">https://www.instagram.com/p/Bho8egqgcUQ/</a></div><div><a href="https://www.instagram.com/p/B5027hMHZ0R/" target="_blank">https://www.instagram.com/p/B5027hMHZ0R/</a></div><div><a href="https://www.instagram.com/p/B56YwRPHlMB/" target="_blank">https://www.instagram.com/p/B56YwRPHlMB/</a></div><div><a href="https://arduinoenigma.blogspot.com/2020/01/measuring-battery-run-time-by-writing.html" target="_blank">https://arduinoenigma.blogspot.com/2020/01/measuring-battery-run-time-by-writing.html</a></div><div><br /></div><div>Test displays before soldering. Assemble one device and keep the displays unsoldered or make a dedicated device with a Zero Insertion Force (ZIF) socket.</div><div><a href="https://www.instagram.com/p/BiI50BMg2He/" target="_blank">https://www.instagram.com/p/BiI50BMg2He/</a></div><div><a href="https://www.instagram.com/p/B0duThRH9mU/" target="_blank">https://www.instagram.com/p/B0duThRH9mU/</a></div><div><a href="https://www.instagram.com/p/B0cFDwenVZC/" target="_blank">https://www.instagram.com/p/B0cFDwenVZC/</a></div><div><a href="https://www.instagram.com/p/B0zM_5OnTbW/" target="_blank">https://www.instagram.com/p/B0zM_5OnTbW/</a></div><div><a href="https://www.instagram.com/p/BkwRT3KHt58/" target="_blank">https://www.instagram.com/p/BkwRT3KHt58/</a></div><div><br /></div><div>Put years / version numbers on the PCB. Text is free.</div><div><a href="https://www.instagram.com/p/BkouPNtgAnN/" target="_blank">https://www.instagram.com/p/BkouPNtgAnN/</a></div><div><a href="https://www.instagram.com/p/B7pDHX4HAM3/" target="_blank">https://www.instagram.com/p/B7pDHX4HAM3/</a></div><div><a href="https://www.instagram.com/p/B-F7asXjwRK/" target="_blank">https://www.instagram.com/p/B-F7asXjwRK/</a></div><div><br /></div><div>LED Dimming using PWM</div><div><a href="https://www.instagram.com/p/BkGui5RnniE/" target="_blank">https://www.instagram.com/p/BkGui5RnniE/</a></div><div><a href="https://gitlab.com/arduinoenigma/ArduinoNanoSinclairScientificCalculator/-/blob/7c7aee160d492a0aac0b0155107ff0b5327215ac/SinclairScientific7/DisplayTestFunctions.ino#L196" target="_blank">https://gitlab.com/arduinoenigma/ArduinoNanoSinclairScientificCalculator/-/blob/7c7aee160d492a0aac0b0155107ff0b5327215ac/SinclairScientific7/DisplayTestFunctions.ino#L196</a></div><div><br /></div><div>Use solder with water soluble flux, makes cleaning things easier</div><div><a href="https://www.instagram.com/p/BjQzvYqAXXl/" target="_blank">https://www.instagram.com/p/BjQzvYqAXXl/</a></div><div><br /></div><div>7 Segment Digits can be vertically scrolled. The bit representation of the digits can be rearranged so a shift left or shift right will move the bits from the previous to the new segment.</div><div><a href="https://www.instagram.com/p/BrCN278lSX5/ " target="_blank">https://www.instagram.com/p/BrCN278lSX5/ </a></div><div><a href="https://www.instagram.com/p/BsCmknuH-fi/" target="_blank">https://www.instagram.com/p/BsCmknuH-fi/</a></div><div><a href="https://gitlab.com/arduinoenigma/ArduinoNanoSinclairScientificCalculator/-/blob/4caac7760f187c67bd15a22df4eedd7b2a7a4faa/Happy2019/Happy2019.ino" target="_blank">https://gitlab.com/arduinoenigma/ArduinoNanoSinclairScientificCalculator/-/blob/4caac7760f187c67bd15a22df4eedd7b2a7a4faa/Happy2019/Happy2019.ino</a></div><div><b><br /></b></div><div><b>MegaEnigma/PicoEnigma:</b></div><div><br /></div><div>14 Segment Displays can be vertically scrolled:</div><div><div><a href="https://www.instagram.com/p/B14NMwigSWK/" target="_blank">https://www.instagram.com/p/B14NMwigSWK/</a></div><div><br /></div><div>Use the F("") statement to store data tables in program ROM.</div></div><div><a href="https://www.instagram.com/p/B0_kbkBHPU9/" target="_blank">https://www.instagram.com/p/B0_kbkBHPU9/</a></div><div><a href="https://gitlab.com/arduinoenigma/uhrswitch/-/blob/432ff48a1d409b8a9d3d901af331101f3c24cee7/UHRSwitchLogic.ino#L507" target="_blank">https://gitlab.com/arduinoenigma/uhrswitch/-/blob/432ff48a1d409b8a9d3d901af331101f3c24cee7/UHRSwitchLogic.ino#L507</a></div><div><br /></div><div>Pin D13 is connected to an external LED that can bias the pin. Avoid connecting this pin as an input. Either remove the LED or always set the pin as output and write high or low to force it to a known value.</div><div><a href="https://www.instagram.com/p/Byx4Xpkn4Ri/" target="_blank">https://www.instagram.com/p/Byx4Xpkn4Ri/</a></div><div><br /></div><div>Print a PCB design to paper and make sure components fit:</div><div><a href="https://www.instagram.com/p/Bx0my0bndSJ/" target="_blank">https://www.instagram.com/p/Bx0my0bndSJ/</a></div><div><a href="https://www.instagram.com/p/Bz4AMvxnFwg/" target="_blank">https://www.instagram.com/p/Bz4AMvxnFwg/</a></div><div><a href="https://www.instagram.com/p/B80XX7tlmI0/" target="_blank">https://www.instagram.com/p/B80XX7tlmI0/</a></div><div><a href="https://www.instagram.com/p/B80XrBTFLX0/" target="_blank">https://www.instagram.com/p/B80XrBTFLX0/</a></div><div><a href="https://www.instagram.com/p/B9e-t_wnMrI/" target="_blank">https://www.instagram.com/p/B9e-t_wnMrI/</a></div><div><br /></div><div>Don't trust Fritzing</div><div><a href="https://www.instagram.com/p/B4N7-RHn6E3/" target="_blank">https://www.instagram.com/p/B4N7-RHn6E3/</a></div><div><a href="https://www.instagram.com/p/Bk_MNa3AnR2/" target="_blank">https://www.instagram.com/p/Bk_MNa3AnR2/</a></div><div><br /></div><div>Do not AliExpress when tired, you may buy a bag of unneeded components </div><div><a href="https://www.instagram.com/p/B681exHn8WR/" target="_blank">https://www.instagram.com/p/B681exHn8WR/</a></div><div><br /></div><div>Sometimes soldering is the right solution, sometimes gluing is the right solution</div><div><a href="https://www.instagram.com/p/B7pDHX4HAM3/" target="_blank">https://www.instagram.com/p/B7pDHX4HAM3/</a></div><div><br /></div><div>Use the internal pull up resistor in order to connect the end of one or more push buttons to a pin, the other end to ground. Set the pin as input and write high to it. Reads 1 if nothing is pushed, 0 if pushed.</div><div><br /></div><div>Use a fast pin library to read I/O. May need to write a wrapper function with a select statement to translate the pin number to the named variable used to access the pin.</div><div><a href="https://gitlab.com/arduinoenigma/ArduinoNanoSinclairScientificCalculator/-/blob/master/Happy2019/Happy2019.ino#L138" target="_blank">https://gitlab.com/arduinoenigma/ArduinoNanoSinclairScientificCalculator/-/blob/master/Happy2019/Happy2019.ino#L138</a></div><div><br /></div><div>Twist ties can be used to keep a top hinged lid in place, just make sure the PCB has a hole to secure it. Holes are free.</div><div><a href="https://www.instagram.com/p/CAA-3OCjaUB/" target="_blank">https://www.instagram.com/p/CAA-3OCjaUB/</a></div><div><a href="https://www.instagram.com/p/CAJGl2VD2_k/" target="_blank">https://www.instagram.com/p/CAJGl2VD2_k/</a></div><div><a href="https://www.instagram.com/p/CBGGrFDjb25/" target="_blank">https://www.instagram.com/p/CBGGrFDjb25/</a></div><div> </div><div>If your project has only LEDs and push buttons, there is no need for any extra external components. With careful coding they can be connected directly to an Arduino.</div><div><br /></div><div>Use state machines as much as possible. Need to read many keys, that's one state machine. Need to drive many leds, that's another state machine. Need to do some time consuming processing and want to keep the keyboard and leds refreshed, split the time consuming task into simpler tasks using a state machine.</div><div><a href="https://gitlab.com/arduinoenigma/picoenigma/-/blob/b955c0af8ffe2b81ccf0b3d850bea9faf4b277fa/DisplayAndKeys.ino#L615" target="_blank">https://gitlab.com/arduinoenigma/picoenigma/-/blob/b955c0af8ffe2b81ccf0b3d850bea9faf4b277fa/DisplayAndKeys.ino#L615</a></div><div><a href="https://gitlab.com/arduinoenigma/picoenigma/-/blob/b955c0af8ffe2b81ccf0b3d850bea9faf4b277fa/DisplayAndKeys.ino#L904" target="_blank">https://gitlab.com/arduinoenigma/picoenigma/-/blob/b955c0af8ffe2b81ccf0b3d850bea9faf4b277fa/DisplayAndKeys.ino#L904</a></div><div><a href="https://gitlab.com/arduinoenigma/picoenigma/-/blob/7a2140e4fca56735814ca140a45bd278bba5edf8/Plugboard.ino#L32" target="_blank">https://gitlab.com/arduinoenigma/picoenigma/-/blob/7a2140e4fca56735814ca140a45bd278bba5edf8/Plugboard.ino#L32</a></div><div><a href="https://gitlab.com/arduinoenigma/picoenigma/-/blob/33ebd6acec461e7c2523008a998801c804f5c206/%20UniversalEnigma.ino#L2418" target="_blank">https://gitlab.com/arduinoenigma/picoenigma/-/blob/33ebd6acec461e7c2523008a998801c804f5c206/%20UniversalEnigma.ino#L2418</a></div><div><a href="https://gitlab.com/arduinoenigma/picoenigma/-/blob/bc48d462f8a1611108a149020c141f0f4f34eed8/picoenigma.ino#L94" target="_blank">https://gitlab.com/arduinoenigma/picoenigma/-/blob/bc48d462f8a1611108a149020c141f0f4f34eed8/picoenigma.ino#L94</a></div><div><br /></div><div>Route a PCB using the horizontal in front/vertical in back rule, then use vias placed under the components to minimize the amount of copper in the front layer. </div><div><a href="https://www.instagram.com/p/B-F7ymVD11P/" target="_blank">https://www.instagram.com/p/B-F7ymVD11P/</a></div><div><a href="https://www.instagram.com/p/B-F7asXjwRK/" target="_blank">https://www.instagram.com/p/B-F7asXjwRK/</a></div><div><br /></div><div>A daughter board can be used to hide the Arduino and the power connections on your project. It is cheaper to have 2 boards smaller than 100x100mm than one large board.</div><div><a href="https://www.instagram.com/p/B-L80ZWDHLL/" target="_blank">https://www.instagram.com/p/B-L80ZWDHLL/</a></div><div><br /></div><div>The new oshpark afterdark service can be used to embed some color on your boards. Try adding some logos or text to the copper layer.</div><div><a href="https://www.instagram.com/p/B-F8KWND3ao/" target="_blank">https://www.instagram.com/p/B-F8KWND3ao/</a></div><div><a href="https://www.instagram.com/p/B84dClcHB9u/" target="_blank">https://www.instagram.com/p/B84dClcHB9u/</a></div><div><a href="https://www.instagram.com/p/B-77NLdDNJB/" target="_blank">https://www.instagram.com/p/B-77NLdDNJB/</a></div><div><br /></div><div>Double check everything, why do we have a small logo on a side panel. Where are the hinge pockets</div><div><a href="https://www.instagram.com/p/B-U2BCEjHPu/" target="_blank">https://www.instagram.com/p/B-U2BCEjHPu/</a></div><div><br /></div><div>Double check your connections:</div><div><a href="https://www.instagram.com/p/B9KU8YinMUz/" target="_blank">https://www.instagram.com/p/B9KU8YinMUz/</a></div><div><a href="https://www.instagram.com/p/B8-ZIvPn0aV/" target="_blank">https://www.instagram.com/p/B8-ZIvPn0aV/</a></div><div><br /></div><div>Try to put a standard Arduino power jack on your pcb</div><div><a href="https://www.instagram.com/p/BwycptABlJG/" target="_blank">https://www.instagram.com/p/BwycptABlJG/</a></div><div><a href="https://www.instagram.com/p/B6Hfx4FnFhe/" target="_blank">https://www.instagram.com/p/B6Hfx4FnFhe/</a></div><div><a href="https://www.instagram.com/p/B4_ITQanXBT/" target="_blank">https://www.instagram.com/p/B4_ITQanXBT/</a></div><div><a href="https://www.instagram.com/p/B0uKUBznz1I/" target="_blank">https://www.instagram.com/p/B0uKUBznz1I/</a></div><div><br /></div><div>Try to put a battery compartment on your enclosures:</div><div><a href="https://www.instagram.com/p/B_il0FgDiMS/" target="_blank">https://www.instagram.com/p/B_il0FgDiMS/</a></div><div><a href="https://www.instagram.com/p/B_imMHYDlNa/" target="_blank">https://www.instagram.com/p/B_imMHYDlNa/</a></div><div><a href="https://www.instagram.com/p/B7ypr05H2ya/" target="_blank">https://www.instagram.com/p/B7ypr05H2ya/</a></div><div><a href="https://arduinoenigma.blogspot.com/2020/01/how-to-put-battery-compartment-inside.html" target="_blank">https://arduinoenigma.blogspot.com/2020/01/how-to-put-battery-compartment-inside.html</a></div><div><br /></div><div>A 2 way switch can be used to select between an internal battery compartment and the power jack</div><div><a href="https://www.instagram.com/p/B58JKkVHPtV/" target="_blank">https://www.instagram.com/p/B58JKkVHPtV/</a></div><div><a href="https://www.instagram.com/p/B6Hfx4FnFhe/" target="_blank">https://www.instagram.com/p/B6Hfx4FnFhe/</a></div><div><a href="https://www.instagram.com/p/B_i2CuKjNca/" target="_blank">https://www.instagram.com/p/B_i2CuKjNca/</a></div><div><br /></div></div>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-6508740933553308664.post-84282829011954527392020-06-27T11:07:00.004-07:002020-06-28T16:45:24.717-07:00Pico Enigma and Mega Enigma Simulator Test Strings<div>Test strings to verify the correctness of <a href="https://arduinoenigma.blogspot.com/p/picoenigma.html">PicoEnigma</a> and <a href="https://arduinoenigma.blogspot.com/p/mega-enigma-machine-simulator.html">MegaEnigma</a> encryption:</div><div><br /></div><div>To use the following string, press the menu button and change the machine to one of the models listed below, then paste the string into the Arduino Serial Port Monitor. The !AAA at the beginning changes the wheels to a know position before the lowercase characters are decoded. All of the test strings will result in AAAA when pasted to the correct machine. </div><div><br /></div><div><table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse; width: 577px;">
<colgroup><col style="mso-width-alt: 1962; mso-width-source: userset; width: 45pt;" width="60"></col>
<col style="mso-width-alt: 16839; mso-width-source: userset; width: 387pt;" width="517"></col>
</colgroup><tbody><tr height="20" style="height: 15.05pt;">
<td height="20" style="height: 15.05pt; width: 45pt;" width="60">Machine</td>
<td style="width: 387pt;" width="517">Test String</td>
</tr>
<tr height="20" style="height: 15.05pt;">
<td height="20" style="height: 15.05pt;">I A</td>
<td>!AAA sqcxf kbqcs rhjmm xtbuf zdmfc piinr dzwcs vutrv rbzus wgfcn cinio</td>
</tr>
<tr height="20" style="height: 15.05pt;">
<td height="20" style="height: 15.05pt;">I B</td>
<td>!AAA ftzmg isxip jwgdn jjcoq tyrig dmxfi esrwz gtoiu iekkd cshtp
yoepv </td>
</tr>
<tr height="20" style="height: 15.05pt;">
<td height="20" style="height: 15.05pt;">I C</td>
<td>!AAA twtvp tyixf fppyw svuso lidxh bbdok ztlzn fdube olqxf lhkhw
vypem </td>
</tr>
<tr height="20" style="height: 15.05pt;">
<td height="20" style="height: 15.05pt;">M3 B</td>
<td>!AAA ftzmg isxip jwgdn jjcoq tyrig dmxfi esrwz gtoiu iekkd cshtp
yoepv </td>
</tr>
<tr height="20" style="height: 15.05pt;">
<td height="20" style="height: 15.05pt;">M3 C</td>
<td>!AAA twtvp tyixf fppyw svuso lidxh bbdok ztlzn fdube olqxf lhkhw
vypem </td>
</tr>
<tr height="20" style="height: 15.05pt;">
<td height="20" style="height: 15.05pt;">M3 D</td>
<td>!AAA jgtzx leioy lpwbe hfspo xlbrz zcbgo zfxvf hqjkj fkhmq ndvhr
qzczi </td>
</tr>
<tr height="20" style="height: 15.05pt;">
<td height="20" style="height: 15.05pt;">M3 D1</td>
<td>!AAA uipgp ofxtk mkeve tnbwq ohxgu keqoj bzvuc qqufm yfdgj udiuc
kfzwq </td>
</tr>
<tr height="20" style="height: 15.05pt;">
<td height="20" style="height: 15.05pt;">M3 D2</td>
<td>!AAA mnkhg vrjgm qrixe nolyc nxvow hdcfx ruqnb zqodc ixppd pdcwb
oethu </td>
</tr>
<tr height="20" style="height: 15.05pt;">
<td height="20" style="height: 15.05pt;">M3 D3</td>
<td>!AAA cfomw uxwfg cukke jyzom puzur rosde wsdmt kqqyo jznyi bdrxm
ytbpr </td>
</tr>
<tr height="20" style="height: 15.05pt;">
<td height="20" style="height: 15.05pt;">M4 B</td>
<td>!AAAA ftzm gisx ipjw gdnj jcoq tyri gdmx fies rwzg toiu iekk dcsh
tpyo </td>
</tr>
<tr height="20" style="height: 15.05pt;">
<td height="20" style="height: 15.05pt;">M4 C</td>
<td>!AAAA twtv ptyi xffp pyws vuso lidx hbbd okzt lznf dube olqx flhk
hwvy </td>
</tr>
<tr height="20" style="height: 15.05pt;">
<td height="20" style="height: 15.05pt;">N</td>
<td>!AAA qwscm ijhvv vlrhx igxcw oddwu wzsjq wvfsk kxnqf gjqjn rupge
ojrtv </td>
</tr>
<tr height="20" style="height: 15.05pt;">
<td height="20" style="height: 15.05pt;">S</td>
<td>!AAA zgdyt swlpz gmjdu zqqzd ewjzj drxpr whwmg jzvek uvnbe ptrkw
hgfox </td>
</tr>
<tr height="20" style="height: 15.05pt;">
<td height="20" style="height: 15.05pt;">D</td>
<td>!AAAA hlkud thsyv icwnz wwdmw kgeog zyeqi hdtww lzeeu eifjx pgbke hiubr
gcufi</td>
</tr>
<tr height="20" style="height: 15.05pt;">
<td height="20" style="height: 15.05pt;">K</td>
<td>!AAAA inrkj yxuku tpiil mlqrg dofum bxrtz egtki tytpm zdzni usesg
zyido </td>
</tr>
<tr height="20" style="height: 15.05pt;">
<td height="20" style="height: 15.05pt;">R</td>
<td>!AAAA tepwb pytxx msyid pumxb rqlwo nrzrf pikxr bdzcf oywyj uhumf
unykn </td>
</tr>
<tr height="20" style="height: 15.05pt;">
<td height="20" style="height: 15.05pt;">T</td>
<td>!AAAA wlznv crjqp pgbdv nxgmg jgxcc iuwor lzcku oukit blizr ctoiu
irfnt </td>
</tr>
<tr height="20" style="height: 15.05pt;">
<td height="20" style="height: 15.05pt;">KD K</td>
<td>!AAA wchug kzzsf nkioe liwwr ocksi etxxq pzfic euzff cwvsu fwmdg
ertbn </td>
</tr>
<tr height="20" style="height: 15.05pt;">
<td height="20" style="height: 15.05pt;">A865</td>
<td>!AAAA egwzq hddmg kuwqt xhuqv xrztx kehje gqtjo jkerw mpdec rttsv
puejq </td>
</tr>
<tr height="20" style="height: 15.05pt;">
<td height="20" style="height: 15.05pt;">G111</td>
<td>!AAAA qkuib bgtis ofzts jgmxi efgpi ubeuo bhujy ckssh jtxte wygmv
nixec </td>
</tr>
<tr height="20" style="height: 15.05pt;">
<td height="20" style="height: 15.05pt;">G260</td>
<td>!AAAA cknul qypie mmxyg htegz cdlvg tyxdb zgnvs kvqyh glvmz pyceu
yczpn </td>
</tr>
<tr height="20" style="height: 15.05pt;">
<td height="20" style="height: 15.05pt;">G312</td>
<td>!AAAA gjuiy cmdgu vttff qpzmx kvctz usobz ldzum hqmjx wtzwm qnnuw
idyeq </td>
</tr></tbody></table></div><div><br /></div><div>The test strings have been verified against Daniel Palloks Universal Enigma Machine Simulator and will also return all A if the wheel changing string !AAAA is removed and only the lowercase characteres are pasted.</div><div><br /></div><div><br /></div><div><b>To test the strings with either Pico or Mega Enigma using a computer.</b></div><div><br /></div><div>1) Plug in either simulator into a computer.</div><div><br /></div><div>2) Open The Arduino Serial Monitor</div><div><br /></div><div>3) Press the red button, MACH will be displayed and illuminated in the lamp field</div><div><br /></div><div>4) Use the up/down keys below the rotors or press K until KD K is displayed.</div><div><br /></div><div>5) Press the red button repeatedly to exit the menu until all the lights in the lampfield turn off.</div><div><br /></div><div>6) Copy the whole string on the KD K row: !AAA wchug kz...</div><div><br /></div><div>7) Paste it into the Serial Monitor, all A will be displayed.</div><div><br /></div><div><br /></div><div><div><b>To test the strings with either Pico or Mega Enigma </b></div></div><div><br /></div><div><div>1) Press the red button, MACH will be displayed and illuminated in the lamp field</div><div><br /></div><div>2) Use the up/down keys below the rotors or press K until KD K is displayed.</div><div><br /></div><div>3) Press the red button repeatedly to exit the menu until all the lights in the lampfield turn off.</div><div><br /></div></div><div>4) Start typing the whole string on the KD K row: "wchug kz..."</div><div><br /></div><div>5) The letter A will be illuminated in the lamp field.</div><div><br /></div><div><b><br /></b></div><div><b>To test the strings with Palloks Universal Enigma:</b></div><div><br /></div><div>1) Open this link:</div><div><a href="http://people.physik.hu-berlin.de/~palloks/js/enigma/enigma-u_v25_en.html" target="_blank">http://people.physik.hu-berlin.de/~palloks/js/enigma/enigma-u_v25_en.html</a></div><div><br /></div><div>2) On the drop down menu on the top right corner of the page, select KD (rewirable UKWD).</div><div><br /></div><div>3) On the list above, copy the text on the KD K line starting from wchug kz...</div><div><br /></div><div>4) Paste it on the input side of the Universal Enigma Machine Simulator. The output panel on the right should display all A.</div><div><br /></div>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-6508740933553308664.post-23095504901045109132020-06-07T11:36:00.001-07:002020-09-07T20:49:26.059-07:00Assembly Notes for PicoEnigma<b>Pico Enigma Assembly Notes:</b><div><br /></div><div><div><b>CPU Board Assembly:</b></div><div>-Program the Arduino Mega (A kit will come with a preprogrammed Arduino)</div><div>-Prepare a 10 pin length, a 4 pin length, a 2 pin length and 1 pin length of header pins.</div><div>-Insert the pin headers, long side towards flag side of CPU Board. Plastic headers should be on the non-flag side of the board.</div><div>-Insert the Arduino Mega on the short pins. The Arduino should be on the non-flag side of the board.</div><div>-Flip the board flag side up and while pushing down, solder 1 pin of each header.</div><div>-Flip the board, verify alignment and solder 1 pin of each header to the Arduino.</div><div>-Solder the rest of the pins.</div><div>-From the long female pin header, break 4 x 10 pin lenghts, clean the ragged edges.</div><div>-Insert the female pins on the Arduino side of the CPU Board</div><div>-Temporarily mate the Top Board to the CPU Board</div><div>-Solder one pin of each female header</div><div>-Verify the alignment and solder the rest of the pins.</div><div>-Separate the CPU Board</div><div>-Insert the Power Connector on the Arduino Side of the CPU Board</div><div>-Flip the board and tack solder one corner of each pin. Do not apply excess heat to this connector.</div><div>-Allow to cool and go back and finish soldering the pins. Do not apply excess heat to this connector.</div></div><div><br /></div><div><b>Top Board Assembly:</b></div><div><div>-Break 2 strips, 10 pins long from the double pin header.</div><div>-Fully insert the pin strips (short side up) from the bottom of the PCB,</div><div>-While pushing down on the PCB, solder 1 pin.</div><div>-Verify the pin strips are fully inserted and aligned properly.</div><div>-Solder the rest of the pins.</div></div><div><br /></div><div>-Insert Buttons into PCB (1 red button under Enigma Logo, the rest, black)</div><div>-Solder one leg of Buttons while pushing down the PCB to keep them in alignment.</div><div>-Verify button alignment</div><div>-Solder the rest of the buttons.</div><div>-Test LEDs (temporarily mate the CPU and TOP boards, power the CPU board using the USB Cable and push the MENU key, insert an LED into the A lamp, it should light up) </div><div><br /></div><div>-Insert LEDs into Lamp Field (short leg points towards buttons, long leg on display side)</div><div>-Double check short leg of each LED is in bottom hole.</div><div>-Solder one side of LEDs while pushing down on the PCB to keep them in alignment</div><div>-Verify LED alignment (double check LED polarity again before committing to soldering them all)</div><div>-Solder the other leg of the LEDs</div><div>-Verify the 14 Segment Displays</div><div>-Insert 14 Segment Displays on PCB (ensure the dot points down towards the lampfield)</div><div>-Solder one pin of each 14 Segment Display</div><div>-Verify 14 Segment Display alignment</div><div>-Solder the other pins</div><div><br /></div><div>-Insert the power switch</div><div>-While pushing down on the PCB and watching the alignment, solder one pin.</div><div>-Verify alignment</div><div>-Solder the rest of the pins</div><div>-Trim the LED legs</div><div>-Trim the Power Switch legs very short, otherwise it interferes with the power connector.</div><div><br /></div><div><b>PCB Bring Up (Initial Power Up)</b></div><div>-Mate the top board to the CPU Board</div><div>-Using a 9V battery and a male power plug, apply power to the board</div><div>-Flip the power switch to the EXT position.<br />-The board should power up and display AAAA (if not, check the solder joints, make sure the Arduino is powered up, connect to the board using the Arduino Serial Monitor at 9600 baud, upon powerup it will display PicoEnigma in the Serial Monitor)</div><div>-Repeatedly push the red menu button until V16 is shown. </div><div>-Push one of the buttons adjacent to the 14 Segment Displays.</div><div>-The display should change to 8888 (if not, check the solder joints of the buttons)</div><div>-The lamp fields LEDs will turn on sequentially (if not, check the solder joints).</div><div>-Press each key, the corresponding lamp should turn off. (if not, check solder joints)</div><div>-Once all the keys have been pressed, the simulator will return to AAAA, use the buttons above and below each letter to change them. Verify the X and T letters display properly. In addition to 8888, this tests all segments. If one segment is not working, check the solder joints).</div><div>-Separate the CPU and Main Boards and clean the solder flux (if using water soluble flux, simply wash the boards under running water while scrubbing with a toothbrush)</div><div>-Dry the boards thoroughly, use a blower or canned cleaning duster to blow all the water from under the Arduino, the push buttons and the display.</div><div>Once the boards are thoroughly dry (do not rush this step), power them up and repeat the key/led test procedure above. If a key does not work or a single key turns off multiple lamps, dry those keys thoroughly.</div><div>-If the boards have mouse bites, this is the time to sand them off. Dry, clean and re-test the boards.</div><div><br /></div><div><b>Battery Compartment Assembly:</b></div><div>-Locate the base piece of the case. Insert 4 screws in each corner of the battery compartment.</div><div>-Drive the screws in until they barely protrude from the other side.</div><div>-The first battery compartment piece has a hex nut opening, this allows retaining washers to be used on the battery door.</div><div>-Align the holes on the battery compartment piece on the protruding screws.</div><div>-While firmly pressing the battery compartment piece to the case base piece, drive the screws in, one at a time, ensure the battery piece is tight against the base piece. Drive the screws in until they begin to slightly protrude from the battery piece.</div><div>-The next battery compartment piece has a small round opening. Drive the screws in.</div><div>-The next piece will have a hex nut opening, install a nut in each opening. Drive the screws in.</div><div>-Install the rest of the pieces, Drive the screws in.</div><div>-Finally, install the flat piece with the single hole. The hole needs to be on the same side as the enigma logo and the power switch. Drive the screws in.</div><div>-Once the screws heads reach the case base piece, tighten them until the taper sinks into the base piece but do not over-tighten (hard woods such as walnut crack easily).</div><div>-Install a 9V battery on a power plug. Cut off and dispose of the male barrel plug (cut one wire at a time), The wires coming off the battery need to be as long as possible.</div><div>-Insert the leads from the battery into the battery compartment hole. Insert the battery into the compartment, wire first, the connector will be on the side opposite the hole. </div><div>-Fold the battery leads flat against the top of the battery compartment.</div><div>-Fold them down the long side of the battery compartment.</div><div>-Install a tie wrap on outside of the battery compartment, holding the battery leads against it. This will prevent pulling on the solder joints if the battery is pulled.</div><div>-Put a piece of tape over the battery wires to prevent the keyboard buttons from cutting into them.</div><div>-Disconnect the battery</div><div>-Solder the battery wires to the CPU Board (separate from main board first).</div><div>-Install the battery</div><div>-Close the battery compartment.</div><div><br /></div><div><b>Assembly:</b></div><div>-Install the 25mm brass standoff on the main board, use the plastic screws to attach them.</div><div>-Tie a simple knot on the twist wrap that serves to hold the lid in place. Insert from the bottom of the main board. Apply a drop of glue to the bottom of the board to secure the knot in place.</div><div>-Put a piece of tape over the keyboard pins to prevent them from cutting into the battery wire.</div><div>-Once the glue dries, connect the Main Board to the CPU Board (the CPU board needs to be connected to be battery compartment at this point). Ensure the Main Board pins are driven all the way into the CPU board headers.</div><div>-Using brass screws, secure the standoffs to the case base plate. </div><div>-Turn the power switch to the INT position, the simulator should power up, if not, check the battery lead solder joints.</div><div><br /></div><div><b>Case Assembly:</b></div><div>-Prepare the lid pieces, remove any remaining laser film.</div><div>-Install the screw that will hold the other end of the twist tie on the side piece. The screw should be above the hole in the PCB where the other side of the twist tie is installed. If using hardwoods, drive the screw in half a turn, then remove it and drill out the hole. Walnut cracks easily and if the screw is simply driven in, it will crack the side piece in half. Cut the tip of the screw off and install on the drilled hole.</div><div>-Mock assemble the lid piece, making sure the Enigma logo is to the inside and that the piece with the hinge pockets is near the Enigma Logo. The side piece with the screw should be on the left side of the lid, screw facing up.</div><div>-Moisten a paper towel and clean your fingers, cleanliness is paramount at this stage to prevent glue from finding its way into a flat surface.</div><div>-Lay down some paper towel and put all the lid pieces in their correct positions, The Enigma logo needs to be facing up so that is readable.</div><div>-Apply a drop of glue to the inside of each finger joint of a side piece. Insert into the Enigma piece.</div><div>-Repeat until all 4 sides are installed.</div><div>-Careful of not touching the glue, push all 4 sides tightly.</div><div>-Flip the lid face down into a clean piece of paper and push down on it.</div><div>-Set aside to dry.</div><div><br /></div><div>-Repeat the process for the bottom pieces of the case, mock the side pieces and arrange them around the base piece. </div><div>-Apply glue the side pieces and install them one at a time.</div><div>-Apply pressure to each side piece to ensure there are no gaps around them.</div><div><br /></div><div>-Install the hinges on the lid. </div><div>-Drive the nails in by grabbing them with multi-tool pliers and pushing them into the wood.. Once they are embedded in the wood, use the tip of the pliers to push them in all the way. </div><div>-Align the lid with the bottom case and install one nail. Verify the lid aligns with the case.</div><div>-Install the rest of the nails.</div><div>-Minor lid misalignments can be corrected by gently twisting the lid when closed.</div><div>-Connect a power plug on the back of the simulator and observe the lid angle that keeps the lid from touching the power plug. </div><div>-Fold the twist tie around the screw in the lid so the lid stays open at that angle. Twist the tie around itself and back around the screw so it does not work itself loose.</div><div>-Align and glue a Merkblatt</div><div><br /></div><div>Click past the break for pictures...</div><div><br /></div><span><a name='more'></a></span><div><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-sl7b-ad_3Fg/X1b91Wu5CvI/AAAAAAAAPjs/yijM6k7Ny3M9w4eaeSwHFu__9JlcsclqACLcBGAsYHQ/s2048/1.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="2048" data-original-width="1152" height="320" src="https://1.bp.blogspot.com/-sl7b-ad_3Fg/X1b91Wu5CvI/AAAAAAAAPjs/yijM6k7Ny3M9w4eaeSwHFu__9JlcsclqACLcBGAsYHQ/s320/1.jpg" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-mmHtmueMA_0/X1b99R43BKI/AAAAAAAAPkY/gkQXxHbI044hu92ZSAe_7p1kyMzNSh__gCLcBGAsYHQ/s2048/2.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1152" data-original-width="2048" src="https://1.bp.blogspot.com/-mmHtmueMA_0/X1b99R43BKI/AAAAAAAAPkY/gkQXxHbI044hu92ZSAe_7p1kyMzNSh__gCLcBGAsYHQ/s320/2.jpg" width="320" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-CcPN7J0lC0k/X1b-F56eQyI/AAAAAAAAPlI/Pz9FOi4SDGIREPLsE7Ip1jb-uKq6Fg6CwCLcBGAsYHQ/s2048/3.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="2048" data-original-width="1822" height="320" src="https://1.bp.blogspot.com/-CcPN7J0lC0k/X1b-F56eQyI/AAAAAAAAPlI/Pz9FOi4SDGIREPLsE7Ip1jb-uKq6Fg6CwCLcBGAsYHQ/s320/3.jpg" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-1cg_aOmJyVU/X1b-Ja_yS6I/AAAAAAAAPlg/6rRzFCROk1wBr-Z88Tv1yFUeeC8B9XKpgCLcBGAsYHQ/s2048/4.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1292" data-original-width="2048" src="https://1.bp.blogspot.com/-1cg_aOmJyVU/X1b-Ja_yS6I/AAAAAAAAPlg/6rRzFCROk1wBr-Z88Tv1yFUeeC8B9XKpgCLcBGAsYHQ/s320/4.jpg" width="320" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-1_nGmR4gXjc/X1b-JfTVaBI/AAAAAAAAPlc/ShzEMjKtL-U6vrT5USQLC7CAdbgxRe62ACLcBGAsYHQ/s1836/5.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1228" data-original-width="1836" src="https://1.bp.blogspot.com/-1_nGmR4gXjc/X1b-JfTVaBI/AAAAAAAAPlc/ShzEMjKtL-U6vrT5USQLC7CAdbgxRe62ACLcBGAsYHQ/s320/5.jpg" width="320" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-Ln9-X5U_UuE/X1b-JxxM3jI/AAAAAAAAPlk/-oahKpSvJg84rJHqEcxDHe2teMnL15cDgCLcBGAsYHQ/s1836/6.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1192" data-original-width="1836" src="https://1.bp.blogspot.com/-Ln9-X5U_UuE/X1b-JxxM3jI/AAAAAAAAPlk/-oahKpSvJg84rJHqEcxDHe2teMnL15cDgCLcBGAsYHQ/s320/6.jpg" width="320" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-K9TH26_bWpc/X1b-LVMOcCI/AAAAAAAAPlo/b78P3QZgwogTwUdfUCLBafYu5KcXOmEfACLcBGAsYHQ/s2048/7.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="2048" data-original-width="1152" height="320" src="https://1.bp.blogspot.com/-K9TH26_bWpc/X1b-LVMOcCI/AAAAAAAAPlo/b78P3QZgwogTwUdfUCLBafYu5KcXOmEfACLcBGAsYHQ/s320/7.jpg" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-s9C8kYhNBVs/X1b-MVJHztI/AAAAAAAAPlw/4VrmUp_h5zo331D83ROA1UKuvn3L8Y_SQCLcBGAsYHQ/s2048/8.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="2048" data-original-width="1152" height="320" src="https://1.bp.blogspot.com/-s9C8kYhNBVs/X1b-MVJHztI/AAAAAAAAPlw/4VrmUp_h5zo331D83ROA1UKuvn3L8Y_SQCLcBGAsYHQ/s320/8.jpg" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-vfTO4DLih80/X1b-McpgoEI/AAAAAAAAPls/O9B4KOa1fT0F8afSlMnA8Pew2Qw_W7lawCLcBGAsYHQ/s2048/9.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="2048" data-original-width="1152" height="320" src="https://1.bp.blogspot.com/-vfTO4DLih80/X1b-McpgoEI/AAAAAAAAPls/O9B4KOa1fT0F8afSlMnA8Pew2Qw_W7lawCLcBGAsYHQ/s320/9.jpg" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/--iXKp0gbFRk/X1b911MPrbI/AAAAAAAAPjw/NEdsHjYTN1wEhxbZd6aRKgWaruqRhxocACLcBGAsYHQ/s2048/10.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="2048" data-original-width="1152" height="320" src="https://1.bp.blogspot.com/--iXKp0gbFRk/X1b911MPrbI/AAAAAAAAPjw/NEdsHjYTN1wEhxbZd6aRKgWaruqRhxocACLcBGAsYHQ/s320/10.jpg" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-rzb1u3xD7Ac/X1b91whZvjI/AAAAAAAAPj0/RhoStt53DsUE5bnXsjcrPRDSu-pzh4fNQCLcBGAsYHQ/s2048/11.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="2048" data-original-width="1152" height="320" src="https://1.bp.blogspot.com/-rzb1u3xD7Ac/X1b91whZvjI/AAAAAAAAPj0/RhoStt53DsUE5bnXsjcrPRDSu-pzh4fNQCLcBGAsYHQ/s320/11.jpg" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-h7vLVLCemOI/X1b92sxkeKI/AAAAAAAAPj4/xv-uhhXGhJEUmsMHM_EG2cxgV_ChRsbkACLcBGAsYHQ/s2048/12.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="2048" data-original-width="1754" height="320" src="https://1.bp.blogspot.com/-h7vLVLCemOI/X1b92sxkeKI/AAAAAAAAPj4/xv-uhhXGhJEUmsMHM_EG2cxgV_ChRsbkACLcBGAsYHQ/s320/12.jpg" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-0c2VkI3jveQ/X1b93k_ZkSI/AAAAAAAAPj8/BLH0I6XhwZclPWcIiNvoNQ-N_s06Eg6agCLcBGAsYHQ/s2048/13.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="2048" data-original-width="1780" height="320" src="https://1.bp.blogspot.com/-0c2VkI3jveQ/X1b93k_ZkSI/AAAAAAAAPj8/BLH0I6XhwZclPWcIiNvoNQ-N_s06Eg6agCLcBGAsYHQ/s320/13.jpg" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-IfiCW48d3bI/X1b947PheiI/AAAAAAAAPkA/3mujvLL_swIHIDF6EWCBbNacRdrNb7QnQCLcBGAsYHQ/s2048/14.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="2048" data-original-width="1152" height="320" src="https://1.bp.blogspot.com/-IfiCW48d3bI/X1b947PheiI/AAAAAAAAPkA/3mujvLL_swIHIDF6EWCBbNacRdrNb7QnQCLcBGAsYHQ/s320/14.jpg" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-UusWxO7O02Q/X1b94zej82I/AAAAAAAAPkE/flj9PUiTYxMF6VFH_0jlLZHsO7kJuZ8wgCLcBGAsYHQ/s2048/15.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="2048" data-original-width="1152" height="320" src="https://1.bp.blogspot.com/-UusWxO7O02Q/X1b94zej82I/AAAAAAAAPkE/flj9PUiTYxMF6VFH_0jlLZHsO7kJuZ8wgCLcBGAsYHQ/s320/15.jpg" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-Hs4pM1PaNVs/X1b95qBwjoI/AAAAAAAAPkI/yfeks06SzcswcfeUEwzl1Pa-CKix_qKPQCLcBGAsYHQ/s2048/16.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="2048" data-original-width="1152" height="320" src="https://1.bp.blogspot.com/-Hs4pM1PaNVs/X1b95qBwjoI/AAAAAAAAPkI/yfeks06SzcswcfeUEwzl1Pa-CKix_qKPQCLcBGAsYHQ/s320/16.jpg" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-cTdqHCPVFhc/X1b97t4SWVI/AAAAAAAAPkM/aegpkt2hYVsKnRGxDIRNDuNEoItvLpYXACLcBGAsYHQ/s2048/17.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="2048" data-original-width="1152" height="320" src="https://1.bp.blogspot.com/-cTdqHCPVFhc/X1b97t4SWVI/AAAAAAAAPkM/aegpkt2hYVsKnRGxDIRNDuNEoItvLpYXACLcBGAsYHQ/s320/17.jpg" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-e9il8nFiRIA/X1b98X7iNZI/AAAAAAAAPkQ/1KmZUyzqqJc2jGj9Qzq2lVzV6cpzL_cyACLcBGAsYHQ/s2048/18.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="2048" data-original-width="1152" height="320" src="https://1.bp.blogspot.com/-e9il8nFiRIA/X1b98X7iNZI/AAAAAAAAPkQ/1KmZUyzqqJc2jGj9Qzq2lVzV6cpzL_cyACLcBGAsYHQ/s320/18.jpg" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-YLOgjBYVuy4/X1b98qpN0yI/AAAAAAAAPkU/IYrTwSr9g28v3ltM9g9MJQuPIDyjBxwFACLcBGAsYHQ/s2048/19.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="2048" data-original-width="1152" height="320" src="https://1.bp.blogspot.com/-YLOgjBYVuy4/X1b98qpN0yI/AAAAAAAAPkU/IYrTwSr9g28v3ltM9g9MJQuPIDyjBxwFACLcBGAsYHQ/s320/19.jpg" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-_sTsDTOKnnU/X1b9_fvZNNI/AAAAAAAAPkc/JdvXWuN-q-kJdxKkHcwh3WMGtFiu_Y-GgCLcBGAsYHQ/s2048/20.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="2048" data-original-width="1152" height="320" src="https://1.bp.blogspot.com/-_sTsDTOKnnU/X1b9_fvZNNI/AAAAAAAAPkc/JdvXWuN-q-kJdxKkHcwh3WMGtFiu_Y-GgCLcBGAsYHQ/s320/20.jpg" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-9sN9EY4YzNM/X1b-AKCUMvI/AAAAAAAAPkk/NR01JUP6fywAhazNs9bI2FfqLXHku7_6ACLcBGAsYHQ/s2048/21.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1152" data-original-width="2048" src="https://1.bp.blogspot.com/-9sN9EY4YzNM/X1b-AKCUMvI/AAAAAAAAPkk/NR01JUP6fywAhazNs9bI2FfqLXHku7_6ACLcBGAsYHQ/s320/21.jpg" width="320" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-SHdRdqyJW64/X1b9_8gEzNI/AAAAAAAAPkg/HBTz3fZNAH47RESFq9-JXCputuKVj3qawCLcBGAsYHQ/s2798/22.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1124" data-original-width="2798" src="https://1.bp.blogspot.com/-SHdRdqyJW64/X1b9_8gEzNI/AAAAAAAAPkg/HBTz3fZNAH47RESFq9-JXCputuKVj3qawCLcBGAsYHQ/s320/22.jpg" width="320" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-y_Ggl8DfM9s/X1b-A6hkWrI/AAAAAAAAPko/iF8F5RqTs5MqRIfInPT-EyX4tRimQmuxwCLcBGAsYHQ/s2048/23.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="2048" data-original-width="1700" height="320" src="https://1.bp.blogspot.com/-y_Ggl8DfM9s/X1b-A6hkWrI/AAAAAAAAPko/iF8F5RqTs5MqRIfInPT-EyX4tRimQmuxwCLcBGAsYHQ/s320/23.jpg" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-bNWcLAYyXyg/X1b-CKHUjNI/AAAAAAAAPks/lOnTBknOvpkQ_Y9V0wCGTpVHx-hdCAGwgCLcBGAsYHQ/s1880/24.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1880" data-original-width="1836" height="320" src="https://1.bp.blogspot.com/-bNWcLAYyXyg/X1b-CKHUjNI/AAAAAAAAPks/lOnTBknOvpkQ_Y9V0wCGTpVHx-hdCAGwgCLcBGAsYHQ/s320/24.jpg" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-qdRHKTb0XB0/X1b-D-cz5WI/AAAAAAAAPk4/I9Jm7XcRy-ciy8GUhSSSVr1jz0Jr5L2MACLcBGAsYHQ/s2048/25.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="2048" data-original-width="1626" height="320" src="https://1.bp.blogspot.com/-qdRHKTb0XB0/X1b-D-cz5WI/AAAAAAAAPk4/I9Jm7XcRy-ciy8GUhSSSVr1jz0Jr5L2MACLcBGAsYHQ/s320/25.jpg" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-ZgVBoRJQd2Q/X1b-DmhxylI/AAAAAAAAPk0/IWgntpegVKw5kBMJu1jXQBT4__JDlDOXQCLcBGAsYHQ/s2048/26.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="2048" data-original-width="1330" height="320" src="https://1.bp.blogspot.com/-ZgVBoRJQd2Q/X1b-DmhxylI/AAAAAAAAPk0/IWgntpegVKw5kBMJu1jXQBT4__JDlDOXQCLcBGAsYHQ/s320/26.jpg" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-COLI33aRxZ0/X1b-DpyEUrI/AAAAAAAAPkw/gnxiPSDCpS4i1qpCDRPHKAAzv5vDOv_GgCLcBGAsYHQ/s1032/27.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="739" data-original-width="1032" src="https://1.bp.blogspot.com/-COLI33aRxZ0/X1b-DpyEUrI/AAAAAAAAPkw/gnxiPSDCpS4i1qpCDRPHKAAzv5vDOv_GgCLcBGAsYHQ/s320/27.png" width="320" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-6Yypoczw-hQ/X1b-EIpBa2I/AAAAAAAAPk8/246-uj1J6K4ttMFRB3RE2q_rrhUESx4YQCLcBGAsYHQ/s2048/28.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1506" data-original-width="2048" src="https://1.bp.blogspot.com/-6Yypoczw-hQ/X1b-EIpBa2I/AAAAAAAAPk8/246-uj1J6K4ttMFRB3RE2q_rrhUESx4YQCLcBGAsYHQ/s320/28.jpg" width="320" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-L874tAg-oR0/X1b-EoWocwI/AAAAAAAAPlA/09jyX-nGZ_cjwp7I4ah70GM0jYKoOfNVACLcBGAsYHQ/s2048/29.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="2048" data-original-width="1764" height="320" src="https://1.bp.blogspot.com/-L874tAg-oR0/X1b-EoWocwI/AAAAAAAAPlA/09jyX-nGZ_cjwp7I4ah70GM0jYKoOfNVACLcBGAsYHQ/s320/29.jpg" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-4VdTEglTjDk/X1b-FkXBSEI/AAAAAAAAPlE/XJ21xSZ_OCo5w-yBp9bWX83i6klHx57MQCLcBGAsYHQ/s2048/30.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1152" data-original-width="2048" src="https://1.bp.blogspot.com/-4VdTEglTjDk/X1b-FkXBSEI/AAAAAAAAPlE/XJ21xSZ_OCo5w-yBp9bWX83i6klHx57MQCLcBGAsYHQ/s320/30.jpg" width="320" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-SkFBLsvprF0/X1b-GZf1IgI/AAAAAAAAPlM/MWa7UGtsAug16vzfYZXafLV7HA3eQBTsgCLcBGAsYHQ/s1968/31.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1968" data-original-width="1836" height="320" src="https://1.bp.blogspot.com/-SkFBLsvprF0/X1b-GZf1IgI/AAAAAAAAPlM/MWa7UGtsAug16vzfYZXafLV7HA3eQBTsgCLcBGAsYHQ/s320/31.jpg" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-Y9acSMAIva0/X1b-HZUHdPI/AAAAAAAAPlU/AFbr_pF0WCQKhKZtGzS17f9Dq9tv-cQCgCLcBGAsYHQ/s2000/32.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="2000" data-original-width="1836" height="320" src="https://1.bp.blogspot.com/-Y9acSMAIva0/X1b-HZUHdPI/AAAAAAAAPlU/AFbr_pF0WCQKhKZtGzS17f9Dq9tv-cQCgCLcBGAsYHQ/s320/32.jpg" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-1L29RX3VEP0/X1b-Gwk-atI/AAAAAAAAPlQ/8mbo8fAcICQRLvCSur-9vEjxgNKEzGigwCLcBGAsYHQ/s2288/33.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1032" data-original-width="2288" src="https://1.bp.blogspot.com/-1L29RX3VEP0/X1b-Gwk-atI/AAAAAAAAPlQ/8mbo8fAcICQRLvCSur-9vEjxgNKEzGigwCLcBGAsYHQ/s320/33.jpg" width="320" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-fMo6WY1sl70/X1b-IZD-OfI/AAAAAAAAPlY/d3hs0nXFQ-IxXzcGLVp1wnjj7sKlv279gCLcBGAsYHQ/s1840/34.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1840" data-original-width="1632" height="320" src="https://1.bp.blogspot.com/-fMo6WY1sl70/X1b-IZD-OfI/AAAAAAAAPlY/d3hs0nXFQ-IxXzcGLVp1wnjj7sKlv279gCLcBGAsYHQ/s320/34.jpg" /></a></div><br /><div><br /></div><div class="separator" style="clear: both; text-align: center;"><br /></div><br /><div><br /></div>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-6508740933553308664.post-78916445043497271272020-05-31T09:42:00.076-07:002020-05-31T11:58:12.163-07:00Designing an UHR Switch for an Arduino based Enigma Machine SimulatorThis article will explore some considerations when designing an UHR switch for a modern microcontroller based Enigma Machine Simulator.<div><br /></div><div>The UHR Switch was an external attachment to the Enigma Machine. It is the small square device to the right of the Enigma Simulator shown below.</div><div><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-JA0arLwBf_U/XtPQpVhfNWI/AAAAAAAAOxU/EJ3RF_uDo5kTyMLjhgcO9ATMuphLUB2bwCK4BGAsYHg/20200524_025610.jpg" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1836" data-original-width="3264" src="https://1.bp.blogspot.com/-JA0arLwBf_U/XtPQpVhfNWI/AAAAAAAAOxU/EJ3RF_uDo5kTyMLjhgcO9ATMuphLUB2bwCK4BGAsYHg/d/20200524_025610.jpg" /></a></div><div><br /></div><div>The UHR Switch connects to the plugboard and performs different substitutions depending on which of the 40 possible values is selected by using the rotary encoder on its face. </div><div><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-jCcKQ-V_3U8/XtPQ_stNpoI/AAAAAAAAOxc/YE0YzkHwyHc1dwsFqClKjotaedmv8KDQwCK4BGAsYHg/20200531_114146.jpg" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1836" data-original-width="3264" src="https://1.bp.blogspot.com/-jCcKQ-V_3U8/XtPQ_stNpoI/AAAAAAAAOxc/YE0YzkHwyHc1dwsFqClKjotaedmv8KDQwCK4BGAsYHg/d/20200531_114146.jpg" /></a></div><div class="separator" style="clear: both; text-align: center;"><br /></div><div class="separator" style="clear: both; text-align: left;">The UHR Switch has 20 plugs, labelled 1a 1b 2a 2b 3a 3b .. 10a 10b.</div><div class="separator" style="clear: both; text-align: left;"><br /></div><div class="separator" style="clear: both; text-align: left;">A typical Enigma Code Sheet would list the 10 plugs to be installed as follows:</div><div class="separator" style="clear: both; text-align: left;">QP WY EX RC TV ZB UN IM JK OL</div><div class="separator" style="clear: both; text-align: left;"><br /></div><div class="separator" style="clear: both; text-align: left;">When using an UHR Switch, plug 1a would be connected to Q, 1b to P, 2a to W, 2b to Y, 3a to E, 3b to X, ending with 10a to O and 10b to L. Normally, a plug would substitute Q to P and P to Q, but the UHR switch may break that symmetry depending on the setting used. For compatibility with machines not using it, position 0 performs the same symmetric substitution as the plugs Q to P and P to Q. Positions that were multiples of 4 (4,8,12...) perform different symmetric substitutions, for example, position 4, as wired above would substitute Q to B and B to Q.</div><div class="separator" style="clear: both; text-align: left;"><br /></div><div class="separator" style="clear: both; text-align: left;">The image below, found under the Wiring section of the CryptoMusum UHR article, describes the input and scrambler disk wiring.</div><div class="separator" style="clear: both; text-align: left;"><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://www.cryptomuseum.com/crypto/enigma/uhr/index.htm" style="margin-left: 1em; margin-right: 1em;" target="_blank"><img border="0" data-original-height="472" data-original-width="727" src="https://1.bp.blogspot.com/-7jNepuCdDZg/XtPXQbhNC0I/AAAAAAAAOx0/0ylHxzGxGG8DY-eTSo8HOnYcP4OQmudVwCK4BGAsYHg/d/UHR%2BWiring.PNG" /></a></div><div class="separator" style="clear: both; text-align: left;"><br /></div><div class="separator" style="clear: both; text-align: left;">The link below lists all substitutions produced by the UHR. It can be used to verify the correctness of an implementation</div><div class="separator" style="clear: both; text-align: left;"><br /></div><div class="separator" style="clear: both; text-align: left;"><a href="https://arduinoenigma.blogspot.com/2020/03/enigma-uhr-switch-test-vectors.html" target="_blank">https://arduinoenigma.blogspot.com/2020/03/enigma-uhr-switch-test-vectors.html</a></div><div class="separator" style="clear: both; text-align: left;"><br /></div><div class="separator" style="clear: both; text-align: left;"><div class="separator" style="clear: both;"><font face="courier">UHR:6</font></div><div class="separator" style="clear: both;"><font face="courier">abcdefghijklmnopqrstuvwxyz</font></div><div class="separator" style="clear: both;"><font face="courier">aotdxfghbvewrjczmyspnqkiul</font></div><div class="separator" style="clear: both;"><font face="courier">1a->8b 7b->9a</font></div><div class="separator" style="clear: both;"><font face="courier">2a->9b 1b->6a</font></div><div class="separator" style="clear: both;"><font face="courier">3a->3b 8b->4a</font></div><div class="separator" style="clear: both;"><font face="courier">4a->2b 6b->10a</font></div><div class="separator" style="clear: both;"><font face="courier">5a->1b 2b->7a</font></div><div class="separator" style="clear: both;"><font face="courier">6a->10b 9b->3a</font></div><div class="separator" style="clear: both;"><font face="courier">7a->7b 5b->1a</font></div><div class="separator" style="clear: both;"><font face="courier">8a->6b 3b->8a</font></div><div class="separator" style="clear: both;"><font face="courier">9a->5b 10b->2a</font></div><div class="separator" style="clear: both;"><font face="courier">10a->4b 4b->5a</font></div><div class="separator" style="clear: both;"><font face="courier"><br /></font></div><div class="separator" style="clear: both;">The enigma machine uses the plugboard twice for each letter encoded. When a key is pressed, it first goes through the plugboard to be either substituted by another letter or be left alone. Then it goes into the rotor pack, through the reflector and back trough the rotor pack to be encoded into a different letter. Lastly, it goes through the plugboard again before going to the lampfield. </div><div class="separator" style="clear: both;"><br /></div><div class="separator" style="clear: both;">A microcontroller implementation of an Enigma Machine with a plugboard would perform all of the steps above. Typically, all 26 plugs would connect directly to a microcontroller with sufficient I/O pins or to an IO port expander. Either way, each pin needs to be bi-directional and can be used as an output or an input. When used as an input, an internal 10k pull up resistor can be activated so the port will read 1 if not connected to anything. </div><div class="separator" style="clear: both;"><br /></div><div class="separator" style="clear: both;">To see if a plug is installed, first all the ports are switched to input and the internal pull up activated, then the port corresponding to the letter to be substituted is switched to output and driven low. One by one all the other ports are read, if a plug is not installed, it will read as 1. If a plug is installed, another port will read 0. If all the other ports are read and neither returns 0, a plug is not installed and that letter is not substituted. <br /></div><div class="separator" style="clear: both;"><br /></div><div class="separator" style="clear: both;">This behavior is performed twice, once when a key is pressed to see if it needs to be changed on the way to the rotor pack and once more as it comes out of the rotor pack to determine the letter to illuminate in the lamp field. </div><div class="separator" style="clear: both;"><br /></div><div class="separator" style="clear: both;">Let's use Daniel Palloks Universal Enigma to analyze how the UHR works. A default M4 machine with B reflector and Beta thin wheel has been selected. The following plugs have been installed QP WY EX RC TV ZB UN IM JK OL. The plugboard has been activated and UHR has been set to position 06</div><div class="separator" style="clear: both;"><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-ICquCTSu1yY/XtPoGz7u-QI/AAAAAAAAOys/R6QfVn1F-IkWIAIKmLiARQ-FEaBcn08TwCK4BGAsYHg/0-InitialSetup.PNG" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="743" data-original-width="1122" src="https://1.bp.blogspot.com/-ICquCTSu1yY/XtPoGz7u-QI/AAAAAAAAOys/R6QfVn1F-IkWIAIKmLiARQ-FEaBcn08TwCK4BGAsYHg/d/0-InitialSetup.PNG" /></a></div><div class="separator" style="clear: both; text-align: center;"><br /></div><div class="separator" style="clear: both;">The first two lines in the signal monitor show the substitutions performed by the UHR.</div><div class="separator" style="clear: both;"><br /></div><div class="separator" style="clear: both;"><div class="separator" style="clear: both;"><font face="courier"> abcdefghijklmnopqrstuvwxyz top</font></div><div class="separator" style="clear: both;"><font face="courier"> aotdxfghbvewrjczmyspnqkiul bottom</font></div></div><div class="separator" style="clear: both;"><br /></div><div class="separator" style="clear: both;">these can be expanded using the actual plug substitutions listed above (1a->8b) as shown below:</div><div class="separator" style="clear: both;"><br /></div><div class="separator" style="clear: both;"><div class="separator" style="clear: both;"><font face="courier"> 11 22 33 44 55 66 77 88 99 00</font></div><div class="separator" style="clear: both;"><font face="courier"> ab ab ab ab ab ab ab ab ab ab</font></div><div class="separator" style="clear: both;"><font face="courier">Plugged: QP WY EX RC TV ZB UN IM JK OL top </font></div><div class="separator" style="clear: both;"><font face="courier">Uhr: 06 MZ KU XI YT PQ LO NJ BR VE CW bottom</font></div><div class="separator" style="clear: both;"><font face="courier"> 86 97 38 25 11 00 79 64 53 42</font></div><div class="separator" style="clear: both;"><font face="courier"> ba ba ba ba ba ba ba ba ba ba</font></div><div class="separator" style="clear: both;"><font face="courier"> </font></div></div><div class="separator" style="clear: both;">Lets press A:</div><div class="separator" style="clear: both;"><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-1tBgcOSVPfo/XtPu3MpQf5I/AAAAAAAAOzI/dIA-0AY9it0hSP9TH_OO5Sgkq8hNR-b3QCK4BGAsYHg/1-unpluggedentry-unpluggedexit.PNG" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="742" data-original-width="1124" src="https://1.bp.blogspot.com/-1tBgcOSVPfo/XtPu3MpQf5I/AAAAAAAAOzI/dIA-0AY9it0hSP9TH_OO5Sgkq8hNR-b3QCK4BGAsYHg/d/1-unpluggedentry-unpluggedexit.PNG" /></a></div><div class="separator" style="clear: both;"><br /></div><div class="separator" style="clear: both;">The arrows indicate the direction the signals are traveling. The topmost green arrow going down into A shows the keyboard going into the UHR, since this letter is not plugged, it goes into the ETW, the entry rotor as itself. It comes out of the rotor pack as F, and again, this letter is not wired to the UHR, so it goes out to the lamp field as itself.</div><div class="separator" style="clear: both;"><br /></div><div class="separator" style="clear: both;">Now lets press A again.</div><div class="separator" style="clear: both;"><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-mcqFe0hAkMU/XtPvdkTd2MI/AAAAAAAAOzc/M-1UWh_9mOoBHakWz5s7iJ-qm_Qfe_6rwCK4BGAsYHg/2-unpluggedentry-pluggedexit.PNG" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="743" data-original-width="1123" src="https://1.bp.blogspot.com/-mcqFe0hAkMU/XtPvdkTd2MI/AAAAAAAAOzc/M-1UWh_9mOoBHakWz5s7iJ-qm_Qfe_6rwCK4BGAsYHg/d/2-unpluggedentry-pluggedexit.PNG" /></a></div><div class="separator" style="clear: both;"><br /></div><div class="separator" style="clear: both;">It goes in as A, an unplugged letter, so it goes into the rotors as A, comes back out as T, a plugged letter and the UHR performs a bottom to top lookup and goes out to the lampfield as C.</div><div class="separator" style="clear: both;"><br /></div><div class="separator" style="clear: both;">Now lets press a plugged key, P:</div><div class="separator" style="clear: both;"><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-HXaLZLB2lG4/XtPv1aBXWZI/AAAAAAAAOz0/-OeRHiGKz58POH4q0ZHq4yflO2yTJOxZQCK4BGAsYHg/3-pluggedentry-unpluggedexit.PNG" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="743" data-original-width="1122" src="https://1.bp.blogspot.com/-HXaLZLB2lG4/XtPv1aBXWZI/AAAAAAAAOz0/-OeRHiGKz58POH4q0ZHq4yflO2yTJOxZQCK4BGAsYHg/d/3-pluggedentry-unpluggedexit.PNG" /></a></div><div class="separator" style="clear: both;"><br />It goes in as P, a plugged letter and the UHR performs a top to bottom lookup, sending it into the rotor pack as Z. It goes through the rotors and comes out as A, an unplugged letter, so it continues as an A to the lampfield..</div><div class="separator" style="clear: both;"><br /></div><div class="separator" style="clear: both;">Lastly, lets press P again:</div><div class="separator" style="clear: both;"><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-VhS5oWJOEjU/XtPwqGfuXWI/AAAAAAAAO0I/pvIUSePPx585p06ilIA0cxESjzY1yb4TACK4BGAsYHg/4-pluggedentry-pluggedexit.PNG" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="740" data-original-width="1122" src="https://1.bp.blogspot.com/-VhS5oWJOEjU/XtPwqGfuXWI/AAAAAAAAO0I/pvIUSePPx585p06ilIA0cxESjzY1yb4TACK4BGAsYHg/d/4-pluggedentry-pluggedexit.PNG" /></a></div><div class="separator" style="clear: both;"><br /></div><div class="separator" style="clear: both;">It goes in as P, a plugged letter and the UHR performs a top to bottom lookup, sending it into the rotor pack as Z. It goes through the rotor pack and comes out as O, a plugged letter and the UHR performs a bottom to top lookup and goes out to the lampfield as B.</div><div class="separator" style="clear: both;"><br /></div><div class="separator" style="clear: both;">Now, lets press P until the green arrow going from the keyboard into the UHR and the red arrow coming from the rotors out into the UHR align:</div><div class="separator" style="clear: both;"><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/--mWAXGK90d4/XtPyRCB5DjI/AAAAAAAAO0s/2oMHL8osoQQR7reD9zcB9HVKTiF8BqrrgCK4BGAsYHg/5-SameLetterBothWays.PNG" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="737" data-original-width="1128" src="https://1.bp.blogspot.com/--mWAXGK90d4/XtPyRCB5DjI/AAAAAAAAO0s/2oMHL8osoQQR7reD9zcB9HVKTiF8BqrrgCK4BGAsYHg/d/5-SameLetterBothWays.PNG" /></a></div><div class="separator" style="clear: both;"><br />P gets translated by the UHR as Z when going from the keyboard into the rotors and the resulting P gets translated by the UHR as T when going out from the rotors into the plugboard.</div><div class="separator" style="clear: both;"><br /></div><div class="separator" style="clear: both;">And this is the point where one realizes that a software implementation of the UHR switch on a simulator that has a plugboard with a single plug per letter is not a straightforward task. The UHR needs to know whether the signal is going into the rotors or coming out of the rotors.</div><div class="separator" style="clear: both;"><br /></div><div class="separator" style="clear: both;">The real enigma machine uses two connectors per plug, A normal wired plug crosses the top connector on one side to the bottom connector on the other side and vice versa. The plug has an internal shorting bar that connects to top connector and the bottom connector. The plug pushes that shorting bar with an insulated tip and connects the top and bottom of one letter to the bottom and top of another letter. The UHR connects the top side of the plugs to the bottom side of the plugs using the A and B connectors. </div><div class="separator" style="clear: both;"><br /></div><div class="separator" style="clear: both;">A software UHR with single connector per letter needs to somehow differentiate whether the signal is going into the rotors and it needs to perform a top to bottom translation or it is coming out of the rotors and into the UHR and it needs to perform a bottom to top translation. </div><div class="separator" style="clear: both;"><br /></div><div class="separator" style="clear: both;">The different substitutions have been highlighted below. The entry substitution is the highlighted P on the top left side of the diagram, that gets translated through a top to bottom lookup into a Z. The exit substitution is the highlighted P on the bottom right part of the diagram, that gets translated through a bottom to top lookup into a T.</div><div class="separator" style="clear: both;"><br /><div class="separator" style="clear: both;"><font face="courier"> 11 22 33 44 55 66 77 88 99 00</font></div><div class="separator" style="clear: both;"><font face="courier"> ab ab ab ab ab ab ab ab ab ab</font></div><div class="separator" style="clear: both;"><font face="courier">Plugged: Q<b>P</b> WY EX RC TV ZB UN IM JK OL top </font></div><div class="separator" style="clear: both;"><font face="courier">Uhr: 06 MZ KU XI YT <b>P</b>Q LO NJ BR VE CW bottom</font></div><div class="separator" style="clear: both;"><font face="courier"> 86 97 38 25 11 00 79 64 53 42</font></div><div class="separator" style="clear: both;"><font face="courier"> ba ba ba ba ba ba ba ba ba ba</font></div><div class="separator" style="clear: both;"><br /></div><div class="separator" style="clear: both;">Another thing to keep in mind is that the UHR does not see all the letters being encoded. </div><div class="separator" style="clear: both;"><br /></div><div class="separator" style="clear: both;">A->F (A is unplugged, F is unplugged, the UHR sees neither)</div><div class="separator" style="clear: both;">A->C (A is unplugged, C is plugged, the UHR sees only the exit path)</div><div class="separator" style="clear: both;">P->A (P is plugged, A is unplugged, the UHR only sees the entry path)</div><div class="separator" style="clear: both;">P->B (P is plugged, B is plugged, the UHR sees two signals, one as an entry, one as an exit)</div><div class="separator" style="clear: both;"><br /></div><div class="separator" style="clear: both;">Furthermore, in the P->Z translation and P->T translation, the UHR sees both as P, but in one case the correct translation is Z and in the other one is T.</div><div class="separator" style="clear: both;"><br /></div><div class="separator" style="clear: both;">So, the UHR is not in a position to monitor all the letters being encoded and a letter sometimes needs to be translated as an entry signal (top to bottom) and sometimes as an exit signal (bottom to top).</div><div class="separator" style="clear: both;"><br /></div><div class="separator" style="clear: both;">An initial solution was to have a state variable in the UHR device. The first signal would be translated as top to bottom. Then when the first signal is released, activating a second signal would get translated as a bottom to top. The enigma machine would then perform two plugboard queries when a key is pressed. The first query would return the top to bottom substitution and the result would get used to send it through the rotors. The second query would be performed just to keep the UHR in sync with the enigma, its result would not get used. The letter would then get sent through the rotors and it would come out as a different letter. The output letter would be queried through the plugboard again. The first query would be translated by the UHR as a top to bottom translation and it would get disregarded by the enigma logic. The enigma logic would then query the plugboard again and the UHR would perform a bottom to top translation. The enigma logic would use that result to illuminate the lampfield. This logic works but it tends to get lost if the UHR is changed while a key in the enigma is pressed.</div><div class="separator" style="clear: both;"><br /></div><div class="separator" style="clear: both;">Since the UHR is in no position to see all the encoded letters, it needs to return the top to bottom and bottom to top translations for a given letter. A better solution is described below.</div><div class="separator" style="clear: both;"><br /></div><div class="separator" style="clear: both;">When the Enigma activates a letter in the plugboard, the UHR first activates in response the result from the top to bottom lookup. This is noticed by the pluigboard reading logic in the enigma simulator. After a period of time, the UHR releases the first response, and activates the result corresponding to the bottom to top lookup. It is up to the enigma and plugboard logic to decide whether the first or the second result gets used. </div><div class="separator" style="clear: both;"><br /></div><div class="separator" style="clear: both;">The UHR code below performs the top to bottom lookup and activates that plug</div><div class="separator" style="clear: both;"><a href="https://gitlab.com/arduinoenigma/uhrswitch/-/blob/f7fb1f28f7faacedae17e7fc40b3acf43c855e46/UHRSwitchLogic.ino#L646" target="_blank">https://gitlab.com/arduinoenigma/uhrswitch/-/blob/f7fb1f28f7faacedae17e7fc40b3acf43c855e46/UHRSwitchLogic.ino#L646</a></div><div class="separator" style="clear: both;"><br /></div><div class="separator" style="clear: both;">The plugboard logic detects the first and second responses and returns the one value the enigma needs</div><div class="separator" style="clear: both;"><a href="https://gitlab.com/arduinoenigma/megaenigma/-/blob/20f4bbcc051580181b97d768031fe0ed09423120/Plugboard.ino#L611" target="_blank">https://gitlab.com/arduinoenigma/megaenigma/-/blob/20f4bbcc051580181b97d768031fe0ed09423120/Plugboard.ino#L611</a></div><div class="separator" style="clear: both;"><br /></div><div class="separator" style="clear: both;">The enigma logic requests the first value going into the rotors</div><div class="separator" style="clear: both;"><a href="https://gitlab.com/arduinoenigma/megaenigma/-/blob/bbe902d748014c24d7605e5435287188c0304309/Enigma.ino#L2452" target="_blank">https://gitlab.com/arduinoenigma/megaenigma/-/blob/bbe902d748014c24d7605e5435287188c0304309/Enigma.ino#L2452</a></div><div class="separator" style="clear: both;"><br /></div><div class="separator" style="clear: both;">And the second value when going out of the rotors and into the lampfield</div><div class="separator" style="clear: both;"><a href="https://gitlab.com/arduinoenigma/megaenigma/-/blob/bbe902d748014c24d7605e5435287188c0304309/Enigma.ino#L2610" target="_blank">https://gitlab.com/arduinoenigma/megaenigma/-/blob/bbe902d748014c24d7605e5435287188c0304309/Enigma.ino#L2610</a></div><div class="separator" style="clear: both;"> </div>And now it makes sense why the UhrBox-E kit included a replacement CPU for the Enigma-E. If an enigma simulator is developed first, all the subtleties of developing an external UHR switch are not going to be known before hand. A protocol and timing between the Enigma and the UHR needs to be developed. <br /><br /></div><div class="separator" style="clear: both;"><div class="separator" style="clear: both;"><a href="https://www.cryptomuseum.com/crypto/enigma/uhr/index.htm" target="_blank">https://www.cryptomuseum.com/crypto/enigma/uhr/index.htm</a></div></div><div class="separator" style="clear: both;"><br /></div><div class="separator" style="clear: both;"><a href="http://people.physik.hu-berlin.de/~palloks/js/enigma/enigma-u_v25_en.html" target="_blank">http://people.physik.hu-berlin.de/~palloks/js/enigma/enigma-u_v25_en.html</a></div></div><div class="separator" style="clear: both; text-align: left;"><br /></div>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-6508740933553308664.post-56417736180576039282020-05-20T16:47:00.005-07:002020-05-31T10:20:46.241-07:00The listing for NanoEnigma is live<div style="text-align: center;"><a href="https://1.bp.blogspot.com/-UlHYuffMWFM/XsXBdCfEwZI/AAAAAAAAOqs/8rQCUjDYsCcqdhf3O3P_yNVmbzaQzuP6wCK4BGAsYHg/20200517_135228.jpg"><img border="0" data-original-height="1836" data-original-width="3264" src="https://1.bp.blogspot.com/-UlHYuffMWFM/XsXBdCfEwZI/AAAAAAAAOqs/8rQCUjDYsCcqdhf3O3P_yNVmbzaQzuP6wCK4BGAsYHg/d/20200517_135228.jpg" /></a></div><div style="text-align: center;"><br /></div><div style="text-align: center;"><a href="https://www.ebay.com/itm/114230592101">https://www.ebay.com/itm/114230592101</a></div><div style="text-align: center;"><br /></div><div style="text-align: center;">----</div><div style="text-align: left;"><br /></div><div style="text-align: center;"><div style="text-align: left;">This is #NanoEnigma by @arduinoenigma, a simulation of the numbers-only Enigma Z30, a rare leaf in the Enigma Machine family tree. Similarly to their bigger cousins, this machine uses rotors and an ever changing maze of wires to encrypt numbers entered through keys labelled 0..9 into similarly labelled lamps.</div><div style="text-align: left;"><br /></div><div style="text-align: left;">The existence of the Enigma Z was first revealed by (Arturo Quirantes (2004) MODEL Z: A NUMBERS-ONLY ENIGMA VERSION, Cryptologia, 28:2, 153-156, DOI:10.1080/0161-110491892845).</div><div style="text-align: left;"><br /></div><div style="text-align: left;">More recently, three machines were discovered in Sweden and their wiring, including their rotors, reflector and entry rotor were recovered. (Anders Wik (2015): Enigma Z30 retrieved, Cryptologia, DOI:10.1080/01611194.2015.1055387)</div><div style="text-align: left;"><br /></div><div style="text-align: left;">Operation is similar to other enigma machines. The rotor order and starting position are the encryption key. Pressing a key first advances the rotors and then sends electricity through the rotors until the reflector is reached and then the current travels back through a separate set of wires in the rotor maze until it comes out and illuminates a lamp. Same as a real machine, the key must be held down for the lamp representing the encrypted result to be illuminated. Releasing the key turns off the lamp.</div><div style="text-align: left;"><br /></div><div style="text-align: left;">Pressing and holding the same key again moves the rotors and another lamp is illuminated. Decryption is achieved by setting the machine to the same starting position and typing the encrypted numbers, the decrypted numbers will be illuminated in the lamp field.</div><div style="text-align: left;"><br /></div><div style="text-align: left;">This simulator is an attempt at a reconstruction of a working machine, applying the rotor and reflector wiring recovered in the Wiks article to the way an Enigma Machine is known to operate. The rotors, by default step using a simulated lever mechanism that suffers of the double stepping anomaly. A geared stepping mechanism that works similarly to a car odometer is also implemented. </div><div style="text-align: left;"><br /></div><div style="text-align: left;">Since no surviving machine has been powered up, this simulation cannot be verified against an actual machine. The assumptions made in its development can be observed by searching for the project log titled "Using the Excel Paper Model to encrypt a message". This log shows how to use a paper model named "6502 ENIGMA Z ROTOR DEFINITIONS v3.xlsx". </div><div style="text-align: left;"><br /></div><div style="text-align: left;">This simulator is also compatible with another one written for the KIM Uno.</div><div style="text-align: left;"><br /></div><div style="text-align: left;">This simulator is powered by an Arduino Nano and its software can be modified. Its USB port is exposed. The source code for the firmware is available in Gitlab ("EnigmaZ30Simulator" Project ID: 12769524).</div><div style="text-align: left;"><br /></div><div style="text-align: left;">Power is supplied by one of three possible sources: 4 internal AAA batteries, an external 6-9V power source using a standard Arduino male barrel jack, or its USB connector.</div><div style="text-align: left;"><br /></div><div style="text-align: left;">The case is made from laser-cut 3mm Birch plywood.</div><div style="text-align: left;"><br /></div><div style="text-align: left;">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.</div><div style="text-align: left;"><br /></div><div style="text-align: left;">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.</div><div style="text-align: left;"><br /></div><div style="text-align: left;">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 anywhere in the world.</div><div style="text-align: left;"><br /></div><div style="text-align: left;">Lastly: A lot of care went into making this. Enjoy... </div></div>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-6508740933553308664.post-20249127935500741742020-05-18T23:18:00.006-07:002021-01-21T22:40:53.285-08:00A Picture of Four Different Enigma Machine Simulators<br /><div class="separator" style="clear: both; text-align: center;"><br /></div><div style="text-align: center;"><a href="https://1.bp.blogspot.com/-QaiKhMvwsLo/XsN6dDfk1LI/AAAAAAAAOqQ/QByXKSgsq5IRP7Cu5s7uRabE-G1rpkWSgCK4BGAsYHg/20200517_132112.jpg"><img border="0" data-original-height="1836" data-original-width="3264" height="360" src="https://1.bp.blogspot.com/-QaiKhMvwsLo/XsN6dDfk1LI/AAAAAAAAOqQ/QByXKSgsq5IRP7Cu5s7uRabE-G1rpkWSgCK4BGAsYHg/w640-h360/20200517_132112.jpg" width="640" /></a></div><div class="separator" style="clear: both; text-align: center;"><br /></div><div class="separator" style="clear: both; text-align: center;"><br /></div><div class="separator" style="clear: both; text-align: center;">From left to right:</div><div class="separator" style="clear: both; text-align: center;">-Original Enigma Uno: Enigma I, M3, M4, UHR Switch, Printer</div><div class="separator" style="clear: both; text-align: center;">-Nano Enigma: an Enigma Z30, a numbers only Enigma Machine.</div><div class="separator" style="clear: both; text-align: center;">-Mega Enigma: A full featured universal Enigma Machine Simulator.</div><div class="separator" style="clear: both; text-align: center;">-Pico Enigma: Same as Mega Enigma, minus the plugboard.</div><div class="separator" style="clear: both; text-align: center;"><br /></div><div class="separator" style="clear: both; text-align: center;">More information here: <a href="https://arduinoenigma.blogspot.com/p/enigma-machine-simulator.html">https://arduinoenigma.blogspot.com/p/enigma-machine-simulator.html</a></div><div class="separator" style="clear: both; text-align: center;"><br /></div>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-6508740933553308664.post-33362174473068722222020-05-10T10:11:00.000-07:002020-05-10T10:11:02.890-07:00The listing for Pico Enigma PE0002 is live.<div style="text-align: center;"><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-c_TowXfP0Fo/Xrg1bGulCHI/AAAAAAAAOlY/5aHGouDL1ls1RtBxfYlWNtI0PkkOTW0-ACK4BGAsYHg/20200510_125801.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="3264" data-original-width="1836" height="320" src="https://1.bp.blogspot.com/-c_TowXfP0Fo/Xrg1bGulCHI/AAAAAAAAOlY/5aHGouDL1ls1RtBxfYlWNtI0PkkOTW0-ACK4BGAsYHg/s320/20200510_125801.jpg" /></a></div><div style="text-align: center;"><br /></div><div style="text-align: center;">PicoEnigma PE0002:</div><div style="text-align: center;"><a href="https://www.ebay.com/itm/114219267074">https://www.ebay.com/itm/114219267074</a></div><div style="text-align: center;"><br /></div>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-6508740933553308664.post-88687016680322622222020-05-03T15:06:00.005-07:002020-05-10T10:18:22.649-07:00The Listing for PicoEnigma is live.<div class="separator" style="clear: both; text-align: center;">
<a href="https://1.bp.blogspot.com/-twB2RRwuwbU/Xq7mvo46sTI/AAAAAAAAOgY/WHvgass-6DQqWmF_C5vGd7riSBRM625zQCPcBGAYYCw/s1600/PicoEnigmaCropped.jpg" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1600" data-original-width="1113" height="320" src="https://1.bp.blogspot.com/-twB2RRwuwbU/Xq7mvo46sTI/AAAAAAAAOgY/WHvgass-6DQqWmF_C5vGd7riSBRM625zQCPcBGAYYCw/s320/PicoEnigmaCropped.jpg" width="222" /></a></div>
<div style="text-align: center;"><br /></div><div style="text-align: center;">Pico Enigma PE0001:</div>
<div style="text-align: center;"><a href="https://www.ebay.com/itm/114211353818">https://www.ebay.com/itm/114211353818</a></div>
<div style="text-align: center;"><br /></div>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-6508740933553308664.post-6190260520952329882020-05-03T08:47:00.004-07:002020-05-10T10:06:58.110-07:00eBay Listing for PicoEnigma<div class="separator" style="clear: both; text-align: center;">
<a href="https://1.bp.blogspot.com/-twB2RRwuwbU/Xq7mvo46sTI/AAAAAAAAOgU/PXKI_OjClI8520QiTYDhZFJ3mlWq-dYrACLcBGAsYHQ/s1600/PicoEnigmaCropped.jpg" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1600" data-original-width="1113" height="320" src="https://1.bp.blogspot.com/-twB2RRwuwbU/Xq7mvo46sTI/AAAAAAAAOgU/PXKI_OjClI8520QiTYDhZFJ3mlWq-dYrACLcBGAsYHQ/s320/PicoEnigmaCropped.jpg" width="222" /></a></div>
<br />
<br />
This is #PicoEnigma by @arduinoenigma. It is an Arduino based Universal Enigma Machine Simulator that's open source and hackable. It 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.<br />
<br />
The accuracy of this simulator has been verified against Daniel Palloks Universal Enigma v2.5.<br />
<br />
The list of machines emulated is as follows:<br />
<br />
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)<br />
<br />
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.<br />
<br />
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.<br />
<br />
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.<br />
<br />
The following 3 behaviors were implemented in this simulator for that extra physical realism. They were verified with an actual Enigma Machine.<br />
<br />
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.<br />
<br />
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.<br />
<br />
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.<br />
<br />
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.<br />
<br />
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.<br />
<br />
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.<br />
<br />
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.<br />
<br />
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.<br />
<br />
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.<br />
<br />
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.<div><br /></div><div>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. <br />
<br />
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.<br />
<br />
The case is made from laser-cut 3mm Birch plywood.<br />
<br />
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.<br />
<br />
What do you get:<br />
1x PicoEnigma S/N PE0001<br />
2x 9V Barrel Jack Power Plug<br />
2x 9V Batteries<br />
1x USB Cable<br />
<br />
Dimensions: 105mm x 95mm x 43mm<br />
Weight (empty / with internal 9v battery): 188g / 234g<br />
<br />
Menu Structure:<br />
<br />
AAAA<br />
MACH<br />
I--A<br />
I--B<br />
I--C<br />
M3-B<br />
M3-C<br />
M3-D<br />
M3D1<br />
M3D2<br />
M3D3<br />
M4-B<br />
M4-C<br />
N---<br />
S---<br />
D---<br />
K---<br />
R---<br />
T---<br />
KD-K<br />
A865<br />
G111<br />
G260<br />
G312<br />
UKWD<br />
bpAF<br />
udAV<br />
ROTR<br />
B321<br />
G843<br />
RING<br />
AAAA<br />
PLUG<br />
----<br />
1AB<br />
-UHR<br />
--00<br />
-V16<br />
(lampfield and keyboard selftest/lampfield brightness adjustment)<br />
<br />
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.<br />
<br />
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.<br />
<br />
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 anywhere in the world.<br />
<br />
Lastly: A lot of care went into making this. Enjoy...</div>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-6508740933553308664.post-30618717676689876482020-04-05T10:01:00.002-07:002020-04-05T10:01:37.050-07:00Setting Up MegaEnigma to decode the Rasch Message, a 1942 intercept by H.M.S Hurricane<div style="text-align: center;">
This is part of the documentation of MegaEnigma, a Universal Enigma Machine Simulator:</div>
<div style="text-align: center;">
<a href="https://arduinoenigma.blogspot.com/p/mega-enigma-machine-simulator.html">https://arduinoenigma.blogspot.com/p/mega-enigma-machine-simulator.html</a></div>
<div style="text-align: center;">
<br /></div>
<div style="text-align: center;">
In the following videos, the machine will be set up to decode a real U-Boar message, available here:</div>
<div style="text-align: center;">
<a href="https://enigma.hoerenberg.com/index.php?cat=M4%20Project%202006&page=Rasch%20Message" target="_blank">https://enigma.hoerenberg.com/index.php?cat=M4%20Project%202006&page=Rasch%20Message</a></div>
<div style="text-align: center;">
<br /></div>
<div style="text-align: center;">
MegaEnigma 1/8: All Menus and Brightness adjustment</div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<iframe width="320" height="266" class="YOUTUBE-iframe-video" data-thumbnail-src="https://i.ytimg.com/vi/yqhKDwJOr1c/0.jpg" src="https://www.youtube.com/embed/yqhKDwJOr1c?feature=player_embedded" frameborder="0" allowfullscreen></iframe></div>
<div style="text-align: center;">
<br /></div>
<div style="text-align: center;">
MegaEnigma 2/8: Selecting an Enigma Machine model.</div>
<div style="text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<iframe width="320" height="266" class="YOUTUBE-iframe-video" data-thumbnail-src="https://i.ytimg.com/vi/QV3So3v8kvA/0.jpg" src="https://www.youtube.com/embed/QV3So3v8kvA?feature=player_embedded" frameborder="0" allowfullscreen></iframe></div>
<div style="text-align: center;">
<br /></div>
<div style="text-align: center;">
MegaEnigma 3/8: Selecting the Rotors</div>
<div style="text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<iframe width="320" height="266" class="YOUTUBE-iframe-video" data-thumbnail-src="https://i.ytimg.com/vi/03xb4eBooWg/0.jpg" src="https://www.youtube.com/embed/03xb4eBooWg?feature=player_embedded" frameborder="0" allowfullscreen></iframe></div>
<div style="text-align: center;">
<br /></div>
<div style="text-align: center;">
MegaEnigma 4/8: Ring Settings</div>
<div style="text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<iframe width="320" height="266" class="YOUTUBE-iframe-video" data-thumbnail-src="https://i.ytimg.com/vi/Es0TArDI7MA/0.jpg" src="https://www.youtube.com/embed/Es0TArDI7MA?feature=player_embedded" frameborder="0" allowfullscreen></iframe></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
MegaEnigma 5/8: Viewing the installed plugs.</div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<iframe width="320" height="266" class="YOUTUBE-iframe-video" data-thumbnail-src="https://i.ytimg.com/vi/c_mS5Be_8e0/0.jpg" src="https://www.youtube.com/embed/c_mS5Be_8e0?feature=player_embedded" frameborder="0" allowfullscreen></iframe></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
MegaEnigma 6/8: Confirming All The Settings</div>
<div style="text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<iframe width="320" height="266" class="YOUTUBE-iframe-video" data-thumbnail-src="https://i.ytimg.com/vi/RY9wHE6O5fo/0.jpg" src="https://www.youtube.com/embed/RY9wHE6O5fo?feature=player_embedded" frameborder="0" allowfullscreen></iframe></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
MegaEnigma 7/8: Setting up the starting rotor position.</div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<iframe width="320" height="266" class="YOUTUBE-iframe-video" data-thumbnail-src="https://i.ytimg.com/vi/oCzljSWE2Y8/0.jpg" src="https://www.youtube.com/embed/oCzljSWE2Y8?feature=player_embedded" frameborder="0" allowfullscreen></iframe></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
MegaEnigma 8/8: Decoding the message (BOOT KLAR)</div>
<div class="separator" style="clear: both; text-align: center;">
<br /><iframe width="320" height="266" class="YOUTUBE-iframe-video" data-thumbnail-src="https://i.ytimg.com/vi/b3lbfGrlPiU/0.jpg" src="https://www.youtube.com/embed/b3lbfGrlPiU?feature=player_embedded" frameborder="0" allowfullscreen></iframe></div>
<div style="text-align: center;">
<br /></div>
<div style="text-align: center;">
Additional Menus:</div>
<div style="text-align: center;">
<br /></div>
<div style="text-align: center;">
MegaEnigma: UKWD, Software Plugs and UHR Switch</div>
<div style="text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<iframe width="320" height="266" class="YOUTUBE-iframe-video" data-thumbnail-src="https://i.ytimg.com/vi/vLaMlEC9Y_Q/0.jpg" src="https://www.youtube.com/embed/vLaMlEC9Y_Q?feature=player_embedded" frameborder="0" allowfullscreen></iframe></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
MegaEnigma: UKWD menu appears for machines that feature it.</div>
<div class="separator" style="clear: both; text-align: center;">
<br /><iframe width="320" height="266" class="YOUTUBE-iframe-video" data-thumbnail-src="https://i.ytimg.com/vi/kU0_pdIX3Ss/0.jpg" src="https://www.youtube.com/embed/kU0_pdIX3Ss?feature=player_embedded" frameborder="0" allowfullscreen></iframe></div>
<div style="text-align: center;">
<br /></div>
<div style="text-align: center;">
MegaEnigma: UKWD menu: Viewing plugs in UD and BP notation</div>
<div style="text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<iframe width="320" height="266" class="YOUTUBE-iframe-video" data-thumbnail-src="https://i.ytimg.com/vi/zQmIJLUilVU/0.jpg" src="https://www.youtube.com/embed/zQmIJLUilVU?feature=player_embedded" frameborder="0" allowfullscreen></iframe></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
MegaEnigma: UKWD menu: editing plugs</div>
<div class="separator" style="clear: both; text-align: center;">
<br /><iframe width="320" height="266" class="YOUTUBE-iframe-video" data-thumbnail-src="https://i.ytimg.com/vi/ldAl-U2HcFo/0.jpg" src="https://www.youtube.com/embed/ldAl-U2HcFo?feature=player_embedded" frameborder="0" allowfullscreen></iframe></div>
<div style="text-align: center;">
<br /></div>
Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-6508740933553308664.post-64747060589800064122020-03-28T14:19:00.001-07:002020-03-28T14:19:16.648-07:00Updated some pages:Created a project page for PicoEnigma:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://1.bp.blogspot.com/-4Dy5Ri4P3z0/Xn-3Hi9Z8SI/AAAAAAAAOJ8/kfrjxFVGmKQO1S-4XqdeRJ41wgbqZ0lBACPcBGAYYCw/s1600/picoenigma-assembledboard.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="783" data-original-width="640" height="320" src="https://1.bp.blogspot.com/-4Dy5Ri4P3z0/Xn-3Hi9Z8SI/AAAAAAAAOJ8/kfrjxFVGmKQO1S-4XqdeRJ41wgbqZ0lBACPcBGAYYCw/s320/picoenigma-assembledboard.jpg" width="261" /></a></div>
<br />
<a href="https://arduinoenigma.blogspot.com/p/picoenigma.html">https://arduinoenigma.blogspot.com/p/picoenigma.html</a><br />
<br />
<br />
Uploaded an EEPROM loader for the KIM Uno to Gitlab:<br />
<br />
<a href="https://gitlab.com/arduinoenigma/kimunoeepromloader">https://gitlab.com/arduinoenigma/kimunoeepromloader</a><br />
<br />Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-6508740933553308664.post-55834193146052189762020-03-17T23:29:00.003-07:002020-03-18T15:22:31.967-07:00Enigma UHR Switch Test VectorsWhile working on an Arduino based Uhr Switch to be externally attached to an Enigma Machine Simulator, the need to verify the correctness of the implementation arose.<br />
<a href="https://www.instagram.com/p/B9wicTznNrp/" target="_blank">https://www.instagram.com/p/B9wicTznNrp/</a><br />
<a href="https://www.instagram.com/explore/tags/megaenigma/" target="_blank">https://www.instagram.com/explore/tags/megaenigma/</a><br />
<br />
The UHR switch is described here:<br />
<a href="https://www.cryptomuseum.com/crypto/enigma/uhr/index.htm" target="_blank">https://www.cryptomuseum.com/crypto/enigma/uhr/index.htm</a><br />
<br />
A reference implementation can be found here:<br />
<a href="http://people.physik.hu-berlin.de/~palloks/js/enigma/enigma-u_v25_en.html" target="_blank">http://people.physik.hu-berlin.de/~palloks/js/enigma/enigma-u_v25_en.html</a><br />
<br />
Most likely nobody needs these, but here they are just in case:<br />
<br />
<span style="font-family: "courier new" , "courier" , monospace;">Enigma UHR Switch Test Vectors...</span><br />
<a name='more'></a><span style="font-family: "courier new" , "courier" , monospace;"><br /></span>
<span style="font-family: "courier new" , "courier" , monospace;">lower case strings come from Daniel Palloks Universal Enigma</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">http://people.physik.hu-berlin.de/~palloks/js/enigma/index_en.html</span><br />
<span style="font-family: "courier new" , "courier" , monospace;"><br /></span>
<span style="font-family: "courier new" , "courier" , monospace;">plug mappings are calculated by an Arduino sketch</span><br />
<span style="font-family: "courier new" , "courier" , monospace;"><br /></span>
<span style="font-family: "courier new" , "courier" , monospace;">Sample UHR strings calculated from plugs below</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">1a is letter A</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">1b is letter B</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">6a is letter K</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">6b is letter L</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">Letters UVWXYZ are not plugged</span><br />
<span style="font-family: "courier new" , "courier" , monospace;"><br /></span>
<span style="font-family: "courier new" , "courier" , monospace;">UHR 0 acts as normal plugs</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">UHR 4,8,12,etc are symmetrical substitutions</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">All other UHR values are asymmetric substitutions</span><br />
<span style="font-family: "courier new" , "courier" , monospace;"><br /></span>
<span style="font-family: "courier new" , "courier" , monospace;">letters like those on UHR:1 line 1 A->F N->E are hand verified</span><br />
<span style="font-family: "courier new" , "courier" , monospace;"><br /></span>
<span style="font-family: "courier new" , "courier" , monospace;">11 22 33 44 55 66 77 88 99 1010</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">ab ab ab ab ab ab ab ab ab a b</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">AB CD EF GH IJ KL MN OP QR S T</span><br />
<span style="font-family: "courier new" , "courier" , monospace;"><br /></span>
<span style="font-family: "courier new" , "courier" , monospace;">UHR:0</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">abcdefghijklmnopqrstuvwxyz</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">badcfehgjilknmporqtsuvwxyz</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">1a->1b 7b->7a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">2a->2b 1b->1a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">3a->3b 8b->8a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">4a->4b 6b->6a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">5a->5b 2b->2a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">6a->6b 9b->9a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">7a->7b 5b->5a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">8a->8b 3b->3a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">9a->9b 10b->10a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">10a->10b 4b->4a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;"><br /></span>
<span style="font-family: "courier new" , "courier" , monospace;">UHR:1</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">abcdefghijklmnopqrstuvwxyz</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">fohkrapgjcnqbetsdilmuvwxyz </span><br />
<span style="font-family: "courier new" , "courier" , monospace;">1a->3b 7b->3a A->F N->E</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">2a->4b 1b->8a C->H B->O</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">3a->9b 8b->10a E->R P->S</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">4a->8b 6b->9a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">5a->5b 2b->6a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">6a->7b 9b->5a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">7a->1b 5b->2a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">8a->10b 3b->1a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">9a->2b 10b->7a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">10a->6b 4b->4a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;"><br /></span>
<span style="font-family: "courier new" , "courier" , monospace;">UHR:2</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">abcdefghijklmnopqrstuvwxyz</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">nslajctergpihkbmdofquvwxyz</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">1a->7b 7b->6a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">2a->6b 1b->10a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">3a->5b 8b->7a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">4a->10b 6b->5a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">5a->9b 2b->1a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">6a->8b 9b->8a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">7a->4b 5b->4a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">8a->1b 3b->2a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">9a->2b 10b->9a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">10a->3b 4b->3a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;"><br /></span>
<span style="font-family: "courier new" , "courier" , monospace;">UHR:3</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">abcdefghijklmnopqrstuvwxyz</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">jkrohstadglqfinepcbmuvwxyz</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">1a->5b 7b->5a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">2a->9b 1b->6a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">3a->4b 8b->3a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">4a->10b 6b->9a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">5a->2b 2b->8a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">6a->6b 9b->2a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">7a->3b 5b->4a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">8a->7b 3b->10a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">9a->8b 10b->7a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">10a->1b 4b->1a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;"><br /></span>
<span style="font-family: "courier new" , "courier" , monospace;">UHR:4</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">abcdefghijklmnopqrstuvwxyz</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">lmjotqrkpchabsdifgneuvwxyz</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">1a->6b 7b->10a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">2a->5b 1b->7a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">3a->10b 8b->5a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">4a->9b 6b->1a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">5a->8b 2b->8a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">6a->4b 9b->4a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">7a->1b 5b->2a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">8a->2b 3b->9a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">9a->3b 10b->3a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">10a->7b 4b->6a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;"><br /></span>
<span style="font-family: "courier new" , "courier" , monospace;">UHR:5</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">abcdefghijklmnopqrstuvwxyz</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">tqdgbkrchsnifmlopajeuvwxyz</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">1a->10b 7b->7a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">2a->2b 1b->9a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">3a->1b 8b->8a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">4a->9b 6b->5a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">5a->4b 2b->4a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">6a->7b 9b->1a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">7a->3b 5b->10a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">8a->6b 3b->6a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">9a->8b 10b->3a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">10a->5b 4b->2a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;"><br /></span>
<span style="font-family: "courier new" , "courier" , monospace;">UHR:6</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">abcdefghijklmnopqrstuvwxyz</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">pkrmfodibatsnqlgjehcuvwxyz</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">1a->8b 7b->9a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">2a->9b 1b->6a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">3a->3b 8b->4a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">4a->2b 6b->10a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">5a->1b 2b->7a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">6a->10b 9b->3a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">7a->7b 5b->1a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">8a->6b 3b->8a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">9a->5b 10b->2a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">10a->4b 4b->5a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;"><br /></span>
<span style="font-family: "courier new" , "courier" , monospace;">UHR:7</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">abcdefghijklmnopqrstuvwxyz</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">dctafklgpqjmhibonersuvwxyz</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">1a->2b 7b->5a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">2a->10b 1b->2a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">3a->3b 8b->8a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">4a->6b 6b->7a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">5a->8b 2b->1a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">6a->5b 9b->3a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">7a->4b 5b->9a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">8a->1b 3b->6a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">9a->7b 10b->10a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">10a->9b 4b->4a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;"><br /></span>
<span style="font-family: "courier new" , "courier" , monospace;">UHR:8</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">abcdefghijklmnopqrstuvwxyz</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">rgfedcbqtonmlkjshapiuvwxyz</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">1a->9b 7b->6a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">2a->3b 1b->4a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">3a->2b 8b->10a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">4a->1b 6b->7a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">5a->10b 2b->3a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">6a->7b 9b->1a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">7a->6b 5b->8a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">8a->5b 3b->2a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">9a->4b 10b->5a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">10a->8b 4b->9a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;"><br /></span>
<span style="font-family: "courier new" , "courier" , monospace;">UHR:9</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">abcdefghijklmnopqrstuvwxyz</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">lmnsdctkhijepobgrqfauvwxyz</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">1a->6b 7b->8a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">2a->7b 1b->7a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">3a->2b 8b->4a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">4a->10b 6b->3a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">5a->4b 2b->10a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">6a->5b 9b->9a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">7a->8b 5b->5a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">8a->1b 3b->2a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">9a->9b 10b->1a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">10a->3b 4b->6a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;"><br /></span>
<span style="font-family: "courier new" , "courier" , monospace;">UHR:10</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">abcdefghijklmnopqrstuvwxyz</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">dejclanofmhkpirqtsbguvwxyz</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">1a->2b 7b->5a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">2a->5b 1b->3a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">3a->6b 8b->9a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">4a->7b 6b->6a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">5a->3b 2b->2a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">6a->4b 9b->10a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">7a->8b 5b->7a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">8a->9b 3b->1a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">9a->10b 10b->4a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">10a->1b 4b->8a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;"><br /></span>
<span style="font-family: "courier new" , "courier" , monospace;">UHR:11</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">abcdefghijklmnopqrstuvwxyz</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">fmjcpqbgritsnahkdoleuvwxyz</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">1a->3b 7b->1a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">2a->5b 1b->7a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">3a->8b 8b->6a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">4a->1b 6b->10a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">5a->9b 2b->2a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">6a->10b 9b->8a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">7a->7b 5b->5a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">8a->4b 3b->9a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">9a->2b 10b->3a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">10a->6b 4b->4a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;"><br /></span>
<span style="font-family: "courier new" , "courier" , monospace;">UHR:12</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">abcdefghijklmnopqrstuvwxyz</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">jqlsngfihapcretkbmdouvwxyz</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">1a->5b 7b->3a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">2a->6b 1b->9a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">3a->7b 8b->6a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">4a->3b 6b->2a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">5a->4b 2b->10a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">6a->8b 9b->7a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">7a->9b 5b->1a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">8a->10b 3b->4a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">9a->1b 10b->8a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">10a->2b 4b->5a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;"><br /></span>
<span style="font-family: "courier new" , "courier" , monospace;">UHR:13</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">abcdefghijklmnopqrstuvwxyz</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">helofstmrabqnkdcjgpiuvwxyz</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">1a->4b 7b->6a A->H N->K</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">2a->6b 1b->3a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">3a->3b 8b->2a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">4a->10b 6b->9a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">5a->9b 2b->8a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">6a->1b 9b->4a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">7a->7b 5b->1a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">8a->2b 3b->10a O->D F->S</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">9a->5b 10b->5a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">10a->8b 4b->7a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;"><br /></span>
<span style="font-family: "courier new" , "courier" , monospace;">UHR:14</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">abcdefghijklmnopqrstuvwxyz</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">ropqhejgtsbadcfinklmuvwxyz</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">1a->9b 7b->2a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">2a->8b 1b->8a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">3a->4b 8b->5a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">4a->5b 6b->1a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">5a->10b 2b->9a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">6a->1b 9b->6a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">7a->2b 5b->10a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">8a->3b 3b->3a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">9a->7b 10b->7a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">10a->6b 4b->4a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;"><br /></span>
<span style="font-family: "courier new" , "courier" , monospace;">UHR:15</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">abcdefghijklmnopqrstuvwxyz</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">ribmncdsfohatklqpgjeuvwxyz</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">1a->9b 7b->6a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">2a->1b 1b->5a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">3a->7b 8b->9a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">4a->2b 6b->1a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">5a->3b 2b->7a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">6a->4b 9b->4a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">7a->10b 5b->8a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">8a->6b 3b->2a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">9a->8b 10b->3a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">10a->5b 4b->10a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;"><br /></span>
<span style="font-family: "courier new" , "courier" , monospace;">UHR:16</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">abcdefghijklmnopqrstuvwxyz</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">pihkjmtcbedqfonalsrguvwxyz</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">1a->8b 7b->8a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">2a->4b 1b->5a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">3a->5b 8b->1a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">4a->10b 6b->9a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">5a->1b 2b->6a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">6a->2b 9b->10a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">7a->3b 5b->3a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">8a->7b 3b->7a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">9a->6b 10b->4a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">10a->9b 4b->2a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;"><br /></span>
<span style="font-family: "courier new" , "courier" , monospace;">UHR:17</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">abcdefghijklmnopqrstuvwxyz</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">pajefgdinqhmlcrobstkuvwxyz</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">1a->8b 7b->2a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">2a->5b 1b->1a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">3a->3b 8b->8a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">4a->2b 6b->7a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">5a->7b 2b->3a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">6a->4b 9b->10a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">7a->6b 5b->9a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">8a->9b 3b->4a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">9a->1b 10b->6a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">10a->10b 4b->5a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;"><br /></span>
<span style="font-family: "courier new" , "courier" , monospace;">UHR:18</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">abcdefghijklmnopqrstuvwxyz</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">bgtirkfanclojmhspqdeuvwxyz</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">1a->1b 7b->7a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">2a->10b 1b->4a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">3a->9b 8b->10a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">4a->3b 6b->8a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">5a->7b 2b->5a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">6a->6b 9b->9a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">7a->5b 5b->2a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">8a->4b 3b->6a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">9a->8b 10b->3a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">10a->2b 4b->1a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;"><br /></span>
<span style="font-family: "courier new" , "courier" , monospace;">UHR:19</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">abcdefghijklmnopqrstuvwxyz</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">nohelcjitafkpgbsrmdquvwxyz</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">1a->7b 7b->4a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">2a->4b 1b->8a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">3a->6b 8b->10a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">4a->5b 6b->6a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">5a->10b 2b->3a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">6a->3b 9b->7a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">7a->8b 5b->1a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">8a->1b 3b->2a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">9a->9b 10b->9a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">10a->2b 4b->5a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;"><br /></span>
<span style="font-family: "courier new" , "courier" , monospace;">UHR:20</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">abcdefghijklmnopqrstuvwxyz</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">tsrqfenmlkjihgpodcbauvwxyz</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">1a->10b 7b->4a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">2a->9b 1b->10a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">3a->3b 8b->8a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">4a->7b 6b->5a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">5a->6b 2b->9a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">6a->5b 9b->2a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">7a->4b 5b->6a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">8a->8b 3b->3a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">9a->2b 10b->1a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">10a->1b 4b->7a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;"><br /></span>
<span style="font-family: "courier new" , "courier" , monospace;">UHR:21</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">abcdefghijklmnopqrstuvwxyz</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">rmjqlihatepcdsnkfobguvwxyz</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">1a->9b 7b->10a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">2a->5b 1b->7a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">3a->6b 8b->6a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">4a->4b 6b->2a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">5a->10b 2b->9a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">6a->8b 9b->8a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">7a->2b 5b->3a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">8a->7b 3b->5a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">9a->3b 10b->4a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">10a->1b 4b->1a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;"><br /></span>
<span style="font-family: "courier new" , "courier" , monospace;">UHR:22</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">abcdefghijklmnopqrstuvwxyz</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">fqdojchkpirgtebmlansuvwxyz</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">1a->3b 7b->3a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">2a->2b 1b->9a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">3a->5b 8b->7a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">4a->4b 6b->4a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">5a->8b 2b->8a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">6a->9b 9b->1a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">7a->10b 5b->5a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">8a->1b 3b->2a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">9a->6b 10b->10a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">10a->7b 4b->6a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;"><br /></span>
<span style="font-family: "courier new" , "courier" , monospace;">UHR:23</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">abcdefghijklmnopqrstuvwxyz</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">tqpkrofejabcnmdilshguvwxyz</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">1a->10b 7b->7a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">2a->8b 1b->9a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">3a->9b 8b->5a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">4a->3b 6b->2a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">5a->5b 2b->6a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">6a->1b 9b->10a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">7a->7b 5b->1a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">8a->2b 3b->8a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">9a->6b 10b->4a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">10a->4b 4b->3a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;"><br /></span>
<span style="font-family: "courier new" , "courier" , monospace;">UHR:24</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">abcdefghijklmnopqrstuvwxyz</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">dmjahsperctobqlgnifkuvwxyz</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">1a->2b 7b->9a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">2a->5b 1b->7a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">3a->4b 8b->4a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">4a->8b 6b->8a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">5a->9b 2b->1a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">6a->10b 9b->5a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">7a->1b 5b->2a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">8a->6b 3b->10a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">9a->7b 10b->6a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">10a->3b 4b->3a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;"><br /></span>
<span style="font-family: "courier new" , "courier" , monospace;">UHR:25</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">abcdefghijklmnopqrstuvwxyz</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">ripmtefqbglohkjancdsuvwxyz</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">1a->9b 7b->6a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">2a->8b 1b->5a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">3a->10b 8b->1a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">4a->3b 6b->8a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">5a->1b 2b->7a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">6a->6b 9b->2a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">7a->4b 5b->4a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">8a->5b 3b->3a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">9a->7b 10b->10a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">10a->2b 4b->9a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;"><br /></span>
<span style="font-family: "courier new" , "courier" , monospace;">UHR:26</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">abcdefghijklmnopqrstuvwxyz</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">lkrstqbcdafmnopehgjiuvwxyz</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">1a->6b 7b->8a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">2a->9b 1b->6a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">3a->10b 8b->3a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">4a->1b 6b->7a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">5a->2b 2b->10a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">6a->3b 9b->4a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">7a->7b 5b->1a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">8a->8b 3b->9a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">9a->4b 10b->5a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">10a->5b 4b->2a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;"><br /></span>
<span style="font-family: "courier new" , "courier" , monospace;">UHR:27</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">abcdefghijklmnopqrstuvwxyz</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">bgdqjerknmhilopatsfcuvwxyz</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">1a->1b 7b->8a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">2a->2b 1b->4a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">3a->5b 8b->1a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">4a->9b 6b->5a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">5a->7b 2b->9a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">6a->4b 9b->10a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">7a->6b 5b->7a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">8a->8b 3b->3a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">9a->10b 10b->2a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">10a->3b 4b->6a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;"><br /></span>
<span style="font-family: "courier new" , "courier" , monospace;">UHR:28</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">abcdefghijklmnopqrstuvwxyz</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">retgbidofqnspkhmjalcuvwxyz</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">1a->9b 7b->6a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">2a->10b 1b->3a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">3a->1b 8b->7a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">4a->2b 6b->10a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">5a->3b 2b->4a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">6a->7b 9b->1a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">7a->8b 5b->9a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">8a->4b 3b->5a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">9a->5b 10b->2a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">10a->6b 4b->8a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;"><br /></span>
<span style="font-family: "courier new" , "courier" , monospace;">UHR:29</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">abcdefghijklmnopqrstuvwxyz</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">bsfajqnipctkrghmledouvwxyz</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">1a->1b 7b->4a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">2a->3b 1b->10a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">3a->5b 8b->7a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">4a->7b 6b->6a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">5a->8b 2b->1a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">6a->10b 9b->3a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">7a->9b 5b->2a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">8a->4b 3b->9a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">9a->6b 10b->8a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">10a->2b 4b->5a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;"><br /></span>
<span style="font-family: "courier new" , "courier" , monospace;">UHR:30</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">abcdefghijklmnopqrstuvwxyz</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">dcfenglmjohqbitkrspauvwxyz</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">1a->2b 7b->5a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">2a->3b 1b->2a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">3a->7b 8b->6a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">4a->6b 6b->9a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">5a->5b 2b->3a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">6a->4b 9b->10a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">7a->1b 5b->8a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">8a->10b 3b->4a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">9a->9b 10b->1a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">10a->8b 4b->7a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;"><br /></span>
<span style="font-family: "courier new" , "courier" , monospace;">UHR:31</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">abcdefghijklmnopqrstuvwxyz</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">lsrqdahmtcpobefgjkniuvwxyz</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">1a->6b 7b->3a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">2a->9b 1b->10a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">3a->2b 8b->4a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">4a->4b 6b->8a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">5a->10b 2b->9a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">6a->8b 9b->6a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">7a->1b 5b->2a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">8a->3b 3b->1a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">9a->5b 10b->5a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">10a->7b 4b->7a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;"><br /></span>
<span style="font-family: "courier new" , "courier" , monospace;">UHR:32</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">abcdefghijklmnopqrstuvwxyz</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">fknslajihgbetcrqpodmuvwxyz</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">1a->3b 7b->2a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">2a->7b 1b->6a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">3a->6b 8b->9a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">4a->5b 6b->3a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">5a->4b 2b->10a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">6a->1b 9b->8a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">7a->10b 5b->4a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">8a->9b 3b->1a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">9a->8b 10b->7a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">10a->2b 4b->5a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;"><br /></span>
<span style="font-family: "courier new" , "courier" , monospace;">UHR:33</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">abcdefghijklmnopqrstuvwxyz</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">jkrchmbefodstqpilanguvwxyz</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">1a->5b 7b->9a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">2a->9b 1b->6a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">3a->4b 8b->5a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">4a->1b 6b->10a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">5a->3b 2b->2a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">6a->2b 9b->1a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">7a->10b 5b->8a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">8a->8b 3b->7a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">9a->6b 10b->4a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">10a->7b 4b->3a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;"><br /></span>
<span style="font-family: "courier new" , "courier" , monospace;">UHR:34</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">abcdefghijklmnopqrstuvwxyz</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">jihqpsrgtencfadobmlkuvwxyz</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">1a->5b 7b->1a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">2a->4b 1b->5a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">3a->8b 8b->8a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">4a->9b 6b->2a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">5a->10b 2b->9a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">6a->7b 9b->7a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">7a->3b 5b->3a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">8a->2b 3b->10a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">9a->1b 10b->6a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">10a->6b 4b->4a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;"><br /></span>
<span style="font-family: "courier new" , "courier" , monospace;">UHR:35</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">abcdefghijklmnopqrstuvwxyz</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">delitgfcbsnojqrmhapkuvwxyz</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">1a->2b 7b->9a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">2a->6b 1b->3a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">3a->10b 8b->7a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">4a->3b 6b->8a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">5a->1b 2b->5a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">6a->7b 9b->1a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">7a->5b 5b->10a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">8a->9b 3b->4a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">9a->4b 10b->6a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">10a->8b 4b->2a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;"><br /></span>
<span style="font-family: "courier new" , "courier" , monospace;">UHR:36</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">abcdefghijklmnopqrstuvwxyz</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">hopmrktansfqdibclejguvwxyz</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">1a->4b 7b->5a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">2a->8b 1b->8a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">3a->9b 8b->2a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">4a->10b 6b->9a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">5a->7b 2b->7a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">6a->3b 9b->3a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">7a->2b 5b->10a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">8a->1b 3b->6a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">9a->6b 10b->4a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">10a->5b 4b->1a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;"><br /></span>
<span style="font-family: "courier new" , "courier" , monospace;">UHR:37</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">abcdefghijklmnopqrstuvwxyz</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">dgtsnejolkfabipqhmrcuvwxyz</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">1a->2b 7b->5a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">2a->10b 1b->4a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">3a->7b 8b->9a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">4a->5b 6b->1a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">5a->6b 2b->10a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">6a->3b 9b->7a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">7a->1b 5b->6a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">8a->8b 3b->3a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">9a->4b 10b->2a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">10a->9b 4b->8a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;"><br /></span>
<span style="font-family: "courier new" , "courier" , monospace;">UHR:38</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">abcdefghijklmnopqrstuvwxyz</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">tmbkdifshqjolgnapcreuvwxyz</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">1a->10b 7b->4a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">2a->1b 1b->7a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">3a->2b 8b->1a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">4a->3b 6b->8a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">5a->4b 2b->6a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">6a->5b 9b->2a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">7a->6b 5b->9a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">8a->7b 3b->5a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">9a->8b 10b->3a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">10a->9b 4b->10a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;"><br /></span>
<span style="font-family: "courier new" , "courier" , monospace;">UHR:39</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">abcdefghijklmnopqrstuvwxyz</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">pkfsjinohergdctmbqlauvwxyz</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">1a->8b 7b->2a A->P N->C</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">2a->3b 1b->6a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">3a->5b 8b->7a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">4a->7b 6b->4a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">5a->4b 2b->10a I->H D->S</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">6a->9b 9b->9a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">7a->2b 5b->3a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">8a->10b 3b->5a O->T F->I</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">9a->1b 10b->1a</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">10a->6b 4b->8a</span><br />
<div>
<br /></div>
Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-6508740933553308664.post-84271282218863179232020-03-13T23:13:00.000-07:002020-03-13T23:36:18.128-07:00Pure software debouncing of a noisy RE11 Rotary Encoder / Audio Digital Potentiometer without using external capacitors<div class="tr_bq">
Started working on en Enigma UHR switch. This needs a rotary encoder to simulate the original 40 position switch.</div>
<br />
<a href="https://www.cryptomuseum.com/crypto/enigma/uhr/index.htm" target="_blank">https://www.cryptomuseum.com/crypto/enigma/uhr/index.htm</a><br />
<br />
Jumped on eBay, searched for "ec11 encoder" and quickly decided on a 20 step rotary encoder. A few days later it showed up in the mail.<br />
<br />
From previous work on rotary encoders, I remembered they have a common pin, and two pins that produce a square wave that's out of phase. If the pins are read together they are supposed to return a sequence like 11->10->00->01. This is called Grey Code, where two successive states only differ by 1 bit.<br />
<br />
One side of the switch has 3 pins the other side 2. The two pins on one side get shorted together when the shaft is pushed. The three pins on the other side are the rotary encoder pins. The data sheet says that the center one is the common and the other two produce the out of phase square waves.<br />
<br />
Before wiring anything, I decided to test continuity with a meter. The two pins measure open at rest and continuity when the encoder shaft is pushed in. That was easy enough. The rotary encoder pins were a different story, nothing measured continuity, rotating it did not help, measuring resistance, the meter briefly jumped from open, but it never showed continuity. Thinking that this encoder must be bad, I measured another, but got the same result.<br />
<br />
Ok, time to wire them up to an Arduino and see what the pins are doing. The datasheet says to connect the outside pins to VCC using a 10k resistor and connect the middle pin to ground.<br />
<br />
Jumpers were soldered to the encoder leads. The center pin, in green was connected to ground. The left and right pins were connected directly to D12 and D11. The Atmel/Microchip ATmega 328p used in the Arduino Nano has internal pull-up resistors that are activated by setting a pin as input and then writing high to it.Reading the pin will then return 1 if not connected to anything, or 0 if connected to ground.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://1.bp.blogspot.com/-P5E1Ggalons/Xmxi931IJFI/AAAAAAAAODc/WB0ZilzWLS8-HXvO8UrwBgTWluasoPagACLcBGAsYHQ/s1600/RotaryEncoderTestWires.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="799" data-original-width="640" height="320" src="https://1.bp.blogspot.com/-P5E1Ggalons/Xmxi931IJFI/AAAAAAAAODc/WB0ZilzWLS8-HXvO8UrwBgTWluasoPagACLcBGAsYHQ/s320/RotaryEncoderTestWires.jpg" width="256" /></a></div>
<br />
The first step is to see what the pins are doing as seen by the Arduino. The code below uses the following fast pin library<br />
<a href="https://github.com/mikaelpatel/Arduino-GPIO" target="_blank">https://github.com/mikaelpatel/Arduino-GPIO</a><br />
<br />
<pre style="background: #f0f0f0; border: 1px dashed #cccccc; color: black; font-family: "arial"; font-size: 12px; height: auto; line-height: 20px; overflow: auto; text-align: left; width: 99%;"><code style="color: black; word-wrap: normal;"> #include "GPIO.h"
GPIO<BOARD::D11> PlugJ;
GPIO<BOARD::D12> PlugK;
GPIO<BOARD::D13> LAMP;
void allPlugsInput() /*xls*/
{
PlugJ.input();
PlugK.input();
PlugJ.high();
PlugK.high();
}
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
LAMP.low();
LAMP.output();
allPlugsInput();
}
void showrawpins()
{
byte EncA = PlugJ.read();
byte EncB = PlugK.read();
Serial.print(EncA);
Serial.println(EncB);
}
void flashD13()
{
static int lamptimer = 0;
lamptimer++;
if (lamptimer > 256)
{
LAMP.low();
}
else
{
LAMP.high();
}
}
void loop() {
// put your main code here, to run repeatedly:
flashD13();
showrawpins();
}
</code></pre>
<br />
This is the output from this code<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://1.bp.blogspot.com/-FlSGazoZJww/Xmxo5or9KoI/AAAAAAAAODo/Narzy5W3w7Mges9yrKNuO025qTDPpXeBACLcBGAsYHQ/s1600/RotaryEncoder11AtRest.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="460" data-original-width="438" height="320" src="https://1.bp.blogspot.com/-FlSGazoZJww/Xmxo5or9KoI/AAAAAAAAODo/Narzy5W3w7Mges9yrKNuO025qTDPpXeBACLcBGAsYHQ/s320/RotaryEncoder11AtRest.JPG" width="304" /></a></div>
<br />
This encoder is always outputting 11, turn the shaft and some digits change, but it always returns to 11.<br />
<br />
Scrolling up, we see that the pins change when turned.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://1.bp.blogspot.com/-3Ap25ElY3YM/XmxpobkPdfI/AAAAAAAAODw/FmpN8oXWWvEBEwAkAHXNRMjRIATC0MFGgCLcBGAsYHQ/s1600/RotaryEncoderRawChanges.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="460" data-original-width="438" height="320" src="https://1.bp.blogspot.com/-3Ap25ElY3YM/XmxpobkPdfI/AAAAAAAAODw/FmpN8oXWWvEBEwAkAHXNRMjRIATC0MFGgCLcBGAsYHQ/s320/RotaryEncoderRawChanges.JPG" width="304" /></a></div>
<br />
Let's add some code to filter out the at-rest 11 state and see whats going on more clearly.<br />
<br />
When the input pins are not showing 11, this function prints their values. When the pins return to 11, it prints "done" once and goes back to listening for a change.<br />
<br />
<pre style="background: #f0f0f0; border: 1px dashed #cccccc; color: black; font-family: "arial"; font-size: 12px; height: auto; line-height: 20px; overflow: auto; text-align: left; width: 99%;"><code style="color: black; word-wrap: normal;"> void showrawenc()
{
byte EncA = PlugJ.read();
byte EncB = PlugK.read();
static byte changing = 0;
if (EncA + EncB != 2)
{
Serial.print(EncA);
Serial.println(EncB);
changing = 1;
}
else
{
if (changing == 1)
{
Serial.println(F("done"));
changing = 0;
}
}
}
</code></pre>
<br />
Here is the output from calling this function in loop()<br />
<br />
The encoder is being turned clockwise (CW)<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://1.bp.blogspot.com/--n8NEatr7Y4/XmxramZrnJI/AAAAAAAAOD8/5XqHTZXZaHYbkjhFhxsHAZb8rGR2F2xKwCLcBGAsYHQ/s1600/RotaryEncoderSemiFilteredEncoder.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="559" data-original-width="438" height="320" src="https://1.bp.blogspot.com/--n8NEatr7Y4/XmxramZrnJI/AAAAAAAAOD8/5XqHTZXZaHYbkjhFhxsHAZb8rGR2F2xKwCLcBGAsYHQ/s320/RotaryEncoderSemiFilteredEncoder.JPG" width="250" /></a></div>
<br />
And here we see the encoder being turned counter-clockwise (CCW)<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://1.bp.blogspot.com/-Qwvm_JR8xWs/XmxsamW22AI/AAAAAAAAOEE/Fgj833wmKwoeXM_Jpo_frtqgkllN61MhQCLcBGAsYHQ/s1600/RotaryEncoderSemiFilteredEncoder-CCW.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="559" data-original-width="438" height="320" src="https://1.bp.blogspot.com/-Qwvm_JR8xWs/XmxsamW22AI/AAAAAAAAOEE/Fgj833wmKwoeXM_Jpo_frtqgkllN61MhQCLcBGAsYHQ/s320/RotaryEncoderSemiFilteredEncoder-CCW.JPG" width="250" /></a></div>
<br />
Now, a pattern begins to emerge.<br />
<br />
This encoder is always outputting 11, when turned clockwise, it starts emitting a lot of 10, followed by a single 00, before returning to 11<br />
<br />
When turned counterclockwise, it starts with 01, then 00, then 11.<br />
<br />
Turning the shaft rapidly shortens the initial repeat pulses, but most of the time it keeps the 00, followed by 11.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://1.bp.blogspot.com/-cXnkmv306hM/Xmxtcz3PAmI/AAAAAAAAOEQ/QabS9MwKKjQX6WfoTFTEv2mbZMEpoU7HwCLcBGAsYHQ/s1600/RotaryEncoderSemiFilteredEncoder-Fast-CW.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="559" data-original-width="438" height="320" src="https://1.bp.blogspot.com/-cXnkmv306hM/Xmxtcz3PAmI/AAAAAAAAOEQ/QabS9MwKKjQX6WfoTFTEv2mbZMEpoU7HwCLcBGAsYHQ/s320/RotaryEncoderSemiFilteredEncoder-Fast-CW.JPG" width="250" /></a></div>
<br />
We need a function that looks for an initial 10 after 11, disregarding any other values until 11 is returned again. Report a single clockwise event. If an initial 01 is read after 11, disregard any other values until 11 is returned again. Report a single counter-clockwise event.<br />
<br />
To keep this short, here is the final debounced routine.<br />
<br />
It reads the encoder pins either one at a time using the read() function or both at the same time accessing PINB.<br />
<br />
It sits in state 0, disregarding input 11 until that changes. If the first value is 10 it sets the direction to 1 and jumps to state 1. If the first value is 01, it sets the direction to -1 and jumps to state 1. In the meantime, the function is constantly returning 0. A direction cannot be reliably detected until a 00 value is read in state 1, the direction value is returned once and cleared out. When a 11 is read, the function jumps to state 0, and re-arms itself to look for the initial direction value.<br />
<br />
<pre style="background: #f0f0f0; border: 1px dashed #cccccc; color: black; font-family: "arial"; font-size: 12px; height: auto; line-height: 20px; overflow: auto; text-align: left; width: 99%;"><code style="color: black; word-wrap: normal;"> //debounced rotary encoder logic
signed char rotaryencoder()
{
static byte state = 0;
static signed char dir = 0;
signed char v = 0;
//read pins one at a time
//byte EncA = PlugJ.read(); //EncA must be input() and high()
//byte EncB = PlugK.read(); //EncB must be input() and high(), connect C to ground
byte ENC = PINB; //read both pins at a time
byte EncA = (ENC & 0x08) >> 3; // isolate bit (&) 0x08 = D11 and shift right to turn into 1 or 0
byte EncB = (ENC & 0x10) >> 4; // 0x10 = D12
switch (state)
{
case 0:
{
if (EncA + EncB != 2) // at rest encoder outputs 11
{
if (EncA == 1) // followed by many 10 when turning right
{
dir = 1;
state = 1; // detect the rising edge and then wait until it goes 00 then back to 11
}
if (EncB == 1) // followed by many 01 when turning left
{
dir = -1;
state = 1;
} // if output is 00, we missed 01 or 00, stay in this state
}
break;
}
case 1:
{
// once we react to the first 01 or 10, many more, followed by 00 will follow
if (EncA + EncB == 0) // after initial 10 or 01, we must have a 00 to confirm it was valid
{
v = dir;
dir = 0;
}
if (EncA + EncB == 2) // once we see 11 again, the encoder is idle, go back to detecting a change
{
state = 0;
}
}
}
return v;
}
</code></pre>
<br />
This function represents several improvements over its initial implementation. The first improvement was to add logic to stay in state 0 if 00 was the first value read after 11. This worked fine when turning the shaft slowly. Turning the shaft quickly resulted in the routine reporting the opposite direction sometimes.<br />
<br />
These missed events were further filtered out with the second improvement, looking for a 00 value in state 1. A good turning event is as follows 11->01->00->11<br />
<br />
The routine as shown above is very stable and correctly reports slow or fast turns in either direction without using any external filtering components such as resistors or capacitors or combinations thereof.<br />
<br />
The main loop is as follows:<br />
<br />
<pre style="background: #f0f0f0; border: 1px dashed #cccccc; color: black; font-family: "arial"; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"><code style="color: black; word-wrap: normal;"> void loop() {
// put your main code here, to run repeatedly:
flashD13();
//showrawpins();
//showrawenc();
static byte uhr = 0;
signed char v = rotaryencoder();
uhr += v;
if (v != 0)
{
Serial.println(uhr);
}
}
</code></pre>
<br />
Here is an example of the encoder being rotated very fast in a clockwise direction. There is a single mis-read event at the 10-11 mark, but it will be masked by successive events, the user should not notice as the end value (18) is significantly higher than the initial value of 1. Turning the knob slowly produces corrects results all the time. Reading noisy rotary encoders is tricky, but the polling code shown above does a fairly good job of counting valid events while disregarding noise that could result in the encoder being read as being turned in the opposite direction.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://1.bp.blogspot.com/-yIZhNhT6pQo/XmxyvRgxa-I/AAAAAAAAOEc/bWxFw8lTmX0IJ54m1fYPRUIE9w5rM6hJwCLcBGAsYHQ/s1600/RotaryEncoderTurnedVeryFast-CW.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="559" data-original-width="438" height="320" src="https://1.bp.blogspot.com/-yIZhNhT6pQo/XmxyvRgxa-I/AAAAAAAAOEc/bWxFw8lTmX0IJ54m1fYPRUIE9w5rM6hJwCLcBGAsYHQ/s320/RotaryEncoderTurnedVeryFast-CW.JPG" width="250" /></a></div>
<br />
Some closing notes:<br />
<br />
Before introducing complexity in your designs, in the form of external components or complicated code, first try to understand the component you are working with. Observe its raw output, then write code to handle most of the cases. Finally, refine the code by adding more cases until it works with an acceptable percentage of reliability.<br />
<br />
Use your internal pull up resistors. Configuring a pin as input and writing high to it, enables internal pull up resistors. This simplifies the external circuitry.<br />
<br />
The above code implements a state machine to turn the following inputs 11->01->noise->00->noise->11 into a single valid turning event in a simple polling routine without using an interrupt service routine (ISR). The code can be expanded to keep track of multiple rotary encoders by changing the way the state variable is stored, but that is left as an exercise to the reader ;)<br />
<br />
<br />Unknownnoreply@blogger.com0