Skip to content
MCU Atlas
ESP32ESP32-S3ESP32

SmartKnob: haptic knob with virtual detents (ESP32-S3)

A haptic input knob with software-defined detents and endstops, built from a BLDC motor, encoder and round LCD on ESP32.

Difficulty:AdvancedCost:Source available

Photos

SmartKnob: haptic knob with virtual detents (ESP32-S3) photo 1
SmartKnob: haptic knob with virtual detents (ESP32-S3) photo 2
SmartKnob: haptic knob with virtual detents (ESP32-S3) photo 3
SmartKnob: haptic knob with virtual detents (ESP32-S3) photo 4

Photos: scottbez1/smartknob

Key Facts

  • Chip: ESP32 (later revisions ESP32-S3)
  • Motor: gimbal BLDC + TMC6300
  • Sensor: MT6701 magnetic encoder
  • Display: 1.28in round GC9A01 LCD

About This Project

Scott Bezek's SmartKnob uses a small brushless motor driven by FOC so the knob can feel like it has clicks, springs or hard stops that change in software. A round LCD sits in the center of the knob and an ESP32 runs the motor control and UI. The project sparked many forks and spin-offs. Note that the original motor is hard to source, so check the repo issues for alternatives. Advanced build with custom PCBs.

Source & Attribution

Source: GitHub
License: unknown (custom/multiple – see repo)
Last verified: 10/16/2026
SmartKnob: haptic knob with virtual detents (ESP32-S3)
How to Build It
SmartKnob is an input knob with programmable feel. A brushless gimbal motor and magnetic encoder fake detents, end stops and springiness in software, and a round LCD sits in the knob's hollow shaft. It's an advanced build that needs fine-pitch SMD soldering.
Draft: steps not yet verified

Parts Needed

  • SmartKnob View base PCB (ESP32-S3) and screen PCB (use the interactive BOMs)
  • Hollow-shaft BLDC gimbal motor (the specific model in the BOM)
  • TMC6300 motor driver, MT6701 magnetic encoder (on the PCB)
  • GC9A01 1.28in round LCD
  • 3D-printed/CAD enclosure parts, screws, and SMD soldering tools

Steps

  1. 1

    Check the build is for you

    The author says it's not yet plug and play. It needs advanced SMD soldering, and the auto-generated BOMs aren't fully tested. Read the README and Discord before ordering anything.

  2. 2

    Order PCBs and parts

    Use the Base PCB and Screen PCB interactive BOMs (or the combined CSV) to buy parts, and order the boards from the repo's fabrication files.

  3. 3

    Assemble

    Solder the boards, fit the motor with the LCD's flex running through the hollow shaft, and assemble the enclosure from the 3D CAD.

  4. 4

    Build firmware

    Open the firmware in PlatformIO and upload over USB-C (the board has a CH340 for serial).

  5. 5

    Calibrate

    On first run, use the serial console to run the motor calibration so the encoder and motor alignment are learned.

  6. 6

    Use it

    Try the built-in demo modes (detents, bounded ranges, springs). Developers can connect it to a PC or Home Assistant through the serial protocol or the community forks.

Parts List (BOM)
Partial parts list
partial
PartQtyRoleEst. PriceBuy
SmartKnob view base PCB (ESP32-S3)
Custom PCB from repo
1controller——
Original motor discontinued; see issues
1motor$15–$35View
1driver$5–$10View
1encoder$2–$5View
1display$4–$18View
Estimated Total$26–$68 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