{{https://www.pibot.com/image/catalog/pendant/17.jpg?nolink&1000|}} =====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 - esp3D firmware PDF Download {{ :pibot_cnc_laser_series:v496_pro:connect_pendant:esp3d-tft_firmware_for_pibot_pendant_-_user_documentation.pdf |}} - esp3D firmware new 2026.5 PDF Download {{ :pibot_cnc_laser_series:v496_pro:connect_pendant:esp3d-x_firmware_for_pibot_pendant_-_user_documentation.pdf |}} =====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 ===== {{https://www.pibot.com/image/catalog/pendant/overviewpe1.png}} =====Hardware Connection Methods===== * Concise version: Suitable for V4.7B / 4.9PB / 4.96Pro. ====Option A. Connect to the motherboard via RJ12 wired connection.==== {{https://www.pibot.com/image/catalog/pendant/RJ12C1.png}} 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.==== {{https://www.pibot.com/image/catalog/pendant/BTBTBT.png}} 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.==== ---- {{https://www.pibot.com/image/catalog/pendant/323232.png}} ---- {{https://www.pibot.com/image/catalog/pendant/4712p.png}} 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 === - 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 {{:pibot_cnc_laser_series:v496_pro:connect_pendant:screenshot_-_2025-12-08t011400.075.png?nolink&600|}} {{https://www.pibot.com/image/catalog/pendant/luc1.png}} ---- ====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) Documents: https://www.pibot.com/dls/pendantv4/pibot-pendant-v4-tools-and-firmware-v1.zip ===Step 1: Unplug the Bluetooth module=== ===Step 2: Push the power switch to the "ON" position=== ===Step 3: then Insert the USB cable=== {{https://www.pibot.com/image/catalog/pendant/ww123.png}} ===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=== {{https://www.pibot.com/image/catalog/pendant/Screenshot%20-%202025-09-08T013134.222.png}} =====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)==== {{:pibot_cnc_laser_series:v496_pro:connect_pendant:screenshot_-_2025-12-10t082105.437.png?nolink&1200|}} ====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. {{https://www.pibot.com/image/catalog/pendant/wechat_2025-09-15_230630_302.png}} 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) {{https://www.pibot.com/image/catalog/pendant/Screenshot%20-%202025-10-19T031934.247.png}}