What is a Turing Machine?

A Turing machine is an abstract mathematical model of computation introduced by Alan Turing in 1936. It consists of an infinite tape, a read/write head, and a set of rules, allowing it to manipulate symbols on the tape, making it a foundational concept in the theory of computation.

It operates by reading a symbol from its tape, transitioning to a new state based on predefined rules, writing a symbol on the tape, and moving the tape head left or right. This iterative process continues until the machine reaches a halting state, representing the completion of a computation.

We can perform computations like accepting a string that is a palindrome, or one that contains an even number of 0s and 1s. We can also perform more complex operations like incrementation, addition, and subtraction.

Our Inspiration

similar project turing machine

We were inspired by the idea of theoretical Turing Machines and thought that "Why not just make a real one?"

So, we got on the web and researched until we stumbled upon a similar project (image above) implemented by Mike Davey more than 10 years ago, and we decided that this is what we wanted to re-create! (but with our own customizations and low-cost)

Our Goals

We had a simple objective: Make a cool electromechanical Turing Machine while learning new stuff and enhancing our skills as a productive team!

In detail, we also wanted to develop this while having a tight budget (less than $250) and devise creative ways to utilize parts, sensors, etc. available to us effectively. This made us consider working substitutes for sensors, parts and microcontrollers (such as using an ESP32CAM for symbol recognition! - took a lot of struggle). We also focused on implementing a machine capable of mostly simple computations (like accepting a string of certain format - palindromes, even 0’s even 1’s, etc. or operations like increment, addition, etc.).

Project Overview

Here, we present a high-level schematic for the integration and functionality of our sub-systems in the machine:

system diagram

This implementation of a physical Turing Machine requires several subsystems in order to function. Notable systems include tape/film actuation, writing, erasing, and symbol recognition. These systems all have complex mechanical, electrical, and software components that work together within the integrated system. The tape/film actuation, writing, and erasing are all closely related and are controlled by one microcontroller while symbol recognition is controlled by a second microcontroller. Communication between these microcontrollers, along with a computer, allows for the Turing Machine to properly function.

Team Photo

team photo