Turing-Welchman Bombe update.

June 24th, 2015

A quick update on my Bombe project. I am too lazy to write it all up in detail so here is a film!

I had sent links to the previous update to the various geek sites but no one was interested I guess. Not geeky enough? Even with a Raspberry Pi, an Arduino AND a homemade 6502 computer? Perhaps I need to mention 3D printing more although I am going to be construction my Bombe from good, honest steel!

Anyway, for those who are interested (hopefully you’re both sitting comfortably!) I am making good progress. I have the code running on the Pi now. Porting it from my laptop was simple as I had deliberately made the code as portable as possible. It’s in very simple C++. Interestingly, running flat out, a run of the BP weather report menu takes 11 seconds on my laptop. On the Pi2 it only takes 22 seconds. I am impressed by that! If I can ever get it running again I would like to try it on the Original Pi model B to compare the speed.

Never having used a Pi before (well, as anything but a media player!) it took a little bit of fiddling but in the end I got the GPIO pins working using the WiringPi library. This is very simple to use. I can see why the Pi is taking off as an educational computer. It’s really very powerful and quite easy to use and there is a ton of information and tutorials about. Trying to get wireless working on Linux, well, that’s another story so I am on a cable for now.

I have the Pi connected to the Arduino directly. You have to be a bit careful here. The Pi works on 3.3 volt logic while the Arduino is using 5 volts. Since I am only connecting to inputs on the Arduino I can actually get away with feeding the Pi outputs directly into the Arduino inputs. This is a bit dangerous. If you get it wrong and the Arduino feeds 5 volts into the Pi bad things could happen! In my real version I will use some kind of buffering/level shifting between them.

The Pi controls 2 lines on the Arduino. One tells the Arduino to increment the fast drum one letter. The second tells it to stop. The stop signal is to simulate the real Bombe stops where the fast drum actually rotates past the stop then has to come back around into position. One thing I had to do was tune the speed of the steppers with the step pulse from the Pi. In order for the motion of the drum to be as smooth as possible you want each movement of the stepper to take almost the same amount of time as the time between the pulses. If the motor runs too fast then it will move then stop until the next step. That makes it’s motion very jerky. With the time of the step being just fractionally shorter than the time between pulses that stop time is minimised and the motor motion is much smoother.

I also decided to use an LCD display on my Bombe as the test register indicator (which is on the right hand side of the real Bombe). You can see a picture of the indicator unit on this page: http://www.rutherfordjournal.org/article030108.html That one is mechanical, a bank of relays popping up a pin or a needle to indicate the letters.

I ordered a 40 by 2 line LCD display off eBay so I can display the letters of the alphabet on one line with the indicators below. For now I am using a 20 by 4 line display for testing as that’s what I had in the junk box. The wiringPi library has an LCD library built in so that was also very simple to get working.

I need to do a little more playing then I can make a nice board for the circuit. It’s fairly simple so I will just use Vero board. I might use an Arduino Pro mini as I think I got extra when I build my Enigma machine wrist watch. One thing I do need to work out is resetting the Arduino at the start of  a run. Currently I just do this manually but I will control that from the Pi also. I will also need to simulate the lever on the side of the Bombe that is part of the start/stop procedure.

The trickiest thing will be how to actually choose the menu to run. The Pi will just be used in the desktop Bombe machine. So I need to work out how to boot it up and only run that. But then I need a way to load in the menu file. I think the way I will do it is to have the menu on an SD card and the machine just reads it off there. I think one way to add a second SD card slot is with one of those USB SD card readers. I have a feeling that will all just work. The other option is using the SPI interface on the Pi to read a card directly but I think the USB option will be much easier! Will need to do some experimenting there.

The other thing I must decide is do I want a bank of 26 switches down the side to select the input letter voltage. I would need some circuitry to work out which switch (or switches, theoretically my code should handle multiple inputs!) is currently on. It seems odd to have all the menu setup on an SD card except for that one input voltage setting. So I could just have the switches and not wire them into anything! But then why have them apart from for looks? I’ll decide when I start building the housing. I think if there is room I will have them!

Comments are closed.