Now on Printables! Check the Thingiverse page here to see previous makes and remixes.
See also:
ENDER-3 VERSION ON THINGIVERSE OR PRINTABLES (Original design, made specifically to bolt to the Ender-3 LCD)
Universal Buttonbox (for OctoPrint)
Currently 2 versions:
10 buttons
10 buttons + 3 rocker switches
Note: the rocker switches are not effective if used with the same plugin as the buttons. I used them in combination with custom Python scripts that detect whether they are switched. This is relatively complicated. If you don't have a use for them or don't know how to use them with your Raspberry Pi, you can use the version with just the 10 buttons or reach out to me or others in the comments.
After the succes of the Ender-3 Buttonbox on Thingiverse and me needing the same kind of device for my enclosed CR-10S, I present you the Universal Buttonbox. It is highly versatile as it can be mounted to whatever you want.
The new approach of incorporating the buttons in the top plate only requires printing two parts and makes for easy assembling.
How does it work?
Push-buttons and rocker switches (optional) act as inputs for a Raspberry Pi running Octoprint
Button inputs are processed by the Octoprint-Enclosure plugin to activate an output. In this case sending your own custom GCODE to the printer
The printer does what you want it to do (hopefully)
A resistor and wiring to connect the buttons and switches to the Raspberry Pi
How to make it? (see animation above for assembly guide)
Choose your version (with or without rocker switches). If you want to make your own custom buttons, use the top plate of your version ending with "BLANK".
Print the two parts.
How to print the button inlays? To get the colored inlays, align the button inlays 3D model with the top plate 3D model in the slicer. Note down the top plate position and move it away in order to first only print the button inlays (one layer, ideally 0.3mm). Afterwards, without removing the physical inlays from the buildplate, print the top plate in its previous position in order to print it over the already printed inlays (use the same initial layer height).
Do the parts need supports? The mounting parts only needs supports underneath the two mounting screw holes on the sides. Ideally, you add these as custom supports in your slicer since the rest of the models can be printed without supports.
Insert the tactile push-buttons
(Optional) Insert the rocker switches
Clear the bolt holes and bolt the top plate to the base
Connect one end of all push-buttons together
Via a current limiting resistor (resistance does not really matter, I used 1k Ohm) connect this side to the 3V3 of the Raspberry Pi
Connect the other ends of the push-buttons each to a separate GPIO pin of the Raspberry Pi (remember which goes to which)
Define your outputs (for example GCODE scripts and the ones I use, see the file section)
Define your inputs as GPIO Inputs (making sure to use the following settings: Output Control, Input Pulldown, Rise) and associate them with a corresponding output
-------------------------------
Feel free to remix this design as you wish. It would be nice if you upload the remix so we can all benefit. Also feel free to comment with button ideas, ideas in general or your custom GCODE scripts so I can add them to the example document.
*Disclaimer:* This design has overlapping geometry. I know Cura has no problem with the files, but I cannot guarantee that other slicers don't either.