smartknob README

The project's README from github.com/scottbez1/smartknob. As one markdown file: README.md.

SmartKnob

SmartKnob is an open-source input device with software-configurable endstops and virtual detents.

A brushless gimbal motor is paired with a magnetic encoder to provide closed-loop torque feedback control, making it possible to dynamically create and adjust the feel of detents and endstops.

Join the Discord community to discuss the project with others, show off your build, or help answer each others' questions!

Build Status Build Status

Designs

SmartKnob View

The "SmartKnob View" is the premium SmartKnob experience with an integrated display shown in my demo video. Under active development.

🎉 Motors are now available! If you've been following this project, you'll know that the recommended motors went out of stock nearly immediately after it was published. Thanks to the community, we were able to identify the likely original manufacturer, and recently SparkFun Electronics has been getting them produced and regularly stocking them! (However, they've been selling out quickly each time they restock, so definitely sign up for backorder notifications if they're out of stock when you check). Thanks to everyone who helped search and investigate different motor options along the way!

Features:

Current status: Not recommended for general use, but may be a fun project for an advanced electronics hobbyist.

Demo video

How it works

3D CAD

Exploded view

Latest Fusion 360 Model: https://a360.co/3BzkU0n

DEMO: video editor timeline control

If you edit audio/video, imagine having a jog wheel where you could feel the clip boundaries as you scrolled through the timeline. Then switch to playback speed control, with a wheel that's spring-loaded to return to "paused," with snaps at 1x, 2x, 4x, etc. The SmartKnob can do this; it just needs some software integrations to be written. Check out a demo using a SmartKnob prototype to control a mock video timeline:

(you can actually try this demo yourself if you've already built a SmartKnob; plug it in over USB and go to https://scottbez1.github.io/smartknob/)

Build your own?

While this is a "DIY" open-source project, it is not yet a mature plug-and-play project. If you intend to build your own, note that it requires advanced soldering experience to build - very small-pitch surface-mount soldering is required (reflow or hot air recommended), and assembly is quite time-consuming and delicate. Please go into it with the expectation that you will almost certainly need to be able to troubleshoot some hardware and firmware issues yourself - I recommend reviewing/understanding the schematics and basic firmware before jumping in!

More documentation on the BOM and what parts you need to order is coming in the future - thanks so much for your interest! Follow me on Twitter for the latest updates on this and other projects.

View the latest auto-generated (untested) Base PCB Interactive BOM and Screen PCB Interactive BOM (or, the combined BOM csv) for electronics/hardware parts list. ⚠️ These are auto-generated from the latest untested revision on GitHub. For tested/stable/recommended artifacts, use a release instead.

A few miscellaneous notes in the meantime:

Future plans:

Already built one?

Check out the firmware/software documentation for tips on getting it programmed and hooking it up to your own software integrations.

If you've already uploaded the standard firmware and gone through the calibration process (see guide linked above if you don't know what this means), go to https://scottbez1.github.io/smartknob/ to try out an interactive web-based demo that uses Web Serial to talk to a SmartKnob that's plugged into your computer's USB port!

Base PCB

Ordering notes: use white soldermask, for reflecting light from RGB LED ring around the knob. Should be 1.2mm thick (not "standard" 1.6mm).

If you are ordering a stencil for solder paste from JLCPCB and plan to apply paste by hand (as shown in the video) without a stencil frame/machine, make sure to select "Customized size" and enter smaller dimensions (e.g. 100mm x 100mm) to avoid getting a much larger stencil than you need. This will also likely reduce the cost of shipping substantially! Also, select only the Top side; the bottom only has 2 SMT components - the motor connector and VEML7700 ALS - so it's not worth getting a stencil for that.

Latest auto-generated (untested and likely broken!) artifacts⚠️:

Schematic

Interactive BOM

PCB Packet

Gerbers

⚠️ For tested/stable/recommended artifacts, use a release instead.

Screen PCB

Ordering notes: Must be 1.2mm thick (not "standard" 1.6mm) per mechanical design. (The PCB silkscreen mentions 0.6mm thickness - this is the thickness of the VHB tape for adhering the LCD; the PCB should be 1.2mm thick)

There are few enough components on the Screen PCB that I chose to hand-solder them rather than reflow with solder paste and a stencil, but if you order a stencil, see the note above about selecting a "Customized size" to be easier to handle and save on shipping. Also make sure to select the Bottom side only; all the components are on the bottom side of the screen PCB.

Latest auto-generated (untested and likely broken!) artifacts⚠️:

Schematic

Interactive BOM

PCB Packet

Gerbers

⚠️ For tested/stable/recommended artifacts, use a release instead.

Printed parts

You will need six printed parts. The current stable designs can be found as STL assets in the v185 mechanical release or you can export the latest untested designs from the CAD model by opening it in Fusion 360: https://a360.co/3BzkU0n

The parts can probably be FDM 3D printed with a well-tuned printer, but the parts shown in videos/photos were MJF printed in nylon for tight tolerances and better surface finish.

If you wanted a simpler build, you could omit the LCD and just merge the knob + glass from the model into a single STL to get a closed-top knob.

Export and print the following 6 parts:

⚠️ If you opt to go for MJF Nylon printing from JLCPCB, their system may complain about < 0.8mm wall thickness detected on the MountBase, ScreenPlatform and RotorSpacer parts. This appears to be a false positive, possibly on some of the print tapers. You should be able to ignore this, as all print orders at JLCPCB are subject to a final manual review, and they will contact you by email if there are any job-stopping issues or risks with your prints.

NanoFOC (3rd party)

If you're looking to tinker with FOC/haptic feedback, but don't want to build a full SmartKnob View yourself, I can recommend the NanoFOC DevKit++, an open-source design made and sold by a member of the SmartKnob community! It's super compact and is a great testbed or core for building your own BLDC-based haptic input device.

Image of the NanoFOC PCB

The NanoFOC uses an ESP32-S3, and the SmartKnob firmware works on it out of the box; just select the nanofoc environment in PlatformIO rather than the view environment when uploading.

Frequently Asked Questions (FAQ)

Can I use this cheap gimbal BLDC motor I found on AliExpress?

I can't stop you, but I will caution that you probably won't be super happy with it depending on your intended application.

Nearly every off-the-shelf BLDC gimbal motor that the community has tested (which is pretty much ALL the cheap ones you'll find on AliExpress, trust me) has moderate to severge cogging. That means the motor wants to snap to certain positions by itself even when unpowered. This means you won't be able to get completely smooth rotation when virtual detents are turned off, and the motor's cogging may interfere with or overpower the virtual detents, particularly if you set them to lower strength or make then very fine-grained.

The recommended motor is definitely the best (i.e. lowest cogging) off-the-shelf motor we've come across so far, and is the only readily-available motor that I would consider "good" for this application.

If you've found another motor that is completely smooth when unpowered, we'd LOVE to hear about it in the discord; if you're wondering about some cheap motor you saw online, either just order one and try it for yourself, or ask about it in discord but don't be surprised (or offended) if the response you get is something terse like "nope, no good".

How much does it cost?

I wish I could tell you now, but I don't actually know off the top of my head. Check back soon - I've only built a few so far, which was the result of a bunch of tinkering and prototyping over an extended period, so I don't have all the expenses tallied up yet. Probably less than $200 in parts? But some items have gotten more expensive, and you may be limited by minimum order quantities or shipping charges from multiple separate suppliers.

Does it work with XYZ?

Not yet, regardless of whatever "XYZ" you're thinking of. So far I've only implemented enough firmware for the demo shown in the video, so you can't actually use it for anything productive yet. The basic detent configuration API is there, but not much else. Lots of firmware work remains to be done. If you build one, I'd love your help adding support for "XYZ" though!

Can I buy one as a kit or already assembled?

Probably not? Or at least, I don't have any immediate plans to sell them myself. It's not that I don't want you to be happy, but hardware is a hard business and I just work on this stuff in my free time.

It's open source with a fairly permissive license though, so in theory anyone could start offering kits/assemblies. If someone does go down that route of selling them, note that attribution is required (and I wouldn't say no to royalties/tips/thanks if you're in a giving mood 🙂).

Firmware and Software

More extensive documentation of the firmware and software (and how to get started) can be found in the dedicated SmartKnob Firmware and Software Guide

General Component Info

Magnetic encoders

MT6701 (MagnTek)

Excellent sensor at a reasonable price - highly recommended. Less noisy than TLV493D, and more responsive (control loop is more stable) using SSI.

Datasheet

Ordering (LCSC)

TLV493D (Infineon)

Not used in the SmartKnob view, but a common/popular magnetic encoder in general. It's a mediocre choice for a haptic feedback implementation. Easy to prototype with using Adafruit's QWIIC breakout board.

In my testing, it's noisy, requiring filtering/smoothing that can slow responsiveness, hurting control loop stability. Or, with less filtering, the noise can easily be "amplified" by the derivative component in the PID motor torque controller, causing audible (and tactile) humming/buzzing.

But the bigger issue is that there is apparently a known silicon issue that causes the internal ADC to sometimes completely lock up, requiring a full reset and re-configuration, which can cause delays/gaps in data! See section 5.6 in the User Manual

In the Master Controlled Mode (MCM) or the Fast Mode (FM) the ADC conversion may hang up. A hang up can
be detected by:
 - Frame Counter (FRM) counter stucks and does not increment anymore.

In my experience testing 4 different Adafruit breakout boards, 2 of them (50%) regularly exhibit this lockup behavior within a minute or two of use. It is possible to detect and auto-reset (and there is code in the project to do so), but it is slow and may cause undesirable jumps/delays if the sensor locks up often.

Datasheet

AS5600 (AMS)

A mediocre choice. Cheap breakout boards are readily available.

In my testing, it's fairly noisy (anecdotally, noisier than the TLV493d), requiring filtering/smoothing that can slow responsiveness, hurting control loop stability. Additionally, it saturates at a lower magnetic field strength than other sensors I tested, requiring a significant air gap (8-10mm) when used with a strong neodymium diametric magnet like [Radial Magnets 8995](https://www.digikey.com/en/products/detail/radial-magnets-i

smartknob (scottbez1/smartknob)

Searching Database…

22.2K ·GitHub
这是什么?SmartKnob 是一款开源的触觉反馈输入设备,它将无刷云台电机与磁编码器配合,形成闭环扭矩反馈。你可以通过软件编程实现虚拟卡顿点和限位点,而无需依赖机械结构。
我到底该怎么自己做一个?订购 Base 和 Screen 两块 PCB(提供 Gerber 文件)以及 BOM 中的元件,3D 打印六个外壳部件(提供 STL 文件,推荐使用 MJF 尼龙材料),用回流焊或热风枪焊接细间距的 SMD 元件,然后通过 PlatformIO 烧录固件并运行校准流程。
要让它跑起来,我需要哪些硬件?你需要推荐的无刷云台电机(BLDC,现由 SparkFun 销售)、一块 ESP32-PICO-V3-02 模块(Lilygo TMicro32 Plus)、一个 TMC6300 电机驱动器、一个磁编码器、定制 PCB,以及 3D 打印的外壳部件。固件通过 PlatformIO 上传。
这东西拿来直接插上就能用吗?不能。目前的状态是“不建议普通使用”。现有固件只够支持视频中展示的演示;廉价的现成云台电机存在齿槽效应,会破坏卡顿点的手感;而且仓库中自动生成的 PCB 和 BOM 文件未经测试,可能存在问题。
这东西实际上适合谁?适合有一定经验的电子爱好者:能熟练进行小间距 SMD 焊接、能读懂原理图,并且能自己调试固件。作者明确劝阻新手尝试。
SmartKnob View 是什么?这是旗舰级的高端设计:一个集成 240x240 圆形 LCD 屏的旋钮,配有 8 颗侧向发光的 RGB LED、一个环境光传感器,并支持 USB-C 供电和串口通信。目前仍在积极开发中。
我能直接买现成的 SmartKnob,而不用自己做吗?不太能。目前还没有售卖套件或组装好的成品。不过,社区里有成员在销售 NanoFOC DevKit++,这是一款小巧的 ESP32-S3 替代方案,开箱即可运行同样的 SmartKnob 固件。
自己做一个要花多少钱?作者估计零件成本大概在 200 美元以内,但也指出,由于最小起订量以及从多家供应商采购的运费,成本可能会上涨。
不做硬件,我能先试试 SmartKnob 吗?如果你已经有一台校准好的设备,可以使用基于浏览器的演示。它借助 Web Serial 通过 USB 与设备通信,并包含模拟视频时间轴控制的演示。
Creator
scottbez1
Size
14.8 MB
Stars
22.2K
Updated
CommitJan 22
Age
4y
Commits · 90 Days