当前位置: 首页 > news >正文

2025最新SmartKnob开发指南:从固件烧录到Web Serial交互全流程

你还在为复杂的旋钮控制器开发而烦恼吗?SmartKnob作为一款开源的触觉输入旋钮(Haptic input knob),通过软件定义的终端止动(endstops)和动态定位点(dynamic detents),为开发者提供了高度可定制的交互体验。本文将带你完成从固件烧录到Web Serial交互的全流程,让你快速掌握SmartKnob的开发精髓。

读完本文,你将能够:

  • 了解SmartKnob的核心功能与硬件组成
  • 搭建开发环境并成功烧录固件
  • 通过Web Serial实现与SmartKnob的交互
  • 掌握基本的参数配置与调试技巧

SmartKnob简介

SmartKnob是一个开源输入设备,其核心在于将无刷云台电机与磁性编码器配对,提供闭环扭矩反馈控制,从而动态创建和调整定位点和终端止动的触感。

27040033_68fe7de19047d23949

 

核心功能

  • 软件定义终端止动:可通过软件配置旋钮的旋转范围限制
  • 动态定位点:模拟物理旋钮的卡点手感,支持动态调整
  • 触觉反馈:通过电机提供精确的触觉反馈
  • 按压检测:使用PCB挠曲和SMD电阻作为应变计实现按压检测
  • RGB LED环:8个侧发光RGB LED(SK6812-SIDE-A)环绕旋钮
  • 环境光感应:VEML7700环境光传感器实现自动背光调节

硬件组成

SmartKnob的主要硬件组件包括:

  • 240x240圆形LCD(GC9A01),由39.5mm表镜保护
  • 无刷云台电机,带空心轴用于机械和电气连接LCD
  • ESP32-PICO-V3-02(Lilygo TMicro32 Plus模块)供电
  • USB-C(2.0)连接器,用于5V电源和串行数据/编程(CH340)
  • 多功能背板,支持4个螺丝或2个3M中号Command条安装

开发环境搭建

准备工作

在开始之前,请确保你已准备好以下工具和材料:

  • SmartKnob硬件套件
  • 计算机(Windows/macOS/Linux)
  • USB-C数据线
  • Git
  • PlatformIO IDE

克隆代码仓库

首先,克隆SmartKnob的代码仓库:

git clone https://gitcode.com/gh_mirrors/smar/smartknob
cd smartknob

安装依赖

SmartKnob的固件开发基于PlatformIO,因此需要安装相关依赖:

# 安装Python依赖
cd software/python
pipenv install# 安装JavaScript依赖
cd ../js
npm install

固件烧录

固件结构

SmartKnob的固件代码位于firmware/目录下,主要结构如下:

firmware/
├── include/           # 头文件
├── lib/               # 第三方库
│   └── tlv/           # TLV493D传感器库
├── src/               # 源代码
│   ├── main.cpp       # 主程序入口
│   ├── motor_task.cpp # 电机控制任务
│   ├── display_task.cpp # 显示任务
│   └── interface_task.cpp # 接口任务
└── platformio.ini     # PlatformIO配置文件

配置PlatformIO

打开platformio.ini文件,根据你的硬件版本选择合适的环境配置。对于标准的SmartKnob View,使用以下配置:

[env:view]
platform = espressif32
board = esp32-pico-kit
framework = arduino
monitor_speed = 115200
upload_speed = 460800

烧录固件

连接SmartKnob到计算机,执行以下命令烧录固件:

cd firmware
pio run --target upload

烧录成功后,你可以通过串口监视器查看调试信息:

pio device monitor

硬件校准

固件烧录完成后,首次启动需要进行硬件校准。校准过程包括:

  1. 电机零位校准
  2. 编码器校准
  3. 应变计校准

校准过程中,请确保旋钮处于自由状态,不要触摸。校准数据将保存在configuration.cppconfiguration.h文件中,你可以根据需要手动调整参数。

Web Serial交互

SmartKnob支持通过Web Serial协议与计算机进行通信。下面我们将使用官方提供的Web示例来演示如何与SmartKnob进行交互。

运行Web示例

cd software/js/packages/example-webserial-basic
npm start

打开浏览器,访问http://localhost:3000,你将看到一个简单的控制界面。

Web Serial连接步骤

  1. 点击界面上的"连接设备"按钮
  2. 在弹出的设备选择对话框中,选择SmartKnob设备
  3. 点击"连接"按钮建立通信

成功连接后,你可以通过界面控制SmartKnob的各种功能,如调整动态定位点、设置LED颜色等。

核心代码解析

Web Serial交互的核心代码位于software/js/packages/smartknobjs-webserial/src/index.ts中。以下是一个简单的示例,展示如何发送命令到SmartKnob:

import { WebSerialTransport } from 'smartknobjs-webserial';async function connect() {const transport = new WebSerialTransport();await transport.connect();// 设置动态定位点await transport.send({type: 'SET_DETENTS',detents: [0, 90, 180, 270],strength: 50});// 监听旋钮位置变化transport.on('position', (position) => {console.log('旋钮位置:', position);});
}

高级配置

参数配置

SmartKnob的配置参数主要在firmware/src/configuration.cppfirmware/src/configuration.h文件中定义。你可以修改这些参数来自定义SmartKnob的行为:

  • DEFAULT_DETENT_STRENGTH:默认定位点强度
  • DEFAULT_ENDSTOP_STRENGTH:默认终端止动强度
  • MAX_ROTATION_DEGREES:最大旋转角度
  • ENCODER_RESOLUTION:编码器分辨率

自定义触觉反馈

通过修改firmware/src/motor_task.cpp文件中的motor_task函数,你可以自定义触觉反馈效果。例如,以下代码片段展示了如何实现一个简单的触觉反馈模式:

void motor_task(void *pvParameters) {// 初始化代码...while (1) {// 读取旋钮位置float position = encoder_get_position();// 根据位置提供触觉反馈if (should_provide_feedback(position)) {motor_set_torque(feedback_strength);vTaskDelay(pdMS_TO_TICKS(50));motor_set_torque(0);}vTaskDelay(pdMS_TO_TICKS(10));}
}

故障排除

常见问题及解决方法

  1. 固件烧录失败
  • 检查USB连接是否稳定
  • 确保选择了正确的开发板和端口
  • 尝试按下设备上的BOOT按钮后再烧录
  1. Web Serial连接失败
  • 确保已安装最新的浏览器(支持Web Serial API)
  • 检查设备是否已正确连接并处于正常工作状态
  • 尝试关闭其他可能占用串口的应用程序
  1. 电机不工作或噪音过大
  • 检查电机接线是否正确
  • 重新进行电机校准
  • 调整motor_task.cpp中的PID参数

调试工具

SmartKnob提供了多种调试工具,帮助你诊断和解决问题:

  • 串口调试:通过logger.h提供的日志功能输出调试信息
  • Web调试界面example-webserial-timeline提供了更详细的调试功能
  • Python工具software/python/simple_example.py提供了基本的交互示例

总结与展望

通过本文的指导,你已经掌握了SmartKnob从固件烧录到Web Serial交互的全过程。SmartKnob作为一个开源项目,仍在不断发展中。未来的发展方向包括:

  • 迁移到LVGL,提供更好的显示渲染和菜单支持
  • 实现WiFi功能,支持MQTT协议
  • Home Assistant集成
  • 更多应用场景的探索和实现

如果你对SmartKnob的开发感兴趣,可以通过项目的README.md了解更多信息,或参与社区讨论,为项目贡献力量。

希望本指南能帮助你顺利开始SmartKnob的开发之旅。如有任何问题或建议,欢迎在项目仓库中提交issue或PR。

 

http://www.jsqmd.com/news/49279/

相关文章:

  • 2025 年 11 月手持式硫化氢检测仪厂家权威推荐榜:防爆精准、便携耐用的工业安全守护者之选
  • 灵芝孢子粉哪个品牌好?从品质到口碑的真实解析
  • 2025 年 11 月氢气分析仪厂家实力推荐榜:高精度检测、工业级耐用性与定制化解决方案的权威品牌深度解析
  • 降ai率工具哪个好?五款实用工具推荐榜单
  • 2025年昆明不听话学校管理权威推荐:昆明不听话孩子学校优化/昆明不听话少年学校/昆明小孩不听话学校机构精选
  • Nginx怎么配置禁止访问某个目录或文件
  • 2025 年 11 月 GEO 公司核心榜:多行业认可的实力企业
  • 2025 年 11 月氧气分析仪厂家权威推荐榜:高精度检测、稳定耐用与专业服务口碑之选
  • 2026值得选的英语一对一家教:高性价比 + 真实案例实测
  • P14568 【MX-S12-T3】排列题解
  • 灵芝孢子粉哪家品牌效果最佳?行业口碑之选推荐
  • 2025年11月氢气检测仪厂家权威推荐榜单:防爆型/便携式/高精度氢气检测仪,专业安全检测设备供应商精选指南
  • 探寻知名的灵芝孢子粉品牌:传承与品质之选
  • 2025年钢刨花压块机制造厂权威推荐榜单:轻薄料压块机/废钢压块机/钢筋压块机源头制造厂精选
  • kafka点对点模式与广播模式的区别
  • 2025 年 11 月靶材厂家权威推荐榜:溅射/磁控溅射/镀膜/旋转靶材,ITO/半导体/光学镀膜/陶瓷/金属/钛/铝/铜/钨/钼/钽/硅/合金/稀土靶材专业解析
  • 降ai率免费网站推荐:实用工具助你高效创作
  • python-input
  • 降ai率工具推荐:助力优化文本AI检测的实用工具盘点
  • ai论文工具推荐:助力学术创作的智能辅助工具盘点
  • Python 中常用的 GUI 库
  • 2025 年 11 月工业气体厂家权威推荐榜:高纯气体/特种气体/医用气体/稀有气体/混合气体,专业供应与安全标准深度解析
  • 2025年焕颜洁面乳工厂权威推荐:纯中药护肤/中药护肤品/绿色安全护肤源头厂家精选
  • 供应链质量协同新玩法:让供应商和你“零距离”协作
  • 2025年烘干机直销厂家权威推荐榜单:污泥烘干机/滚筒烘干机/沙子烘干机源头厂家精选
  • 2025年抽沙船实力厂家权威推荐榜单:采沙船/挖沙船/挖沙船源头厂家精选
  • 写给0-1岁的初创公司合伙人(129):副业营销(Side-Project Marketing)——做工具引流,而不是投广告
  • 2025 防脱生发品牌 TOP5 深度解析:加盟价值、口碑与行业趋势
  • 别拼价格了!这才是注塑厂真正的赚钱之道
  • 2025年评价好的产品认证代办价格,ROHS认证/3A信用等级认证/FSC森林认证/ISO20000/SA8000产品认证办理哪家好