When I wrote an article on pervasive computing, the goal was to show people that its more than just sensing the environment. Pervasive computing is about making everything around us smarter and intelligent. What better place to start than with smart drink coasters?
The idea materialized when tasked with building pervasive applications for our launch party, held a few weeks ago at Sentilla World Headquarters in Redwood City. We wanted to show people how easy it is to make things smart, especially using Java. A few pervasive applications were built and the smart drink coasters became a reality. In this blog entry, I'll explain what the smart coasters do, what it took to build them, and there's a video of the coasters in action.
The idea. Let's build drink coasters that are so smart, they know when a drink has been placed on them and whether it is full or empty. They can notify the bartender when you need a new drink, and even be used to play drinking games.
In action. The video below introduces Sentilla's smart drink coasters. What you'll notice is that the coasters have a few unique characteristics that make them smart (and fun to play with):
As you watch the video, notice the pattern of lights displayed by each coaster. Keep an eye on how the lights change as each person lifts a bottle off the coaster or replaces the bottle onto the coaster. As the drinks are lifted and replaced, the coasters are communicating with each other and keeping track of which coasters have full drinks and which ones are empty or need replenishment.
As you can see, the coasters can perform a whole variety of functions. These including sensing, acting (with the lights), reporting (wirelessly to each other and the bartender), and collaborating (such as playing a drinking game). The coasters are approximately 3 inches by 3 inches in size. Here's a picture of one in action, which I'll dissect later on.
Coaster games. After building a number of coasters and starting to play with them, we quickly realized that the coasters can do more than simply sense whether a drink is present. Our focus quickly turned to games that we can play with the coaster, ideas to get people involved and interacting around the coasters. The current favorite is a game of Simon. If you remember Simon from your childhood days (or at least my childhood days), it is a game where different segments of an object flash in sequence and you must repeat the sequence by pressing on the segments. The first player that fails to remember the sequence loses, and so on. What we realized is the drink coasters can also play the role of Simon segments. The coasters cooperate to create the sequence and detect when the player fails to follow the sequence. It is easy to see how Simon mixed with drink coasters can become a very interesting drinking game.
The implementation.Sentilla's smart drink coasters are created using all off-the-shelf components. Many of these are available at your local hardware store. We started with "picture frame" drink coasters, available at your local Michael's arts and crafts store. The coasters are made of glass (good for embedding lights) and include a space for the picture where we can embed the "smarts" (electronics).
The full parts list consists of:
As mentioned above, Item 1 is available from Michael's and Item 2 is available from us at Sentilla. Items 3-6 are all available at your local electronics store, Radio Shack, or (my personal favorite) Digikey.
The brains of the operation are embedded in the pervasive computer -- a product we call Tmote Mini. It contains Sentilla Point, our Java runtime, which allows you quickly write and run new fun applications and games wirelessly. Start with this component, and then connect the other items around it.
The software.Let me take a quick diversion to talk about the software that goes into the coaster. Our intention is to make the coaster dynamic -- it can change applications easily and having multiple functions. In many senses, it is a "coaster software development platform" for building coaster applications. We fired up our Java development environment and started writing a bunch of coaster libraries (ah, we now have a com.sentilla.coaster.* package to import). All in all, our libraries took a few minutes to write and quickly other Java developers in house were modifying, adding, and refining the libraries. One library, our favorite right now, is called CircleCoaster. Very simply, it sets which lights are on, which ones are off, and then the coaster goes to sleep until the next segment of the circle needs to be lit up, thereby making the LEDs light up in a continually moving circle pattern. We didn't stop with CircleCoaster; we wrote libraries to collaborate (in one case, the coasters all display a single pattern on the LEDs when the majority of coasters have drinks placed on them and a different pattern when they don't) and play games. For those of you that are using Sentilla's software, we'll post some of our coaster libraries in our Developer Community.
The hardware. The main input device is a pressure sensitive switch. It tells you when drinks are present and how much force is pushing down on the coaster (due to our friend, gravity). You can get creative and spend as little or as much money as you want fidelity -- the more bits of information you want, the more money you'll spend. For us, 350N of pressure to activate the switch worked very nicely.
Here's where you get to be creative: the lights. We used standard LEDs in a variety of colors (as you can see in the video). Any LEDs will do, you can hook up as many as you want, and you can arrange them in different patterns, styles, and configurations. This is the fun part! Attach one end of the LEDs to the power supply and the other end to digital input/output ports on Tmote Mini.
The rechargeable battery is a must -- you certainly don't want to have to open the "guts" of the coaster up to change batteries. We wired the rechargeable battery to two life-saving items: an on-off switch and a connector that allows us to hook up standard chargers (like those you'd find at an RC/Hobby store). For this implementation, we used a simple slide switch and a 0.100" pitch socket for recharging (you find these on most PC motherboards). The battery is a common Li-Ion rechargeable, also available at RC/Hobby stores (most provide 3.6V of power). Obviously the other side of the switch is hooked up to the power and ground pins on the Tmote Mini.
You may be wondering: Why do I need acrylic? Here's another area where you can get creative. Acrylic is available at your local hardware store (we picked ours up from Home Depot). We cut pieces of acrylic and sanded them to be opaque and reflect light. They help the transmission of the light and they also raise the top piece of glass (which your drink will sit on) above the electronics.
We built these the old-fashioned way: with a bunch of wire-wrap and solder. A simple, quick turn printed circuit board can make the job a lot faster. When we were done, this is what the inside of the coaster looks like:
Once you've completed all the assembly, replace the top glass piece using double sided tape. Turn the switch on and fire up your Java development environment. You're ready to start loading applications on your coasters.
That's it! The software takes a few minutes to write and the hardware takes about an hour to assemble. This is just one of the many pervasive applications now possible. If you'd like to see other coaster applications in action, have ideas for what we should do with our coasters, or have any questions about how to build your own coasters, please post them in the comments.
Comments
You could always try to
You could always try to integrate some of that wireless charging for the batteries too...
where do I order my
Good morning!!
Where can I buy one of these
Can you post a link to buy
RFID tags anyone? Glasses
Nice coaster. Can you make
nice coaster guys great job
There are actually a lot of
Where did you get the
Post new comment