Introduction: RGB Beer Pong Pods
Beer pong, the exciting skill based drinking game, has just been upgraded with RGB pods to make it even more intriguing and colorful.
These pods were lovingly created to enhance the drinking and gaming experience by adding a visual effect. They detect if a cup is placed or taken away and then reacts on that by changing the colors of the pods. This also allows for new and exiting rules to be added to the game and draws the attention of anyone passing by or spectating.
A bit more about myself. I am an engineering student in South Africa and have been tinkering with electronics as my hobby from a young age. This project was quite the experience for me as it was my first "professional" project which I am able to use on a day to day basis and enjoy with my friends. I hope you enjoy the instructable and find it an inspiration for your own ideas or hacks and are able to build your own if you wish.
You will certainly be the center of attention when arriving at a party with a set of these pods.
Step 1: Research and Planning
The success of any project is based on the amount of planning, research and preparation that went into it. My dad always used to say measure twice cut once and he has been right more often than not.
The idea for this project was sparked by another instructable user. He created a whole table on which to play beer pong with a lot more extras than my own, but I have to give him credit on his outstanding instructable and project. Check out his project : https://www.instructables.com/id/Interactive-LED-Be...
When starting a project you must decide on criteria which you would like your project to fulfill. Mine was portability, usability and cost. I planned to use my pods at my university residence where things could get out of hand quite quickly so they had to be portable and robust. The portability made it possible to use the pods wherever I went whether it was at a friends house or in our pub, and when I was done I could put them away for safe keeping. The pods had to be robust as any activity where alcohol is concerned can become destructive whether on purpose or by accident.
Providing power to the pods was another obstacle as mains power wont always be available and you don't want long cords cluttering the area where you are socializing. This had quite an impact on my choice of parts.
As we all know liquids and electronics do not go hand in hand so protecting the electronics from any spillage was another important design aspect which had to be addressed. The design I settled on is not perfect but it will be able to withstand most accidental spillage and even moderate cleaning.
The design is modular so if one circuit in the pods breaks it can easily be replaced without too much hassle. The top and bottom acrylic pieces of the pods and the arduino are also easily replaceable.
Step 2: Tools and Materials
There are several different ways to manufacture my design but I was able to do it with the tools I had at hand: a drill press, a jigsaw and a few hand tools. This list serves as a guideline but any other tools can be used that you have available which can achieve the same outcome. I would have liked to have the base milled or routed instead of doing it by hand and the acrylic laser cut or milled but I was too exited to get started with the project that I didn't want to wait and pay for those methods.
Tools I used (any other suitable tools can be used these were the ones I had access to):
- Drill Press
- 54 mm Hole saw bit
- 3 mm drill bit
- 3 mm Router bit
- 45 degree Champher router bit
- Soldering Iron
- Sanding wheel and sandpaper
- Paint brushes
- Carpet knife
- Sponge Tape, Duct tape, Masking tape
- Wire stripper
Parts (Enough for both pods, all purchased from Ebay or had lying around) :
- 72 x WS2812s Neopixels
- 12 x TCRT5000L Infrared reflective sensor
- 12 x 270 ohm Resistor
- 12 x 40K ohm Resistor
- 2 x 680 ohm Resistors
- 2 x Arduino nano clones
- 2 x USB mini cables
- 1 x Large USB power bank
- Perspex or acrylic plastics
- Wood for the base
I settled on the neopixel's instead of normal 5050 SMD RGB led's as the neopixel's use 5 V instead of 12 V and all the led's in the pods could then be controlled from 1 output pin on the arduino instead of investing in expensive led drivers for the 5050 led's which leads to much higher cost and more circuitry. This also allowed me to use the power bank as power solution instead of heavy Lead-Acid batteries.
The arduino nano is small enough to fit inside the pod base and had enough IO to support all the components I wanted to use.
Power is to be provided from a power bank as it provides 5 V which all the components uses, it can power both pods at the same time and allows the arduino's to use USB power so they can easily be connected to a computer to be programmed.
Step 3: Circuit Design and Prototyping
I started off by designing a prototype circuit in eagle CAD, which I etched and built myself to see if my circuit is functional. It was after my 3rd failure to etch a 2nd board that I decided I was going to try a different route for this project. I have heard of Dirty Cheap PCB's ( http://dirtypcbs.com/ ) before but most of my projects were small scale and only needed 1 or 2 PCB's so this was the ideal project to have PCB's made as I needed 12 of the same board with complicated layouts. They also offer free shipping which is always helpful for projects on a budget.
Before I finalized my designs I tested on my home made prototype to be sure that the circuit was going to work. As a side project I made the prototype into a light up glass stand on which beakers and jugs can be exhibited.
The circuit itself is very straightforward, the Neopixel leds get daisy chained together DOUT --> DIN and the IR reflective sensor has some pull up resistors and an output to the arduino - see the attached circuit diagram.
I then created a board layout in eagle CAD using a circular layout tool I found online (geekamn's circular layout tool) so my led's would be rotated and spaced around the center. I added some text and the routing lines before sending it off to be manufactured (http://dirtypcbs.com/). They offer fast and cheap PCB manufacturing as well as free shipping. Just keep in mind the size constraint and other design rules listed on their website. The boards arrived after a few weeks which is normal for overseas shipping to South Africa and by that time all my other parts have also arrived and I was ready to start working.
Step 4: Base Design
I designed the base in auto desk inventor before constructing it to be sure that everything will fit. In the photos you can see where I tested my design to see if the cups would fit in side by side before finalizing my design.
I wanted to fit all the electronics inside the base itself and also have the base as thin as possible. While designing the base I had the picture of a pool triangle in my mind and I am satisfied with how it turned out.
The grooves are channels for the wiring while the cavity in the center is for the Arduino nano which is going to be the brain of the pods.
I chamfered the topside of the holes in which the circuits fit to ensure that light from the led's will not be blocked by the base of the cups but that light will spill upward around them.
Step 5: Constructing the Base
Start off by getting a 15 - 20 mm thick piece of wood which will be large enough to accommodate the design. Draw the layout onto the wood using some pencil and a ruler. Now that the design has been transferred to the wood it is ready to be cut. I used a jigsaw to cut along the outlines but any other type of saw can work just as well. With the outlines cut the next step is drilling the holes.
Before using the routing bits first practice on a scrap piece of wood.
Put the 54 mm hole saw in the drill press and proceed to drill the 6 holes. After the holes were drilled I chamfered them and turned the base around to proceed with the channels on the underside. To ensure the channels were straight I clamped a square straight piece of wood to the drill press table and slid the base along that to rout the channels ( see pictures).
To route the hole for the arduino I first started by removing as much material as I could with a normal drill bit and then using the routing bit to achieve the finish I wanted (be careful not to drill straight through the base to the front - I used the depth limit screw on the side of my drill press to achieve this).
The holes to hold the acrylic in place was drilled after I had cut the acrylic.
Step 6: Cutting Acrylic and Test Fitting the Pods
Cutting the acrylic might seem daunting but the easiest way I found was to score the acrylic several times with a carpet knife and then break it along the score line. This provided a nice clean edge that was quite accurate. You can also use a handsaw or the jigsaw but the plastic starts to melt with the jigsaw which makes the going very tough.
I kept the protective layers on the acrylic till the last steps to ensure that they didn't get damaged or scratched during the fabrication process.
The trick with this step is not to cut the acrylic exactly to the right size but rather a bit bigger so that it overhangs the base. With both sides cut I used some tape to hold the acrylic in place then I drilled mounting holes in the acrylic and wood at the same time and screwed the acrylic onto the base. With the acrylic secured to the base it was over to the the sander to level the edges. I used the drill press with a sanding wheel to achieve a smooth finish by working the acrylic down to the same level as the base. This ensured that the acrylic was flush with the base all the way around and that there will be no sharp edges or splinters sticking out.
Step 7: Paint and Seal
This is probably one of the most important steps as it will ensure the longevity of your project and also the visual appeal.
Start off by thoroughly sanding the base, I sanded with a rough paper first and then followed up with a higher grit paper. Wipe off all the dust with a damp cloth, when the wood has completely dried you can start with the first layer of paint. I gave mine 3 layers just to be on the safe side but 2 should be more than enough. After letting the paint dry for a considerable time I moved over to the sealant.
I used a clear epoxy type sealant which I applied with a brush. I applied 3 coats, waiting till the previous one was dry before doing the next one, to ensure that no moisture will be able to reach the wood. After the final coat I left it overnight before continuing work the following day.
Step 8: Keeping the Circuitry in Place
The circuits do have mounting holes which could be used to bolt them into place but due to the way my base was constructed and designed I had to come up with another way to mount the circuitry securely inside the base.
As you can see in the photos I experimented with a few different ways of mounting the circuits starting with duct tape and then moving over to the sponge tape to serve as a ledge against which to press the circuits with some sponge I cut from a dish washing sponge.
The sponge tape is applied to the inside of the pod holes on the edge of the champher. The pieces of sponge used to apply pressure on the back of the circuits was cut from a dish washing sponge and placed on top of the circuits but any soft sponge can be used, just as long as it holds the circuit in place and does not apply to much pressure so that the tape starts coming loose.
Step 9: Connecting the Pods
With the base completed and painted it is time to add the electronics. Place the circuit boards face down in the holes and orient them so that the circuit can be completed in the most fashionable an practical way, then connect it as follows:
1. Connect all the +5 V and GND connections of the pods together and then connect them to the arduino's 5V and GND.
2. Start from a point and start chaining the DOUT to DIN of the circuits to each other then connect the first pods DIN to a digital pin on the arduino through a 680 ohm resistor( it doesn't matter which one as you can just specify which one in the code).
3. Connect each pod's IROUT pin to a separate analogue pin on the arduino ( order doesn't matter as this will also be defined in the code).
Use some masking tape to keep all the wiring tidy as you go and then tidy it with neat strips in the end before closing the pods with the acrylic bottom cover.
Step 10: Closing Up and Sealing Screw Holes
The acrylics protective layer can now be removed. Before screwing the acrylic to the base put a dab of silicone on the tip of the screw and then fasten it so it seals the hole to prevent liquid seeping into the wood and electronics. Also apply some silicone sealant to the USB cable where it leaves the base.
Step 11: Code
The code is pretty straightforward but my skills were limited at the time of this project so it might not be the prettiest coding but it works well enough. The main thing the pods do is they change color if there is a cup placed/taken away. I still want to add functionality for certain effects dependent on the amount of cups remaining on the pods but that will have to wait for now.
The basic process flow of the code is as follows:
1. Read sensor data and store in an array.
2. Interpret said data ( see if there is a cup placed on the pod or not)
3. Store the pod colors in an array depending if there is a cup placed on it or not.
4. Output these LED color values from the array to their respective pods.
For more in depth explanation refer to the attached code with comments.
You will also need the adafruit neopixel library found here:https://github.com/adafruit/Adafruit_NeoPixel
Step 12: Future Improvements
There are quite a few things that I would like to improve on or add. But as these were my first pods I am happy about how they turned out.
- Improve the code to allow for different modes and functions like music visualization, score keeping, flash effects dependent on the amount of cups remaining etc.
To control these modes and settings there are three ways which I considered:
- USB OTG paired with an android application which could not only power the pods ( I have tested this with my galaxy S3, but I would not recommend it for longterm use.) but also communicate over USB and change settings of the pods.
- Bluetooth or WIFI
- Add an LCD screen with buttons to each pod which can be used to configure the pods, their color thresholds and modes.
- I also considered creating a base station with a 3rd arduino which houses the power bank, a microphone for audio possibilities, a LCD screen with control buttons and a portable LED matrix to display the score change modes on the pods and to enhance the overall visual experience.
- I would like to add a groove around the edges of the top and bottom in which an O-ring can be placed to ensure a watertight seal all around because currently a bit of moisture still manages to show under the acrylic.
- I would also like to change the pod design to include batteries as part of its base but that will increase the cost significantly and also increase the thickness of the design. (it can also be added to the back of the pods like a laptop battery is attached to a laptop)
- Another design change I would make is to have the whole thing milled from single piece of expanded PVC or similar plastic material and only have the transparent top acrylic screw on to improve the water resistances of the design as well as the mass production possibility. This will also eliminate the need to paint and seal the base as these plastics come in a variety of colors and will also reduce the overall weight of the base. If I were to create a pod in this way I would rout grooves for the cabling through on the top of the base and then use cleaned copper wire to to do the wiring which should present quite nicely through the clear acrylic. More LED's can be added to the base itself to give it a back-lit glow or pattern which can also be milled into the base.
- I was struggling to get a definite reading from the infrared reflective sensors through the clear acrylic to determine whether a cup was placed on it. So I might look into different sensors or another way of detecting the cups. One thing I noticed was that by sticking a small white sticker to the bottom of the cup helped improve the readings I got from my sensors.