Custom Pendant Implementation suggestions
-
Hi all. From another project, I have a set of spare boards based on a ATSAMD21E18 (specifically, the Adafruit QT Py as a daughterboard), that has a rotary encoder, and a small OLED. The rotary encoder is one with a built in button, so was thinking that could be configurable as Pause or Emergency stop.
I had the idea of repurposing the spares as a pendant for my printer. I have been looking at various ways of controlling and am wondering if others have suggestions. Are there ways I could bypass USB/Pi and go straight to duet?
My printer is set up connected to a Pi with DSF, so thus far, ideas have been based on that,
- USB HID Game Controller, and some software on the pi to translate to moves
- USB Serial, TX to send moves/buttons, RX to receive XY data to display
The I2C, SPI, and TX/RX pins are all broken out. I2C is in use for the OLED, so those pins can't be re-purposed, but TX, TX, SCK, MISO, and MOSI are free. A0-A3 are for the rotary encoder and LEDs.
-
Perhaps this will give you some ideas, it's what I've been using for my large setup. The pendant controller is connected to the PanelDue port: https://github.com/Duet3D/CNC-Pendant-Firmware
-
Interesting @chrishamm - so essentially firing G-Code at the printer. Would this have to replace the Paneldue though, or could both co-exist?
-
Diabase forked the paneldue which also has pins for an encoder to build a pendant as well: https://github.com/diabase/H-Series-Pendant-Firmware
-
@keyz182 said in Custom Pendant Implementation suggestions:
Interesting @chrishamm - so essentially firing G-Code at the printer. Would this have to replace the Paneldue though, or could both co-exist?
If you follow the link that @chrishamm gave then you will see that the pendant described in that project can pass through data from a PanelDue, so that both can be served by one port on the Duet.
-
Just a crazy idea, but when I saw that your spare boards come with rotary encoders, I thought of building a box with two encoder driven paddles, bringing Atari Pong back to (real) live.
...I need more coffein, still asleep
-
@oliof said in Custom Pendant Implementation suggestions:
Diabase forked the paneldue which also has pins for an encoder to build a pendant as well: https://github.com/diabase/H-Series-Pendant-Firmware
to add to that, the normal paneldues have the encoder inputs already, it's just a case of buying one and wiring it in
-
@dc42 I missed that bit Will look into it.
-
@keyz182 Just a "for info", I came up with a really simple idea using nothing more than a cheap joystick which has 4 micro switches. In my case, I need to jog 3 gantries simultaneously. i.e not just XY but also UV and AB. Anyway, it's just conditional gcode and macros and uses 4 spare IO pins. No interface board required and 5 conductors gives me movement in any of 8 directions (using compass point terminology that's NSEW plus NE, NW, SE and SW) https://www.youtube.com/watch?v=wCR5Ao0iH-c
I've since added a couple of push buttons, one which gives me fast and slow jog speed, the other will home those 6 axes.
-
@deckingman Thanks, will have a watch of the video later. I do have a spare joystick, but it's a pair of pots + push button rather than 5 switches. Though that wouldn't be so hard to adapt. Would mean not using the boards I have here spare, but we'll see.
I think the key lesson so far is push G-Code, rather than complicating with something else.
-
@keyz182 There are plenty of different ways of achieving the same thing. There is no right and wrong. The best way often involves using what you have lying around and doing what you personally feel comfortable with.
-
@keyz182 or theres the joystick plugin for DWC that uses a standard USB game pad
-
@jay_s_uk got a link to that?
@deckingman Sure, there's also the balance of best to quickest. Sometimes somewhere in the middle is acceptable, in which case, I thinking my currently optimal choice is to take @chrishamm's code, strip out the pendant adapter, and replace with rotary encoder bits. Everything else can remain exactly the same.
That said, a potentially simpler approach I'm looking at could beat it - utilizing the DSF CommandConnection, along with some HID reading code. I can deal with G-Code server side, and keep the firmware simple on device.
-