I put together the Ice Tube Clock kit today.
It was a great Xmas gift! You can buy them HERE
I put together the Ice Tube Clock kit today.
It was a great Xmas gift! You can buy them HERE
I have not forgotten about you.
Though I have been spending less time on my robot lately (I blame my new Cintiq), I have been slowly working towards a more stable design. I want it to stand freely when the power is off.
It’s getting heavier on top, a lot of pressure is focused on one servos connection to the aluminum beam, I’m going to add support to certain areas so my custom brackets don’t snap.
When everything “seems” stable to me, I will begin programming the movements.
Excuse the mess
More details in my next post!
Rock Band has been released on the iPhone, and even though its a lot of fun, I would rather have something play it for me. Preferably a robot!
Light sensors are used to read the falling notes, I’m using ambient light sensors from Sparkfun. They are small and easy to setup. (The iphone brightness has to be set to Max)
The light sensor sends data to an Arduino, which is waiting for a spike in the data. This means something bright has passed in front of the sensor. I’m using an Arduino Mega, which is overkill for this project, but it does look really cool with those WingShields on it.
The Arduino runs the sensor data through some averaging filters, and sets a threshold for on and off. This could also be done through hardware, look up Hysteresis and Schmitt trigger. If the sensor data becomes higher than the on threshold, the Arduino reads that as a note, and tells the servo to push the screen. The servo will not release its touch of the screen until the sensor data drops below the off threshold. The on and off threshold have some distance between each other to deal with bouncy noise.
The iPhone touch screen isn’t like most PDAs. It uses a capacitive touch screen. More info about that HERE. It would seem that the iPhone is looking for a finger sized touch, from living flesh. According to the link, the screen actually looks for changes in electrical current.
I had some conductive foam laying around, its usually used for shipping sensitive electronics. If I put my finger behind the foam and pressed on the iphone screen, it works. If I used something non conductive, like a plastic pen, the foam would do nothing to the screen. My solution to this was to put thin copper wires into the foam (I also used these wires to attach the foam to the servos) the other end of the wires were wrapped around the handle of an exacto knife. When the Robot is playing the game I touch the handle of the exacto and the robot fingers are able to press the screen. Another solution was to run all the wires into the Arduinos ground pin, but it had mixed results (not all wires were making contact)
Add all of the above together into a modified Pelican case, with a lot of hot glue (non glittery) and you have a robot that will gladly beat all your difficult songs, sit back and sip some fine tea.
The performance of this robot increases with the correct positioning of the servos, and the distance you set them to move in the code. You may notice in my video that the right most servo had a hard time hitting its notes, it’s been glued too far south of the note position, something I may correct later. I think it would be cool to package all of this together as a portable unit, with an Mini Arduino running the show.
Here is the code I made for the Arduino, it’s a modified version of my other project. If you want to make your own, you will have to tweak the sensor threshold and servo settings to fit your setup.
I got inspired to build my own “Fume Extractor” after watching this VIDEO
I wanted to make a big one, so I used a Pelican case instead of an Altoid tin, with a large computer case fan and a 12v DC power adapter instead of two 9v.
It works pretty well, I no longer smell the solder. The airflow isn’t as strong as I would like it to be. It may need a better filter, or MORE POWER!
You can find the ingredients to make an Altoid tin version here: How to: Candy tin fume extractor
Not too long ago I found this awesome US Army Radio Headset from the Vietnam War. It was still in the box unused (I think)! I thought it would be fun if I could use them with X-Box Live.
It was a simple mod. The headset has two plugs (for earphone, and mic), I took a spare molex cable from a PC power supply and connected the prongs, they fit perfectly! Everything worked pretty well as is, the microphone has a bit of static when you speak on XBL so I may open that up and replace it with a more modern one.
Click the last image for a closer look of the headset, its build to last!
I decided to turn the Guitar Hero Robot towards Rock Band. The video is playing songs on expert! The results look better than expected, I think the notes may be easier for the sensors to pick up. There is still a lot of dropped notes, which I think can be blamed on all the visual effects strobing across the screen. A more precise sensor may be the solution.
I also modified the sensor rack so each sensor is at a consistent height. This helped eliminate a lot of problems.
I’ve made some progress on my “Guitar Hero Robot” mod. I dissected a used “Guitar Hero” guitar and wired its inputs to the nifty Arduino Duemilanove . Now the sensor input feeds the notes back into the X-Box.
I tried to keep the cost of this project down. The Arduino does all the filtering of the sensor input, converting a shakey analog signal into an absolute on or off signal (thank you Chris Cordingley).
I will post a How-to along with the source code as soon as I’m finished.
You can see in the video that the controller functions like a normal controller, but when you press the shoulder buttons and the “+,-” buttons you get combo moves that would normally require more work.
So here is how it works… Wii Classic controller inputs into the Arduino which outputs to an Xbox controller and a button is pressed.
Input: The reason I’m using a Wii Controller is because of the library that was already available on the Arduino site. When all was done I wanted to put everything in a nice Pelican Case, so I replaced the end of the controller with a usb cable, put a USB port in the pelican case and wired it to the Arduino inputs.
The USB plugs made it easier to connect the controller without opening up the Pelican. The pin layout should go as follows.
SDA -> AnalogIn pin 4
SCK -> AnalogIn pin 5
V+ -> 5v
Gnd -> Gnd
OUTPUT: We are going to connect to an XBox Wireless controller. You will need a special screwdriver to open it up (TT8). Inside, each button has two contact points (+,-) There is a coating over the metal contacts that will need to be scrapped off before you can solder to it. I only used the Dpad, the X-Y-A-B buttons, “start” and the “BigX” to turn on the controller. Make note of which wire is Positive and Negative. I found this out by using a multimeter, while the controller is on, touch the red and black to the buttons contacts. If the display reads a negative value then you know that the black end of the multimeter is on a positive contact.
I also have the controllers V+ and GND connected to the Arduinos 3v and GND.
Now we need to have the Arduino press these buttons, we do this using little transistor. I found these at Radioshack ,they are NPN transistors and they do the job.
When we want the Arduino to press a button, we have the DigitalPin Out set to “HIGH”, this causes the transistor to close the switch, and the XBox controller reads a button press. The resistor that goes between the Arduino and transistor is important, if it is too low or too high, weird things can happen or nothing at all. 8kohms worked for me, but in another project I’m currently working on I needed 40kohm. I set this up for all 8 button using pins 5-12. The “start” and “BigX” button are wired to buttons on the Pelican case since they are not needed for gameplay.
Once that is all setup, you need to give the Arduino the code. I have it setup so the Classic Controller works like a normal controller, but the shoulder buttons (L, R, Lz, Rz) and the +,- buttons have macro settings. When playing Street Fighter I press the “+” button, and the Arduino presses Down, Forward, Punch. (Hadoogan)
Here is the code I used:
I received a lot of help from people at the Arduino Forum since I’m not a programmer. The WiiClassic.h is modified from the original to allow multiple button presses at the same time, and held buttons. The code is setup for playing Ken right now. It can be customized for any character (or any game). Something I would like to do is add a little toggle switch, that lets you select your character. You can also take it a step forward and add the Xbox controllers analog sticks, Lb, Rb, and L,R for more possibilities.
Another thing worth noting, in Street Fighter the moves are direction specific. I made the right shoulder buttons work for Ken facing left, and the left shoulder buttons for Ken facing right, the “+,-” are also mirrored. It may be easier at some point to have the analog sticks on the Classic controller contain all the macros, then you have a stick for left and right.
Well there you have it, I hope this is helpful for those who want to DIY, feel free to email me (email@example.com) with any questions. I originally made this as a learning experience, and to defeat my friends. I don’t know how kindly XBox Live would respond to something like this being used, so as a disclaimer, I am not responsible for its potential evil.
I set up an Arduino to read the notes on Guitar Hero and flash an LED to that corresponding note.
I used this ambient light sensor, from sparkfun.com to read the changes in value on the screen. When something bright flashes in front of it, the Arduino will turn on an LED for as long as that brightness is there.
Take it one step further and you can have this robot play Guitar Hero for you.