跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客GitHub 精选镜像工具UI配色美学隐私政策关于联系
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
C++

基于 ESP32-S3 的智能家居键盘 SmartKB32_v2 双模控制器设计

基于 ESP32-S3 芯片的 SmartKB32_v2 智能家居键盘设计方案。硬件采用主控加副控架构,集成 MPU6050 实现 FOC 力反馈旋钮,支持蓝牙与有线双模 HID 连接。软件层面通过 SD 卡存储映射表,内置 Web 服务器实现免刷机配置,支持自定义按键事件及智能家居控制。项目开源,适合嵌入式开发与创客复刻。

嘘发布于 2026/4/6更新于 2026/5/2426 浏览

项目核心功能与设计思路

1.1 为什么要做这样一把键盘?

市面上的客制化键盘功能单一,自定义程度不够。例如很多键盘虽有旋钮但基本只能调音量,且布局不合理。SmartKB32_v2 旨在解决这些问题,打造既能当键盘用,又能控制智能设备,还能根据软件切换快捷键的全能型设备。

  • 一机多用:既是一把全功能键盘,也是一个智能家居控制中心。
  • 高度自定义:通过 SD 卡存储'映射表',可为上百款软件或游戏预存专属快捷键配置。
  • 智能旋钮:将旋钮放在左手边,配合屏幕显示,直观控制软件参数或智能设备。
  • 双模连接:支持 USB 有线连接和蓝牙无线连接。

1.2 核心功能一览

功能类别具体实现
智能家居控制控制智能台灯的开关、亮度、色温;控制桌面充电站的电源输出。
设计师工作流通过 SD 卡预存不同设计软件的快捷键映射表,快速切换。
游戏宏定义预存游戏连招、技能组合的映射表,支持单键循环输出或多键同时触发。
网页配置界面键盘内置 Web 服务器,用浏览器实时修改按键功能,无需刷固件。
指纹识别(可选)接入指纹模块,实现指纹解锁电脑或一键登录系统。
媒体控制控制电脑的音乐播放/暂停、切歌、音量调节。
'摸鱼'模式可自定义一个或多个按键为'摸鱼键',一键快速切换窗口或隐藏游戏。

硬件系统设计解析

整个键盘的硬件由'主控'和'副控'两大部分组成,核心是 ESP32-S3 芯片。

2.1 主控部分:ESP32-S3 及其关键外设

主控部分负责最核心的键盘 HID 功能、旋钮控制和音频处理。

  • ESP32-S3:作为主控 MCU,运行蓝牙 HID、USB HID、Web 服务器及文件系统任务。
  • MPU6050:集成 3 轴陀螺仪和加速度计,用于实现 FOC(磁场定向控制)旋钮,精确感知旋转角度和速度。
  • WM8978:音频编解码器芯片,提供音频输入/输出能力。

2.2 副控与扩展功能模块

  • 按键扫描(74HC165):使用'并转串'芯片节省 GPIO 引脚,将多路并行按键状态转换为串行数据。
  • 指示灯控制(74HC595):使用'串转并'芯片控制多个状态指示灯。
  • 实时时钟(DS1302):提供精确计时功能,支持定时任务。
  • 声音采样(Max4466):麦克风放大器模块,可用于声音触发。

2.3 结构设计与复刻要点

键盘采用模块化设计,包括主 PCB、定位板、轴体、键帽、旋钮模块和外壳。

  1. PCB 厚度:
    • 键盘主 PCB:1.6mm
    • 屏幕和电机驱动板 PCB:1.0mm
    • 定位板:1.5mm
  2. 旋钮电机二选一:
  • 方案 A:2804 云台电机 + 径向磁铁
  • 方案 B:3205B 去限位版云台电机
  • 物料获取:电路板设计文件、3D 打印外壳文件及元器件清单可在开源仓库找到。
  • 软件架构与关键实现

    软件系统围绕'事件触发'和'配置管理'构建。

    3.1 核心:按键映射表与触发事件

    键盘的每个按键行为由'映射表'配置文件决定。

    • 映射表:类似 Excel 表格,定义物理按键在不同条件下的动作。
    • 动作类型:包含超过 230 种触发事件,如键盘事件、系统事件、智能家居事件等。
    // 简化的映射表数据结构示例
    typedef struct {
        uint16_t key_id;        // 物理按键的编号
        action_t tap_action;    // 单击时触发的动作
        action_t hold_action;   // 长按时触发的动作
        action_t knob_action;   // 配合旋钮时触发的动作
        uint8_t target_layer;   // 该按键所属的映射表(层)
    } key_mapping_t;
    
    // 动作类型枚举
    typedef enum {
        ACTION_NONE,
        ACTION_KEYPRESS,        // 发送键盘按键
        ACTION_CONSUMER,        // 发送多媒体键
        ACTION_SWITCH_LAYER,    // 切换映射表
        ACTION_HOMEASSISTANT,   // 控制智能家居
        // ... 其他事件类型
    } action_type_t;
    

    创新点在于左侧特殊按键:长按执行普通功能,单击切换映射表。

    3.2 双模连接与 Web 服务器

    • 蓝牙/有线双模:固件实现标准 HID 协议,插入 USB 线自动有线模式,拔掉后自动蓝牙配对。
    • 内置 Web 服务器:
      1. 键盘启动后创建 Wi-Fi 热点。
      2. 连接热点后访问管理地址(如 192.168.4.1)。
      3. 在网页上拖拽配置按键功能,保存至 SD 卡立即生效。

    3.3 智能旋钮(FOC 控制)的实现

    1. 角度感知:旋钮底部安装环形磁铁,MPU6050 测量磁场矢量计算旋转角度。
    2. 力反馈(FOC):ESP32-S3 控制电机产生反向扭矩,模拟机械旋钮刻度感。
    3. 屏幕交互:OLED 屏幕显示当前模式下的参数,如亮度百分比或画笔大小。

    如何开始你的复刻与开发之旅

    4.1 获取资源

    所有开发资源在开源平台仓库中,包含源代码、电路原理图、PCB 文件、3D 打印外壳文件及 BOM 表。

    4.2 烧录与配置步骤

    1. 硬件焊接与组装:按 BOM 表采购元件,焊接 PCB,组装结构件。
    2. 烧录固件:
      • 使用 USB 线连接键盘到电脑。
      • 按住 Boot 按钮再按 Reset 按钮进入下载模式。
      • 使用官方工具将 .bin 固件烧录到芯片 0x0 地址。
    3. 首次使用与配置:
      • 烧录完成后连接电脑识别为 USB 键盘。
      • 连接键盘 Wi-Fi 热点,浏览器访问配置页面。
      • 在'映射表管理'中导入预设配置或创建新配置。

    4.3 二次开发建议

    • 添加新的触发事件:在固件的事件枚举和处理函数中添加新逻辑。
    • 修改 Web 界面:修改固件 data 目录下的 HTML/CSS/JS 文件。
    • 接入其他智能家居平台:修改网络通信代码,接入 Home Assistant、MQTT 等协议。

    目录

    1. 项目核心功能与设计思路
    2. 1.1 为什么要做这样一把键盘?
    3. 1.2 核心功能一览
    4. 硬件系统设计解析
    5. 2.1 主控部分:ESP32-S3 及其关键外设
    6. 2.2 副控与扩展功能模块
    7. 2.3 结构设计与复刻要点
    8. 软件架构与关键实现
    9. 3.1 核心:按键映射表与触发事件
    10. 3.2 双模连接与 Web 服务器
    11. 3.3 智能旋钮(FOC 控制)的实现
    12. 如何开始你的复刻与开发之旅
    13. 4.1 获取资源
    14. 4.2 烧录与配置步骤
    15. 4.3 二次开发建议
    • 💰 8折买阿里云服务器限时8折了解详情
    • Magick API 一键接入全球大模型注册送1000万token查看
    • 🤖 一键搭建Deepseek满血版了解详情
    • 一键打造专属AI 智能体了解详情
    极客日志微信公众号二维码

    微信扫一扫,关注极客日志

    微信公众号「极客日志V2」,在微信中扫描左侧二维码关注。展示文案:极客日志V2 zeeklog

    更多推荐文章

    查看全部
    • 基于 Vue3+TS+Three.js 的 VR 全景看房应用实战
    • AI 不是机器人:它到底是什么?
    • OpenVLA 架构解析:基于 Prismatic VLM 与下一个 Token 预测的动作生成
    • 66 个机器人项目合集:科研、教育、工业与医疗方向资源整理
    • Spring Boot 日志实战指南:从入门到高级配置
    • 使用 Vue3+PlayCanvas 开发 3D 地图自由巡视闯关游戏
    • FPGA 核心技能学习路径与导图总结
    • 242-267 GHz 双基地超外差雷达系统:65nm CMOS 太赫兹传感与成像实现
    • 基于 2-RSS-1U 的双足机器人并联踝关节分析与实现
    • Python 爬虫实战:精准抓取携程酒店价格数据
    • Ubuntu 实体机与虚拟机安装及配置指南
    • Python 爬虫入门:新手如何编写你的第一个脚本
    • 2026 年 3 月 18 日 AI 行业前沿:算力竞赛、智能体落地与产业新范式
    • Zynq FPGA 平台下雷龙 SD NAND 存储测试实践
    • 设计模式:创建型模式 UML 设计
    • 通过 URI Scheme 实现从 Web 网页打开本地 C++ 应用程序(附完整实现源码)
    • 通过 URI Scheme 从 Web 页面启动本地 C++ 应用
    • 双指针算法专题:移动零与快乐数等经典题解
    • 基于昇腾 NPU 部署 Mistral-7B-Instruct-v0.2 模型实战
    • 算法时代的爱情:代码如何重塑亲密关系

    相关免费在线工具

    • Base64 字符串编码/解码

      将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online

    • Base64 文件转换器

      将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online

    • Markdown转HTML

      将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online

    • HTML转Markdown

      将 HTML 片段转为 GitHub Flavored Markdown,支持标题、列表、链接、代码块与表格等;浏览器内处理,可链接预填。 在线工具,HTML转Markdown在线工具,online

    • JSON 压缩

      通过删除不必要的空白来缩小和压缩JSON。 在线工具,JSON 压缩在线工具,online

    • JSON美化和格式化

      将JSON字符串修饰为友好的可读格式。 在线工具,JSON美化和格式化在线工具,online