pibot_cnc_laser_series:v588_ultra:pinout_reference:start
PiBot V5.88 Ultra — Pin Definition Overview
FluidNC & grblHAL 6+1 Axis CNC Controller · ESP32-S3
The ports of FluidNC can all be freely defined and allocated through the YAML file, so there is no fixed PinMap.
Our current definition is based on the test YAML we use.
When applying it to your machine, you will need to define the pins yourself.
The circled numbers ①–㉔ on the diagram correspond to the sections below. Click the diagram to view it at full size.
Quick Reference — UART Channels
| Channel | Physical Port | Pins (Test YAML) | Typical Use |
|---|---|---|---|
| UART0 | Main USB 17 | — | Firmware flashing, gcode sender |
| UART1 | RS485 terminal 2 | TX: GPIO.12 · RX: GPIO.11 | Modbus VFD |
| UART2 | RJ12 port 5 | TX: GPIO.0 · RX: GPIO.35 | Pendant / IO Expander |
| UART3 | Second USB 24 | USB-Host (usb_host) | USB pendant / HID device |
Key to the Circled Numbers
💡 Tip: If you find the following section challenging, don't worry. You can complete the checklist steps first and then come back — it will make much more sense.
Inputs
Outputs
Power
Drivers
Interface
1 Input Terminals Inputs
- 10 optocoupler-isolated input channels arranged in two rows along the top edge.
- Compatible input types: standard ON/OFF input, 5V signal switch, or industrial 12V/24V PNP/NPN switches. For safety, connect a resistor of 2.2kΩ or higher in series with the signal terminal when using a 24V supply.
- SW-VCC selection: the optocoupler supply follows the SW-VCC jumper (see ④). Default 5V suits standard inputs; select Vmot-Main for industrial switches.
- NPN/PNP trigger mode: configure in YAML by adding or removing the
:lowparameter. - GPIO.3 as input requires jumper selection first (see ⑩).
| Terminal | Test YAML Function | Terminal | Test YAML Function |
|---|---|---|---|
| GPIO.42 | X limit − | GPIO.37 | A limit − |
| GPIO.41 | X limit + | GPIO.36 | B limit − |
| GPIO.40 | Y limit − | GPIO.48 | C limit − |
| GPIO.39 | Y limit + | GPIO.47 | Probe |
| GPIO.38 | Z limit − | GPIO.3 | Toolsetter (jumper-selected, see ⑩) |
2 Output Groups Outputs
- PWM 5V — GPIO.4 GPIO.5 GPIO.45 GPIO.46: output 5V PWM signals or 5V switching signals for controlling spindles, lasers, servos, etc. Requires connection with any GND on the board to form a complete circuit.
- Test YAML: GPIO.45 = spindle PWM (tool 0), GPIO.46 = laser (tool 1), GPIO.4 / GPIO.5 = user digital outputs (
M64 P0/M65 P0,M64 P1/M65 P1). - MOSFET linkage: GPIO.4 and GPIO.5 are interconnected with the onboard MOSFET channels (see ⑥).
- Test YAML: GPIO.45 = spindle PWM (tool 0), GPIO.46 = laser (tool 1), GPIO.4 / GPIO.5 = user digital outputs (
- RS485 — TX: GPIO.12, RX: GPIO.11 (UART1): isolated RS485 interface for Modbus devices such as VFDs.
- A/B polarity: if A and B are reversed, simply swap them. Reversed connections will not cause device damage.
- Configuration reference: see the
ModbusVFDsection of the test YAML.
- 0-10V — GPIO.6 provides the 0-10V analog output for frequency converters (connect GPIO.6 output and GND, then configure to obtain the corresponding voltage).
- Optocoupler switches: GPIO.7 (Out1/Fwd) and GPIO.8 (Out2/Rev) with OUT-COMMON form switch pairs (both ends of optocouplers), usable as standard digital outputs to signal frequency converters.
- Start/stop function: for frequency converters requiring start/stop control, use these forward/reverse optocoupler outputs as the control signals.
3 Variable Resistor for 10V Adjustment Outputs
- Function: adjusts the maximum voltage of the 10V output.
- Calibration scenario: when issuing maximum output commands (e.g.,
M3 S24000), if the output voltage does not reach 10V. - Adjustment method: fine-tune this variable resistor until the output voltage reaches exactly 10V.
4 SW-VCC Voltage Selection Inputs
- Function: selects the voltage applied to the input-terminal optocoupler side.
- Options: 5V (jumper on left, default) OR Vmot-Main (jumper on right).
- Usage: keep 5V for standard switches and 5V sensors; select Vmot-Main for industrial 12V/24V switches. Your industrial switch voltage must match Vmot-Main.
- Voltage limit: the SW-VCC input circuit is designed for a maximum of 24V — never exceed 24V on Vmot-Main (see ⑦).
5 Expander / Pendant Port (RJ12) Interface
- Function: this port provides UART signals for pendant control or an IO expander module.
- Pins: UART2 — TX: GPIO.0, RX: GPIO.35 (test YAML baud: 1,000,000).
- Expander benefit: the expander provides additional I/O inputs and outputs for the mainboard.
- Compatibility: on V5.88 the pendant/expander port and the OLED (㉒) use independent pins — they can be used at the same time.
6 MOSFET Outputs Outputs
- Two channels:
io.4-MOS-GNDandio.5-MOS-GND(Vmot-Main). - Output capability: can output the same voltage as Vmot-Main or switch it off; used to drive inductive loads such as solenoid valves.
- Control principle: controlled via GPIO.4 or GPIO.5 by switching the GND connection to complete the circuit (low-side switching).
- Voltage note: Vmot-Main is the positive voltage, while the
io.4-MOS-GNDandio.5-MOS-GNDports serve as GND. - Flyback protection: onboard flyback diodes are provided for inductive loads.
⚠ Load limit: 500mA maximum per channel — the load current passes through the reverse-polarity protection circuit on the Vmot-Main path. For larger loads, use these outputs to drive an external relay or SSR instead.
⚠ Reverse connection of the load will damage the device! Always verify with a multimeter before use.
7 Main Power Input 12–24V Power
- Function: the system voltage input that provides stable power to logic, RS485, amplifiers, and other circuits.
- Reverse-polarity protection: built in — a reversed connection will not damage the board. Still, please verify polarity before powering up.
- Recommended voltage:
24Vinput is strongly recommended.
⚠ Never exceed 24V. Although the power regulator itself is rated to 30V, the onboard LM358 amplifier and the SW-VCC input circuit (2.2kΩ current-limit design) are limited to 24V. Exceeding 24V will damage components.
8 On-Board Driver Power 12–24V Power
- Function (Vmot-Driver): independent power input that supplies the six onboard stepper driver sockets only.
- Capacitor rating: our onboard electrolytic capacitors have a 50V withstand voltage rating.
- Driver requirements: some onboard driver modules contain capacitors with lower voltage tolerance, while others require
>12Vto generate proper signals. - Recommendation:
24Vis recommended.
⚠ This input has no reverse-polarity protection — a reversed connection may cause damage. Double-check polarity before powering up.
9 Stepper Driver VDD Logic Voltage Selection Drivers
- Function: this jumper selects the VDD logic voltage for stepper motor drivers (onboard or external).
- SPI drivers: since SPI signals are 3.3V, select
3.3Vwhen using SPI-type (TMC) stepper drivers. - 5V drivers: select
5Vfor external drivers requiring 5V logic signals. - Default setting:
3.3V(jumper on right). Choose according to your specific driver requirements.
10 GPIO.3 Function Selection Interface
- Function: this jumper selects the role of GPIO.3.
- Input mode: GPIO.3 is routed to the optocoupler input terminal (used as the toolsetter in the test YAML, see ①).
- Output mode: GPIO.3 is routed out as a signal output on the EXTRA IO header (see ⑭).
- Exclusive use: only one role at a time — set the jumper to match your YAML definition.
11 Onboard Driver Jumper Configuration Drivers
- Function: MS1 / MS2 / RST / SLP configuration switches for the onboard drivers — 1 (Logic High) OR 0 (Logic Low).
- MS3:
NULLon the switch panel — MS3 must be configured in the YAML via I2SO outputs (see ⑫). - Driver variations: some drivers support MS1/MS2/MS3, while others only support MS1/MS2. Some driver boards label these as
MS0/MS1/MS2— set according to actual pin functions. - Scope: the six onboard driver sockets share one setting — this configures all 6 drivers simultaneously.
⚠ When using onboard SPI-type (TMC) drivers, do NOT install these jumpers — these pins are used by the SPI interface. Only use them with standard (step/dir) onboard drivers.
12 MS3 / CS Mapping Drivers
- Function: MS3 pin configuration and corresponding I2SO numbers.
- Dual purpose: for SPI-type (TMC) drivers, the MS3 pin acts as the Chip Select (
CS) signal.
| Axis | MS3 / CS | YAML IO |
|---|---|---|
| X | X.MS3 / CSX | I2SO.3 |
| Y | Y.MS3 / CSY | I2SO.6 |
| Z | Z.MS3 / CSZ | I2SO.11 |
| A | A.MS3 / CSA | I2SO.14 |
| B | B.MS3 / CSB | I2SO.19 |
| C | C.MS3 / CSC | I2SO.22 |
13 EN / STP / DIR — Direct to External Drivers Drivers
- White terminals: output
EN/STP/DIRsignals directly to external stepper drivers. Simple — no jumper configuration needed. - The green terminals below them (⑮) carry the onboard driver outputs to the motors — the two terminal types serve different purposes.
| Axis | EN | STP | DIR | Axis | EN | STP | DIR |
|---|---|---|---|---|---|---|---|
| X | I2SO.0 | I2SO.2 | I2SO.1 | A | I2SO.15 | I2SO.13 | I2SO.12 |
| Y | I2SO.7 | I2SO.5 | I2SO.4 | B | I2SO.16 | I2SO.18 | I2SO.17 |
| Z | I2SO.8 | I2SO.10 | I2SO.9 | C | I2SO.23 | I2SO.21 | I2SO.20 |
14 EXTRA IO Outputs
- Header pins: GPIO.3 / GPIO.10 / GPIO.15 / GND.
- Test YAML: GPIO.10 = coolant flood (
M8on /M9off), GPIO.15 = coolant mist (M7on /M9off). - GPIO.3 note: available here only in output mode — see ⑩.
15 Onboard Driver → Motor Terminals Drivers
- Green terminals:
2B 2A 1A 1Bcoil pairs — the onboard driver outputs go to the motors through these terminals. - Direction reversal: swap one coil pair (e.g., 1A/1B) to reverse the motor direction, or invert the direction pin in the YAML.
16 SPI Signal Header Drivers
- Pins: MOSI / SCK / MISO / I2SO.3.
- Test YAML SPI bus: MOSI: GPIO.1, MISO: GPIO.2, SCK: GPIO.21.
- Purpose: SPI bus breakout for external SPI stepper drivers; I2SO.3 serves as the Chip Select (
CS) signal.
17 Main USB Interface
- Function (UART0): used for firmware flashing, configuration, and gcode sender connection.
18 SPI Input to Onboard TMC Drivers Drivers
- Function: routes the SPI bus to the onboard driver sockets (WHEN PLUG ON).
- Configuration: install this jumper block when using onboard SPI-type (TMC) drivers; remove it when SPI is not needed by the onboard drivers.
19 USB 5V Test Jumper Power
- Function: this jumper cap inputs the USB 5V into the circuit for testing purposes (WHEN PLUG ON).
- Important: please remove it when using an external power supply.
20 Antenna Connector Interface
- Important note: without an antenna connected, there will be no WiFi signal available.
21 Boot / Reset Buttons Interface
- Reset: restarts the controller.
- Boot: used for entering download mode during firmware flashing (hold Boot, tap Reset, then release Boot).
22 OLED Interface Interface
- Pins: GND / 3.3V / GPIO.13 (SCL) / GPIO.14 (SDA) — I2C address 0x3C, 128×64.
- Pinout caution: please note the positions of
VCCandGND, as some OLED modules have different pin arrangements. - Compatibility: on V5.88 the OLED can be used at the same time as the pendant/expander port (⑤).
23 TF Card Slot Interface
- Pins (test YAML): MISO: GPIO.2, MOSI: GPIO.1, SCK: GPIO.21, CS: GPIO.9.
- Compatibility warning: avoid using high-speed or high-capacity TF cards, as some may not be compatible with the ESP32 library.
24 Second USB (USB-Host) Interface
- Function (UART3): native USB port configured as USB-Host in the test YAML (
usb_host, baud 115200). - First-time setup: set
$USBCDC/Enable=Offbefore using this port for the first time. - Power note: this circuit can power the connected USB device in HID mode, but the controller cannot be powered through this USB port.
Clicking the file name .yaml in the upper left corner allows you to download it.
- xyzabc-drv8825-config.yaml
############################################################################## ## THIS EXAMLE ONLY FOR IOTEST, DO NOT USE FOR YOUR MACHINE BEFORE MODIFY ########## ############################################################################# board: PiBot V588 name: PiBot V588 IO Test YAML stepping: engine: I2S_STATIC idle_ms: 254 pulse_us: 4 dir_delay_us: 1 disable_delay_us: 0 ###################################START TEST UART################################### ## uart0 main usb port ## uart1 RS485 tx rx ## uart2 RJ12 TX rx ## uart3 second usb port ##################################################################################### ## Begin expansion port uart and channel setup (test the rj12 port) uart2: txd_pin: gpio.0 rxd_pin: gpio.35 baud: 1000000 mode: 8N1 uart_channel2: report_interval_ms: 75 uart_num: 2 ## End expansion port set up. ## Start USB-HOST FIRST TIME NEED SET $USBCDC/Enable=Off (test the second usb port) uart3: usb_host: baud: 115200 # the baud almost=115200 uart_channel3: report_interval_ms: 0 uart_num: 3 message_level: Verbose ## Start USB-HOST ###################################END TEST UART#################################### spi: miso_pin: gpio.2 mosi_pin: gpio.1 sck_pin: gpio.21 sdcard: card_detect_pin: NO_PIN cs_pin: gpio.9 i2so: bck_pin: gpio.16 data_pin: gpio.17 ws_pin: gpio.18 ## Begin OLED i2c0: scl_pin: gpio.13 sda_pin: gpio.14 oled: i2c_num: 0 i2c_address: 60 width: 128 height: 64 radio_delay_ms: 1000 ## END OLED probe: pin: gpio.47:low toolsetter_pin: gpio.3:low check_mode_start: true hard_stop: false coolant: flood_pin: gpio.10 mist_pin: gpio.15 user_outputs: digital0_pin: gpio.4 digital1_pin: gpio.5 ##M64 P0 / on -- M65 P0 / off // M64 P1 on -- M65 P1 off start: must_home: false axes: shared_stepper_disable_pin: NO_PIN x: steps_per_mm: 800.000 max_rate_mm_per_min: 5000.000 acceleration_mm_per_sec2: 100.000 max_travel_mm: 300.000 soft_limits: false homing: cycle: 2 positive_direction: false mpos_mm: 150.000 feed_mm_per_min: 100.000 seek_mm_per_min: 200.000 settle_ms: 500 seek_scaler: 1.100 feed_scaler: 1.100 motor0: limit_neg_pin: gpio.42:low limit_pos_pin: gpio.41:low limit_all_pin: NO_PIN hard_limits: false pulloff_mm: 1.000 standard_stepper: step_pin: I2SO.2 direction_pin: I2SO.1 disable_pin: I2SO.0 y: steps_per_mm: 800.000 max_rate_mm_per_min: 5000.000 acceleration_mm_per_sec2: 100.000 max_travel_mm: 300.000 soft_limits: false homing: cycle: 2 positive_direction: false mpos_mm: 150.000 feed_mm_per_min: 100.000 seek_mm_per_min: 200.000 settle_ms: 500 seek_scaler: 1.100 feed_scaler: 1.100 motor0: limit_neg_pin: gpio.40:low limit_pos_pin: gpio.39:low limit_all_pin: NO_PIN hard_limits: false pulloff_mm: 1.000 standard_stepper: step_pin: I2SO.5 direction_pin: I2SO.4 disable_pin: I2SO.7 z: steps_per_mm: 800.000 max_rate_mm_per_min: 5000.000 acceleration_mm_per_sec2: 100.000 max_travel_mm: 300.000 soft_limits: false homing: cycle: 2 positive_direction: false mpos_mm: 150.000 feed_mm_per_min: 100.000 seek_mm_per_min: 200.000 settle_ms: 500 seek_scaler: 1.100 feed_scaler: 1.100 motor0: limit_neg_pin: gpio.38:low:pu limit_pos_pin: NO_PIN limit_all_pin: NO_PIN hard_limits: false pulloff_mm: 1.000 standard_stepper: step_pin: I2SO.10 direction_pin: I2SO.9 disable_pin: I2SO.8 a: steps_per_mm: 800.000 max_rate_mm_per_min: 5000.000 acceleration_mm_per_sec2: 100.000 max_travel_mm: 300.000 soft_limits: false homing: cycle: 2 positive_direction: false mpos_mm: 150.000 feed_mm_per_min: 100.000 seek_mm_per_min: 200.000 settle_ms: 500 seek_scaler: 1.100 feed_scaler: 1.100 motor0: limit_neg_pin: gpio.37:low limit_pos_pin: NO_PIN limit_all_pin: NO_PIN hard_limits: false pulloff_mm: 1.000 standard_stepper: step_pin: I2SO.13 direction_pin: I2SO.12 disable_pin: I2SO.15 b: steps_per_mm: 800.000 max_rate_mm_per_min: 5000.000 acceleration_mm_per_sec2: 100.000 max_travel_mm: 300.000 soft_limits: false homing: cycle: 2 positive_direction: false mpos_mm: 150.000 feed_mm_per_min: 100.000 seek_mm_per_min: 200.000 settle_ms: 500 seek_scaler: 1.100 feed_scaler: 1.100 motor0: limit_neg_pin: gpio.36:low limit_pos_pin: NO_PIN limit_all_pin: NO_PIN hard_limits: false pulloff_mm: 1.000 standard_stepper: step_pin: I2SO.18 direction_pin: I2SO.17 disable_pin: I2SO.16 c: steps_per_mm: 800.000 max_rate_mm_per_min: 5000.000 acceleration_mm_per_sec2: 100.000 max_travel_mm: 300.000 soft_limits: false homing: cycle: 2 positive_direction: false mpos_mm: 150.000 feed_mm_per_min: 100.000 seek_mm_per_min: 200.000 settle_ms: 500 seek_scaler: 1.100 feed_scaler: 1.100 motor0: limit_neg_pin: gpio.48:low limit_pos_pin: NO_PIN limit_all_pin: NO_PIN hard_limits: false pulloff_mm: 1.000 standard_stepper: step_pin: I2SO.21 direction_pin: I2SO.20 disable_pin: I2SO.23 # Begin PWM pwm: pwm_hz: 5000 # direction_pin: NO_PIN output_pin: gpio.45 enable_pin: NO_PIN disable_with_s0: false s0_with_disable: true # spinup_ms: 0 # spindown_ms: 0 tool_num: 0 speed_map: 0=0.000% 10000=100.000% off_on_alarm: false # Begin Laser Laser: pwm_hz: 5000 output_pin: gpio.46 enable_pin: NO_PIN disable_with_s0: false s0_with_disable: true tool_num: 1 speed_map: 0=0.000% 255=100.000% off_on_alarm: true ## Start 0-10V 10V: forward_pin: gpio.7 reverse_pin: gpio.8 pwm_hz: 5000 output_pin: gpio.6 enable_pin: NO_PIN direction_pin: NO_PIN disable_with_s0: false s0_with_disable: true spinup_ms: 0 spindown_ms: 0 tool_num: 2 speed_map: 0=0.000% 1000=0.000% 24000=100.000% off_on_alarm: false ## Start only for test the RS485chip communication uart1: txd_pin: gpio.12 rxd_pin: gpio.11 rts_pin: NO_PIN baud: 9600 mode: 8N1 ModbusVFD: uart_num: 1 modbus_id: 1 debug: 0 poll_ms: 250 retries: 5 spinup_ms: 6000 spindown_ms: 6000 tool_num: 3 speed_map: 0=0.00% 24000=100.00% off_on_alarm: false atc: m6_macro: s0_with_disable: false disable_with_s0: false model: Huanyang min_RPM: 6000 max_RPM: 24000 cw_cmd: 03 01 01 > echo ccw_cmd: 03 01 11 > echo off_cmd: 03 01 08 > echo set_rpm_cmd: 05 02 rpm*100/60 > echo get_min_rpm_cmd: 01 03 0b 00 00 > 01 03 0B minRPM*60/100 get_max_rpm_cmd: 01 03 05 00 00 > 01 03 05 maxRPM*60/100 get_rpm_cmd: 04 03 01 00 00 > 04 03 01 rpm*60/100
pibot_cnc_laser_series/v588_ultra/pinout_reference/start.txt · Last modified: by admin
