The Oracle

Project Overview

A Project by Sari Langholt, Kari VanPelt, Martin Flores

Our group project centered around the concept of a machine feeling alive. We refined it to a mechanical Ouija board, where a user would talk to it via a laptop, and it would respond by typing our an answer on a typewriter. We mainly wanted a level of “spookiness” to resonate throughout our final project.


Process

We started our project by brainstorming ideas. The concept around a machine that felt alive came about and evolved into a mechanical Ouija board. With refinement, it evolved into an oracle with a similar vibe to a Zoltar machine. (Above: Initial sketch of our model. There were other diagrams, but our first draft was closest to our final execution.)

With a concept chosen, we made several diagrams and flowcharts describing feasible workflows.


Typewriter

Without a typewriter, we would have to try a new concept. Ebay had several for sale, but relatively expensive. Going to the thrift store, we managed to snag a used one!

Unfortunately, our typewriter was broken. After taking it apart, cleaning up the dust, applying liberal amounts of industrial lubrication, buying a new ink ribbon, and installing it, our machine was back in action.

Gallery above: We opened up the electric typewriter to see what was wrong with it. As alternates, we also had a Speak-n-Spell toy and a Smith Corona typewriter.


Software & Programming

While repairing the typewriter, we had concurrently experimented with software and programming.

We tested out ChatGPT’s capabilities in giving answers as an Oracle and Ouija board. Even testing it’s capabilities at making ASCII-based answers.

We created a Python script with the help of a friend (Thanks, Tyler!) that was able to use ChatGPT’s API to create a chat bot that would answer questions in the character of an Oracle.

The python script would output a chatlog in the form of a TXT file.

The TXT file was plugged into a GrassHopper definition that would sort through the question and answers and pull out the latest answer.

The characters were given coordinates to match with a keyboard layout we had made of the typewriter.

The GrassHopper definition would spit out Gcode, which we would feed into Pronterface, and activate our Oracle machine. Our Gcode had listed 3 lines of code per text character:

  1. Hover over the next character in a sequence.
  2. Go down in the Z to the determined amount (the keyboard was at an angle, so different rows had different Z distances.)
  3. Come back up to our predetermined safe Z-distance.

We had to append our Gcode to add a before-and-after Homing state and allow our machine to press the “Return” key to start a new line.

We wanted to include a chat bot interface (seen above) but due to time being a limited resource, we weren’t able to.


Hardware

Our main component was a cage/case for the typewriter unit, which included motors that gave us access to XY dimensions. This was sourced from a previous class.

We had to combine an extruder motor system to operate on the Z-Axis as a way to push the buttons. We also noticed that our Arduino board wasn’t working, so we had to swap out that and a power source from another printer we found in the classroom. There was a fair amount of tinkering at this point: creating an L-bracket for the Z-Axis motor, printing and installing a new extruder piece to stay on the rail (keeps the motor from rotating the bolt), creating a screw tap for the hand to fit onto the bolt.

We experimented with hand models, and landed on a stiff model, that allowed for a rigid press of the buttons.

(Above) Our hand was printed in two pieces to print faster. We glued them together once finished.


Combining Everything!

After lots of support (Thank you, Ryan and Alan!!!!!!!) We were able to create a working system.


Files

Google drive: https://drive.google.com/drive/folders/16OSYMrmF6y5mFHzgcdumZ0Fipl6Ok_mH?usp=drive_link