从想法到实物:我是如何规划 SmartDesk V1 智能桌面控制器的
一、 前言:桌面上的“遥控器”焦虑
作为一名嵌入式开发者,我的桌面常年是这样的:显示器、键盘、鼠标、开发板,还有一个永远在嗡嗡响的小风扇。
我一直在寻找一个能摆在手边的“中枢控制器”。市面上有类似的产品,比如 Loupedeck 或者 Stream Deck,但它们要么价格昂贵,要么功能过于固化,无法让我这个“极客”随心所欲地定制。
于是,我决定自己造一个——SmartDesk V1。
我的初衷很简单:做一个能控制一切的物理旋钮。 旋转它,能调节电脑音量,能帮我监控桌面环境的温湿度。
二、 需求拆解:它必须做到什么?
在项目动工之前,我给自己列了一份详细的需求清单。这不仅是为了理清思路,更是为了确保后续软硬件设计不跑偏。
1. 交互体验(HMI)
这是最核心的部分。我不想在屏幕上戳戳点点,我要的是物理反馈。
-
EC11 金属编码器:必须是带按压的那种。旋转调节数值,按下确认。这是最直觉的操作方式。
-
OLED 显示屏:0.96 寸足以。用来显示当前的模式、数值(比如音量百分比)或者传感器数据。
-
快捷键:预留2个独立按键,用于切换模式或执行宏命令。
2. 硬件性能(Hardware)
基于 STM32F103C8T6 的选型,我规划了以下功能:
-
主控:STM32F103C8T6。为什么选它?因为它便宜、好用,最重要的是原生支持 USB 全速设备。这意味着我不需要额外的 USB-TTL 芯片,就能直接模拟键盘、鼠标或 MIDI 设备。
-
电源:Type-C 供电。板载 3.3V LDO(AMS1117)和 5V 直通,方便给外设供电。
-
扩展能力:预留 PWM 接口控制风扇或电机,预留 I2C 接口接温湿度传感器(SHT30)和光照传感器(BH1750)。
3. 软件架构(Software)
这是我对自己的一次挑战。我不想只写一个 while(1)的裸机代码。
-
RTOS 加持:必须上 FreeRTOS。这样我可以把显示、按键扫描、USB 通信分成不同的任务,逻辑更清晰,后期维护也方便。
-
低功耗设计:虽然是有线供电,但我希望它在闲置时能“安静”下来。利用 STM32 的 STOP 模式,配合 SI2303 MOS 管切断 OLED 和传感器的电源,实现超低功耗待机。
4. 物理形态(Mechanical)
-
一体化设计:PCB 直接做成核心板,不需要底板。
-
外壳友好:预留标准的 20mm EC11 轴长和开孔位置,方便后续 3D 打印或亚克力外壳。
三、 技术选型与难点预判
|
模块 |
选型 |
选型理由 |
预期难点 |
|---|---|---|---|
|
MCU |
STM32F103C8T6 |
性价比之王,USB 外设齐全 |
USB HID 描述符配置较复杂 |
|
编码器 |
EC11 (20mm轴) |
手感好,寿命长 |
正交解码的消抖逻辑 |
|
电源 |
AMS1117-3.3V |
经典稳定 |
大电流下 LDO 发热问题 |
|
保护 |
1206 0.5A 保险丝 |
防止短路烧毁 USB 口 |
选型需匹配 5V 电路 |
|
系统 |
FreeRTOS |
多任务调度 |
堆栈溢出、优先级反转 |
关于难点的预判:
我知道 PCB 设计会是个坎。特别是 USB 的差分线,以及 GND 的铺铜。之前我在练手时遇到过自动布线导致的“天线效应”和 DRC 间距违规(0.05mm 被工厂驳回),所以这次我决定全程手动布线,并严格按照 6mil 的安全间距执行。
四、 项目目标与成果预览
我希望 SmartDesk V1 最终能达到这样的效果:
-
作为一个 PC 外设:旋转旋钮 = 调节 Windows 系统音量;按下旋钮 = 静音;
-
作为一个环境控制器:实时显示桌面温湿度和亮度。
-
作为一个学习平台:代码开源,工程规范,供大家参考。
五、 结语
这就是 SmartDesk V1 的起点。它不是最复杂的硬件,也不是最前沿的技术,但它承载了我从“使用者”转变为“创造者”的想法。
接下来的几篇文章,我会详细记录:
-
如何用 立创 EDA 画出原理图和 PCB(以及我是怎么解决 DRC 报错的)。
-
如何用 Keil MDK + 标准库 搭建工程,并移植 FreeRTOS。
-
如何实现 USB HID 连接电脑,以及 低功耗 的实测数据。
如果你也对这个项目感兴趣,欢迎在评论区留言,或者去我的 GitHub 仓库关注进度。
GitHub 仓库:[等待更新...]
更多推荐


所有评论(0)