Skip to content
MCU Atlas
ESP32ESP32-S3

X-Knob: LVGL smart knob for MQTT smart home and Surface Dial

An ESP32-S3 smart knob inspired by SmartKnob, with an LVGL UI, MQTT smart-home control and Surface Dial mode.

Difficulty:AdvancedCost:Source available

Photos

X-Knob: LVGL smart knob for MQTT smart home and Surface Dial photo 1
X-Knob: LVGL smart knob for MQTT smart home and Surface Dial photo 2

Photos: SmallPond/X-Knob

Key Facts

  • Chip: ESP32-S3
  • UI: LVGL on round display
  • Modes: MQTT smart home, Surface Dial (BLE HID)
  • Haptics: BLDC + FOC

About This Project

X-Knob builds on SmartKnob's idea of a haptic, motor-driven knob but uses a cheaper motor and a straight cylindrical design, and replaces the UI with LVGL. It can control smart-home devices over MQTT (for example Home Assistant lights) and act as a Bluetooth Surface Dial for a PC. Documentation is primarily in Chinese with an English README.

Source & Attribution

Source: GitHub
License: MIT
Last verified: 10/16/2026
X-Knob: LVGL smart knob for MQTT smart home and Surface Dial
How to Build It
X-Knob is a SmartKnob-inspired haptic knob on the ESP32-S3. It has an LVGL interface on a round display, MQTT smart-home control, and a mode that works as a Surface Dial over BLE. A BLDC motor driven by SimpleFOC provides the haptic feedback.

Parts Needed

  • X-Knob PCB (ESP32-S3)
  • BLDC gimbal motor
  • Magnetic encoder
  • Round 240x240 LCD
  • 3D-printed enclosure

Steps

  1. 1

    Assemble

    Build the PCB and enclosure from the repo's hardware and CAD files, mounting the motor and encoder as shown.

  2. 2

    Open the firmware

    Open the Firmware project in VS Code with PlatformIO. ESP32-S3 support needs the Espressif32 platform 4.4.0 or newer.

  3. 3

    Add your secrets

    Copy src/secrets.h.example to src/secrets.h and fill in your Wi-Fi and MQTT server details. You can also set MQTT_HOST in config.h, which becomes part of your MQTT topics.

  4. 4

    No MQTT yet?

    Disable MQTT in platformio.ini to keep the smart-home UI for testing without connecting to Wi-Fi or a broker.

  5. 5

    Build and flash

    Build and upload from PlatformIO. To flash a release binary instead, write it at offset 0x10000, because it only contains the app partition.

  6. 6

    Tips

    If you see 'sdkconfig.h not found', update the PlatformIO espressif32 platform. Brightness, Wi-Fi and MQTT can later be changed from the web settings page.

Parts List (BOM)
Parts list inferred by MCU Atlas — check the original
inferred
PartQtyRoleEst. PriceBuy
X-Knob PCB (ESP32-S3)
1controller——
1motor$15–$35View
1encoder$2–$5View
1display$4–$18View
Estimated Total$21–$58 USD

Not included: 3D-printed case, wire, solder, USB cable

Download CSV

Related Projects

Watchy: open-source ESP32 e-ink smartwatch
Illustration
ESP32
An open-source smartwatch with a 1.54in e-paper screen and ESP32, hackable watch faces in Arduino.
Beginner·Under $15·Code
2 parts listed
Low-power ESP32 e-paper weather display (7.5in)
Illustration
ESP32
A wall-mounted 7.5in e-paper weather display on an ESP32 that runs for months on one battery charge.
Intermediate·Cost varies·Code
5 parts listed
OpenEPaperLink: reuse e-ink shelf labels with an ESP32 access point
Illustration
ESP32ESP32-S3
Turns cheap second-hand electronic shelf labels into a Wi-Fi-managed e-ink display fleet via an ESP32 access point.
Advanced·Under $15·Code
3 parts listed