I recently built the Fluid Dial for my MPCNC using a Jackpot running FluidNC. I love the implementation of the M5stack Dial, and how many screens are available, but I also noticed that config.yaml has the ability to configure buttons to execute commands/macros. I couldn’t help but think it would be nice to have a few physical buttons for things, since I prefer that over the tiny and nondescript macro buttons on the webui v2. Here’s my proposals, and I would greatly appreciate feedback on which route you would take and/or how you would implement it best:
option 1: 3x3, 4x4, 5x5 grid of physical momentary push buttons assigned to GPIO pins on a second esp32 with 1k resistors in between the button and gpio pin. i.e. “button 1” is labeled as “Feed Hold” and is connected to GPIO 1 and will send " ! " to FluidNC, “button 2” is labeled as “cycle start/resume” and is connected to GPIO 2 and will send " ~ ", etc. The HMI panel ESP32 may be connected to the expansion port on the Jackpot using UART like with the RJ12 version of Fluid Dial.
Pros: mid priced option, not much coding needed, limited by amount of available GPIO pins.
Cons: labels will need to be printed, cost of individual MX buttons that can be lableled, or individual momentary switches. If label-able buttons are not used, this will increase the footprint size of the HMI panel.
option 2: Physical buttons with labels displayed via screen(s) i.e. stream deck or individual M5stack atom display keys that are programed to display their functions.
Pros: easily identifiable keys, configurable for macros/commands, highly customizable, and compact.
Cons: EXPENSIVE. The cheapest implementation I have found so far is an Amazon knock-off of the stream deck for $75 with a 3x5 matrix of LCD keys and a small display to the side. I have zero knowledge on how to implement these into FluidNC/esp32, so there is definately a hurdle to overcome there.
Option 3: Improve the WEBGUI with larger macro and jog buttons to be used. Maybe a reconfigure of the tablet tab of the webui. I loved the implementation of Klipperscreen for Klipper. The GUI is powerful and responsive, also it can be scaled up/down and items can be enabled/disabled to your liking.
Pros: probably the cheapest overall to implement for the individual user since the cost would be an ESP32 and a TFT/IPS screen or old cell phone/tablet.
Cons: No one seems to be updating the WebUI for FluidNC. I don’t have any usable knowledge in this area, so I would have to depend on a few generous individuals and need to research the demand for such an interface overhaul then get buy in and approval from the FluidNC developers to merge changes to the code.
Thank you in advance for any feedback/recommendations!
A slave processor to send commands over websocket or UART would be a great enhancement and I think things are already heading this way.
All it takes to make major progress is for someone to do one of the following things:
Make a reference implementation and ideally contribute the code to the community.
Make enought of a monitary contribution to the FluidNC team that they decide it’s worth doing.
There have been several updates to WebUI v3 by members of the V1E community. You should give it a try. Be sure and backup all your files first though. I have been using it for a long time now and like it much better than v2.
I agree. I’m not savvy with any coding other than editing already existing config files, so I would heavily depend on either the community or the Fluidnc developers to implement. But I’m willing to bet that adding more capability to assign more “control” buttons than the 4 macros shouldn’t be too hard.
As far as contributing to the developer team, I have no idea what would be considered enough to make it worth their time. Fluidnc could be an easy side project for them, or it could be at its limits for the esp32 for reasons unknown to me.
I am throwing this out there ATM to gather feedback from users and to see if the demand is there.
I’ll load it up and report back then. I appreciate the feedback. I do wonder if the macro buttons are able to be resized so more text than 2 characters will show up on the webui though.
I had originally intended to add 4 physical buttons but never ended up doing it. Bart sells a module that works in the Jackpot to help with this. Note that there is only one spot for a module so you couldn’t do this and the FluidDial pendant.
I don’t want to have to run a wire from the Jackpot to any device since I would want to mount this on my table. This means I lean towards doing this wirelessly. Plus, I’m concerned I’ll break something wiring directly.
You can connect an ESP32 wirelessly via a WebSocket or telnet. The WebUI also uses a websocket connection and in general, you should only have one. Telnet allows for multiple connections independent of the websocket connection. Either way, the code for the wireless portion is pretty simple.
I share your appreciation of physical buttons but you could do this pretty easily with a touchscreen like the CYD or similar. Or you could pretty easily use physical buttons with a printed label like you mentioned. Either of these wouldn’t be much code.
Adding in buttons with associated displays gets a bit more difficult, but still possible. You could probably use cheap little I2C OLED displays like these for each button.
Or maybe ones like these and use it to handle 2 buttons:
Those were the type of keys i was talking about in the original post, except I found a stream deck clone on amazon that had 3x5 matrix of keys with displays on them for $72 and thought that was more cost effective if it was easy (ish) to implement. This is really good stuff though!
Apologies, been running around today so I didn’t put 2&2 together that he was mentioning your theme. Looking at the themes, they look a lot better than the standard v3 webui. Thanks a lot for the work helping guys like me.