projects: GPS Chimes



My GPS Chimes are wind chimes that are triggered by an individual's proximity to a given location -- networked via GPS, cellphone and the internet. Think of it as mile-wide radius around the wind chimes, where my networked presence and GPS location (via Mologogo) send a virtual breeze to announce my travel home.

About



This is a project that's spent a long time, and I mean years, rolling around in my head. I've long wanted to hook up wind chimes to my website, so that someone visiting would trigger the chimes at home -- like hearing a visitor, or perhaps a gentle breeze, walk up to your front porch to say hello. I'd done similar little projects -- without the hardware -- playing chimes from a java applet when recipients would view a bulk email, or an continuous midi piano piece that would increase tension via density and dissonance when the firewall noted higher levels of network traffic. But the added elegance of the physical interface, the act of "breaking air" with the sound is significant (not "breaking wind", wiseass, I mean creating real sounds, not samples, or even using a speaker).

A few years ago I got Tom Igoe's magnificent book, Physical Computing: Sensing and Controlling the Physical World with Computers. This got me pretty close to being able to pull it off, especially with it's step-by-step explanation of all the elements of building circuitry, and I enthusiastically got myself a toolbox full of LEDs, a breadboard, and BasicX development kit to work through the examples. I shopped for the smallest wind chimes (after a failed attempt at making my own), and got children's bird feeder kit for the case. After frying a few components, my interest faded and the toolbox went on the bookcase and the birdfeederchimes went on top.

But the idea kept rolling about in my head, occasionally dragging it all out on weekends to see if muscle wires would work, if a small fan would generate enough wind to make the chimes go (nope on both). It was clear I could use a very simple and inexpensive chip (if only I could figure out which and how). And with my love for Java and for processing, I got an Arduino for experimentation, too. Oh, and then came those wonderful inventions like MAKE and instructables made it all seem even more possible, or possibly even inevitable.

And then I really got distracted. I spent the last year building Mologogo, which is a cellphone GPS application that lets you map your location and your friend's location (on the phone, on our server, or on your own server), as well as view lots of maps and local info on your phone. With all this code and data under my fingertips, it was clear that my chimes weren't merely going to be tied to some website ping, but a virtual extension of physical and geo-presence...but still the problem remained, how?

And then, just a few days ago, at the top of my MAKE feed was this post about Peter Schirmer's Antique weather clock. The mechanical elements were just about the same, and he used Phidgets and Flash to do it. Since I'd been collecting potential solutions, a quick order of the Servo Phidget from Trossen Robotics, and downloading software and docs from the Phidget site, and here I was, after years of noodling and tinkering, it was up in a matter of minutes.

Here's How (with source code)



gps chimes: original set up
This is a photo of the chimes as they sat in the bird feeder, without the chip or the servo attached.

gps chimes: servo phidget
Then, the teeny-weeny Phidget servo board was attached to the back of the feeder.

gps chimes: servo attached to the chimes
Then, I cut the string that would normally suspend the chimes, and tied each side of the string to an arm of the servo. I then attached the servo to the top of the bird feeder by placing it between two nails and securing it with a silver pipe cleaner (for now!).

That's about it. Then plugging in the servo to the phidget unit in the back, then plugging that into a USB cable to the computer. Now this takes us to a realm I've got a lot more confidence in than my non-existent circuit-design skills: J2ME and JSP (and a sprinkle of SQL).

gps chimes: plugged in
On to the software:
  • First, to get the GPS coordinates to the server, I've got Mologogo using the altURL feature to send the location info to my database. Here's a page of documentation on how to use altURL, and here's how to get and install Mologogo for your GPS enabled phone (did I mention it's free?).
  • Now there's my location in my MySQL database on the server. In order for the gpschimes to get that data, I built a simple JSP page that displays the location and the time since this post was made (you can view it in your browser, here, you can view the JSP source, here).
  • So, now the java code that activates the servo must first check the chimes.jsp page, parse that data, then decide whether or not to move the servo (thus ringing the chimes). Here is the java code that is run on the computer that connects to the phidget via USB. Basically, I check to see if the last lat/lon was within the last 8 minutes, and within 1 mile of home...and then I shut down the servo, then wait five minutes before checking again.
Read through the source code before you try to use it -- there are lines (ALL CAPS) where it states that you need to use your own settings.

gpschimes: front view
Here is the what it looks like for now! Obviously, there's a lot of cosmetic work that can be done, but I can say for sure it works. Lots of obvious ways to extend, modify and enhance...but I'm just happy to have it moving. Feel free to contact for more information.

© 2004-2007 Gravity Monkey