I want to share my latest project with you today. This project was the brain child of a friend of mine, Chris McInnis, owner of Über Cool Stuff, and all-round super geek. (http://www.ubercoolstuff.com/) He, being a huge fan of the video game Katamari, wanted to build a real life version for a local festival here in London, Ontario known as Nuit Blanche.
In the game, you play a character that must roll around a sticky little ball that picks up all kinds of objects that causes the ball to grow larger and larger. The idea for this project was to create a large ball (36 inches in diameter) that a user could roll in place and control the game that was being projected onto the side of a building. So, essentially, we needed to create a giant trackball that would be interfaced to a controller of a Sony Playstation 2.
As you might guess, this took quite a bit of research to figure out. Right away we found someone who had already created this setup and was kind enough to post most of the details on her site. (http://www.kellbot.com/2009/05/life-size-katamari-lives/ ) Kelly had created a working version that we just needed to recreate.
The plan was to create a platform that would allow a 36” diameter yoga ball to rotate freely on the base. Under the ball we would attach two optical computer mice, each one acting as the Playstation 2 controllers’ thumb sticks. The game is played with tank like controls, so as the ball is rolled forward, it slides over both mice and simulates both thumb sticks being pushed up. When the ball is pulled back, toward the user, it simulates both thumb sticks being pulled down. When the user turns the ball clockwise it would simulate the left thumb stick being pushed forward, and the right thumb stick being pulled back, and so on. In order to accomplish this, we would need to make the controller think that the computer mice inputs were in fact the thumb sticks. To do this we used the Arduino to read both computer mice, and send those inputs to the digital potentiometer. The chip was directly connected to where the thumb sticks were attached on the controller.
- Arduino UNO
- Digital Potentiometer AD5206
- Two optical computer mice (PS2 not USB)
- 36” Yoga Ball
- Playstation 2 system with Katamari game and disposable controller
How we did it
Using Kellbot’s information as a guide, we started gathering the necessary parts. I began de-soldering the analog thumb sticks from the controller and soldering in wire leads that would lead to the breadboard. I also had to drill and attach leads to various buttons on the controller that we would need during game play.
While I worked on this, Chris ordered an Arduino UNO and began sourcing the AD5206 digital potentiometer chip. This chip has 6 pots on it. We only needed 4 of them for this project: 2 for each controller thumb stick (x and y directions) and with the additional 2 pots, I thought we could attach some LEDs that would illuminate the project, based on the controllers movement.
In theory, this build is really simple. Once the leads are attached to the controller, they simply plug into the pot chip. The controller has two analog thumb sticks, and each one is simply made up of two potentiometers. These make up the x and y directions. So with only four potentiometers needed, I could directly wire them to the AD5206. In this case, AWB 1, and AWB 2, were x and y for the left thumb stick, and AWB 3, and AWB 4, were for the x and y of the right thumb stick.
Next I needed to get the mice attached and working on the Arduino UNO. Here I ran into a problem. The Arduino has an existing library for using PS2 attached mice, and I decided to use USB mice plugged into a passive USB to PS2 adapter. I could not even get the mice to power up. After a few days, Chris was able to find us some more help in the form of Tom Gwozdz. It was Tom who, after looking everything over, suggested that we should try a PS2 optical mouse instead. As soon as we did, success! It turns out that my brand new Dell mice were not backward compatible with the PS2 protocol. At this point, everything was hooked up, and I was ready to finish up coding everything.
Connecting the mice to the Arduino was trivial. The PS2 mouse has four wires, two for power and ground, one for data, and one for clock. In this project I attached mouse one data to pin 5, and clock to pin 6 on the Arduino. Mouse two data went to pin 3, and clock went to pin 9.
The AD5206 is very easy to control and only requires sending a number between 0 and 255 on channel 0 through 5. I was able to follow the layout of an existing Arduino tutorial to get the UNO talking to the AD5206.
We did run into a few other issues, and in the end, after a few group brainstorming sessions, and two more controller tear-downs, we finally had a working system. We also had a grounding issue that caused us to stress at the last minute during the final setup. But in the end, it worked great, and the smiles we saw made all the hard work worth it.
If you’re interested, here is the Arduino sketch along with the PS2 mouse library. Tom was the mastermind behind this code.
The Final Project
Figuring out how the Sony Playstation controller works.http://www.slagcoin.com/joystick/pcb_wiring.html
Connecting the Arduino to the AD5206 (HUGE help)http://arduino.cc/en/Tutorial/SPIDigitalPot
The proof of concept, Kelly led the way for us. (Thanks!)http://www.kellbot.com/