Table of Contents

PiBot CNC Pendant V4.0

We have tried other touch screens and encoders, but they did not meet our expectations. Therefore, we designed and produced this product ourselves, adding multiple features to achieve the desired performance. The electronics were developed by PiBot, the firmware was created by Luc (author of esp-3d), and the casing was designed by Liz.W from the United States. During development, we optimized the encoder's tactile response and enhanced the capacitive touch screen, pairing it with a compact enclosure for an exceptional user experience. It not only supports our custom firmware but is also compatible with fluiddial.

Package Contents

  1. Pendant V4 Main unit × 1 (SKU:PIPDT400B01)
  2. Bluetooth TX RX module × 2 (SKU:PIPBT002B02)
  3. Bluetooth-to-mainboard adapter module × 1 (SKU:PIBTB001B01)
  4. RJ12 module × 1 (SKU:PIRJM012B01)
  5. RJ12 communication cable (1m) × 1 (SKU:PIRJC012B01)
  6. USB-C to TTL Moudle × 1 (SKU:PIUTU001B01) (Gift)

Battery: Flat-top 18650 , we use the SONY VCT5 or VCT6 for test, please make clear the + - (not included in the package)

Hardware Features

Firmware Features

  1. Adapted for FluidDial's cyd button version, using ESP32 Flash for easy burning in one key.
  2. PiBot UI Firmware co-developed with Luc, author of Esp3D
  3. esp3D firmware new 2026.5 PDF Download esp3d-x_firmware_for_pibot_pendant_-_user_documentation.pdf

Software Compatibility

  1. Compatible with FluidNC
  2. Compatible with GRBL HAL (coming soon)

(Note: Due to GPIO25.27 port usage, it cannot be used simultaneously with OLED0.96.)

Diagram Overview

Hardware Connection Methods

Option A. Connect to the motherboard via RJ12 wired connection.

When connecting RJ12, never insert the battery as it may cause voltage imbalance and easily burn out the chip.

Option B. Connect to the motherboard wirelessly via a Bluetooth module.

Before use the Bluetooth, your need pair first.

Please refer to the Bluetooth pairing tutorial by clicking here: https://www.pibot.com/bluetooth-transceiver-modules-pair

Option C. Connect Pendant via expander.



This chapter will be covered independently in a dedicated section.


Firmware Upload Methods

Firmware Versions
ESP-3D PiBot UI Version
Custom firmware developed by ESP-3D and PiBot for advanced applications.
FluidDial Version
Specialized firmware for FluidDial devices with enhanced interface features.
Upload Methods
Online Mode
Browser-based upload via online interface.
ESP Flash Tool
Offline upload using ESP Flash Tool software.

Option A. Upload via Online Mode

Online Installation Steps

  1. Install the USB driver
  2. Remove the battery and Bluetooth module
  3. Switch to the “ON” position
  4. Plug USB Cable and Locate the corresponding COM port
  5. Visit https://webinstaller.esp3d.io/ (ESP3D Firmware) or Visit https://pibot-electronics.github.io/ (FluidDial Firmware)
  6. Follow the webpage prompts to complete the download and installation


Option B. Upload via ESP Flash Tool

Step 0:Download the relevant files all in one

Step 1: Unplug the Bluetooth module

Step 2: Push the power switch to the "ON" position

Step 3: then Insert the USB cable

Step 4: Open the ESP32 Flash Tool, select ESP32 as the target, and choose "esp32" and "Development" mode

Step 5: Select one of the firmware to download, and set the offset address to 0x0, then press start

Step 6: After "......" appears, press and hold the BOOT button for 3-5 seconds, then release

Step 7: Wait for the process to complete

FluidNC Yaml Configuration

Compatible with FluidNC v3.9.7 and above

Baudrate 115200 example code

Suitable for Bluetooth and wireless communication. (SKU:PIPBT002B02)

# Begin Pendant
uart2:
  txd_pin: gpio.27
  rxd_pin: gpio.25
  rts_pin: NO_PIN
  cts_pin: NO_PIN
  baud: 115200
  mode: 8N1
 
uart_channel2:
  report_interval_ms: 75
  uart_num: 2

Baudrate 1000000 example code

Suitable for RJ12 wired communication and connecting expander modules. (SKU:PISTM040B01)

# Begin Pendant
uart2:
  txd_pin: gpio.27
  rxd_pin: gpio.25
  rts_pin: NO_PIN
  cts_pin: NO_PIN
  baud: 1000000
  mode: 8N1
 
uart_channel2:
  report_interval_ms: 75
  uart_num: 2

Parameters & Dimensions


Only for Developments

Schematic diagram (partial)

Pins Defined

ILI9341 LCD Pin Definitions

#define TFT_CS    15  // Chip select pin
#define TFT_DC    2   // Data/command selection pin
#define TFT_MOSI  13  // MOSI (SDI) pin
#define TFT_CLK   14  // SCK pin
#define TFT_MISO  12  // MISO (SDO) pin
#define TFT_RST   -1  // Reset pin (using ESP32 EN pin)
#define TFT_LED   21  // Backlight control pin

FT6336U Touch Driver Pin Definitions

#define TOUCH_SDA  32  // SDA pin
#define TOUCH_SCL  25  // SCL pin
#define TOUCH_IRQ  36  // Interrupt pin
#define TOUCH_CS   33  // Chip select pin (not used)

Other Peripheral Connections

* Potentiometer: IO26 connected to center tap of 10k potentiometer (top: 3.3V, bottom: GND)

* TF Card Circuit:

* Buttons: IO4, IO16, IO17 connected to three buttons (active low, no pull-up resistors)

* Encoder: IO22 connected to Phase A, IO27 connected to Phase B (no pull-up resistors)

* 3-Position Switch: IO34, IO35, IO39 connected to 3-position switch (with 10k pull-up resistors)

Fluiddial Version Github Code

About the Fluiddial Version Code:

We did not modify the basic code of FluidDial; we only adapted it for screen compatibility. Below is the version and description modified by the user and uploaded to GitHub.

Modfiy version for PiBot Pendant V4:


PiBot WebInstaller: https://pibot-electronics.github.io/

Issues with webinstaller: https://github.com/PiBot-Electronics/pibot-webinstaller/issues

Sources to update the webinstaller: https://github.com/PiBot-Electronics/pibot-electronics.github.io

Thanks for Luc


https://github.com/Lumen-Works-Engineering/FluidDial

Lumen-Works-Engineering created a new build environment in platformio.ini named “pibot”. It’s dependent on the existing “CYD” environment and codebase since that’s what PiBot is based off of. The original FluidDial codebase was not modified. The pibot build environment method just adds sections of code modified specifically for the PiBot hardware that will only be used if you build the code using the “-e pibot” command.

Thanks for John


https://github.com/bdring/FluidDial/commit/15e0aa1ce494786bf05dc9429510efba3c3908c3

Thanks for ajmirsky


Casing STL Files

STL File including:

Thanks Liz. from USA

Power Chips Indicator button

Power Chips Indicator button OVEWVIEW PICTURE(B)can recognize long press and short press operations. When the button is not needed, leave PIN5 floating.

Connect Pendant to I/O Expander

Wire the Pendant to the Expander

The expander features a dedicated RJ12 port for connecting the pendant. Additionally, a 5-pin header is reserved for this purpose. Simply plug in the pendant to begin use.

Important Note: The baud rates must match. Since the expander defaults to 1,000,000, ensure you use a pendant version that also supports 1,000,000.

This features allows you to add another UART channel device like a pendant or display.

The expander filters out expander specific communication and sends the rest out the pass through port.

All data received on the pass through is sent through the other UART to the FluidNC controller.

Trouble Shoot

RX TX Communicate Trouble

When you encounter the following situation.

But the pendant has no signal when pendant V4 connect controller Board via I/O expander

simply swapping these two RX and TX wires will resolve the issue.

These PH2.0 connector cables are inherently designed for flexible configuration—simply pry the latch with a pin to release them.

The newly shipped version of Expander has now resolved this issue. Using PiBot's complete kit will not cause this problem. However, if you use PiBot's Pendant V4 with Expanders from other manufacturers (such as Airedale - FluidNC I/O Expander), issues may still occur.

Battery Choose

Battery: Flat-top 18650 , we use the SONY VCT5 or VCT6 for test, please make clear the + - (not included in the package)