Introduction: Arduino Controlled Smart Coaster





The Smart Coaster is an intelligent coaster for your beverages. It recognizes the different types of beverages placed on top of it, with a cocktail the Smart Coaster glows in some atmospheric and slowly changing colors. If you place a cup of hot tea on it, it automatically starts a special tea timer program which shows you, when the tea is ready to drink. If the glass is empty or filled with a cold drink the Smart Coaster glows blue, if the drink within the glass is hot, it glows red.

The Smart Coaster uses a LED strip with 23 RGB LEDs, each driven by a WS2812 chip, to glow in different colors. It contains a self-made pressure sensor based on Velostat, by which it recognizes the weights of different types of glasses.  Additionally a Texas  Instruments TMP006 temperature sensor is placed with the coaster. This sensor detect fast changes of the temperature of the glass without the need to touch the object. For this purpose the TMP006 uses a uses a thermopile to absorb the infrared energy emitted from the glass and uses the corresponding change in thermopile voltage to determine the glass temperature. By matching these sensor values with predefined profiles the Smart Coaster differentiates between different glasses and beverages.
This instruction allows to build 2 different variants of the Smart Coaster. The first variant uses only 3D printed parts, the second variants replaces some printed parts with acrylic glass and involves therefore some additional work. It is highly recommended to build the first variant, since some parts for the Smart Coaster have to be printed in 3D.

Don't be confused, the pictures in this instructable are showing my first prototype. I used laser cut parts instead of 3d printed parts. But the build process is nearly the same. If you use 3D Printed parts you can leave out some instructions of this step. Whenever i mention acrylic glass discs they represent also the 3d printed bottom parts.

Bill of materials:

1 x Arduino Mini Pro  
1 x Adafruit TMP006 Breakout
1 x LED Strip WS2812 with 23 LED’s  
1 x 3D printed parts (Thingiverse) 
1 x resistor 2.7 KOhm
1 x 6x6cm Velostat 
1 x 3,7V 250 mAh LiPo battery (lady bug)
1 x wire
1 x insulating tape


only used when NOT building the pure 3d printed variant:

1 x circle Ø11 cm of normal white paper
1 x ring (5mm width) Ø11 cm of heavy paper or cardboard
1 x 5 mm thick disc of acrylic glass Ø11 cm
1 x 3 mm thick disc of acrylic glass Ø 11 cm

Used tools and devices:

1 x 3D printer
1 x dremel (multifunction rotary tool)
1 x hot melt glue gun
1 x solder iron
1 x FTDI breakout
1 x Cutter
1 x scissors
1 x Arduino IDE

time and affort:
2 - 4 hours


Step 1: Printing the Needed Parts

Download all needed parts from http://www.thingiverse.com/thing:165218 . All 3 parts bottom_bottom, bottom_top and top from Thingiverse should be printed out using white filament. If you build laser cut version, you only need to print out the top part. 


Step 2: Building the Pressure Sensor

Cut a round piece with a diameter of 5 – 6 cm out of the velostat.

Afterwards drill two holes near to the edge into the 5 mm acrylic glass disk. These holes are later used to put the wires for the pressure sensor through.

Remove 5 cm insulation from 2 cable wires, each around 10 cm long.

Fixate the stripped end of each cable wire on one side of the Velostat circle at the time as a semi circle with some tape.

Put both cable wires through the holes in the 3D printed part bottom_top or when building variant 2 through the holes drilled into the 5 mm acrylic glass disk. (not needed with 3d printed parts)

Fixate the Velostat pressure sensor with tape within the small pit of part bottom_top. If you are building variant 2 just tape it to the center of of the 5 mm acrylic glass disc.

Glue the 5 mm ring of paper on the acryllic glass disc to compensate for the height difference caused by the pressure sensor. (not needed with 3d printed parts)

Glue the circle made of paper to the ring to prevent the light exiting through the coaster bottom. (not needed with 3d printed parts)

Glue the bottom_bottom part (if using laser cut parts the 3mm acrylic glass disc) carefully to the side with the pressure sensor on the side of the disc as shown in the following picture.

Step 3: Preparing the WS2812 Led Strips

Cut a strip of 23 LEDs from the WS2312 LED strip roll.

Then solder 3 cable wires to the contacts on the LED strip end, one to GND, one to VCC and one to VI.

Glue the LED strip with a hot melt glue gun on the inner side on to the bottom part. This is done best by fixating the strip first with some tape. The single LEDs should rest on the bottom part.

The bottom_top part or the the 5 mm acrylic glass disc when building variant 2 should fit perfectly the outer margin of the LED strip, so you should only see the bottom_bottom part or the 3 mm acrylic disc.

To prevent the light shining through the solder pads adhere one round of type around the LED strip.

Step 4: Time to Connect the Electronic Components

First solder 4 wires to the TMP006 Sensor Breakout pads labelled with GND, VCC, SDA and SCL.
Now solder the VCC and GND wire to the corresponding pads of the Arduino Mini. After this solder the SDA wire of the Breakout board to the A4 pad of the Arduino Mini. The SCL wire of the Breakout board has to be soldered to the Arduino’s A5 pad.

Next solder one wire of the pressure sensor also to Arduino Mini VCC pad. Then solder the other pressure sensor wire to Arduino’s A0 pad. To connect the LED strip solder the VI wire to pad 11 of the Arduino MIni. Also solder the LED strip wires VCC and GND to the corresponding Arduino pads. Now solder the 2K7 resistor between Arduino GND and pad A0. At last connect VCC and GND of the battery to the corresponding Arduino pad. At the end the wiring should look similar to the wiring on the picture above.


Step 5: Positioning the TMP006 Breakout Board

The printed top part as a small hole in the center. This hole allows the TMP006 sensor to measure the temperature. Now glue the breakout board to the top part with the small sensor chip sitting directly beneath the hole.

Step 6: Programming the Coaster.

The construction is finished. Now it’s time for programming the coaster.
If not installed, install the Adafruit Neo Pixel [1] and [2] Adafruit TMP006 libraries.
Now start the Arduino IDE and connect the Arduino using the FTDI to the computer running the IDE.

[1]  http://learn.adafruit.com/adafruit-neopixel-uberguide/overview
[2]  http://learn.adafruit.com/infrared-thermopile-sensor-breakout

Download the Arduino sketch from: 
http://www.mariolukas.de/downloads/

Open the downloaded Smart Coaster Sketch [6] in the Arduino IDE using File -> Open...

Choose the appropriate board for the Arduino Mini with Tools -> Board -> Arduino Pro or Pro Mini (3.3V, 8 MHZ) w/ATmega328
Click Upload which compiles the sketch and uploads it into the Arduino.

Disconnect the FTDI from the Arduino, insert the LiPo battery and close the Smart Coaster. The Smart Coaster turns on automatically when you put a glass on it. 

The Smart Coaster is now ready for duty. Have fun building it!

And don't forget to support this project for the contest by following the link below and clicking like!
http://www.photonik-campus.de/projects/smart-coaster/

Further Ideas
The integration of a serial bluetooth interface would allow the coaster to be wireless programmed. Other than that it would be possible to control the Smart Coaster with a smart phone. It could be used to give notice of received messages, remaining power or other info by color changes or blinking.

The Smart Coaster would definitely be a good use case for wireless charging, as there would be no need to open it again once assembled.

Multiple Smart Coaster could communicate with each other and show some kind of “swarm” behavior, e.g. matching the same beverages.

Also you have the possibility to create some party games with a Smart Coaster, e.g. spin the bottle or choosing random colors for each new drink.

You can contact me at : http://www.mariolukas.de