In July Jeremy Abbett of Makers and Company came over and we discussed, what would be a cool project for Google’s Creative Sandbox event in Berlin. Finally we settled with “Home Sweet Home”, a Google Latitude Arduino driven Lamp.
The idea is, that your kids at home have a hanging lamp that tells them how far away dad is and in which direction he is heading. The closer he comes home, the lower the lamp would go. So it’s kind of an ambient tracking thing, but only for your family.
Looking at the options to build a prototype of that, we were sure, a real lamp would not work. Too heavy and too much voltage. So we decided to go with a lamp made out of cardboard and illumined by LEDs.
To have the lamp go up and down and rotate at the same time I thought a device like an old record player should work. A base plate that can be rotated and on that plate a cylinder that is used to wind the lamp up or down.
So I designed almost two days straight in QCAD and sent the design off to formulor.de, my preferred laser cutting service. Then ordered some Arduino stuff, motors and drivers.
The lamp hangs on two thing copper wires which also serve as supply wires for the LEDs.
The base plate rests on four tiny bearings.
Both, the up-down cylinder and the base plate are driven by stepper motors, a NEMA-11 sized for up and down and a NEMA-8 sized one for the direction. The NEMA-8 sized motor has very little torque and I’m sure I’m driving it at least at the edge of its specification to be able the rotate the plate. The motor gets very hot when powered, so I decided to disable it, when not turning. The NEMA-11 sized one has enough torque to hold the cylinder and the lamp in place.
To be able to wind the lamp up and down while sending current through the wires at the same time, I had to tinker a bit. I wanted to use these slip rings from Adafruit, but was almost sure that they wont arrive in time. My solution was using a 3.5mm headphone jack and use two paperclips as sliding contacts. That works quite ok, the lamp flickers very little when winding up or down.
Power transmission is done with a belt I had lying around. To form a ring, I used shrink tubing. That was not super tight but enough to get it done.
For the lighting, Franziska Hübler wired the 10 very bright white LEDs.
The easiest way to track a position with Google Latitude is the Google Public Location Badge. If you have enabled this option, you send HTTP GET requests to http://www.google.com/latitude/apps/badge/api?user=YOUR_ID&type=json, which returns a JSON document with easy to parse latitude and longitude.
If you have your base position in (lat,lon), then here is a an easy to port algorithm to compute distance and heading to the Google Latitude position.
Here is a short video of that, still directly attached to my Macbook for debugging.
After some hurdles the project came to life and worked really well. I really like it. It’s one of these playful things that I suspect will slowly become part of our lives in a couple of years. Always connected but no screen and no keyboard.
Unfortunately just at the presentation there was some WiFi hassle and the lamp could not reach the latitude server. o_O.
This was a project with a lot of mechanical problems to solve. And many things to learn. Here are some.
- Using timing belt as power transmission without using toothed pulleys is not such a good idea. If the belt is not really tight, it slips. And of course it extends and shrinks with changing temperatures. So I had to improvise a tiny belt tensioner.
- Use a worm gear, if you want to hold something, even if not powered.
- Shrink tubes works quite well for joining a timing belt.
- I kept a lot of junk material from other laser cutting projects. That came in handy when I had to improvise this and that.
- Have a plan b to steer the whole setup if the WiFi fails. Because, you know, it will …