Software apps and online services
This project was implemented as part of our Embedded Systems Design course at the University of Texas at Austin. The goal of this project was to gain practical embedded systems experience by interfacing different hardware components with our own understanding of how embedded systems work. No code from the Texas Instrument standard libraries was used in the development of this project. We were also responsible for all of the soldering in this project (including the processor)!
HOW TO PLAY
Stand in front of the display screen with your plastic axe strapped across your chest and assume your best rocker stance. Your fingers twitch slightly on the fret buttons and the strumming bar in anticipation as you hear the first beats of the song start up. It's time to play Guitar Hero!
Once the music kicks in, the screen display shows the colored notes descending to the target line with five color-coded squares that correspond to the top-down order of fret buttons on the controller.
When your guitar part begins, color coded squares slide down the display toward the target line. The point of Guitar Hero is to hit the matching fret buttons and the strum bar on your controller at the same time the squares hit the displayed target line. If you succeed, then the square lights-up and you score points! If you fail, then the note passes by without impact to the score.
When your score reaches rock star levels, the red square will be highlighted indicating that Star Power is available. Make your favorite rocker move and hit the red button to multiply your points scored!
The objectives of this project are to design, build and test a system that mimics the functionality of the traditional Guitar Hero VideoGame. Educationally, we are learning how to transmit data packets from an existing Xbox 360 guitar hero controller using wireless communication, interface the TM4C123 microcontroller with an MP3 player using Synchronous Serial Interface (SSI), and develop an effective implementation of the Guitar Hero videogame logic. The goal is to recreate the original Guitar Hero videogame with songs of our choice.
The project will be developed using the TM4C123 board. There will be one Xbox 360 Guitar Hero controller that will transmit packets containing information about what buttons are being pressed to the central PCB using Xbee transportation protocols. The central PCB will be developed using the tools provided to us by PCB Artist. The system will use both on board switches and off-board switches to interact with the user. A hardware/software interface will be designed that allows software to control the Guitar Hero video game by using the Xbox 360 Guitar Hero controller. There will be at least three hardware/software modules: the Xbox 360 Controller Interface, the central PCB videogame logic, and the MP3 Player. The process will be to design and test each module independently from the other modules. After each module is tested, the system will be built and tested.
The system will use the TM4C123 board, a Xbox 360 Guitar Hero controller, a central PCB board that we will create. It will be powered by 9V DC batteries. We will have access to the 5V power supply at the lab bench, but we will use voltage regulators to achieve necessary voltages for each component
The operator will use a combination of on board buttons and the Xbox 360 Guitar Hero controller to select a song to play from a list of songs that we will provide. When the user presses the play button, the software will load the song from an SD card and output the music to a speaker. The user must attempt to play the notes displayed on the screen in rhythm with the current song in order to score points and continue to Rock On. A successful note will be registered if the user strums and hits the correct note on the Xbox 360 Guitar Hero controller. Information about what buttons are being pressed on the Guitar Hero controller will be transmitted to the central PCB in packets using wireless communication. A record of the top scores for each song will be kept in order to encourage other users to beat the current high score. A song will be played using the SSI interface and sending contents of a WAV file to an external speaker interface. An external speaker will be connected to the central PCB through the use of a headphone jack in order to generate the music of the current song.
There will be one Guitar Hero Controller, which consists of a minimum of 7 switches. The central PCB board will receive information from the GH controller using wireless communication, and transmit a WAV file to an external speaker. The central will receive WAV files as an input, transmit an analog representation of the WAV data, and generate notes on the ST7735 LCD display for the user to play along with.
A TM4C123 Launchpad has been placed inside of an existing Guitar Hero controller case. All of the wiring in the original controller has been replaced with custom wiring in order to interface the controller with the main PCB. Information about which buttons are being pressed is transmitted from the controller to the main PCB using a low power wireless chip (Xbee). A .wav file stored on an SD card is sampled by the main PCB and output to the speaker using a digital to analog converter. Then, we used a First-In First-Out Queue to process notes coming down the screen efficiently. Lastly, a text file is stored on the SD card that contains high scores so they are saved even when the power is turned off.
We determined that our main PCB drew around 210mA of current when operating at full capacity, and the Guitar Hero Controller drew around 100mA of current. These measurements were obtained by using the external power supply provided to us in the lab. Because the average current requirements were below 500mA, we were able to power both devices using a 9V battery.
This project has taught my partner and me a lot about how it is important to work well together so that you can meet deadlines. Throughout the semester, my partner and I faced a lot of difficulties with various aspects of our project, specifically with the SD and Xbee interfaces. Both of these interfaces were difficult to debug, but we were able to use office hours and bounce ideas off of each other in order to accomplish these tasks in time. In addition, we know from the beginning that it was important that we get the Guitar Hero controller built as soon as possible, because it would be difficult to debug software on the Main PCB without a working controller. As a result, I had to manage my time efficiently in order to complete the Guitar Hero controller early on in the semester so that we only need to focus on the PCB software when the PCB arrived later in the semester.
In the end, this project was extremely rewarding. It was very cool to see all of our hard work pay off at the end of the year. Unfortunately, we had checked out a lot of hardware for our Guitar Hero Project from the lab; we must disassemble our project in order to return items to the lab. To conclude, both my partner and I learned a lot throughout the countless hours that we spent in the lab this semester, and it is very rewarding to look back on the semester and feel like we have accomplished something big