For something that has been around since the 1930s and is so foundational to computer science, you’d think that the Turing machine, an abstraction for mechanical computation, would be easily understood. Making the abstract concepts easy to understand is what this Turing machine demonstrator aims to do.
The TMD-1 is a project that’s something of a departure from [Michael Gardi]’s usual fare, which has mostly been carefully crafted recreations of artifacts from the early days of computer history, like the Minivac 601 trainer and the DEC H-500 computer lab. The TMD-1 is, rather, a device that makes the principles of a Turing machine more concrete. To represent the concept of the “tape”, [Mike] used eight servo-controlled flip tiles. The “head” of the machine conceptually moves along the tape, its current position indicated by a lighted arrow while reading the status of the cell above it by polling the position of the servo.
Below the tape and head panel is the finite state machine through which the TMD-1 is programmed. [Mike] limited the machine to three states and four transitions three symbols, each of which is programmed by placing 3D-printed tiles on a matrix. Magnets were inserted into cavities during printing; Hall Effect sensors in the PCB below the matrix read the pattern of magnets to determine which tiles are where. The video below shows the TMD-1 counting from 0 to 10, which is enough to demonstrate the basics of Turing machines.
It’s hard not to comment on the irony of a Turing machine being run by an Arduino, but given that [Mike]’s goal was to make abstract concepts easy to understand, it makes perfect sense to leverage the platform rather than try to do this with discrete logic. And you can’t argue with results — TMD-1 made Turing machines clear to us for the first time.
Neat :D
I actually wanted to point out the error in the link description, but it actually is turNing its digits :D
I like it. I don’t have engineering or IT background or even talent for maths so every tool that helps to understand will get my instant upvote :)
Sweet! I would love a smaller and/or more capable version of that as a desk toy!
Touring-machines is my go-to way of starting to explaining how computers work to children, as they can quickly grasp the “when we stand here, we do this” way of functioning, instead of the comparatively abstract flow of an actual computer-program(Mainly because of the practically infinite number of states) and even then, it doesn’t explain how the program is executed in the CPU, which is usually what the question is about.
Interesting. Describe “more capable”.
I was imagining one with more states and/or an expanded alphabet, to allow a bit more creativity with how you “write” a program.
After reading up a bit on how it’s made i realize that it might not be as simple to expand as i thought with the hall-effect sensors (Quickly doubling the already pretty high amount of sensors) , and i can’t immediately come up with a better solution that would distinguish 4 or even 8 different blocks, My first thought was NFC, but that an other wireless solutions won’t really work unless it is very short range, since the blocks are very close when put in the machine…
My only viable solution would be to place 2 electrodes on each block with a resistor in it, and then reading the resistance, but that makes block-production pretty complicated compared to just placing a magnet or 2 in them, and i’m not sure how reliable it would be
Thanks for the thoughtful post. As you correctly surmised, scaling up the Hall Effect/magnets scheme is problematic. Even a 4-state / 4 -symbol machine would involve some 88 sensors. Costly in terms of both dollars and wiring complexity. The 3-state / 3-symbol machine hits kind of the sweet spot for this scheme.
I think that your electrodes/resistor idea could be made to work but worry about the mechanical connections.
I love messing around with TMD-1. The tile interface is fun. There is enough there for educational purposes but I too am wanting more. One thought that I have is to use OCR. Mount a camera above the Finite State Machine matrix and process the resulting image. I have some experience with Tesseract, the Google OCR, engine so I am thinking about doing some testing with this scheme.
I want one. Also, I wonder what sort of busy beavers can be made with this…
The video also makes me wonder, what happens if you forget to put in a Halt state? Will it just go forever and have to be unplugged to stop? What if you shuffle cubes during execution?
Great questions! TMG-1 can do 1-state (trivial write a 1 then halt), 2-state, and 3-state busy beavers. One of the videos in the project blog is showing the 3-state busy beaver in action. You can easily write “programs” that will run forever. You can stop a program by pressing the Reset button (or unplugging of course ;-) If you shuffle the tiles while executing a program nothing will happen. The position of the tiles is only loaded into memory when the machine powers on or the Reset button is pressed. Thanks for the interest.
Nice!
I feel like it needs a relay though.
It could just be a single, loud relay inside that the Arduino clicks in various patterns to give the impression of a relay based computer.
Good idea. Not sure about an actual relay but sound effects would be really cool.