This post is about a new panel I designed and the code to control it.
It features all the simplicity and functionality of the Utilpanel/Ultimaker controller PLUS:
3 configurable buttons, for frequently used functions
1 Emergency Stop button
1 Expansion port to connect and control external devices (like photocameras, heated bed, probes etc.)
THIS IS THE STORY (You may want to jump this part)
After few days I played with my new 3D printer I discovered that controlling it without a pc (or in my case a Mac) would have been really cool.
Not having the Mac forced to sit colse to the printer for hours is a real plus. Also having all the important information about the printer at a glance is always useful and if you are attempting to calibrate it (think about the eSteps), using a controller really speed up things!
I looked around and I found some really cool control panels on the net and a plenty of instructions, kits and ready to go solution.
Just to mention some: Utilpanel, Reprapworld Keypad board, Ultimaker controller, Reprap discount smart panel and so on… Thingiverse is also a very interesting source for cases and complete panels as well.
It’s clear that the tendency has been so simplify the design, especially the way you access the menu and its functionality: at the beginning to control the printer and navigate the menu the 4 arrows scheme, plus the enter button, was quite common, but a really clever guy simplified everything and adopted a rotary encoder (iPod style) to control everything with just one input device.
If you have some time and you are curious you may find this article really interesting: haker design
From that moment on, almost any controller adopted this solution and differ each other just the way you build them, but essentially are all the same.
There are many solutions that range from the “basic display only” to the full featured control panel for pc-less printing.
I can simplify the three main “steps” this way:
1) a simple (but super useful) display only: you can see what’s going on in your printer
2) plus some kind of input devices (buttons or rotary encoder, 90% of the time is a rotary encoder): you can also control and configure the printer
3) plus a SD card reader: now you can “cut” the wires and print without the need of a pc connected to the printer
The firmware itself (Marlin) supports all the above combinations and it’s possible to configure it simply changing few parameters in the config file.
In case you have a Ultimaker controller you just need to un-comment a line and upload the new firmware.
When you define the kind of panel panel you have in the firmware you “unlock” the corresponding code to run it, menus and functions are always the same.
There are some exceptions, like the Reprapworld Keypad and the Reprap Discount Smart Panel that adds a physical button to operate an emergency stop.
MY CONSIDERATIONS (You may want to jump this part as well)
Despite I think that simplifying it’s a great idea I also belive that too simple become somehow “more complicated”. It may seem a paradox, but just to hyper-simplify just think about how much is difficult to navigate and use an alarm watch that has just 2 buttons. The design it’s super clean and easy to operate if you want to navigate time, calendar, or alarm, but if you want to access some more advanced features (like setting the allarm) it’s not that practical anymore.. The only way to do it it’s creating some very nested sub-menu and “difficult” to reach commands. The way the software (read as the menu structure) is organized becomes really important and must respect the right balance between accessibility and simplicity. I’m not sure I have explained this concept in the right way but it would take too much time do make more pertinent examples and argument it better.
Just make a concrete example:
If I want extrude some extra filament before a print, just to make sure it’s ready, on any panel viable at the moment I have to do these steps:
1) press the encoder
2) scroll and highlight “Prepare”
3) push the encoder
4) scroll and highlight “Move axis”
5) push the encoder
6) scroll and select “Extrude”
7) push the encoder
Sometimes I make a mistake and select the wrong menu and then I need to exit and then proceed.
Sometimes I forget where specific functionality is and I have to navigate the menus before I find it.
Ok… I described it in a way that’s looks more difficult that how it really is… Of course I did it with purpose, but the point is:
if I often use the “extrude” functionality, wouldn’t be more comfortable to have a physical button on the controller to directly access it?
This is my idea of POWERCONTROLLER: a utilpanel plus few physical configurable buttons to access my most used commands.
Dou you want to extrude some filament?
1) press the button on the controller
One single, fast, easy to remember action.
Are you afraid to have your printer not really well set-up? Configure your button to perform an Emergency Stop and be rady to use it fast in case you need it. Searching this functionality in a sub menú it’s not nice if you are in hurry…
After all even a company famous for it’ best in class user interface design (Apple) in their phones added few key physical button for volume, mute and “home” functions. It’s just more easy and practical to access those important basic functions directly rather than navigate a menu and submenu to access them.
This has been the starting point for my idea.
So even if I share the vision of KISS (keep it simple st….) and therefore I like the simple and clean Utilpanel/Ultimaker design, I like to have some features “exposed” out of the sub-menu for rapid access.
You may want to call them shortcuts, or preferred functions… but I think you got the idea and if you have some commands that you frequently use I think you can understand what I mean.
THIS IS THE PANEL PREVIEW (if you jump also this part there is nothing less to read 😉 )
POWERPANEL is a panel that works exactly like a Utilpanel/Ultimaker Controller: 1 rotary encoder for everything, PLUS:
3 programmable buttons that you can use to directly access you preferred commands. There is no complexity added at all, and you can easily configure some functionality to be accessed with a simple, fast and direct click. This is what I made.
Actually you can configure any gCode command to any of the 3 hard buttons simply writing the command in the right parameter (I’m working on a sub-menu to do that right from the panel..) or assign a specific function (see it as a macro).
Personally I added this 3 shortcuts: preheat PLA, Pause print and “Home + disable steppers + cooldown”
The Emergency Stop Button a good idea if your printer can also mill 😉
Even if this is a separate red button that differs from the other three, you can also reassign it if you like.
The expansion port it’s a really unique and nice feature! Once you connect POWERPANEL to your printer you won’t open it again even if you plan to add some functionality. I make some examples:
– My printer can also be used for CNC using a Dremel or similar tool. I can connect and control the Dremel directly from the panel
– you can control you heated bed (if you prefer to use a separate power supply)
– I’m working on a self leveling function that will use a probe to test the bed. This probe will connect directly to the POWERPANEL
– Since I’ll use my printer to mill as well… I like the idea of an even bigger emergency button (like the telequitz one) to be placed near my working position, superfast to be reached and used
Basically you have 5 I/O pins (with pwm functionality) replicated right to your controller (much more accessible rather than your printer pcb)
This is just a preview and as soon as I finish to eat my Christmas cakes I’ll post more details and how to build it.