Pendant Development

Continuing the discussion from Custom Bart Dring 6 pack controller:

I have this on the way:

And I still have a 3-axis joystick that I never got around to installing on my LR3.

I’m thinking I’ll build an ‘overkill’ pendant and people can adapt it with subsets of functionality if desired.

This started as an expansion module for the Jackpot board, also compatible with Bart Dring’s 6-pack controller, but the more I think of it, the more I think this might also be compatible with Marlin (with modifications).

I’ve never used EasyEDA before and this is very preliminary, just getting my ideas down:

I’m thinking a 5-position switch to switch between Off, Handwheel X, Handwheel Y, Handwheel Z, and Joystick.

The jog commands in Grbl might already be enough for this to work, or at least very close. I was hoping for a feedrate modifier and a pause function that would both apply instantly, but we’ll have to see about that.


Wired, or a wireless pendant like stevempotter’s?

1 Like

Good stuff!

1 Like

Definitely going wired.

No need for pairing or WPA passwords, and I am wanting a pause function where the reliability is not in question.

I will have to look up stevempotter’s pendant to see what that’s about.


I was following along in the other thread and now this one as well. This sounds awesome. My full sheet LR3 could definitely use something like this!!! And I like the idea of wired. I’m catching hell with wireless stuff here lately. Main reason I don’t run my LR3 from my phone with the ESP01

1 Like

Think he uses ESP-NOW protocol/features, low latency but no transport level security, so no passwords to deal with there :slight_smile: No auto packet retransmission, is different to TCP and UDP.

EDIT: I was wrong, and just rtfm’d… There’s some key based message encryption support ESP-IDF docs > ESP32 > Network > ESP-Now > Security

Steve’s pendant topic

1 Like

OMG just saw @stevempotter 's pendant and that is amazing! Nice work!

I’m definitely going to be taking ideas from that. Sounds like ESP-NOW mitigates some of the downsides of bluetooth/wifi but I’m still sticking with wires for this version.

I’m starting to question if the Arduino Pro Micro is the best choice, and if I should go for a longer serial link (maybe RS485) so that the microcontroller goes into the pendant instead of staying in the expansion slot with a large number of wires for all the pendant knobs and switches.

Lots to think about.


TTL RS232 at a reasonable baud rate is likely fine unless you want >10m. The limitation is often the cable and shielding, rather than the hardware layer itself. Shielded DB9 cables should still be pretty cheaply available. Shielded cat5 is super cheap for this kind of thing and reasonably easy to DIY terminate into 8P8C connectors, or there are some nice shielded 2 pair cables out there that will do power, ground, tx, rx.

That said, RS485 is awesome and I do wish more stuff would use it.

If you need a hand with any of the electronics, I’m always happy to offer an opinion on things.

What’s the U2 header going to? If you’re using that to signal multiple positions and there are spare GPIO, I’d always just do that, personally.

I’d remove the GND and VCC ‘ports’ and replace then with power symbol, like the one that is on the GND for the JP1 header, too. It makes it a bit easier to immediately see the layout of the design.


Thanks. The U2 was going to be a rotary switch and I was going to use an analog signal to the pendant to keep the number of wires down, but if the controller is going to be in the pendant then I can use GPIOs, so I’ll probably follow your suggestion.

I assume when you say TTL RS232 you are meaning single-ended 5V UART? One of the design considerations is that other people might pick up the design and hack it together in a crappy manner. I don’t want to over-build for the sake of over-building, but for two reasons: One, to reduce the chance of someone else screwing it up, e.g. with unshielded cables, and two, because I don’t really know what I’m doing so I lean toward the safer option.

If RS485 can go over unshielded ribbon cables then that would be good, or I guess the other alternative would be to put an RJ45 jack and people can provide their own ethernet cable. Or a USB form factor might work too. I only need 4 conductors if I’m going single-ended. Ribbon cables suck unless you can buy pre-made ones, so maybe that should be avoided anyway.

Here’s my latest:

I don’t know how to draw the connectors properly :man_shrugging:

The header H5 is for an OLED which requires 3.3v, so I’ve got a linear 3.3v regulator and a level shifter.

I am thinking of adding a second rotary switch for handwheel/joystick sensitivity like Steve had.


Wow! You are a huge asset here!! Thanks for all you do!


Too soon! I’m not done yet!

But thank you for your confidence. :pray:


I personally avoid ribbon cables like the absolute plague. They can be done well, but I don’t find them acceptably robust physically or electrically under most implementations for me to consider using. Even for small lengths within enclosures we tend to use either discrete wires shielded sheathed cables.

Yeah, for TTL level I mean the output of a microcontroller UART pins, potentially buffered to 5V, but without something like a proper RS232 voltage level line converter.

With RS485, do you mean half-duplex or full-duplex? If you mean full-duplex without multidrop capability then that’s RS422.

Most of the robustness value of RS485 is that it’s balanced, so really needs a twisted pair to enable that benefit. The actual voltage levels and hysteresis between mark/space signals are lower than regular RS232 so with a poor physical layer, the RS485 could potentially even be less robust than RS232.

As soon as you need twisted pairs, cat5 is the obvious choice due to ubiquity. From there it’s a relatively short hop to STP cable for the shield and most 8P8C PCB sockets would be compatible with shielded cables anyway, in which case I’d still probably just put digital IO down them rather than moving to RS485.

RS232 over a DB9 extension cable is a cheap, DIY accessible solution that has stood the test of time and is still used in a remarkably number of commercial/industrial environments. It also has the advantage that it’s a lot easier to develop for because it’s full duplex and can just be connected to a USB to 232 adapter.

If you’re after something bombproof for DIYers, RS232 is probably the better choice, honestly.


That’s already looking a lot better.

For the connectors, what I’ll often do is paste a photo of the connector or what it’s going to onto the schematic.

For situations like H1/H2, I would never wire over the top of existing components, I would have them separately wired.

For H3 and H4, I would each give them their own VCC port. The beauty of those ports is that they give enhanced readability to the schematic by reducing wiring and immediately showing you what the connection is. You don’t need to trace a line on the schematic because it says what it is right there. The other side of this is complex designs where more and more net labels are used to do the actual wiring between parts, which turns back into a discoverability nightmare because you’re never 100% sure where something is going and whether that’s the only connection. I prefer lines/wires for signals and labelled ports for power.

For JP1 and U2 I would give them each their own ground and +5V ports. For U3 I would put the +5V port ‘above’ the IC and wire up to it, as well as give it its own ground and wire ‘down’ to it.

I also usually make sure that I have a 100nF capacitor for each IC and connector, for each of the power connections. Some people do these in a big bank somewhere but I prefer to have each one with its own +5V port and GND port sitting above the IC because it makes it much easier to ensure that you have one each.

I assume those are schematic symbols from the existing libraries? I’m not a huge fan of having them match the pinout of the IC that they’re for. It makes it easier to review, I guess, but it makes the schematic itself uglier and harder to understand which, to me, is the critically important purpose of the schematic!


Personally, like the idea of being able to use a stock Cat 5 or better cable if possible. Wireless would be better of course :slight_smile:

For the connector, would you consider one of’s commonly stocked Ethernet connectors, something compatible with their SMT assembly service? Maybe something with LED(s) to help indicate power/comms connectivity, e.g. part C386757? spec says rated 1.5A, hopefully good enough assuming you’re not making a pendant pimped out with too many OLED-displays/RGBs?

Knowing very little about this stuff, I appreciate how easily EasyEDA lets me find lcsc parts within the library, and will auto import schematic and PCB footprint/layout. Can add parts to schematic and PCB with a few clicks. Alternatively can import footprints from open community projects, or manually create for something unusual that’s not already part of the library or community projects.


Ok, thank you. Yes, I was speaking of RS422 but now I’m convinced RS232 with DB9 is simple and robust, with the added bonus of being compatible with other interfaces. For compatibility I’m thinking full voltage, true RS232, not 5V, so there are no surprises when plugging into a computer COM port or USB-RS232.

So this means two products that are independently testable: an I/O Expansion board that’s an RS232 host, and a RS232 pendant.

On the host side, I think I can leave DCD, DSR, CTS, and RI not connected.
I think DTR and RTS can be constant high and wired together.

On the client side, I’m not sure what to do for power. I could wire constant +5V to DTR and RTS on the host side, but based on what I’ve read, a “regular” COM port won’t provide enough power. Maybe that’s not a big deal and the pendant just only works with the I/O Expansion host, or for testing with a PC there could be a jumper for an external supply.

Testing of the IO Expansion board with a PC would need only a crossover cable.

Looks like lcsc has d-sub connectors eligible for assembly. They seem to be thru-hole, so maybe some extra assembly cost, but that’s worth it.


Power is where that will get interesting. I would still probably not worry particularly much about direct compatibility with a conventional DB9 interface, unless you really want PC compatibility to be a standard use case. One option would be to provide space for a pin header to connect +V for debugging. A pin from the DB9 could be connected to this with a schottky diode for blocking, so that if you’re powering from the cable in the actual application, the power goes from one of the other lines to the +V on the device. Then if you’re plugged into a PC for debug and supplying +5V, the diode would prevent significant current flowing in reverse. This could be a way to do it with one of the pins that is an input on a PC. A PC is typically configured as a DTE, which would make DCD, DSR, RI or CTS pins inputs.

Alternatively, just doing something like having a 3-pin header with a jumper between the two to select between cable powered or externally powered would also work.

I typically try to focus on through-hole connectors anyway, rather than SMT, where possible. The difference in robustness is quite notable. Best is all through-hole, a decent compromise is SMT signals with through-hole soldered shield pins or board lock pins, worst by far is all SMT. It’s remarkably easy to rip an all-SMT connector off a board just by giving it a good shove while it’s connected to a decently thick cable.

Honestly, though, I’d probably just work on getting a minimum viable design together in the simplest way possible. Line level uart and power over a CAT5 and 8P8C and call it a day. I’d put the +V and GND on 2 different pairs which means that it won’t burn out any regular ethernet magnetics that it gets connected to like it might if you use a single pair for +V and GND.


Coming from you, Jamie, that compliment is 10x! Thanks! Let me know if you have any questions.


What about installing a 9 volt battery? It just for the arduino for the pendant, correct?


I think regular TTL over CAT5 twisted pair would probably be a good MVP but now I am growing attached to this idea of debugging the separate parts with a legit COM port.

Here’s the I/O expansion port:

And it got crowded trying to avoid the hole for the standoff, so I put the SMD components on the bottom. I would think that wouldn’t change manufacturability/cost as long as SMD parts aren’t on both sides:

And then the pendant side looks like this:

Instead of a five-pin header for the joystick, I have three single row headers for +V, analog in, and GND for five analog inputs (H3, H4, H5). Three for joystick and two more for knobs. If one of the axes has the wrong polarity you can flip the plug, provided analog is in the middle.

Then the rotary switch to change modes from handwheel X, Y, Z, and Joystick is on H6, wired to digital inputs instead of using resistors to convert to analog.

Then I have a 3.3v supply to enable an OLED display on H2.

Encoder wheel goes on H7.

Then for other functions I have 8 buttons that are read in with a parallel-to-serial shift register.

The power is interesting. I realized that when the Pro Micro has USB connected, it puts out the USB voltage on the “raw” pin (connected to “+5”) and the “raw” power can also accept input power when no USB is connected. So a single jumper (H1) connects pin 4 (DTR) to use the power from the expansion port, and when using in isolation, you can remove the jumper from H1 and USB power will power everything.

If you forget to remove the jumper and have power from both the USB and DTR pin, then the supplies might fight each other and that could be bad. It’s a possible sharp edge but for regular use it won’t need to be changed, so I think it’s okay if it’s not completely safe.

The board looks like this with a socket for the Pro Micro

Could maybe be a bit smaller if need be, but this is already pretty compact at 60 x 40 mm. Looking at it now, I’m seeing there are no mounting holes. I’ll have to add that.

Thanks again @jono035 for your input so far. I feel like I’m learning a lot.


Maybe this is interesting as well:

and this: