← Back

Embedded Prototyping

For a Computer Engineer, I haven't done many end to end hardware projects, so me and my friends tried to make the most of an opportunity we had for a class project where we had to integrate peripherals with the Raspberry PI based Purdue Proton board to make an end product.

Here, I'll be talking through some design decisions and mistakes we made...

We settled on making a handheld racing game as we thought a game would be the most engaging type of project, and this way, we could making creative use of the peripherals.

Peripherals

So our interface with the game was relatively straightforward. We used a gyro sensor to detect motion. Notably it only measured angular velocity but with some math, the angle tracking was fairly accurate.

We decided to use push buttons for acceleration and brake inputs as we figured we didn't have the bandwidth to design custom triggers, and our audio sound effects were a little finicky as the board could not store them in memory and we had to mess with SD card protocols.

The VGA display and protocol had some confusing documentation, but once we got it up and running (after some trial and error to show the colors correctly) it was fairly simple to get a basic game prototype on there.

Although most of this was done by only half of our 4 person team, it's our bread & butter as computer engineers.

Taking it further...

With all this, we met the minimum requirements to get the grade for the project. But we wanted to make it more presentable. The other half of our team was focused on designing a PCB to fit a much more compact form factor, and designing a shell on CAD. Things that none of us had much experience in. Additionally, we were unable to improve the graphics much further as the project was done in C and our attempt to port to C++ was unsuccessful.

Although the CAD was ultimately successful after some 3D printer struggles, we ordered our PCB too late and by the time it arrived, studying for finals and other projects had to be done so ultimately we didn't get the ending we wanted.

I think our issue was that we tried to learn too many new things in such a short period of time, but we might try to come back to this project in the future...

Source code is here!