scottbez1/smartknob
GitHub: scottbez1/smartknob
一款开源触觉反馈旋钮设备,利用无刷电机和磁性编码器实现软件可定义的虚拟刻度与限位手感。
Stars: 21785 | Forks: 1261
# SmartKnob
SmartKnob 是一款开源输入设备,具有软件可配置的物理限位和虚拟刻度挡位。
无刷云台电机与磁性编码器配对,提供闭环扭矩反馈控制,从而实现动态创建和调整刻度挡位及限位的手感。
加入 [Discord 社区](https://discord.gg/5jyhjcbTnR),与其他人一起讨论项目、展示你的构建成果,或者互相解答问题!
[](https://github.com/scottbez1/smartknob/actions/workflows/electronics.yml)
[](https://github.com/scottbez1/smartknob/actions/workflows/pio.yml)
# 设计
## SmartKnob 视图
“SmartKnob View”是高级版 SmartKnob 体验,集成了在我的[演示视频](https://www.youtube.com/watch?v=ip641WmY4pA)中展示的显示屏。目前正在积极开发中。
🎉 **电机[现已发售](https://www.sparkfun.com/products/20441)!** 如果你一直在关注这个项目,你会知道推荐的电机在发布后几乎立即缺货。多亏了[社区](https://github.com/scottbez1/smartknob/issues/16#issuecomment-1094482805%5D),我们找到了可能的原始制造商,最近 SparkFun Electronics 已经开始生产并定期[备货](https://www.sparkfun.com/products/20441)!(然而,每次补货后它们都会很快售罄,所以如果你查看时发现缺货,一定要注册补货通知)。感谢一路上帮助寻找和调查不同电机选项的每一个人!
功能:
- 240x240 圆形 LCD(“GC9A01”),转子上的 39.5mm 手表玻璃提供保护
- BLDC 云台电机,带有空心轴,用于机械和电气连接 LCD
- 由 ESP32-PICO-V3-02(Lilygo TMicro32 Plus 模块)供电
- PCB 柔性结构和 SMD 电阻被用作应变片以实现按压检测(通过电机提供触觉反馈)
- 8 个侧发光 RGB LED(SK6812-SIDE-A)照亮旋钮周围的光环
- USB-C (2.0) 连接器,用于 5V 供电和串行数据/编程(CH340)
- VEML7700 环境光传感器,用于自动调节背光和 LED 亮度
- 多功能背板用于安装 - 使用 4 颗螺丝,或 2 条 3M 中号无痕胶带(带有切口,便于安装后拆除)
- 前盖采用卡扣式设计,方便接触 PCB
**当前状态:** 不推荐日常使用,但对于高级电子爱好者来说可能是一个有趣的项目。
### 演示视频
### 工作原理
### 3D CAD

最新 Fusion 360 模型:https://a360.co/3BzkU0n
#### 演示:视频编辑器时间轴控制
如果你编辑音频/视频,想象一下拥有一个这样的点拨轮:当你在时间轴上滚动时,能够*感觉到*片段的边界。然后切换到播放速度控制,使用一个装有弹簧的轮子使其回到“暂停”状态,并在 1x、2x、4x 等位置有吸附感。SmartKnob 可以做到这一点;只需要编写一些软件集成即可。查看使用 SmartKnob 原型控制模拟视频时间轴的演示:
(如果你已经构建了一个 SmartKnob,你实际上可以自己尝试这个演示;通过 USB 插入它并访问 https://scottbez1.github.io/smartknob/)
### 构建你自己的?
虽然这是一个“DIY”开源项目,但它还不是一个成熟的即插即用项目。如果你打算自己构建,请注意它需要高级焊接经验才能完成——需要非常小间距的表面贴装焊接(建议使用回流焊或热风枪),并且组装相当耗时和精细。请做好心理准备,你几乎肯定需要能够自己排除一些硬件和固件问题——我建议在开始之前先查看/了解原理图和基本固件!
关于 BOM 和你需要订购哪些部件的更多文档将在未来提供——非常感谢你的关注!在 [Twitter](https://twitter.com/scottbez1) 上关注我,获取此项目和其他项目的最新更新。
查看最新自动生成(未测试)的[基础 PCB 交互式 BOM](https://smartknob-artifacts.s3.us-west-1.amazonaws.com/master/electronics/view_base-ibom.html) 和[屏幕 PCB 交互式 BOM](https://smartknob-artifacts.s3.us-west-1.amazonaws.com/master/electronics/view_screen-ibom.html)(或合并的 [BOM csv](https://smartknob-artifacts.s3.us-west-1.amazonaws.com/master/electronics/view_base-bom.csv))以获取电子/硬件部件列表。⚠️ 这些是从 GitHub 上最新未测试版本自动生成的。对于已测试/稳定/推荐的产物,请改用[发布版](https://github.com/scottbez1/smartknob/releases)。
同时提供一些其他注意事项:
- LCD 支架内部的接线空间有限,并且需要 8 根线穿过中心的孔。我使用了 30 AWG 绕线。漆包线可能也可以。
- 旧版本的设计(如视频中所示)使用胶粘的 BF350-3AA 应变片来检测按压;在 v0.5 中,这些被替换为 SMD 电阻的焊盘,它们在拉伸/压缩时表现出相似的特性,并且更容易组装。
- TMC6300 非常微小并且有底部焊盘,因此我强烈建议在订购 PCB 的同时订购一个钢网。即使使用了钢网,之后我也需要手动清理一些连锡;我*强烈*推荐 Chip Quik NC191 凝胶助焊剂,可从 [Amazon](https://amzn.to/3MGDSr5) 购买(或改用这个[非联盟链接](https://www.amazon.com/Smooth-Flow-No-Clean-syringe-plunger/dp/B08KJPG3NZ)),或从你选择的电子经销商处购买。助焊剂在将 LCD 柔性排线焊接到屏幕 PCB 时也非常有帮助。
- 对于面包板原型制作,[TMC6300-BOB](https://www.trinamic.com/support/eval-kits/details/tmc6300-bob/) 或 SparkFun 的 [TMC6300 驱动板](https://www.sparkfun.com/products/21867) 非常棒,如果你只是想体验一下低电流 BLDC 电机,它们比裸芯片要容易操作得多。
- 关于 AliExpress 购物:我强烈建议**只**使用 AliExpress 标准配送(在美国购买)。我多次使用菜鸟或其他低成本物流选项购买的商品需要数月时间才能送达或根本没有送达,而根据我的经验,AliExpress 标准配送非常可靠,而且通常更快。
- 确保检查[待解决问题](https://github.com/scottbez1/smartknob/issues)——这个设计还不“稳定”,所以请注意一切可能不会那么顺利。
未来计划:
- 考虑切换到使用 ESP32-S3-MINI-1 模块
- 配置并运行 wifi(可能是 MQTT?)。目前内存是全屏显示帧缓冲区 sprite 的一个问题。PSRAM 可能会解决这个问题(需要更新的 ESP-IDF 和未发布的 Arduino 核心,并且从简短的测试来看,启用 PSRAM 后性能极差),或者下一项可能有助于减少内存:
- 迁移到 LVGL,以获得更好的显示渲染和轻松支持菜单等。不应在内存中需要完整的 240x240x24b 帧缓冲区,从而释放一些空间用于 wifi 等。
- Home Assistant 集成,或其他实际应用
- ???
- [盈利](https://github.com/sponsors/scottbez1/) 😉
#### 已经构建了一个?
查看[固件/软件文档](https://paper.dropbox.com/doc/SmartKnob-firmware-and-software--B_oWj~L1dXqHgAqqYmhwwuqzAg-VUb9nq7btuhnHw5KlgJIH)
获取有关如何对其进行编程以及将其连接到你自己的软件集成的提示。
如果你已经上传了标准固件并完成了校准过程(如果你不知道这是什么意思,请参阅上面链接的指南),
请访问 https://scottbez1.github.io/smartknob/ 以试用基于 Web 的交互式演示,该演示使用 Web Serial 与插入你
电脑 USB 端口的 SmartKnob 进行通信!
#### 基础 PCB
订购注意事项:使用白色阻焊层,用于反射旋钮周围 RGB LED 环的光。厚度应为 1.2mm(而不是“标准”的 1.6mm)。
如果你要从 JLCPCB 订购锡膏钢网,并且计划像[视频中所示](https://youtu.be/Q76dMggUH1M?t=372)那样在没有钢网框架/机器的情况下手动
涂抹,请务必选择**“Customized size”**并输入较小的尺寸(例如 100mm x 100mm),以避免得到比你
需要的大得多的钢网。这也可能会大大降低运费!此外,只选择**Top**面;底面
只有 2 个 SMT 组件——电机连接器和 VEML7700 ALS——因此不值得为它制作钢网。
最新自动生成(未测试且可能有缺陷!)的产物⚠️:
[原理图](https://smartknob-artifacts.s3.us-west-1.amazonaws.com/master/electronics/view_base-schematic.pdf)
[交互式 BOM](https://smartknob-artifacts.s3.us-west-1.amazonaws.com/master/electronics/view_base-ibom.html)
[PCB 数据包](https://smartknob-artifacts.s3.us-west-1.amazonaws.com/master/electronics/view_base-pcb-packet.pdf)
[Gerber 文件](https://smartknob-artifacts.s3.us-west-1.amazonaws.com/master/electronics/view_base-jlc/gerbers.zip)
⚠️ 对于已测试/稳定/推荐的产物,请改用[发布版](https://github.com/scottbez1/smartknob/releases)。
#### 屏幕 PCB
订购注意事项:根据机械设计,厚度必须为 1.2mm(而不是“标准”的 1.6mm)。(PCB 丝印提到 0.6mm 厚度——这是用于粘贴 LCD 的 **VHB 胶带**的厚度;PCB 应为 1.2mm 厚)
屏幕 PCB 上的组件足够少,我选择手工焊接它们,而不是使用锡膏和钢网进行回流焊,但如果你订购了钢网,请参阅上面关于选择“Customized size”以便于
操作并节省运费的说明。同时确保只选择**Bottom**面;所有组件都位于屏幕 PCB 的底面。
最新自动生成(未测试且可能有缺陷!)的产物⚠️:
[原理图](https://smartknob-artifacts.s3.us-west-1.amazonaws.com/master/electronics/view_screen-schematic.pdf)
[交互式 BOM](https://smartknob-artifacts.s3.us-west-1.amazonaws.com/master/electronics/view_screen-ibom.html)
[PCB 数据包](https://smartknob-artifacts.s3.us-west-1.amazonaws.com/master/electronics/view_screen-pcb-packet.pdf)
[Gerber 文件](https://smartknob-artifacts.s3.us-west-1.amazonaws.com/master/electronics/view_screen-jlc/gerbers.zip)
⚠️ 对于已测试/稳定/推荐的产物,请改用[发布版](https://github.com/scottbez1/smartknob/releases)。
#### 打印部件
你需要六个打印部件。当前稳定的设计可以在 [v185 mechanical release](https://github.com/scottbez1/smartknob/releases/tag/releases%2Fmechanical%2Fv185-dummy-tag) 中作为 STL 资产找到,或者你可以通过在 Fusion 360 中打开 CAD 模型来导出最新的未测试设计:https://a360.co/3BzkU0n
这些部件*很可能*可以通过调试良好的打印机进行 FDM 3D 打印,但视频/照片中展示的部件是采用 MJF 工艺在尼龙中打印的,以获得严格的公差和更好的表面光洁度。
如果你想要更简单的构建,你可以省略 LCD,只需将模型中的旋钮 + 玻璃合并为一个 STL,即可得到一个封闭顶部的旋钮。
导出并打印以下 6 个部件:
* `Enclosure`
* `Knob` (RotorAssembly->KnobAssembly->Knob)
* `ScreenPlatform`
* `RotorSpacer` (RotorAssembly->RotorSpacer)
* `MountBase`
* `BackPlate`
⚠️ 如果你选择从 JLCPCB 进行 MJF 尼龙打印,他们的系统可能会警告 `MountBase`、`ScreenPlatform` 和 `RotorSpacer` 部件上 `检测到 < 0.8mm 壁厚`。这似乎是误报,可能发生在某些打印锥度上。你应该可以忽略它,因为 JLCPCB 的所有打印订单都会经过最终的人工审核,如果你的打印件存在任何导致作业停止的问题或风险,他们会通过电子邮件联系你。
## NanoFOC (第三方)
如果你正在尝试体验 FOC/触觉反馈,但不想自己构建完整的 SmartKnob View,我可以
推荐 NanoFOC DevKit++,这是由 SmartKnob 社区成员制作和[销售](https://store.binaris.io/products/nanofoc-devkit)的一款[开源设计](https://github.com/katbinaris/nanofoc_devkit)!它超级紧凑,
是你构建自己的基于 BLDC 的触觉输入设备的绝佳测试平台或核心。

NanoFOC 使用 ESP32-S3,SmartKnob 固件可以直接在其上运行;只需在上传时在 PlatformIO 中选择 `nanofoc` 环境,而不是 `view` 环境即可。
# 常见问题 (FAQ)
### 我可以使用我在 AliExpress 上找到的这种廉价云台 BLDC 电机吗?
我无法阻止你,但我要提醒你,根据你的预期应用,**你可能不会对它感到非常满意**。
社区测试过的几乎所有现成 BLDC 云台电机(相信我,几乎包括你在 AliExpress 上能找到的所有廉价电机)都存在
*中等偏严重的齿槽效应*。这意味着即使在未通电的情况下,电机也想自己吸附到某些位置。这意味着当关闭虚拟刻度挡位时,你将无法获得
完全平滑的旋转,并且电机的齿槽效应可能会干扰或压倒虚拟挡位,特别是如果你
将它们设置为较低的强度或使其非常精细时。
推荐电机绝对是我们迄今为止发现的最好(即最低齿槽效应)的现成电机,也是唯一容易买到的、我认为
在此应用中表现“良好”的电机。
如果你发现了另一种在未通电时完全平滑的电机,我们非常乐意在 Discord 中听到关于它的;如果你对你在网上看到的某种廉价电机感到好奇,你可以直接订购一个并亲自尝试,或者在 Discord 中询问,但如果
你得到的回复是像“不行,不好”这样简短的话,请不要感到惊讶(或被冒犯)。
### 成本是多少?
我希望我现在能告诉你,但我实际上一时也说不准。请稍后再来查看——到目前为止我只构建了几个,这是很长一段时间内大量修补和原型制作的结果,所以我还没有把所有的费用加起来。零件成本可能不到 200 美元?但是有些物品变得更贵了,而且你可能受到最低订购量或多个不同供应商的运费限制。
### 它与 XYZ 兼容吗?
还没有,无论你指的是什么“XYZ”。到目前为止,我只实现了视频中展示的演示所需的固件,所以你实际上还不能将它用于任何有实际生产力的事情。基本的刻度挡位配置 API 已经有了,但其他的还不多。还有大量的固件工作要做。如果你构建了一个,我很乐意得到你的帮助来增加对“XYZ”的支持!
### 我可以购买套件或组装好的成品吗?
可能不行?或者至少,我没有任何近期自己销售它们的计划。并不是我不想让你满意,而是硬件是一项艰难的业务,我只是在我的业余时间做这些东西。
不过它是开源的,拥有相当宽松的许可证,所以理论上任何人都可以开始提供套件/组装件。如果有人真的走上了销售它们的道路,请注意署名是
必须的(如果你有心情的话,我也不会拒绝[版税/打赏/感谢](https://github.com/sponsors/scottbez1/) 🙂)。
# 固件与软件
关于固件和软件(以及如何入门)的更多详细文档可以在专门的 [SmartKnob 固件与软件指南](https://paper.dropbox.com/doc/SmartKnob-firmware-and-software--Byho6npe9XvZLZLxJ_8bK5TqAg-VUb9nq7btuhnHw5KlgJIH#:h2=Calibration)中找到
## 通用组件信息
### 磁性编码器
#### MT6701 (MagnTek)
性价比极高的出色传感器——强烈推荐。噪声低于 TLV493D,并且使用 SSI 时响应更灵敏(控制回路更稳定)。
- 丰富的 IO 选项——SSI、I2C 和 ABZ——应能提供良好的响应延迟
- SSI 包含用于验证数据的 CRC
- 没有断电或低功耗模式——可能不适用于电池供电的设备
- 不由美国经销商(Mouser、Digi-Key)供货
[数据手册](http://www.magntek.com.cn/upload/MT6701_Rev.1.5.pdf)
[订购 (LCSC)](https://lcsc.com/product-detail/Angle-Linear-Position-Sensors_Magn-Tek-MT6701CT-STD_C2856764.html)
#### TLV493D (Infineon)
未在 SmartKnob 视图中使用,但通常是常见/流行的磁性编码器。对于触觉反馈实现来说,它是一个平庸的选择。使用 [Adafruit 的 QWIIC 分线板](https://www.adafruit.com/product/4366)可以轻松进行原型设计。
在我的测试中,它的噪声较大,需要可能会降低响应速度的滤波/平滑处理,从而损害控制环路的稳定性。或者,在较少滤波的情况下,噪声
很容易被 PID 电机扭矩控制器中的微分分量“放大”,导致产生听得见(和感觉得到)的嗡嗡声/蜂鸣声。
但更大的问题是,显然存在一个已知的硅片问题,会导致内部 ADC 有时完全锁死,需要完全重置和重新配置,这可能会导致数据延迟/间隙!参见
[用户手册](https://www.infineon.com/dgdl/Infineon-TLV493D-A1B6_3DMagnetic-UM-v01_03-EN.pdf?fileId=5546d46261d5e6820161e75721903ddd)中的 5.6 节。
```
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.
```
根据我测试 4 个不同的 Adafruit 分线板的经验,其中 2 个(50%)会在一两分钟的使用中定期出现这种锁死行为。虽然可以检测并自动重置(项目中有相应的代码来实现),但这速度很慢,并且如果传感器经常锁死,可能会导致不良的跳动/延迟。
[数据手册](https://www.mouser.com/datasheet/2/196/Infineon_TLV493D_A1B6_DataSheet_v01_10_EN-1227967.pdf)
#### AS5600 (AMS)
一个平庸的选择。廉价的分线板很容易买到。
在我的测试中,它噪声相当大(凭经验来看,比 TLV493d 更嘈杂),需要可能会降低响应速度的滤波/平滑处理,从而损害控制回路的稳定性。此外,与测试过的其他传感器相比,它在较低的磁场强度下就会饱和,当配合像 [Radial Magnets 8995](https://www.digikey.com/en/products/detail/radial-magnets-inc/8995/5126077) 这样的高强度钕径向磁铁使用时,需要留出显著的气隙 (8-10mm)。
[数据手册](https://ams.com/documents/20143/36005/AS5600_DS000365_5-00.pdf)
### 电机驱动器
#### TMC6300-LA
这是一款相对较新的 IC,堪称完美匹配!通常没有任何其他驱动器(带有集成 FET)能满足此项目所用低压和低电流电机的要求(DRV8316 可能可行,但尚未测试)。
亮点:
- 2-11V DC 电机电源输入
- 高达 1.2A RMS
- 体积微小(3x3mm QFN)
[数据手册](https://www.trinamic.com/fileadmin/assets/Products/ICs_Documents/TMC6300_datasheet_rev1.07.pdf)
[产品页面](https://www.trinamic.com/products/integrated-circuits/details/tmc6300-la/)
### 电机
#### 32mm 转子,空心轴,径向磁铁
- 32mm 转子
- 15mm 总高度(包括磁铁),不含磁铁 12.75mm,转子高度 9mm
- 低/零齿槽效应——非常适合完全平滑的输入
- 5.9mm 空心轴
- 内置用于编码器的径向磁铁
- 经过验证的选择
总的来说,这是最容易上手的电机。低齿槽效应和内置径向磁铁非常棒!
可从 [SparkFun 购买](https://www.sparkfun.com/products/20441)!
# 致谢
这个项目深受 Jesse Schoch 的视频“[haptic textures and virtual detents](https://www.youtube.com/watch?v=1gPQfDkX3BU)”及 SimpleFOC 社区中相应的[讨论](https://community.simplefoc.com/t/haptic-textures/301)启发。说真的,如果没有那个视频,这个项目就不会存在——感谢 Jesse!
# 许可证
本项目根据 Apache v2(软件、电子设备、文档)和 Creative Commons Attribution 4.0(硬件/机械)进行许可(参见 [LICENSE.txt](LICENSE.txt) 和 [Creative Commons](https://creativecommons.org/licenses/by/4.0/))。
```
Copyright 2022 Scott Bezek
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
```
### 工作原理
### 3D CAD

最新 Fusion 360 模型:https://a360.co/3BzkU0n
#### 演示:视频编辑器时间轴控制
如果你编辑音频/视频,想象一下拥有一个这样的点拨轮:当你在时间轴上滚动时,能够*感觉到*片段的边界。然后切换到播放速度控制,使用一个装有弹簧的轮子使其回到“暂停”状态,并在 1x、2x、4x 等位置有吸附感。SmartKnob 可以做到这一点;只需要编写一些软件集成即可。查看使用 SmartKnob 原型控制模拟视频时间轴的演示:
(如果你已经构建了一个 SmartKnob,你实际上可以自己尝试这个演示;通过 USB 插入它并访问 https://scottbez1.github.io/smartknob/)
### 构建你自己的?
虽然这是一个“DIY”开源项目,但它还不是一个成熟的即插即用项目。如果你打算自己构建,请注意它需要高级焊接经验才能完成——需要非常小间距的表面贴装焊接(建议使用回流焊或热风枪),并且组装相当耗时和精细。请做好心理准备,你几乎肯定需要能够自己排除一些硬件和固件问题——我建议在开始之前先查看/了解原理图和基本固件!
关于 BOM 和你需要订购哪些部件的更多文档将在未来提供——非常感谢你的关注!在 [Twitter](https://twitter.com/scottbez1) 上关注我,获取此项目和其他项目的最新更新。
查看最新自动生成(未测试)的[基础 PCB 交互式 BOM](https://smartknob-artifacts.s3.us-west-1.amazonaws.com/master/electronics/view_base-ibom.html) 和[屏幕 PCB 交互式 BOM](https://smartknob-artifacts.s3.us-west-1.amazonaws.com/master/electronics/view_screen-ibom.html)(或合并的 [BOM csv](https://smartknob-artifacts.s3.us-west-1.amazonaws.com/master/electronics/view_base-bom.csv))以获取电子/硬件部件列表。⚠️ 这些是从 GitHub 上最新未测试版本自动生成的。对于已测试/稳定/推荐的产物,请改用[发布版](https://github.com/scottbez1/smartknob/releases)。
同时提供一些其他注意事项:
- LCD 支架内部的接线空间有限,并且需要 8 根线穿过中心的孔。我使用了 30 AWG 绕线。漆包线可能也可以。
- 旧版本的设计(如视频中所示)使用胶粘的 BF350-3AA 应变片来检测按压;在 v0.5 中,这些被替换为 SMD 电阻的焊盘,它们在拉伸/压缩时表现出相似的特性,并且更容易组装。
- TMC6300 非常微小并且有底部焊盘,因此我强烈建议在订购 PCB 的同时订购一个钢网。即使使用了钢网,之后我也需要手动清理一些连锡;我*强烈*推荐 Chip Quik NC191 凝胶助焊剂,可从 [Amazon](https://amzn.to/3MGDSr5) 购买(或改用这个[非联盟链接](https://www.amazon.com/Smooth-Flow-No-Clean-syringe-plunger/dp/B08KJPG3NZ)),或从你选择的电子经销商处购买。助焊剂在将 LCD 柔性排线焊接到屏幕 PCB 时也非常有帮助。
- 对于面包板原型制作,[TMC6300-BOB](https://www.trinamic.com/support/eval-kits/details/tmc6300-bob/) 或 SparkFun 的 [TMC6300 驱动板](https://www.sparkfun.com/products/21867) 非常棒,如果你只是想体验一下低电流 BLDC 电机,它们比裸芯片要容易操作得多。
- 关于 AliExpress 购物:我强烈建议**只**使用 AliExpress 标准配送(在美国购买)。我多次使用菜鸟或其他低成本物流选项购买的商品需要数月时间才能送达或根本没有送达,而根据我的经验,AliExpress 标准配送非常可靠,而且通常更快。
- 确保检查[待解决问题](https://github.com/scottbez1/smartknob/issues)——这个设计还不“稳定”,所以请注意一切可能不会那么顺利。
未来计划:
- 考虑切换到使用 ESP32-S3-MINI-1 模块
- 配置并运行 wifi(可能是 MQTT?)。目前内存是全屏显示帧缓冲区 sprite 的一个问题。PSRAM 可能会解决这个问题(需要更新的 ESP-IDF 和未发布的 Arduino 核心,并且从简短的测试来看,启用 PSRAM 后性能极差),或者下一项可能有助于减少内存:
- 迁移到 LVGL,以获得更好的显示渲染和轻松支持菜单等。不应在内存中需要完整的 240x240x24b 帧缓冲区,从而释放一些空间用于 wifi 等。
- Home Assistant 集成,或其他实际应用
- ???
- [盈利](https://github.com/sponsors/scottbez1/) 😉
#### 已经构建了一个?
查看[固件/软件文档](https://paper.dropbox.com/doc/SmartKnob-firmware-and-software--B_oWj~L1dXqHgAqqYmhwwuqzAg-VUb9nq7btuhnHw5KlgJIH)
获取有关如何对其进行编程以及将其连接到你自己的软件集成的提示。
如果你已经上传了标准固件并完成了校准过程(如果你不知道这是什么意思,请参阅上面链接的指南),
请访问 https://scottbez1.github.io/smartknob/ 以试用基于 Web 的交互式演示,该演示使用 Web Serial 与插入你
电脑 USB 端口的 SmartKnob 进行通信!
#### 基础 PCB
订购注意事项:使用白色阻焊层,用于反射旋钮周围 RGB LED 环的光。厚度应为 1.2mm(而不是“标准”的 1.6mm)。
如果你要从 JLCPCB 订购锡膏钢网,并且计划像[视频中所示](https://youtu.be/Q76dMggUH1M?t=372)那样在没有钢网框架/机器的情况下手动
涂抹,请务必选择**“Customized size”**并输入较小的尺寸(例如 100mm x 100mm),以避免得到比你
需要的大得多的钢网。这也可能会大大降低运费!此外,只选择**Top**面;底面
只有 2 个 SMT 组件——电机连接器和 VEML7700 ALS——因此不值得为它制作钢网。
最新自动生成(未测试且可能有缺陷!)的产物⚠️:
[原理图](https://smartknob-artifacts.s3.us-west-1.amazonaws.com/master/electronics/view_base-schematic.pdf)
[交互式 BOM](https://smartknob-artifacts.s3.us-west-1.amazonaws.com/master/electronics/view_base-ibom.html)
[PCB 数据包](https://smartknob-artifacts.s3.us-west-1.amazonaws.com/master/electronics/view_base-pcb-packet.pdf)
[Gerber 文件](https://smartknob-artifacts.s3.us-west-1.amazonaws.com/master/electronics/view_base-jlc/gerbers.zip)
⚠️ 对于已测试/稳定/推荐的产物,请改用[发布版](https://github.com/scottbez1/smartknob/releases)。
#### 屏幕 PCB
订购注意事项:根据机械设计,厚度必须为 1.2mm(而不是“标准”的 1.6mm)。(PCB 丝印提到 0.6mm 厚度——这是用于粘贴 LCD 的 **VHB 胶带**的厚度;PCB 应为 1.2mm 厚)
屏幕 PCB 上的组件足够少,我选择手工焊接它们,而不是使用锡膏和钢网进行回流焊,但如果你订购了钢网,请参阅上面关于选择“Customized size”以便于
操作并节省运费的说明。同时确保只选择**Bottom**面;所有组件都位于屏幕 PCB 的底面。
最新自动生成(未测试且可能有缺陷!)的产物⚠️:
[原理图](https://smartknob-artifacts.s3.us-west-1.amazonaws.com/master/electronics/view_screen-schematic.pdf)
[交互式 BOM](https://smartknob-artifacts.s3.us-west-1.amazonaws.com/master/electronics/view_screen-ibom.html)
[PCB 数据包](https://smartknob-artifacts.s3.us-west-1.amazonaws.com/master/electronics/view_screen-pcb-packet.pdf)
[Gerber 文件](https://smartknob-artifacts.s3.us-west-1.amazonaws.com/master/electronics/view_screen-jlc/gerbers.zip)
⚠️ 对于已测试/稳定/推荐的产物,请改用[发布版](https://github.com/scottbez1/smartknob/releases)。
#### 打印部件
你需要六个打印部件。当前稳定的设计可以在 [v185 mechanical release](https://github.com/scottbez1/smartknob/releases/tag/releases%2Fmechanical%2Fv185-dummy-tag) 中作为 STL 资产找到,或者你可以通过在 Fusion 360 中打开 CAD 模型来导出最新的未测试设计:https://a360.co/3BzkU0n
这些部件*很可能*可以通过调试良好的打印机进行 FDM 3D 打印,但视频/照片中展示的部件是采用 MJF 工艺在尼龙中打印的,以获得严格的公差和更好的表面光洁度。
如果你想要更简单的构建,你可以省略 LCD,只需将模型中的旋钮 + 玻璃合并为一个 STL,即可得到一个封闭顶部的旋钮。
导出并打印以下 6 个部件:
* `Enclosure`
* `Knob` (RotorAssembly->KnobAssembly->Knob)
* `ScreenPlatform`
* `RotorSpacer` (RotorAssembly->RotorSpacer)
* `MountBase`
* `BackPlate`
⚠️ 如果你选择从 JLCPCB 进行 MJF 尼龙打印,他们的系统可能会警告 `MountBase`、`ScreenPlatform` 和 `RotorSpacer` 部件上 `检测到 < 0.8mm 壁厚`。这似乎是误报,可能发生在某些打印锥度上。你应该可以忽略它,因为 JLCPCB 的所有打印订单都会经过最终的人工审核,如果你的打印件存在任何导致作业停止的问题或风险,他们会通过电子邮件联系你。
## NanoFOC (第三方)
如果你正在尝试体验 FOC/触觉反馈,但不想自己构建完整的 SmartKnob View,我可以
推荐 NanoFOC DevKit++,这是由 SmartKnob 社区成员制作和[销售](https://store.binaris.io/products/nanofoc-devkit)的一款[开源设计](https://github.com/katbinaris/nanofoc_devkit)!它超级紧凑,
是你构建自己的基于 BLDC 的触觉输入设备的绝佳测试平台或核心。

NanoFOC 使用 ESP32-S3,SmartKnob 固件可以直接在其上运行;只需在上传时在 PlatformIO 中选择 `nanofoc` 环境,而不是 `view` 环境即可。
# 常见问题 (FAQ)
### 我可以使用我在 AliExpress 上找到的这种廉价云台 BLDC 电机吗?
我无法阻止你,但我要提醒你,根据你的预期应用,**你可能不会对它感到非常满意**。
社区测试过的几乎所有现成 BLDC 云台电机(相信我,几乎包括你在 AliExpress 上能找到的所有廉价电机)都存在
*中等偏严重的齿槽效应*。这意味着即使在未通电的情况下,电机也想自己吸附到某些位置。这意味着当关闭虚拟刻度挡位时,你将无法获得
完全平滑的旋转,并且电机的齿槽效应可能会干扰或压倒虚拟挡位,特别是如果你
将它们设置为较低的强度或使其非常精细时。
推荐电机绝对是我们迄今为止发现的最好(即最低齿槽效应)的现成电机,也是唯一容易买到的、我认为
在此应用中表现“良好”的电机。
如果你发现了另一种在未通电时完全平滑的电机,我们非常乐意在 Discord 中听到关于它的;如果你对你在网上看到的某种廉价电机感到好奇,你可以直接订购一个并亲自尝试,或者在 Discord 中询问,但如果
你得到的回复是像“不行,不好”这样简短的话,请不要感到惊讶(或被冒犯)。
### 成本是多少?
我希望我现在能告诉你,但我实际上一时也说不准。请稍后再来查看——到目前为止我只构建了几个,这是很长一段时间内大量修补和原型制作的结果,所以我还没有把所有的费用加起来。零件成本可能不到 200 美元?但是有些物品变得更贵了,而且你可能受到最低订购量或多个不同供应商的运费限制。
### 它与 XYZ 兼容吗?
还没有,无论你指的是什么“XYZ”。到目前为止,我只实现了视频中展示的演示所需的固件,所以你实际上还不能将它用于任何有实际生产力的事情。基本的刻度挡位配置 API 已经有了,但其他的还不多。还有大量的固件工作要做。如果你构建了一个,我很乐意得到你的帮助来增加对“XYZ”的支持!
### 我可以购买套件或组装好的成品吗?
可能不行?或者至少,我没有任何近期自己销售它们的计划。并不是我不想让你满意,而是硬件是一项艰难的业务,我只是在我的业余时间做这些东西。
不过它是开源的,拥有相当宽松的许可证,所以理论上任何人都可以开始提供套件/组装件。如果有人真的走上了销售它们的道路,请注意署名是
必须的(如果你有心情的话,我也不会拒绝[版税/打赏/感谢](https://github.com/sponsors/scottbez1/) 🙂)。
# 固件与软件
关于固件和软件(以及如何入门)的更多详细文档可以在专门的 [SmartKnob 固件与软件指南](https://paper.dropbox.com/doc/SmartKnob-firmware-and-software--Byho6npe9XvZLZLxJ_8bK5TqAg-VUb9nq7btuhnHw5KlgJIH#:h2=Calibration)中找到
## 通用组件信息
### 磁性编码器
#### MT6701 (MagnTek)
性价比极高的出色传感器——强烈推荐。噪声低于 TLV493D,并且使用 SSI 时响应更灵敏(控制回路更稳定)。
- 丰富的 IO 选项——SSI、I2C 和 ABZ——应能提供良好的响应延迟
- SSI 包含用于验证数据的 CRC
- 没有断电或低功耗模式——可能不适用于电池供电的设备
- 不由美国经销商(Mouser、Digi-Key)供货
[数据手册](http://www.magntek.com.cn/upload/MT6701_Rev.1.5.pdf)
[订购 (LCSC)](https://lcsc.com/product-detail/Angle-Linear-Position-Sensors_Magn-Tek-MT6701CT-STD_C2856764.html)
#### TLV493D (Infineon)
未在 SmartKnob 视图中使用,但通常是常见/流行的磁性编码器。对于触觉反馈实现来说,它是一个平庸的选择。使用 [Adafruit 的 QWIIC 分线板](https://www.adafruit.com/product/4366)可以轻松进行原型设计。
在我的测试中,它的噪声较大,需要可能会降低响应速度的滤波/平滑处理,从而损害控制环路的稳定性。或者,在较少滤波的情况下,噪声
很容易被 PID 电机扭矩控制器中的微分分量“放大”,导致产生听得见(和感觉得到)的嗡嗡声/蜂鸣声。
但更大的问题是,显然存在一个已知的硅片问题,会导致内部 ADC 有时完全锁死,需要完全重置和重新配置,这可能会导致数据延迟/间隙!参见
[用户手册](https://www.infineon.com/dgdl/Infineon-TLV493D-A1B6_3DMagnetic-UM-v01_03-EN.pdf?fileId=5546d46261d5e6820161e75721903ddd)中的 5.6 节。
```
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.
```
根据我测试 4 个不同的 Adafruit 分线板的经验,其中 2 个(50%)会在一两分钟的使用中定期出现这种锁死行为。虽然可以检测并自动重置(项目中有相应的代码来实现),但这速度很慢,并且如果传感器经常锁死,可能会导致不良的跳动/延迟。
[数据手册](https://www.mouser.com/datasheet/2/196/Infineon_TLV493D_A1B6_DataSheet_v01_10_EN-1227967.pdf)
#### AS5600 (AMS)
一个平庸的选择。廉价的分线板很容易买到。
在我的测试中,它噪声相当大(凭经验来看,比 TLV493d 更嘈杂),需要可能会降低响应速度的滤波/平滑处理,从而损害控制回路的稳定性。此外,与测试过的其他传感器相比,它在较低的磁场强度下就会饱和,当配合像 [Radial Magnets 8995](https://www.digikey.com/en/products/detail/radial-magnets-inc/8995/5126077) 这样的高强度钕径向磁铁使用时,需要留出显著的气隙 (8-10mm)。
[数据手册](https://ams.com/documents/20143/36005/AS5600_DS000365_5-00.pdf)
### 电机驱动器
#### TMC6300-LA
这是一款相对较新的 IC,堪称完美匹配!通常没有任何其他驱动器(带有集成 FET)能满足此项目所用低压和低电流电机的要求(DRV8316 可能可行,但尚未测试)。
亮点:
- 2-11V DC 电机电源输入
- 高达 1.2A RMS
- 体积微小(3x3mm QFN)
[数据手册](https://www.trinamic.com/fileadmin/assets/Products/ICs_Documents/TMC6300_datasheet_rev1.07.pdf)
[产品页面](https://www.trinamic.com/products/integrated-circuits/details/tmc6300-la/)
### 电机
#### 32mm 转子,空心轴,径向磁铁
- 32mm 转子
- 15mm 总高度(包括磁铁),不含磁铁 12.75mm,转子高度 9mm
- 低/零齿槽效应——非常适合完全平滑的输入
- 5.9mm 空心轴
- 内置用于编码器的径向磁铁
- 经过验证的选择
总的来说,这是最容易上手的电机。低齿槽效应和内置径向磁铁非常棒!
可从 [SparkFun 购买](https://www.sparkfun.com/products/20441)!
# 致谢
这个项目深受 Jesse Schoch 的视频“[haptic textures and virtual detents](https://www.youtube.com/watch?v=1gPQfDkX3BU)”及 SimpleFOC 社区中相应的[讨论](https://community.simplefoc.com/t/haptic-textures/301)启发。说真的,如果没有那个视频,这个项目就不会存在——感谢 Jesse!
# 许可证
本项目根据 Apache v2(软件、电子设备、文档)和 Creative Commons Attribution 4.0(硬件/机械)进行许可(参见 [LICENSE.txt](LICENSE.txt) 和 [Creative Commons](https://creativecommons.org/licenses/by/4.0/))。
```
Copyright 2022 Scott Bezek
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
```
标签:3D打印, BLDC, DIY电子, GC9A01, HMI, IoT, LCD显示屏, SMARTKNOB, UML, 云台电机, 人机交互, 创客, 力矩反馈, 嵌入式系统, 开源硬件, 无刷电机, 智能旋钮, 智能硬件, 物联网, 电子发烧友, 硬件控制, 硬件项目, 磁编码器, 虚拟卡扣, 虚拟限位, 触觉反馈, 触觉输入设备, 输入控制器, 输入设备, 闭环控制