JeremyBlum.com

Archive for May, 2008

Guitar Hero Bot plays some solos

Here’s just a quick compilation of our bot excelling at some of the game’s hardest solos.

No comments

Auto LED indicator and switch installation

Programming continued today. In fact, we are essentially rewriting the code to better take advantage of the propeller chip’s many IO pins. In addition to that, we installed an LED above the rocker switch to indicate when autonomous mode is activated, and installed a hex switch (0-15), that will allow use to change delay times on the fly (on intervals of 10 ms). Pictures are below:

Auto LED installed Rear of LED Marking for Switch Installation A switch for changing delay on the fly Cutting an opening for the switch Cutting an opening for the switch Switch Installed Switch Installed

No comments

Program Tweaking

As we prepare for our final circuit boards to arrive, we have been fine tuning our programming. Today involved trying to learn assembly language, a programming form that allows for faster execution of code, but is signifigantly more difficult to write correctly. Some aspects of our project execute a bit too slowly, and we believe that changing to assembly code may fix that.

No comments

Guitar Mods, Program Tweaking, PCB Building

Work on the guitar has been continuing at a steady rate. What has been going on:

  • We’ve installed the d-sub connection into the side of the guitar
  • We’ve installed a switch above the whammy bar that will turn autonomous mode on or off
  • We’re still working on trying to mold the buttons so we can create some transparent replacements with LEDs inside
  • Code tweaking. We’re really close to fixing the issue where star power notes tend to not get strummed
  • More code tweaking. The level of software post-processing has gotten so heavy that we are moving some of the code from an interpreted language to assembly code in order to speed it up
  • We’ve finally finished the computer design of the circuit boards, and we sent them out to get printed professionally today. We should be able to start soldering on the components by early next week when we get the boards.

Here are some pics of all the stuff I’m talking about :)

Rocker switch installed above the whammy bar Rocker switch and cut-out for the d-sub d-sub cut-out Gorilla Glue holds the switch in place D-sub installed and wired D-sub installed Working on the Printed Circuit Board (PCB) design

No comments

First Working Guitar Hero Bot Prototype!

Today we completed our first working bot prototype! It is by no means perfect yet, but it’s working pretty damn well, as you can see in the youtube video embedded below. In addition to getting that working today, we also made button molds so we can create our own transparent buttons that will house LEDs that illuminate when buttons are “pushed” by the bot. We’ve added some more signal processing to the software, and we also obviously wired up a complete prototype. The whammy bar is wired, but we are still in the process of programming it.

Here are some pictures from today…

Prototype wiring Making button molds Prototype board wired to guitar via relays Debugging LEDs, processor, relays, and sensing circuitry Red LEDs-5 notes, Yellow LED-Strum Guitar Connection Solid-State Relays Too fast for the camera! More button molding Complete Prototyping Setup Completed Button Molds

Plus a video of our guitar totally destroying “cult of personality”

1 comment

More Guitar Wiring and Testing

Today was another big day for the guitar hero bot. Firstly, we finished up wiring all of the internals for the guitar, including wrapping the wires in heatshrink tubing to keep them tidy. Additionally, we cut an opening at the top of the guitar to act as a receptacle for the 9V battery that powers the propeller processor running in the base of the guitar. We cleaned up the edges of the battery opening, and it actually looks pretty good now, considering there is a 9V battery there. Wires from the battery run down the neck of the guitar to where the processor and board will be situated. We considered using the USB to power the processor, but didn’t want to risk limiting the current flow to the guitar or to the processor.

Our goal is to have the guitar both look normal when complete, and to also be usable in a manual mode. For the connection from the guitar to the sensor bar, we are equipping both the bar and the guitar with 15-pin D-sub connections. 5 of the pins will carry photodiode signals from the sensor bar to the guitar, 1 will be reserved for an extra sensor if we need it in the future, and 2 will run power and ground at 3.3V from the microprocessor to the sensor circuits (there are unused pins). A standard cable between these connections can simply be unplugged if desired. A switch will also be employed allowing the user to deactivate autonomous mode so the user can play manually if desired.

We also completed our first working draft of our programming today, and HAD THE GUITAR PLAY A SONG ON EASY. It worked! Or well, at least it did until the power went out half way through the song!!! : ( Talk about bad timing. But before the power went out, it had gotten about 70% of the way through “slow ride” without missing a note. I’ll film it working tomorrow and be sure to put it on youtube (hopefully before the power goes out again). Anyways, the program now delays appropriately, and is able to filter out noise and strum on both single notes and chords. And don’t think this came easy. Hours of time was spent debugging this code to get it to work, and I’m sure lots of tweaking still needs to be done. But now, we have to worry about working out bugs and getting circuit boards printed so we can make it look real pretty :).

Here are some pics from today for you to enjoy.

Organizing wires with heat-shrink tubing Wires for connection to buttons More heatshrink tubing All wires wrapped with labels Original and additional button wiring Button, Whammy, and Strum wire routing Cutting an opening for the 9V battery (power for processor) 9V battery rough fitting Sanding for better glue adhesion Soldering 9V power lines Adhering the battery holster with Gorilla Glue Allowing the glue to set Wiring from the battery and buttons Wiring a D-sub connector (will connect guitar with sensors) Up-close soldering for D-sub connector Yellow-before filter, Blue-after filter Red-power to sensors, Black-ground to sensors, Green-signals from sensors Guitar connections via relays to photodiodes

1 comment

Reverse Engineering the Guitar Hero X-plorer

We got a whole lot done today. On the programming side of things, we’ve been working on getting the signals to go in through the microprocessor. There are a few things that the processor has to take care of…It needs to take in all signals simultaneously, and record their values (0 or 1) into a circular array so that they can be held in memory long enough to called after the necessary delay (the time it takes for the notes to reach the bottom of the screen from where our sensors are). Our processor (the parallax propeller) has 8 cores in it. 1 is dedicated to each of the inputs (5 total), another one runs the main program that executes the other cores, one more sends the signals out after adding a delay and processing (button presses and strumming), and the last is used use for debugging. We just about have the signal cleaning algorithm sorted out, and we are now working on adding a delay.

Onto the hardware side… Last week, We opened up the guitar and tested out connections using a multimeter and the “Game Controller” applet in the windows Control panel. Since the guitar is USB, you can plug it into USB, and analyze the button presses in that applet (Virtual buttons light up when you do different things on the guitar). They don’t make it easy. There are 5 buttons, each with 2 touch-sensor type things. When the buttons hits them, a circuit is completed and the button in the game is “pressed.” But, there are only 8 wires coming from the neck of the guitar. After a lot of wire tracing, we realized that some of the connections share a ground, while others don’t. Using the wrong ground results in only half the voltage drop (a drop from 2V down to 0V indicates a short and that the button has been pressed). After figuring out the pinout diagram (I’ll post it later) I was able to solder the appropriate wires onto connections for the guitar boards. I did this in such a fashion that the guitar will still work normally, but the wires will also be routed to the propeller chip that can virtually press the buttons. I soldered on leads that will allow the chip to activate the strum up and down, the whammy bar, and all 5 colored buttons. All of this will be contained inside the guitar. We will cut a hole in the side for a D-sub connection. There will also be a D-sub connection on the sensor bar on the screen. Wires will run between them carrying the information from the photodiodes, and in the other direction providing a 3.3V rail and a grounding wire.

Below are some pictures of the boards with new wires soldered on, and of our current prototyping board for the photodiodes and programming:

Guitar Hero Board with new wires soldered on Button connection wires soldered onto existing board connections Wires for Strum Up/Down (left) and whammy (right) All of the connections we'll need (neatly labeled too) ProtoBoard with propeller chip and relays/photodiode connections for testing

2 comments

Our Guitar Hero bot is on Fire!!!! (and in Flames)

No, not really, it’s just got all five sensors and is quite accurate when analyzing “Through the fire and flames” on expert mode. Keep in mind, the signals that are currently lighting the LEDs, will be used to “press” the buttons in real time.

No comments

Guitar Hero Bot: Stage 2 now rockin

It’s honestly not that different from the first stage, but hey, it’s something. Here’s a peak at the second stage, 3 sensors and the accompanying LEDS for the green, red, and yellow notes.

No comments

First stage of guitar hero bot is complete!

We’ve successfully gotten the first stage of our guitar hero bot working. In the video below, you can see a prototype of our photodiode circuit correctly viewing the notes on the screen, and blinking the LED appropriately. For now, We are only detecting the green notes, but more are soon to come. If you look closely at the oscilloscope, you can see the nearly perfect digital square waves. Before implementing the circuit shown in the diagram, the photodiode signal was very noisy and weak.

No comments

Next Page »