当前位置: 首页 > 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.rkmt.cn/news/59096.html

相关文章:

  • 2025 年 11 月手持式硫化氢检测仪厂家权威推荐榜:防爆精准、便携耐用的工业安全守护者之选
  • Nginx怎么配置禁止访问某个目录或文件
  • 2025年昆明不听话学校管理权威推荐:昆明不听话孩子学校优化/昆明不听话少年学校/昆明小孩不听话学校机构精选
  • 2025 年 11 月氧气分析仪厂家权威推荐榜:高精度检测、稳定耐用与专业服务口碑之选
  • 灵芝孢子粉哪家品牌效果最佳?行业口碑之选推荐
  • kafka点对点模式与广播模式的区别
  • 探寻知名的灵芝孢子粉品牌:传承与品质之选
  • 五、使用Spring AI Alibaba实现Rag
  • 降ai率免费网站推荐:实用工具助你高效创作
  • 写给0-1岁的初创公司合伙人(129):副业营销(Side-Project Marketing)——做工具引流,而不是投广告
  • 2025年南京留学机构排名:南京留学,英国留学,香港留学,新加坡留学,澳洲留学,美国留学
  • python的一些文件py/pyc/pyo/pyd/pyi/ipynb
  • 深入解析:JavaScript介绍 | 程序人生
  • 2025年装配式墙板设备源头厂家权威推荐榜单:装配式围墙模具/装配式外墙板设备/装配式围墙设备源头厂家精选
  • 2025 年 11 月智能悬浮门厂家权威推荐榜:铝合金折叠门、别墅段滑门、铝艺折叠门、高铁站悬浮门、码头折叠门、机场折叠门、工业园折叠门、展览馆悬浮门、体育馆折叠门,高端定制与安全耐用之选
  • 推荐一款OOK调制遥控器芯片-DP4335A
  • 2025年国产翻译耳机制造厂权威推荐:蓝牙翻译耳机/智能翻译耳机/同传翻译手表源头厂家精选
  • 2025年11月防火/钢结构/非膨胀型/膨胀型/特种防火涂料生产厂家TOP10综合评测与选购指南:权威推荐榜单揭晓
  • 2025年玻璃钢电缆桥架源头厂家权威推荐:聚氨酯桥架/玻璃钢管箱/玻璃钢电力电缆槽源头厂家精选
  • 质量江湖:那些年我们遇到的“君子”与“小人”
  • 模拟赛Atcoder Beginner Contest 433官方题解(E题)
  • 103_尚硅谷_break课堂练习
  • 2025年北京留学机构哪家好:北京留学,英国留学,香港留学,新加坡留学,澳洲留学,美国留学
  • 2025年上海全铝家居定制品牌综合实力排行榜TOP5
  • 安康PC耐力板厂家实力榜2025
  • 吴恩达深度学习课程二: 改善深层神经网络 第三周:超参数调整,批量标准化和编程框架 课后习题和代码实践
  • 深入解析:【经验】Word/WPS|用邮件合并批量填写表格或教案,单个Word导出成多个文件(包含插入图片的教程)
  • LTE系统资源分配MATLAB实现示例
  • 科研院校选购指南:小型高低温试验箱,哪个厂家精度更高、更靠谱?
  • 2025 年 11 月建筑加固厂家权威推荐榜:碳纤维加固、粘钢加固,专业工艺与持久安全的高效解决方案