The latest code base for this project can be found here
Video and pictures are at the bottom of the post!
So I wanted to give a friend the 3D printed companion cube as a birthday gift, but I figured that just the cube by itself would be rather boring. Instead, why not add some audio functionality to the cube to make it a bit more impressive? And so I did. As I came up with this project idea only three weeks before the deadline, I was in a bit of a rush to get things working. As such, designing and ordering a custom PCB was out of the question. Instead of using a custom PCB, I came up with a stacking design using Adafruit’s perma-protoboards that would fit inside of the cube’s frame while still allowing enough real estate for all the components. As the frame was slightly smaller than the protoboards, I had to file the edges of the protoboards down a bit to get them to fit. The upside to this design was that I was able to achieve an extremely snug fit that should be pretty resistant to drops.
Continue reading Interactive Companion Cube
10/1/2014 – Updated compilation instruction for the MSP Debug Stack
My semester project for CS5204 Operating Systems was to get TinyOS running on some unsupported MSP430 chips. While there are some resources out on the interwebs on how to get TinyOS running on specific hardware platforms, these platforms are designed with hardware for a specific use cases (ex. telos/micaz). What I wanted to do was to get TinyOS running on a generic development platform, or specifically on the TI Launchpads. There are two versions of the Launchpads in circulation: a value line that uses the MSP430G2xxx line of microcontrollers and a higher end board that uses the MSP430F5529 microcontroller. Here I’ll detail the process of setting up a TinyOS programming environment for both TI Launchpad platforms. I’ll also give a brief overview of TinyOS’s architecture.
Continue reading TinyOS on the MSP430 Launchpads
The latest code base for the controllers can be found here
12/28/2013 – Added Revision A Section
1/20/2014 – Added Revision A PCBs
1/26/2014 – Added Revision B Design
2/28/2014 – Populated Revision B Boards
As I had to take the LED cube home for a few days to fix a few things, I figured that I might as well extend its functionality. As such, I decided to add gaming functionality to the cube! To do so, I first had to design a controller to provide some way to interact with the cube. Originally I had hoped that someone from the AMP lab would take on this project, but no one seemed interested to do so (probably because it was finals week). Perhaps they would be more interested in programming games for the cube?
The controllers themselves should be pretty simple: a few buttons for inputs and some LEDs for things such as score indications. As such, it should be a relatively quick project. Perhaps I could put some sensors on the board as well, allowing for some gesture based control.
Continue reading RGB LED Cube Controller
Download the CAD files here
Here’s something that I did a while back that I finally gotten around to finishing. Fans of the game Portal and Portal 2 will recognize this as the iconic Companion Cube that you carry around with you for a large part of the game. I designed and printed this a while back when I was trying to improve my skills with Autodesk Inventor and I’m pretty happy with the final design.
Being a modular design, the nine pieces minimizes the amount of materials and time required to print all the parts. The print itself is made of ABS plastic and the paint consists of a few layers of car paint primer and was painted by hand using acrylic paint.
The latest code base for the LED cube can be found here
11/12/2013 – Updated code to use the WDT
12/12/2013 – Added support for controllers as well as Snake and Tron game modes
One of the projects that I’ve been working on for the last four months or so is an 8x8x8 RGB LED cube. After looking up some designs online of what others have built, I decided to design and build my own version. Instead of something shoddily put together, I wanted to build a display that could be put outside of one of the introductory lab rooms for other students to program and play around with. Thus, my design had a few goals:
- It had to look professional. This meant that the overall cube should be structurally sound and a proper PCB should be designed for the driving circuitry.
- It had to be fast. Since some sort of multiplexing would be needed to drive 512 LEDs, I wanted the cube to have at least 240Hz* refresh rate at the very minimum.
- It had to be driven from a microcontroller that is used in introductory classes. This meant that it had to be driven from a Digilent Cerebot 32MX7 board that is used to teach microprocessors here at Virginia Tech. While the cube itself isn’t limited to a specific microcontroller, by using this board I can write a baseline for the code from which other students can then easily build off of.
- It had to look impressive.
* – There’s actually a notable difference when driving the cube at 60Hz vs 240Hz.
Continue reading RGB LED Cube