Introduction: Steam Linked Display Shelf
My brother has Funko POP figures that represent his characters that his friends play most often in video games. We thought that it would be cool if they had a display case that would have LEDs in it to represent their status on Steam. So with my previous experience with Arduino, Steam API, and woodworking, I said that I could probably figure something out.
For anyone that does not know what Steam is, Steam is a digital distribution platform developed by Valve Corporation for purchasing and playing video games with a built-in communication system. Steam also has the ability to allow users to view what others are playing, if the person is on their computer, away, in game, etc, it even lets you play with them if you so choose.
Features / Design
Once we decided that we were going to make this project I sat down a started to write out some features that I knew that this would need to have.
- Wireless Wi-Fi setup/login like a Chromecast.
- Dimmer / on-off switch.
- Defused LEDs.
- Status LED modes.
- Zero upkeep after setup and build.
- POP figurines must sit on/in.
- Must not be power hungry.
After deciding what the project needed to include me and my brother started to go over designs until we got what we have now.
An Important Note
The original design was a box with multiple levels. However, once we had built the two bases we thought that it would look better as one long shelf instead of a box with multiple levels. I am going to try my best to explain how we would have built it if we had started with the new design, so if you notice in some of the pictures that we have slightly different sized pieces this is the reason.
Step 1: Materials
NodeMCU V1.0 ESP8266 (Link)
USB 2.0 A-Male to Micro B Cable (For programming)
22 Gauge Silicone Wire 10ft (Link)
1/8 inch Expandable Braided Sleeving 10ft (Link)
Panel Mount DC Jack (Link)
5V 2 Amp DC Power Supply (Link)
Project Box (Link)
Solder (Just about any electrical solder will work)
22 AWG project wire (Link)
LED Strip (Link)
Project Wood (Home Depot See Pictures)
1 Oak .25" X 1.5" X 48"
1 Oak .5" X 1.5" X 48"
2 Oak .25" X 5.5" X 48"
1 Polycarbonate sheet 8" X 10"
Note that a .5" X 5.5" X 48" board is shown in the pictures but is not used in the project.
- 2 Tubes of two-part epoxy (Home Depot)
- Wood Glue (Home Depot)
- Magnets .315" Dia X .118" Thk (Home Depot) (Optional)
- Ebony stain (Home Depot) (Optional)
- Spray Polyurethane (If stained)
- Painters tape
Step 2: Tools
These are the tools that we used.
- Table Saw
- Radial Arm Saw
- Belt Sander
- Hot glue gun
- Soldering iron
- Wire stripper
- Power drill
- Drill press
- Sand Paper
- Tape measure
Although we used these tools it does not mean that you have to use these exact tools. It would only help step by step if you are looking to directly replicate the project. For example, the bandsaw could be substituted for a jigsaw, a scroll saw, a hand saw, etc.
Step 3: Building the Project Box
- First, drill a hole in the project box from whatever side you would like to be the front, this will be for the dimming potentiometer. We drilled this hole on the small side right in the middle. If you are using the potentiometer listed in the parts list the best drill we found to use for this was 17/64 (Picture 1).
- Secondly, drill a hole in the back for the wires that will be going to the shelf, when looking at the box from the front we put this hole in the back left, we found that 3/16 drill worked best for this but it was a tight fit.
- Next, drill a hole in the back for our dc power jack, we put this on the back right side. If you are using the power jack in the parts list the best drill for this was a 5/16. (Picture 2)
- After that, drill a hole in the back for the reset button (this exact button is not listed because we got it out of our Arduino box) we put this right next to the power jack.
- Before assembling the project box we filed off the tab on the potentiometer as we can tighten the potentiometer tight enough so we don't actually need it.
- Finally, put all of the parts in their respective holes and tighten them down. (Picture 3)
Step 4: Electrical
While doing the electrical it might be best just to follow the diagram (Picture 4).
- Cut the braided sleeving to 9' 8'. If you don't need the whole length or if you need more of the wire then only cut the sleeving 4 inches less than the length of the wire (this will allow us to have the wire hanging out the ends to solder inside the project box and in the shelf).
- Hold the 3 strands of 22 AWG wire in your hand so they form a sort of triangle and wrap them with electrical tape.
- Feed the 3 strands of 22 AWG wire through the braided sleeving (electrical tape end first) leaving about 2 inches of wire on each end this might be hard but we had to shimmy the wire the whole way. (Picture 1)
- Feed the wire into the wire hole on the project box so the braided sleeving is slightly inside the project box then hot glue the wires around the hole to prevent them from being pulled out. (Picture 2)
- Strip the end of the red wire to about a 1/4 in then solder it to the shorter leg of the dc power jack.
Strip the end of the black wire to about a 1/4 in then solder it to the longer leg of the dc power jack.
Place the ESP8266 inside the project box (to be used for spacing).
Strip the end of the white wire to about a 1/4 in then solder it to the D4 pin on the ESP8266
Cut 2 pieces of red and black project wire to reach from the power jack to the Vin pin and the GND pin.
Solder both of those like we did with the other two red and black wires to the power jack then solder the black to the GND pin and the red to the Vin pin.
Cut 3 pieces of red, black, and yellow project wire to reach from the ESP8266 to the potentiometer.
Stripeach end of the 3 wires to about 1/4 in.
Solder those three pieces of wire as shown in the diagram to the potentiometer with the black connected to a GND pin, the red to 3.3V pin, and the yellow to the A0pin
Cut 2 more pieces of black and yellow.
Strip each end of the 2 wires to about 1/4 in.
Solder them to separate legs on the reset button then the black wire to the GND pin and the yellow wire to the D3 pin.
With all of that, it should be everything on the electrical drawing shown in the pictures except the for the LEDs as those have not been cut or soldered yet.
Step 5: Cutting the Wood
- Cut the Oak .5" X 1.5" X 48" board in half lengthways so that there are two pieces that are about .5" X .75" X 48".
- Trim the two halves from step 1 so that they are .5" X .75" X 44". These will serve as the back and an led support inside the shelf.
- Cut the .25" X 1.5" X 48" board in half lengthways so that there are two pieces that are about .25" X .75" X 48".
- Trim the two halves from step 3 so that they are .25" X .75" X 44". These will serve as the front which will sandwich a polycarbonate sheet.
- Trim the two .25" X 5.5" X 48" boards to .25" X 5.5" X 44" (save the scrap). These will serve as the top and bottom of the shelf.
Retrieve the scrap from step 5 (the scrap should be about .25" X 5.5" X 4"). Cut two pieces of .25" X 5.5" X 1 1/8" from the scrap. These two pieces will be the end caps for the shelf.
Step 6: Cutting Polycarbonate
- Cut the polycarbonate down from 8" X 10" to 5.5" X 10"
- Cut the polycarbonate into 8 strips that are 5.5" X 3/4".
We cut the polycarbonate on a bandsaw however this could be done with a jigsaw or even a table saw.
Step 7: Glue Up (Part 1)
Before gluing we sanded each of our polycarbonate strips on the belt sander to give them a matte transparent finish this can also be done just with sandpaper. After cutting and sanding all of the polycarbonate pieces we can glue up the front of the shelf. If you don't have a belt sander you might want to be careful with this part as to not get epoxy on the front and ruin the transparent matte finish.
- Layout one of the .25" X .75" X 44" peices.
- Lay each of the polycarbonate strips down on top to make sure that they all fit before gluing.
- Mix a large batch of epoxy (this will be used on the top of one board and on the bottom of the other be sure to make enough).
- Apply epoxy to the top of the .25" X .75" X 44" board.
- Lay the 8 polycarbonate strips down on top of the board.
- Apply epoxy on top of the polycarbonate strips.
- Lay the other .25" X .75" X 44" board on top and sandwich with many clamps.
Step 8: Glue Up (Part 2)
While we wait for the front to cure we will glue up the back. The back will consist of the .5" X 3/4" X 44" inch piece with some polycarbonate spacers which will act as a vent.
- Cut leftover polycarbonate into 8 strips about 3/4" X 3".
- Mix a moderately sized puddle of epoxy.
- Use epoxy to glue the 8 polycarbonate strips to the 3/4" wide side of one of the .5" X 3/4" X 44" boards, evenly spaced along the length. The board will now be.593" X 3/4" X 44".
- Clamp the polycarbonate strips to the wood till the epoxy dries.
Step 9: Sanding
After the front board (the polycarbonate sandwiched between wood) has finished curing (see epoxy container for time), sand both sides so that there is a smooth and epoxy free surface. After the back is done curing we can then sand that as well to remove any excess epoxy.
Step 10: Glue Up (Part 3)
Now that we have our front and back boards we can glue them to our base (.25" X 5.5" X 44").
- Use a thin bead wood glue to glue the front board against the front edge of the base (.25" X 5.5" X 44").
Use a thin bead wood glue to glue the back board against the back edge of the base (.25" X 5.5" X 44").
Use clamps to clamp the two boards in place.
Step 11: LED Bar
- Cut the led strip into sections of 3 pixels (Picture 1).
Soldered the strips together using the project wire to line them up in the middle of each section of polycarbonate (Picture 2)
Hot glue the long strip to the second piece of .5" X 3/4" X 44" wood
Drill a 3/16 hole in one of the end caps about 1 in into the piece (Photo 5).
Push the braided wire through the hole, hot glued it in place and soldered the wires to the respective pads (Black to GND, Red to 5V, Yellow to DI) this can also be seen in the electrical step wiring diagram.
Put a thin bead of glue on the bottom of the led bar and clamp it down to the bottom so that it was about a 1/2 inch away from the front board to help defuse the LEDs (Picture 6).
Drill pilot holes in both of the end caps into the back board and the led bar then countersink the holes and put 1-inch drywall screws in to hold the ends on (Picture 5).
Step 12: Setting Up the Arduino Software
The ESP8266 chip is widely available and has a low cost they have features to host web servers, make requests to web servers, and many other things that will allow you to connect your Arduino project to the internet. In order to program the ESP8266 you must first have the Arduino IDE installed from the Arduino website.
- Open the Arduino IDE.
- Go to Preferences which can be found under the file tab at the top of the window (Picture 1).
- Go down to "Additional Boards Manager URLs:" and insert this link "http://arduino.esp8266.com/stable/package_esp8266com_index.json" (Picture 2).
- Click OK
- Go to the tools menu and go to board and then to Boards Manager... (Picture 3).
- Search for "ESP" the second option that should show up should be "esp8266 by ESP8266 Community", change the version to Version 2.5.0 and click install. (Picture 4)
- When it is done installing click close.
- Go back to the tools menu,go to board, select NodeMCU 1.0 (ESP-12E Module) (Picture 5)
- In the tools menu, make all of the options look like Picture 6.
- Download the files that are attachedto this step for the autoconnect and simplelist library.
- Back in the Arduino IDE, go to Sketch menu, Include Library, click Add .ZIP Library...,then navigate to the AutoConnect.zip file that you just downloaded.
- Repeat step 11, but select the SimpleList.zip instead of AutoConnect.zip. (Picture 7)
- Go to Include Library inside of the Sketch tab and click Manage Libraries... (Picture 8).
- Search for PageBuilder and install it (Picture 9).
- Search for ArduinoJson change the version to Version 5.13.5 and install it (Picture 10).
Search for Neopixel, select the 3rd option and install it (Picture 11).
Step 13: Programming
Now that the Arduino IDE is set up we can start the programming.
- Download the project code attached to this step.
- Open the file in the Arduino IDE.
- Connect the ESP8266 to your computer using a Micro USB cable
- At the top of the file, you will see "String STEAM_KEY = "XXXXXXXXXXXXXXXX"; // Your steam key from the steam API." you need to replace "XXXXXXXXXXXXXXXX" with the steam key that you can retrieve from this link if you do not have a domain to enter just enter "127.0.0.1" as the domain.
- At this point, if you have made any changes to the design such as you have added more or less LEDs you can change some of the settings in the code at the top there are comments there to help you with those changes.
- Go to Tools, then go to port and select the only available option(if there is more than one option unplug the esp8266 and reopen the tools menu and go to port and see what one disappeared then plug it back in and see what one came back and select that one)(Picture 1).
- Once selecting the port you can click the upload button in the upper left (Picture 2).
- When it is done uploading you should see the Arduino startup (the LEDs will have a bouncing led that is blue wait until it turns purple if you don't see any lights at you have done something wrong in the steps) at that point you know that everything is working correctly.
- Unplug the esp8266 from the micro USB cable and plug in the 5v power supply into the dc jack on the back and check to make sure that the LEDs and the dimmer work.
Step 14: Putting the Top On
At this point, you have a choice of ways that you would like to mount the lid, in the end, we put it on with 3/4 drywall screws which we drilled pilot holes and countersunk them. It is also possible to glue it on with wood glue on the front bar and epoxy on the back polycarbonate spacers.
We did stain before this step however this should have been done before staining.
Step 15: Staining
We chose to stain our shelf with ebony stain and apply polyurethane to provide the shelf with protection. If you choose to stain or paint your shelf you must first cut painters tape to cover the polycarbonate on the front bar so you don't cover it up. Other than that there were no special steps to staining but to follow the steps on the can.
Step 16: Setup
- Plug in the shelf where you would like to leave it.
- Go to your phone or any computer with wifi capability.
- Search for a wifi signal that is named Steam-Status-Hub (Photo 1) and connect to it.
- Once connected your device will let you know that the wifi wants you to sign in to obtain internet however this is really our method of setting up the project (Photo 2).
- When you click on the pop up that says that you have to sign in you will see something like Picture 3.
- Click on the three lines in the upper right corner.
- Click on Steam IDs and enter the steam 64 ids of the friend that you want to have displayed make sure to hit the submit button after you have entered all of the ids. Note that the first id will appear closest to the esp8266 in wiring and then the second etc (SteamID64s can be found from this link).
- Click on the three lines in the upper right corner.
- Click on Add New AP and enter your wifi information and click apply.
- After clicking apply you will be taken back to your wifi screen and your steam linked shelf should show the status of your friends after a minute.
Step 17: Features
Now there are a lot of features that I did not go over in this Instructables such as the reset button which I am going to list out here.
- If the reset button is held for 5 seconds it will remove old wifi data and will restart with an AP as it did during setup.
- The LEDs have multiple status modes to display any errors, for example, the LEDs will pulse purple when it can't connect to wifi and you need to reset it up, the LEDs will pulse cyan if there is a problem retrieving the information for the id that was entered, the LEDs will pulse yellow if there was a problem with the network or if the Steam API key that was entered is bad.
The LEDs have multiple colors to represent a persons steam status
- Red = Busy.
- Yellow = Away.
- Green = In game.
- Blue = Online.
- Orange = Snoozing.
- Cyan = Looking to trade.
- Purple = Looking to play.
Step 18: Conclusion
The Steam linked shelf will continue to be an everyday use of my brother. Over this whole project, I have learned so much more than what I knew about Arduino and woodworking and I will be continuing to use this new knowledge on my next projects. Looking back at what I created I realized that some of the design could have been changed and I tried my best to explain what we would have done if we did do it. Over the next couple of weeks, I will still be looking to work on the code for this project and keep it up to date. Please let me know if you have any questions or problems about this instructable and I will try my best to help you out.
Participated in the
Arduino Contest 2019