20
Apr 10

TweetWall

Also check out the Apple //e Twitter Display for another take on this idea.

tweetwallI’ve partitioned my social networking life into two fairly distinct pieces. Facebook is for friends and family, and Twitter is for my technology hobbies. Facebook is for vacation photos, and Twitter is for the latest news on robotics, CNC, Maker culture, etc. One consequence of this is that I usually only check Facebook once or twice a week to catch up on what people are doing and reject requests to join The Mafia/Vampire Clans/Farmville. However, I find myself checking Twitter multiple times a day, because there’s a constant stream of interesting technology tidbits coming in. Twitter is the cocktail party full of interesting sound-bites to Facebook’s Thanksgiving Dinner at Uncle Ralph’s house.

By its very design, Twitter doles out info in bite-sized nuggets of 140 characters. So the information is concise and easily digested, and likewise my Twitter sessions are short but frequent. Taken to the limit, it becomes essentially a broadcast of information trickling in constantly so why should I poll for it in my browser? Now there’s a million-dollar idea – I think I’ll call it Push Technology.

The Internet of Things is coming, and I’m convinced in the next 10 years the internet will be less about general-purpose computers like we use today and more about dozens of purpose-specific connected devices. In a future where applications will become physical objects, why not turn a web site into a piece of furniture like a Twitter Wall?

Raw Materials

led-pornThe ideal presentation of a tweet is the text of the tweet itself along with the sender’s name and avatar picture. So I grabbed some LED Matrices for some nice big text and a small OLED screen for the avatar picture. That covered the functional pieces, but for aesthetics (it is going to be hanging on the wall) I wanted some color LED backlighting so I threw some ShiftBrites into the design as well.

I decided to build an acrylic enclosure. I had some scraps of various colors laying around but only one large sheet, so the color was going to be transparent green. I laid out the design in vector art and cut the acrylic on an Epilog Laser Cutter at TechShop.

vector-art

 

Cutting & Bending

For the LED backlighting I wanted to do a Twitter logo with a diffuser to soften up the lighting. I had seen some folks use diffuser panels effectively with LEDs at Maker Faire last year but wasn’t sure what kind to use, so I picked up a sample acrylic diffuser panel at Tap Plastics and cut it out.

The results were quite good. The left picture below shows the diffuser panel cut out with a LED shining through it. The Twitter logo outline is cut from opaque white acrylic which was layered on top to give a clear white outline around the lit piece. The picture on the right shows the two layers of acrylic assembled and back-lit with a pair of LEDs.

twitter-acrylic backlit-logo

I designed the acrylic with tabs that would be bent backwards to create a box enclosure. TechShop recently got a thermoplastic bender and I tried it out for the first time on this project. It couldn’t be simpler – turn it on, lay your acrylic over the heating element for 5 minutes and then bend into place.

bend1 bend2

The Finished Product

I connected the LED Matrices, OLED screen and ShiftBrites up to a small Arduino-compatible board from adafruit and wrote software that controls them over a serial protocol from my PC. The PC calls the Twitter API to fetch a list of tweets and then sends the text and picture to the Arduino for display.

The serial connection to the Arduino is plenty fast to send the text quickly, but the images are 128×128 16-bit-per-pixel which means 32K of data and takes quite a while to transfer. Fortunately the OLED display has a micro-SD card slot and can store images locally. So my software keeps a directory of image URIs and their locations on the SD card. The first time an image is encountered it must be transferred to the card but subsequent times drawing the image simply means sending the Arduino the 3-byte card address to draw from.

The LED matrices were purchased cheaply on eBay from Sure Electronics. I wrote an Arduino library that abstracts them and provides a nice set of high-level text rendering APIs and 2 fonts. If you are planning to drive some LED matrices, I highly recommend these and you can download my library here.

front-off back-off

It can sit on my desk or sit on a shelf and deliver me a constant stream of Twitter wisdom.

weird-angle shelf

The bright LEDs and highly reflective acrylic make it hard to get a good picture of these when they’re turned on. The video below shows what it looks like in a completely darkened room and then with the lights on.

 

Software

A few folks have asked about where to get the LED matrix and how to connect them and drive them, so I posted some info and links here: http://www.atomsandelectrons.com/blog/post/Pushing-Pixels.aspx


28
Dec 09

Make It Work

Cartesian_CoordinatesBack in July I built RoboSketch which to this day still gets more traffic than any other post on my blog. People seem to love it. Somehow the spammers have figured this out because it gets dozens of comments daily hawking Acai Berry diets, Colon Cleansing products and my favorite which is a site that sells the book “How To Get Pregnant.” But the dirty little secret is that aside from the demo video, I was never able to get the RoboSketch to draw anything without failing in one way or another.

We’re not sending anyone to the moon here, so failure is always an option. In fact, failure isn’t feared, it’s desired. The best way to learn is hands-on, doing things and making mistakes. When you make a mistake yourself, that knowledge is ingrained in you in a concrete tangible way and you’re better off for it. So when my Etch A Sketch device was having conniptions, I took note of the failure and followed the advice of that most wise sage Tim Gunn. Make it work, people.

Adult Education

The first source of problems took a while to identify. It turns out that when you change directions on an Etch A Sketch – say you’re twisting the vertical knob clockwise and then you turn it counter-clockwise to back up – there’s slop in the mechanism. A lot of slop. You need to turn the knob in the new direction quite a ways before the pen starts moving in the new direction. So when I would tell the stepper motor to move from position 50 to position 100 and back to 50 I wouldn’t end up back where I started. For the longest time I thought this was a problem with my software or my motors.

Another issue was that the Etch A Sketch would shift around and sometimes pop out of alignment so the gears that meshed between the motors and the Etch A Sketch knobs would slip. And even when they didn’t completely slip, the shifting was enough to make the straight lines look very wobbly.

It turns out these are classic problems common to all machines of this type. The problems are so common that they’ve been given names. The slop when reversing direction is called backlash and the problem of keeping a part in place is called workholding. I learned this while taking a class in metal milling and recognized the concepts as the same ones I was encountering. If I had first heard about them in class, I suspect the information would not have stayed with me for very long. But having experienced these issues first-hand, I understood the discussion and the strategies to solve the problems.

Version 2

For the new version I wanted to get rid of slop wherever I could, so I designed it to be as rigid as possible. I also kept the mechanical linkages as simple as possible, so no more gears – the stepper motors would connect directly to the Etch A Sketch axles. This would require more powerful motors with enough torque to drive the axles directly. I purchased a pair of powerful 12V steppers from eBay for $1, and the AdaFruit Motor Shield allows your to use an external power supply to deliver >5V to the motors. I picked up some shaft couplers from Jameco to connect the motors to the Etch A Sketch axle shafts.

steppers Coupler

Rather than the flimsy single-layer acrylic enclosure I used before, I designed a stack of 6 sheets of acrylic to mount the motors. The result was solid and heavy and wouldn’t twist and warp as the motors turned like the old design.

acrylic loose acrylic stacked

The motors were mounted to the backmost sheet of white acrylic and then the red acrylic sheets were placed over the motors and the whole thing was bolted together to form a solid enclosure.

Motor Mounting PlateMotors Mounted  Pre Motor Shield

There was a dedicated space for the Arduino and Motor Shield board and the design had channels for routing the wires from the servos to the circuit board.

pre badge

Say It Isn’t So

Functional though it may be, it was lacking something. When Tim Gunn says “Make it work” he’s looking for style and so we needed something to round out the aesthetics. Since the whole basis of the mechanism is Cartesian Coordinates, I grabbed a picture of Descartes, ran it through my Paper Pixels software and lasered it into some smoke-colored arylic badge for the front of the enclosure.

rene

I was struck by two things after pulling the finished part out of the Epilog laser cutter. First, the resolution of the cuts is amazing. The thinnest pieces are half a millimeter in width, or about 2 hundredths of an inch. The second was that the picture bore a striking resemblance to the guy with the mustache in Hall and Oates. It’s not as obvious at full resolution but the resemblance is still there:

reneandoates

Finishing Touches

I affixed the badge and then attached the Etch A Sketch to the device using the shaft couplers. The final piece of the construction was a blue acrylic piece that held the Etch A Sketch tight to the motors so the couplers didn’t come apart at the rubber spider junction and also supported the whole mechanism so it stands upright.

with badge

coupling detail

The finished product not only works well, but looks great just sitting there on the desk.

RoboSketch

The software running on the microcontroller is fairly simple. It implements a serial protocol that receives commands from the PC to move the pen and then keeps track of the pen position and implements a Bresenham line drawing algorithm to coordinate the two motors. The PC runs software that can read in SVG vector art files and then sends a stream of line segment commands to the RoboSketch. For bezier curves I subdivide the curves into line segments and send those so the Arduino doesn’t have to worry about anything more complex than a straight line.

The video below shows it drawing an SVG file with a vector drawing of a 3D surface. There’s nothing I can do about the backlash, so I do my best to account for it in software and the results are pretty accurate. The picture it’s drawing consists of 5,500 points and it gets through them all while keeping pretty solid registration.

 


25
Dec 09

Paper Trees

two trees

Merry Christmas!

Sparkle Labs published a paper Christmas tree kit (http://kits.sparklelabs.com/2009/12/15/light-up-christmas-tree-project/) that I did on my Craft Robo paper cutter. I lit them up with a pair of ShiftBrite addressable RGB LEDs controlled by an Arduino microcontroller. It’s basically a slightly modified version of the Spookotron Halloween pumpkin lights.

It’s pretty simple but looks good.