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
- Pendant V4 Main unit × 1 (SKU:PIPDT400B01)
- Bluetooth TX RX module × 2 (SKU:PIPBT002B02)
- Bluetooth-to-mainboard adapter module × 1 (SKU:PIBTB001B01)
- RJ12 module × 1 (SKU:PIRJM012B01)
- RJ12 communication cable (1m) × 1 (SKU:PIRJC012B01)
- 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
- Compatible with V4.7, V4.9 mainboards, and other FluidNC-based mainboards on the market
- Capacitive touch screen
- Industrial-grade encoder, specially optimized in our firmware
- RJ12 wired connection support
- Independent Bluetooth Module Connection
- Supports 18650 flat-top batteries with power level display and charging (highly energy-efficient with extended standby time, depending on battery capacity)
- Built-in speaker
- Potentiometer knob
- Band switch
- Three independent switches
- Dual independent PCB design, allowing IO expansion
- Ergonomically casing designed
Firmware Features
- Adapted for FluidDial's cyd button version, using ESP32 Flash for easy burning in one key.
- PiBot UI Firmware co-developed with Luc, author of Esp3D
Software Compatibility
- Compatible with FluidNC
- 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
- Concise version: Suitable for V4.7B / 4.9PB / 4.96Pro.
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.
Firmware Upload Methods
Option A. Upload via Online Mode
Online Installation Steps
- Install the USB driver
- Remove the battery and Bluetooth module
- Switch to the “ON” position
- Plug USB Cable and Locate the corresponding COM port
- Visit https://webinstaller.esp3d.io/ (ESP3D Firmware) or Visit https://pibot-electronics.github.io/ (FluidDial Firmware)
- 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
- 0. Esp32 Upload Tools
- 1. Factory test firmware: For testing buttons, knobs, touch screen, and speaker functionality
- 2. FluidNdial firmware (115200 baud): Supports both wired and Bluetooth modes (Bluetooth only supports 115200 baud)
- 3. Fluiddial firmware (1,000,000 baud): For higher-speed wired communication (I/O expander adopts this Baud Rate)
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
YAML configuration file Example:
https://www.pibot.com/dls/pendantv4/pendant-v1-yaml-config.zip
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
- Weight: 365 grams
- Size: 165 × 60 mm
- Screen Size: 76 × 55 mm
- Battery: Flat-top 18650 (not included in the package)
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:
- MISO → IO19
- CS → IO5
- MOSI → IO23
- CLK → IO18
* 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:
- 1 x top case is required
- 2 x bottom case is required
- 3 x buttons are required
- 4 x spaceers are required
- 1 x potentiometer knob is required
- 1 x band switch knob is required
Thanks Liz. from USA
STL Documents:https://www.pibot.com/dls/pendantv4/pendant-stl-v01.zip
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.
- 1. A button press lasting longer than 50ms but shorter than 2s is considered a short press, which will turn on the power level indicator and boost output.
- 2. A button press lasting longer than 2s is considered a long press, which will turn the LED light on or off.
- 3. Button presses shorter than 50ms will not trigger any response.
- 4. Two consecutive short presses within 1s will turn off the boost output, power level indicator, and LED light.
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.
- If the Pendant Independent connection to the main board and works,
- If STM32 expander Independent connection to the main board and works,
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.










