Coff-E Table

Coff-E

The school year is just around the corner so I wanted to make something cool for my suite. So here is the build of my interactive coffee table I call COFF-E (Pixar don’t hate me, I love Wall-E, that’s why I’m borrowing from your design).

First I actually assembled the table. Most of the wood came from a scenery from a show I worked on in high school. I save some of the nicer pieces of wood from the dumpster. The smaller pieces I found in my garage.

IMG_2541IMG_2546

After cutting the pieces down to a size that worked, I screwed it all together. I am no perfectionist, so I didn’t care if everything fit together just right. It just needed to work enough. I found some spare screws and voila, we have a table.

IMG_2548IMG_2562

I added a few coatings of a base color and then splatter painted it. It gave it a really cool look and not a lot of work. For the splatter paint I used some plastic forks so I could really fling the paint at the table (and apparently my hands). All of the paint I found around the house, so I still haven’t bought anything for this project.

IMG_2596IMG_2602IMG_2608IMG_2614IMG_2617

Now onto the part I find especially interesting, the electronics. Warning: the following get’s a bit technical. Inside the table there are 40 LEDs. It’s set up in an 8 x 5 matrix. All of the cathodes are connected in each column, and each anode is connected in each row. My arduino doesn’t have 40 output pins, so using this method I can greatly reduce the required pins. The idea is the arduino only lights up one row at a time. In that row it lights up every column it’s programmed to, turns them off and goes to the next row. This process happens for every row. This process happens so fast that because of persistence of vision, it looks like all 40 of the LEDs are lit up at once.

IMG_2569

So far we need at least 12 pins in order to light up these LEDs (the arduino uno only has 13 digital outputs). To free up more pins, I used a shift register on the columns (so now 3 digital pins can control 8 LED columns. 3 column control and 5 row control now leads me to only need 8 pins. I could add another shift register for the rows, but to keep parts and programming easy I decided I reduced the number of pins enough.

IMG_2577IMG_2578

I plugged it into the Arduino and within minutes, I have all of the LEDs light up. There was a couple mistakes. Two solder blobs combined and so column 2 and 3 were working together. A little desoldering fixed that all up. Secondly, I originally used resistors on all of the columns of LEDs (which I originally did to protect the LEDs). This reduced the brightness greatly, and the LEDs don’t get overpowered by the Arduino without them, so I ended up bypassing them. (This step may have caused the slight dimming in third to last column, which became more and more dim as the table lived on).

Glowing dots is all cool, but I wanted them to look more like square pixels. To accomplish this I used some foam board I picked up from Dollar Tree and made a grid.

IMG_2560IMG_2561

IMG_2586

To further diffuse the LEDs, I added a little dot of hot glue to the top of every LED, and then cut apart grocery bags and put a layer of that plastic across them.

IMG_2588

Without plastic bag diffusion

With plastic bag diffusion

With plastic bag diffusion

This method was okay, but since I was using the foam board as a diffuser for the top, I lost a considerable amount of light. I acquired some textured plastic from some scrap at a hardware store for free: score! The result is just what I was looking for.

IMG_4908

I added the controls to the table on a hinging spot I added to the table. The controls are two potentiometers, a select button, and a reset button. I decided to leave the wires exposed because I thought it gave the table a cool look.

IMG_4907IMG_4906

I wrote the code for the table from scratch. The basic idea behind the code is you send a two dimensional boolean array to the make() method and tell it how long to display it. Right now it has 6 modes. In the first mode it cycles through all of the LEDs (really good for trouble-shooting).

komedi_1396928389550_816

In the second mode it randomly lights up different LEDs.

randomlighttest

Third is a predefined animation.

animation

Fourth is super low resolution two player pong.

pong

Fifth is etch-a-sketch mode.

etch-a-sketch

Sixth is a spin the bottle mode. You can adjust the speed and press the button to stop at any time.

spin

Lastly: here we have a short making of video

 

Improvements for next coffee table:

  • Definitely more LEDs. 16×8 Matrix for a total of 128 LEDs (thats 320% more LEDs)
  • Attempt to get more uniform illumination from LEDs
  • More games. Research into low graphic games. Possibly create new game
  • Secret compartment(s)

 

Advertisements

Adding Bumper Sensors

Today I decided to ditch the old bumper sensors since they were built into the original motherboard of the robot, and added new ones in their place.

Design is simple, a push button where the old sensor used to be. I filed down a protoboard to fit in the location, soldered a push button onto the board and attached leads to it. I carefully hot glued the boards in the location (lots of hot glue in hopes they might actually stay.

IMG_2051[1] IMG_2053[1] IMG_2054[1] IMG_2055[1] IMG_2056[1]

To test if the sensors were working I wrote up a quick sketch to check. It just serial rights left or right depending on which button is pushed.

IMG_2058[1]

Code below:

int rightSensor = 2;
int leftSensor = 3;

void setup() {
Serial.begin(9600);
pinMode(rightSensor, INPUT);
pinMode(leftSensor, INPUT);
}

void loop() {
if(digitalRead(rightSensor)){
Serial.println(“right”);
}
if(digitalRead(leftSensor)){
Serial.println(“left”);
}

delay(1);
}

Roomba Hacking Day 2

They are dirty. Turns out my free Roombas came with dirt pre-installed! A little bit of cleaning up and I’m in business! Since two of the roombas are identical, I’ve decided to keep one of them unaltered to refer back to, and complete take apart the other. Also good news: the battery works. My multimeter tells me that it off 16.59 volts at full charge. ImageImageImageImageImage

Many screws later, I have a shell of a robot. I’m trying to figure out what each device does. The yellow, orange, green, two wire juction tells the robot whether or not all of the wheels are down. When the robot is on the ground the circuit is open, and when even one wheel is lifted it is a closed circuit.

The wheels are rather easy to interface with. Just apply power to the orange and red wire (yellow and red on the other side) and the dc motor turns a belt which turns a gear which turns the wheels. There’s a fair bit of torque!

Just to see if I’m on the right track, I hooked up the battery, and had that applied to a breadboard which went to the two wheels. I hooked the motors with reversed polarity so the robot would just spin instead of run away from me. As you can see, it worked out fine.

I tried to hook up an Arduino with a simple circuit to control the motors, but embarrassingly, I hooked up a wrong wire and caused a wire to catch fire. Oops. No real harm done. After checking the circuit, I also noticed I was using the wrong kind of diode, so I’ll be waiting for my digikey shipment to come in before continuing on the motor front.

ImageImageImageImageImageImageImage

While opening up the wheels, I did make a few observations. Inside each wheel is a set of sensors which seems to be some sort of trip beam to tell how fast the wheel is going. I really have no idea how to interface with this. I think I might end up scrapping all of the old sensors and installing my own (ones that I understand).