This guide takes you from the parts on the bench to a working SmartTabUI pendant. You need the SmartTabUI pendant firmware. The PETG case print files are free. Prefer it ready-made? Get the assembled pendant: every one is assembled in-house, by the designer or by experienced technicians.

Requirements: SmartTabUI works with the dpCREATOR FluidNC firmware on the controller (free, installed from Firmware & Downloads). It is built on the commands this firmware adds – previews, Prepare, Rewind, Z adjust, job recovery, macros, Measure and Record – so stock FluidNC is not supported.
A demanding build. Allow up to four hours. You will solder, strip and route a lot of fine wires in a tight space, so you need a soldering iron and basic electronics tools.
Assembled SmartTabUI front panel with the handwheel, display and the STEP and AXIS selectors
The finished front panel, before it goes onto the case.

What you need

SmartTabUI parts laid out: display board, PCF8574 module, speaker, two rotary switches with knobs, printed case, handwheel, E-stop, enable button, GX12 connector, cables and screws
All the parts for one pendant.
QtyPartNotes
1JC2432W328C display board2.8" capacitive touch, 240×320, ESP32. The C (capacitive) version.
160 mm MPG handwheelZS61-type, 100 pulses per turn, outputs A and B
1E-stop button, 16 mmLatching, with a change-over contact (C, NO, NC)
1Momentary push button, 12 mmThe ENABLE button on the right side
1Rotary switch, 3 positionsRS16 or RS26 type, for STEP
1Rotary switch, 5 positionsRS16 or RS26 type, for AXIS
2Knobs for the rotary switches
1PCF8574 I/O expander moduleReads the selectors and the ENABLE button
1GX12 connector, 5-pin, or a PG7 cable glandGX12: plug-in cable to the controller. PG7 gland: the cable goes straight into the case instead.
1Printed caseCase body, top plate (closed, or with a 2 mm front panel), front panel and IO expander clip (DPC-TC1 print files)
4M2.5 self-tapping screwsHold the display in the front panel
1Small speaker with JST plugPlugs into P4 (SPEAK)
7M3 screws (black)Fix the front panel to the case
—Hook-up wire and JST cablesFor P1, P6 and CN1 on the display board
—Heat-shrink tubingOptional, to insulate the solder joints
—704 silicone rubber for electronicsGlues the display, the modules and every connection in place

Tools: soldering iron and solder, side cutters, wire stripper, Phillips screwdriver, multimeter, USB-C cable. Optional: heat gun for heat-shrink.

We recommend gluing the components and every connection with 704 silicone rubber for electronics. It keeps wires and plugs from working loose.

1. Remove the RGB LED from the display board

The JC2432W328C has an RGB LED on the front, next to the display. It is wired to IO4, IO16 and IO17: the same pins the pendant uses on connector P6 for the handwheel and the E-stop. Left in place, it loads those lines and the inputs don't read reliably. Desolder it with a soldering iron or hot air.

JC2432W328C display board with the RGB LED fitted at the top right
Before: the RGB LED sits at the top right.
JC2432W328C display board with the RGB LED removed, empty pads at the top right
After: the LED is removed, only its pads remain.

2. Assemble the front panel

Back of the printed front panel with openings for the handwheel, display and two selectors
The back of the printed front panel.
  1. Display. Peel the protective film off the display first. Place the board in the front panel and fix it with the four M2.5 self-tapping screws.
    Be careful with the display connector as the board goes into the printed panel: it is a tight fit there.
    Then run a bead of 704 silicone around the perimeter of the board, wherever it can reach the case. Press the display down while the silicone dries and make sure it stays fully seated.
  2. Handwheel. Fit the 60 mm MPG through the round opening and tighten it on its three mounting studs.
  3. STEP selector. Fit the 3-position rotary switch (RS16 or RS26) in the left opening.
  4. AXIS selector. Fit the 5-position rotary switch in the right opening.
If your rotary switches have an adjustable stop washer, set it to 3 positions for STEP and 5 for AXIS before you tighten the nut, so the knob stops at x1 / x100 and at OFF / A.
Back of the front panel with the display board, handwheel and both rotary switches fitted, no wires yet
Front panel with the display, handwheel and both selectors fitted, ready for wiring.

3. Assemble the main case

  1. Screw the E-stop button (16 mm) into the left side of the case.
  2. Screw the ENABLE button (12 mm) into the right side.
  3. Leave the GX12 connector out for now. It goes in after the wiring, so the wires are easy to reach. Using a PG7 cable gland instead? Fit it in the same hole and pass the cable through it later.
Main case with the faceplate, handle and the ENABLE button on the right side
The main case with its handle. The ENABLE button is on the right side.

4. Wire it

Everything connects to the connectors on the back of the display board: P1 (serial and power), P6 (handwheel and E-stop), CN1 (I²C to the PCF8574) and P4 (speaker). Nothing is soldered to the board itself.

SmartTabUI wiring diagram: GX12, E-stop, display board connectors P1, P6 and CN1, MPG handwheel, PCF8574 and the selectors
Every connection in the pendant (tap to open full size). Wire colours as in the tables below.

P6 → handwheel and E-stop

P6 pinWireGoes to
IO17redE-stop button, contact C
IO4blackMPG B
IO16yellowMPG A
GNDgreenMPG −

MPG + goes to 3.3 V: take it from the CN1 3.3V pin, together with the PCF8574 VCC wire.

CN1 → PCF8574 module

CN1 pinPCF8574
GNDGND
IO22SCL
IO21SDA
3.3VVCC

PCF8574 inputs → selectors and ENABLE. Every input closes to GND: wire the common of each rotary switch and one side of the ENABLE button to GND.

InputFunction
P0 · P1 · P2 · P3AXIS selector: X · Y · Z · A (OFF = no contact)
P4 · P5STEP selector: ×10 · ×100 (×1 = no contact)
P6ENABLE button
P7not used

P1 → GX12 connector (the cable to the controller). With a PG7 cable gland, connect the five cable cores to the same signals.

GX12 pinSignalWireFrom
1+5VredP1 5V
2TXDblackP1 TX
3E-STOPorangeE-stop button, contact NC
4RXDyellowP1 RX
5GNDP1 GND

E-stop button contacts

ContactGoes to
C (common)P6 IO17
NOGND
NCGX12 pin 3, to the controller
Back of the front panel with the handwheel wired to P6 and the PCF8574 module connected to CN1
Handwheel on P6, PCF8574 on CN1, before the module is fixed in place.
Open pendant: main case with E-stop, ENABLE button and GX12 on the left, wired front panel on the right
Fully wired, before closing: the PCF8574 is glued to the back of the display board.
  1. Fix the PCF8574 module to the back of the display board with a blob of 704 silicone, clear of the ESP32 module.
  2. Plug the speaker into P4 (SPEAK) and fix it inside the case with a dab of silicone.
  3. Put a dab of silicone on the solder joints and connector plugs so they can't work loose.
  4. Fit the GX12 connector in the bottom of the case and solder its five wires. With a PG7 gland: pass the cable through the gland, connect the five cores, then tighten the gland so it grips the cable.
  5. Insulate the joints with heat-shrink (optional).

5. Close the case

Lay the wires flat so nothing is pinched, place the front panel on the case and fix it with the 7 black M3 screws. Fit the knobs on the STEP and AXIS switches so the pointer lines up with x1 and OFF.

6. Flash and test

Flash the pendant firmware over USB-C from Firmware & Downloads. Unplug the controller cable while you flash: the serial pins are shared.

The test menu. The pendant has a built-in test menu, so you can check every part of your build before it ever talks to the controller. Hold the ENABLE button during the first second of boot to open the pendant settings, then tap Inputs to open the Input Monitor.

The Input Monitor shows, live:

  • the raw value of the PCF8574 and each of its inputs, P0 to P7, as HIGH or LOW (active),
  • the E-stop on IO17 (open or pressed),
  • the handwheel's encoder delta, which counts as you turn it,
  • the touchscreen: where you touch it.
  1. Turn AXIS through OFF, X, Y, Z and A: P0 to P3 go LOW one at a time, and none at OFF.
  2. Turn STEP through x1, x10 and x100: P4, then P5 go LOW, and none at x1.
  3. Press ENABLE: P6 goes LOW.
  4. Press the E-stop, then release it: the E-stop line changes.
  5. Turn the handwheel both ways: the encoder delta counts up and down. If it counts the wrong way, swap the A and B wires.
  6. Touch the screen in a few places.

Hold the E-stop for 2 seconds to leave the Input Monitor.

Pendant settings screen with the Inputs, UART and Save & Boot buttons
Pendant settings: Inputs opens the test menu.
Input Monitor screen listing the PCF8574 inputs, the E-stop, the encoder and touch
Input Monitor: here STEP is at ×100 (P5 active).

7. Connect to the controller

  1. Plug the pendant into the controller's pendant port and power up. The controller's config.yaml needs the uart1 and uart_channel1 sections at 1,000,000 baud: see Connecting the SmartTabUI pendant.
  2. The WebUI header shows the pendant badge, and $Pendant/Status answers connected.
  3. Test the E-stop while jogging slowly: the motors must stop at once and the machine must go to Alarm. Release it and use the recovery menu to unlock.

Already know the CYD display?

SmartTabUI runs on the JC2432W328C display (CYD) with a 60 mm handwheel, the same parts many FluidDial builders already know. If you have built with this display before, you can build on that experience. SmartTabUI has its own wiring, so leave your FluidDial pendant as it is and use a separate display for SmartTabUI, connected as in this guide. These are the display pins SmartTabUI uses:

Display pinSmartTabUI
IO22PCF8574 SCL (CN1)
IO21PCF8574 SDA (CN1)
IO16Handwheel A (P6)
IO4Handwheel B (P6)
IO17E-stop (P6)
TX / RXSerial link to the controller, 1 Mbaud (P1)