Gizmo - Rock, Paper, Scissors!
Gizmo combines the approaches of physical computing and mechatronics. The module takes an active learning approach, with most of the real work happening in the workshops and programming and interacting with your peers and tutors.
The aim of Gizmo was to individually design, build, and demonstrate an electro-mechanical machine that uses machine elements, sensors, actuators, and code, to perform an iterative interaction. There was no specific task this machine had to fulfil other than it had to be playful, joyful, whimsical, devious, or absurd.
The Final Product
The final design reached was an interactive machine that played rock paper scissors against a human opponent. The Gizmo deployed a random gesture every time it played the game, allowing the human a chance to beat the machine.
To play, the user presses the green button, and the three LED lights give the user a countdown; red - orange - green. Then the hand would move and after the user says "Rock, Paper, Scissors", it deploys a random gesture.
Close up of Gizmo
Demonstration of hand movement
Four bar linkage
Four bar linkage
The inspiration on using a four-bar came from an oil rig, and with some calculations, the end result worked perfectly. The movement of the “hand” was accomplished through a four-bar linkage. Since the motion is repetitive, a 12 volt DC motor spun one direction, allowing the four-bar linkage to move up and down in a simple motion as seen in the video.
In order to keep the aluminium strips bent as if they were fingers, a thin piece of fishing wire was attached to the end of the finger and glued on to a bolt. The index finger and the middle finger were connected to one bolt, and the pinkie, the ring finger, and the thumb were all connected to another bolt.
Both of these two bolts were held back by two different servos, so when the machine wanted to gesture scissors, only the left servo deployed, and for paper, both servos deployed.
Finger design with servos
The code was written in C++ using the Arduino software. The code generates a random variable from one to three, representing the three different gestures that can be made by the machine. A lot of precision delays were written so that when the user says "Shoot", the Gizmo has deployed at that exact time.
Code on C++
The final design ran using an Arduino. Since the arm was powered by a 12-volt motor, the board had to have a step-down power supply converter that would be able to take in 12 volts and output 5 volts to run the Arduino. Another component used in the circuit was the Motor Driver, which was used to run and stop the motor when necessary.
The other components on the board included the three LED lights and two buttons that had to be controlled with a 1k ohm resistor.