Skip to the content
PCBKitNew board
2 layers69.5 × 40.5 mmPendant v2, the printed circuit board in 3D

A wireless battery powered pendant for FluidNC based on esp32

Size
69.5 × 40.5 mm
Copper layers
2
Thickness
1.6 mm
Parts
10
Nets
24
Pads
46
Tracks, vias
58, 0
Routed
Yes
KiCad
KiCad 7 (file 20221018)
Created
24 Jan 2023
Updated
3 May 2026

Overview

Pendant v2 is an open-source printed circuit board by gjkrediet, from the gjkrediet/Fluid-controller repository on GitHub, published under the GPL-3.0 licence. It is a 2-layer board of 69.5 × 40.5 mm with 10 parts on 24 nets, routed with 58 tracks and 0 vias.

Its parts include 2 connectors and 1 switch. It belongs with the radio and wireless boards of this library.

README

README.md

Fluid-controller

A wireless battery powered pendant for FluidNC based on esp32

20230125_140826

This controller uses bluetooth for communication. Be aware that bluetooth and wifi can not be used at the same time and, in fact, need different fluid-nc firmwares. Sardar Azari seems to have adapted the controller to communicate via tcp. Take a look at https://github.com/AC8L/FluidNC-Pendant

Main functions

Display shows: Machine coördinates, Work coördinates, Spindle speed and state, Set speed and step size when using joystick and rotation encoder, Overrides (Speed, Feed, Rapid), Machine state, Battery state, Current buttons functions

Main functions buttons, joystick and dial: Wake up, Jog gantry and spindle via joystick and/or dial, Set Jog step size and speed via dial, Set spindle speed and switch on/off, Set overrides (Speed, Feed, Rapid), Cancel/abort job.

Main functions menu: Home machine, Zero workcoördinates, Go to zero, Probe.

Hardware

  1. LilyGO TTGO T-Display V1.1 which is a developmentboard with an ESP32, with a built-in tft (IPS) display and battery-charger. I purchased it for about €13 from internet.
  2. Rotary encoder / dial (about €1)
  3. Three colored buttons NO (total of €2)
  4. PSP joystick (about €3)
  5. Lion 18650 battery (€7)
  6. Single-sided pcb
  7. some pieces of wire (preferably different colors) of which five have female dupont-connectors
  8. PLA (25 meter)
  9. 8 screws M3 x 8

Schematic and PCB

The pcb only holds the TTGO developmentboard and the rotary-encoder. The other components are mounted on the lid and wired to the pcb. The schematic of the pcb (in Kicad) is therefore very simple. The isolation-routing of the PCB was done with the very same CNC-router I made this controller for. To fit in the joystick, a corner of the PCB had to be sawed of (Later I updated the edge-cuts in Kicad so now the design should be OK).

The three buttons are at one side connected to the ground (all to J1.1) and are connected tot J1.2, J1.3 and J1.4 respectively. The joystick is connected tot J2 with J2.2 unconnected (Because I later decided to wire the VCC of the joystick to an output-pin).

Programming

Programming is done in Arduino IDE. All code exists in one single file. Most constants are enumerated or set with defines at the beginning. I hope it will explain itself to some extent.

Compile with partition scheme minimal SPIFFS or it will not fit.

Case

pendantV2case_lid2 pendantV2lid_case

Assembly

Schematic drawing of the lid with positioning of the components (excl. battery).

afbeelding

Female headers and the rotary encoder are soldered on the pcb. The other components are connected to the PCB with wires. Plus and minus wires are directly soldered to the battery and connected to the TTGO with a JST-connector.

inside1

To further reduce the powerconsumption I decided to feed the joystick via an outputpin of the esp32, which is why you see the red wire soldered on later.

inside2

The battery is wired to the JST-connector on the TTGO

How to operate

The functions of the pendant were tailored to my needs. Below an oversight of the functions of the various buttons and button-combinations and the menu-options. It might be somewhat cryptic but I hope it may help.

JS=Joystick, BD=dial, BR=red button, BG=green button, BY=yellow button

Switch the pendant on: press JS

Reset the pendant: press JS

The pendant powers off after some time when idle or via the appropriate menu-option.

The pendant can either be in home-state (PH) or menu-state (PM).

Function of the dial-knob can be changed by rotating the dial while pressing BG.

Functions can be (default is DJ; function is indicated on the display with a blue circle):

  • DX: Jog 1 step X-axis
  • DY: Jog 1 step Y-axis
  • DZ: Jog 1 step Z-axis
  • DS: Set spindle-speed
  • DJ: set jogspeed and step-size
  • DOF: set override Feed
  • DOS: set override Speed
  • DOR: set override Rapid

The function of the buttons depend on the machine-state (MS, shown in the middle of the display of the pendant; function of BR, BG, BY shown on the bottom line of the display). They are as follows.

PH:

  • JS + MS=Idle or MS=Jog:
    • Up/down: jog Y-axis
    • Left/Right: jog X-axis
  • JS + MS=Idle or MS=Jog + BR (keep pressed)
    • Up/down: jog Z-axis
    • Left/Right: no function
  • BG: enter PM
  • BY: abort machine-operation
  • BG (keep pressed) + BD: Change function dial-knob
  • BR + MS=Alarm: Unlock Machine
  • BR + DS: Spindle on/off

PM:

  • BD: navigate menu (poweroff, spindlespeed, spindle on/off, small/large steps for changing jogspeed/stepsize, exit menu, home the machine, Set current Work XY-position to zero, Set current Work Z-position to zero, Probe Z-axis, Jog machine to XY-position zero, unlock Machine (grbl), reset Machine (grbl), Set and save brightness).
  • BG: confirm menu-choice
  • BR: Cancel
  • BR (long press): poweroff

OTA

Powering on the pendant while keeping the the red button pressed will start Wifi and activate OTA (Over The Air programming from within the Arduino IDE).

Parts

10
QtyValueFootprintReferences
1Conn_01x04_MaleConnector_PinHeader_2.54mm:PinHeader_1x04_P2.54mm_VerticalJ1
1Conn_01x05_MaleConnector_PinHeader_2.54mm:PinHeader_1x05_P2.54mm_VerticalJ2
1RotaryEncoder_SwitchRotary_Encoder:RotaryEncoder_Alps_EC12E-Switch_Vertical_H20mmSW1
1TTGO-T-DisplayTTGO_T_Display:TTGO-T-DisplayMCU1

The 4 most common of 10 parts.

Questions

How big is the Pendant v2 PCB?

It measures 69.5 × 40.5 mm and has 2 copper layers, 1.6 mm thick.

What parts does the Pendant v2 use?

10 parts. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.

Where can I download the Pendant v2 KiCad files?

From the gjkrediet/Fluid-controller repository on GitHub, at the commit this page was made from: the board is pendant v2.kicad_pcb and its schematic pendant v2.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the Pendant v2 design in my own project?

Its repository publishes it under the GPL-3.0 licence: you may reuse it on that licence's terms (keep the author's notice, and for a copyleft licence share your changes alike).

Similar boards

  • 2 layers57 × 55.2 mmLogicAnalyzer, the printed circuit board in 3D

    LogicAnalyzer

    gusmanb/logicanalyzer

    24 channel, 100Msps logic analyzer hardware and software

    10 parts5.1kGPL-3.0
  • 2 layers32.2 × 15.4 mmProtector, the printed circuit board in 3D

    Protector

    byrantech/laptop

    anyon_e, a highly integrated, high end, open source laptop. Attempt the impossible.

    10 parts4.3kMIT
  • 2 layers26 × 18 mmConn, the printed circuit board in 3D

    Conn

    yaqwsx/KiKit

    Automation tools for KiCAD

    10 parts2.1kMIT
  • 2 layers44.3 × 30.5 mmLime2-SATA RevA, the printed circuit board in 3D

    Lime2-SATA RevA

    OLIMEX/OLINUXINO

    OLINUXINO is Open Source / Open Hardware, low cost from EUR 24 Linux Industrial grade Single Board Computer capable to operate -25+85C

    10 parts1.5k
  • 2 layers17.8 × 43.2 mmNano Adapter, the printed circuit board in 3D

    Nano Adapter

    VoronDesign/Voron-Hardware

    Cool Hardware designed by the Voron Design group

    10 parts1.1kGPL-3.0
  • 2 layers53.9 × 23.2 mmBuffer, the printed circuit board in 3D

    Buffer

    hoglet67/RGBtoHDMI

    Bare-metal Raspberry Pi project that provides pixel-perfect sampling of Retro Computer RGB/YUV video and conversion to HDMI

    10 parts1kGPL-3.0