DIY Stream Deck! Control Your Stream Much Easier for Less Than £50! Works With OBS and Any Other Streaming App That Supports Hotkeys.

by Jimsicle in Circuits > Electronics

11885 Views, 168 Favorites, 0 Comments

DIY Stream Deck! Control Your Stream Much Easier for Less Than £50! Works With OBS and Any Other Streaming App That Supports Hotkeys.

20210725_233959.jpg

I present a guide to building a much more affordable alternative to the Stream Deck. I am an occasional streamer and the more I did it the more I realised there's scope for improvement and efficiency during each stream.

After looking into various hotkey configurations involving various third party macro apps I decided I wanted something that's plug and play and can be made from components that are easy to obtain. I had lots of spare 24mm arcade buttons laying around and while I originally wanted to build a custom enclosure out of wood, I couldn't be bothered with all the extra effort so I just got a sloped project box that more than suited my needs.

I was inspired by this build made by Parts Not Included and his code enabled virtual keys F13-24. This is ideal because it has a great number of buttons and they do not interfere with other functions. Rather than just plagiarise his code outright, I referenced it to create my own and to add some extra buttons as a learning process.

I use OBS to stream, but this guide should enable you to use the same hotkeys in any other stream program.

Supplies

Screenshot 2022-05-02 140511.png
s-l300.png
micro_1.png
515DzK6pdIL._AC_.jpg
512Th62qDtL._AC_SL1200_.jpg
download.jpg
box.png
holesaw-access-re-600x300.png

Arcade pushbuttons: I used 24mm Sanwa clone arcade buttons. You can have as many or as little as you want (this guide is for 16 buttons) and if you do not want to use arcade buttons, you can use any two pole momentary pushbutton as it will be wired the same.

Arduino Pro Micro: An easy to obtain microcontroller, though I used an Arduino clone from eBay for this project.

Micro USB to USB B panel mount socket connector: You can do any combination of this with whatever connector you want. I use USB B sockets because they are much more robust than a Micro USB socket and I have an excess amount of USB A-B cables so that if I lose one, there's always another I can just use instead. 

Equipment wire: I used solid core wire for this one but you can use stranded if you wish also.

Soldering Iron and solder: This will be used to wire up the buttons to the Arduino. I was going to originally use crimp connectors but there was not enough space in the enclosure for them. These buttons will get very light use compared to an arcade stick so I just soldered the buttons to the board instead.

Drill and drill bits: Make sure that these match the diameter of the buttons you're using. I used a 24mm hole saw bit for the arcade buttons and a 16mm bit for the smaller push buttons. Use any smaller bit for pilot holes.

Self adhesive vinyl wrap (optional): I used this because I wanted something to cover the surface of my project box.

2 part epoxy adhesive: Use any quick drying 2 part adhesive of your choice.

Wire strippers

Project box/enclosure: This is what everything will be housed in, this can be any size you want according to the buttons you want to use. I used this one which was the perfect size for my desk space.

Button Layout

Screenshot 2022-05-02 150906.png

It is recommended that you plan how you want the buttons to be laid out. I would recommend you measure the perimeter of the face surface of your project box and recreate it in your drawing program (I used paint.net)

I went on Slagcoin to find the layout that I wanted, copied it into the above template, printed it out and stuck it to the project box with a glue stick (unfortunately I didn't get pictures of it)

Drill Holes for Buttons and Fit Them

20210710_190908.jpg
20210723_123244.jpg

Now that the button layout is stuck to the front face of the enclosure, just drill the pilot holes first using a small bit and then switch to a hole saw bit as these cut through the thin plastic surface effortlessly. Once done, you can do a quick button fit to see if it all fits well.

Sand the Enclosure and Apply Vinyl Wrap to It (optional)

20210724_132353.jpg

If you're applying this to the box, remove the buttons first! I sanded down the project box and wiped it down with a wet cloth to get rid of all the dust and other particles. Unfortunately I didn't get any pictures of the vinyl wrapping process but there are plenty of tutorials on how to fit this.

But if you prefer the look of a plain project box then you can skip this step entirely.

Attach USB Cable Port

20220502_151745.jpg
s-l300.png
20210725_234011.jpg

Drill a hole that can fit your USB cable port, then prep the two part epoxy adhesive. Line up the port with the hole then apply the epoxy around the cable port and hold it there for 30 seconds until the adhesive grabs hold of it and just leave it for at least an hour. Once that holds, it will stay there but do not move it or put it under any stress as it takes 24 hours for it to fully cure.

Normally I would use screws in case I need to replace the port but I highly doubt I'll need to do this and I didn't want the hassle of lining up the screw holes as well so I just went ahead and used epoxy.

Wire Up the Buttons to the Arduino

20220502_141013.jpg
wiring.png

Now it is time to wire up the buttons. It's relatively simple, just ensure that one of the button terminals are daisy chained together and soldered to one of the Ground (GND) pins. Then solder the other button terminal to the numbered points on the Arduino (points 2-15 and A0-A3) ensuring that the buttons are connected in order (solder first button to 2, then button next to it to 3 etc etc) and not in any random order. Be sure to check for short circuits with your multimeter's continuity function.

I have shown my soldering but also made a rough wiring diagram that should demonstrate the task. Once done, connect the cable port to the Arduino.

Connect Arduino to PC and Upload Code.

arduino.png

Download the Arduino software and find your board. It should come up as an Arduino Leonardo (it did on mine anyway),

Either upload the .ino file or copy the code from the text file and upload it to your Arduino.

This code will now provide you with extra 'virtual' keys F13-F24 and 4 additional buttons you can map macros to (I just added F5-F8 to the remaining 4 buttons that I'm still yet to find use for)

Open OBS

settings.png

Select Hotkeys

hotkeys.png

Map Buttons!

mapping.png

Choose the function you want the button to perform and it will map it. I have circled the function I wanted performed and it is mapped to the F16 key from the Arduino. Repeat as necessary for other functions.

Print Button Stickers (optional)

20220502_171028.jpg

I ordered some 24mm circular printable labels with MS Word template for the arcade buttons so that I won't get them confused. I nabbed some symbols from Google Images and worked them into the template, printed them off and stuck them to the necessary buttons. They work absolutely fine and I've not needed to replace the labels after many months.

Enjoy Your New Stream Deck!

20210725_233959.jpg
20210724_215320.jpg
20210725_234011.jpg

Your Stream Deck is now ready! I must admit I have not made full use of all the buttons on my deck but I'm very glad they are there and can be applied for functions I may want to use further down the line. The most important buttons like scene switching and mic muting all work a treat so it already is an invaluable tool.

Video Demo of the Box in Action!

DIY Stream Deck/Macro Pad/Button Box demonstration.

Here's a video demo of me using it! As you can see here the buttons are mapped to switch between scenes. This was the only function I could visibly demonstrate.

Feel free to ask any questions about the process!