智能家居控制器 SmartKB32_v2 - 嘉立创EDA开源硬件平台

编辑器版本 ×
标准版 Standard

1、简单易用,可快速上手

2、流畅支持300个器件或1000个焊盘以下的设计规模

3、支持简单的电路仿真

4、面向学生、老师、创客

专业版 professional

1、全新的交互和界面

2、流畅支持超过3w器件或10w焊盘的设计规模,支持面板和外壳设计

3、更严谨的设计约束,更规范的流程

4、面向企业、更专业的用户

专业版 智能家居控制器 SmartKB32_v2

简介:智能家居设备、百层键位映射指定切换、可同时模拟多种USB设备、指纹识别、左手键位设计

开源协议: GPL 3.0

(未经作者授权,禁止转载)

已参加:星火计划2023

创建时间: 2023-10-27 12:57:13
更新时间: 2024-05-05 21:42:17
描述
#
**喜欢的话请点赞收藏哦!!!**
#
**前言**
作为一个嵌入式爱好者,对各类设计软件运用的需求不同,对键盘快捷键的使用率也不同,市面上的键盘,对宏定义的层数没法完全兼容每款软件的需求,许多客制化键盘或多或少会带有旋钮功能,但大都只是调节电脑音量、屏幕亮度等,且旋钮都在键盘右侧,无法便捷与设计需求,因此我结合了键盘及SmartKnob的设计,将其合二为一,并且接入了Surface dial且采用了左手设计提高了智能旋钮的利用率,配合鼠标及键盘上的多重键位映射表,实现更快捷的工作需求。 而本设计可控制自研的一些用电设备(包括智能台灯,桌面电源等)。 作为一个懒癌患者,忘记各类账号密码是常有的事,所以本设计支持指纹识别一键输入账号密码及电脑开机密码等 #
**开源协议**(GPL3开源协议)
**本项目开源所有硬件及软件。** **开源程序源文件,会不定时更新固件** **仅限个人学习复刻,未经作者允许,禁止商用。转载或引用需注明原作者与工程链接** # 最低每套成本仅120!!! ### (2024.5.6)本次更新点!!! * **新增3205B电机版替换原有的2804电机(3205B电机货源充足可放心复刻)** * **重构映射表生成器,采用更简单易懂的交互界面设置新的映射表,可以对每个按钮单独设置为鼠标或键盘等** * **新增旋钮功能自定义,一层映射表可定义一种功能,可随映射表的切换而切换旋钮功能** #
**项目相关功能**
* **智能家居控制器:** 可控制智能台灯,及桌面充电站,可实现桌面设备联动功能,以此实现一键开关功能 * **设计师工作键盘:** 利用SD卡添加修改映射表可预存上百款APP快捷键,同时可在三个APP间快速切换 * **游戏玩家物理外挂:** 可预存多种游戏映射表,支持单个按键轮流输出也可同时触发多个按键输出 * **网页映射表生成:** 利用网页可视化生成键位映射表,将生成的映射表导入到SD卡的keymap文件目录下即可自动识别到映射表 * **指纹识别模块:** 可自动识别开机指纹,输入开机密码开机 * **密码管理器:** 通过指纹识别进入密码管理界面,账号密码均加密保存在SD卡中,每台机子加密序列码不同,以此保证密码的安全性 * **按键特效音:** 内置音频模块可实现按键自定义音效,同时可模拟成简易钢琴等 * **内置时钟芯片:** 可实现精确定时功能 * **摸鱼模式:** 通过修改功能按键映射表可随意定义哪个或哪些按键是摸鱼按键 * **电脑媒体控制器:** 支持音乐后台切歌及播放与暂停 * **================================**
#
**跳转地址**
**视频地址:** [智能家居控制器(SmartKB32)](https://b23.tv/N9h1bWg)

**源代码开源地址**:[智能家居控制器(SmartKB32)](https://gitee.com/jiawenling/smart-kb32_v2)

**固件附烧录器、3D打印文件、SD卡配置文件地址**:见附件(已于2024.3.7更新至最新版固件) **键位映射表生成器**:[跳转至附件](#section1)

**更多疑问进群了解**:Q群(559484463) #
**项目创新点**
1. 利用SD卡中的JSON文件添加或修改键位映射,理论上可以预存上百款APP映射表 2. 利用SD卡中的JSON文件配置密码管理器,理论上可以预存256个账号密码 3. 内置时钟芯片,可定时开关某设备,联网时会以网络时钟为主 #
**项目说明**
* 双TypeC设计,其中一端为12V供电使用,另一端采用了正反插设计,正插为主控的OTG接口,反插为副控的串口转USB接口 * **surface dial** 与原版功能相同,(*dial控制与键盘屏幕控制共用一套控制,通过键盘第X7Y1按钮实现两者的切换*) * 可同时模拟键盘、鼠标、游戏手柄、Surface Dial等
双按键键位 双按键对应功能 双按键键位 双按键对应功能
X1Y1+X1Y2 切换至APP1快捷键映射表 X1Y1+X5Y2 下一首音乐
X1Y1+X1Y3 切换至APP2快捷键映射表 X1Y1+X3Y2 上一首音乐
X1Y1+X1Y4 切换至APP3快捷键映射表 X1Y1+X6Y3 暂停音乐
X1Y1+X1Y5 一键休眠 X1Y1+X2Y1 摸鱼模式(老板模式)
X1Y1+X2Y5 一键启动 X1Y1+X3Y1 复制
X1Y1+X3Y5 屏幕亮度减 X1Y5 电脑音量减
X1Y1+X4Y5 屏幕亮度加 X2Y5 电脑音量加
X1Y1+X5Y5 键盘背光亮度减 X1Y1 映射在默认及数字表中切换
X1Y1+X6Y5 键盘背光亮度加 X7Y1 旋钮功能切换
**一键休眠功能**:通过双按键(X1Y1+X1Y5)实现双按键的休眠功能,触发时可保存当前智能设备的状态并关闭所有联动智能设备 **一键开机功能**:通过双按键(X1Y1+X2Y5)实现双按键的开机功能,触发时可通过上次休眠时所保存的设备状态使设备进入此前状态 **对智能家居设备的控制:** 可通过智能台灯控制区域按钮实现对智能台灯的色温及亮度控制,及键盘屏幕跳转到台灯控制弹窗界面,可利用旋钮进行精细的色温及亮度调控。 可通过桌面电源控制区域按钮实现对桌面电源的控制,控制采用了双层键位映射,实现点按开关及双按键实现pwm控制(pwm接口仅限两个) ***可能有望实现的功能**:* 1. *电脑上位机开发* 2. *手机APP开发* #
**实物展示**
![001.jpg](//image.lceda.cn/pullimage/fsaxHxv7K5MAtEPJSGuC9rFl4qvmJpWuGPDczKCV.jpeg) ![003.jpg](//image.lceda.cn/pullimage/atiPn3CV6y3mWY5PJlfTz2Imjjlk9djbtR4SQsrl.jpeg) ![微信图片_20240204185359.jpg](//image.lceda.cn/pullimage/P3S3ZwA54Q3Ytt3YMJaRwGMoke8c5QRG3TuR9583.jpeg) ![微信图片_20240112194334.jpg](//image.lceda.cn/pullimage/vhVj19T8kcJxygexIA2p26niLKYu6bj2V6DO0USK.jpeg) #
**键位区域介绍**
![004.jpg](//image.lceda.cn/pullimage/m3kTfbaIHTsi2EIuok1eTLzMv3KMZAgqCsoetJOR.jpeg) ![005.jpg](//image.lceda.cn/pullimage/sZS4LSOwcvNo22tAwOmOSjFEy5kUB128gDjUjLRs.jpeg) #
**UI界面部分展示**
![微信图片_20240112193348.png](//image.lceda.cn/pullimage/8dLRwwd61ZTzklR7w39DgUPXzTLjZx6wQ1xKIrhg.png) #
**网页映射表生成器**
![映射表生成器.png](//image.lceda.cn/pullimage/1YM1SbiyOlH6aEBZaWZOJm9VYBAaNHKE9T0AsIVZ.png) **映射表生成器2.0:**支持对旋钮功能的自定义,允许每个映射表定义一种旋钮功能用于电脑控制。同时键盘支持每个按键分别模拟成键盘、鼠标,游戏手柄等输出。 **下一步升级方案:** 可能会集成到模块内部,无需手动将映射表移入SD卡中。 #
**项目属性**
##### 本项目为首次公开,为本人原创项目。项目未曾在别的比赛中获奖。 #
**软件说明**
## **一、.键盘旋钮输出map数组,修改映射表时会更新此数组** ``` C++ /** * @brief 旋钮输出数组 * * 规范化 * |1 |2 |3 |4 |5 |6 |7 | * |KEYOUT_TYPE |值(键值\X轴)|权重(键值\X轴)|null(键值\权重)|电机可以运动的个数|电机位置|电机每一步的度数| * |未定义 |值(键值\Y轴)|权重(键值\Y轴)|null(键值\权重)|正常旋转时的制动强度 |超出界限后的制动强度|每一步所代表的值| * |KEYOUT_TYPE |键值|键值|键值| */ uint8_t dial_map[3][7] = { {KDial, 1, 20, NULL, NULL, NULL, 0x1e}, // 顺时针 {KDial, 1, 20, NULL, 0x0a, 0x14, 0x08}, // 逆时针 {KDial, NULL, NULL, NULL, NULL, NULL, NULL}, // 按下 }; /** * @brief 键盘输出数组 * * 规范化 * |1 |2 |3 |4 |5 |6 |7 | * |KEYOUT_TYPE |键值 |键值 |键值 |键值 |键值 |键值 | */ uint8_t key_map[17][7] = { {KBpress, (char)' ', NULL, NULL, NULL, NULL, NULL}, // X2Y1 {KBpress, KEY_RIGHT_CTRL, (char)'s', NULL, NULL, NULL, NULL}, // X2Y2 {KBpress, KEY_RIGHT_CTRL, (char)'a', NULL, NULL, NULL, NULL}, // X2Y3 {KBpress, KEY_RIGHT_CTRL, (char)'z', NULL, NULL, NULL, NULL}, // X2Y4 {KBpress, KEY_DELETE, NULL, NULL, NULL, NULL, NULL}, // X3Y1 {KBpress, KEY_LEFT_ARROW, NULL, NULL, NULL, NULL, NULL}, // X3Y2 {KBpress, KEY_HOME, NULL, NULL, NULL, NULL, NULL}, // X3Y3 {KBpress, KEY_RIGHT_CTRL, (char)'x', NULL, NULL, NULL, NULL}, // X3Y4 {KMouse_move, 127, 127, 127, 137, NULL, NULL}, // X4Y1 {KMouse_press, MOUSE_LEFT, NULL, NULL, NULL, NULL, NULL}, // X4Y2 {KBWrite, (char)'h', (char)'e', (char)'l', (char)'l', (char)'o', NULL}, // X4Y3 {KDial, DIAL_PRESS, NULL, NULL, NULL, NULL, NULL}, // X4Y4 {KBpress, KEY_RIGHT_ARROW, NULL, NULL, NULL, NULL, NULL}, // X5Y2 {KBpress, KEY_END, NULL, NULL, NULL, NULL, NULL}, // X5Y3 {KBpress, KEY_RIGHT_CTRL, (char)'v', NULL, NULL, NULL, NULL}, // X5Y4 {KBpress, KEY_RETURN, NULL, NULL, NULL, NULL, NULL}, // X6Y3 {KBpress, KEY_BACKSPACE, NULL, NULL, NULL, NULL, NULL} // X6Y4 }; ``` ## **二、.json文件书写规范**:(可通过web自动生成,[web见附件](#section1)) ### **键盘映射表**添加方法:直接将新的映射表Json文件移至SD卡的keymap文件夹中即可 ``` json { "X2Y1": [0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00],      "X2Y2": [0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00],      "X2Y3": [0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00],      "X2Y4": [0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00],      "X3Y1": [0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00],      "X3Y2": [0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00],      "X3Y3": [0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00],      "X3Y4": [0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00],      "X4Y1": [0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00],      "X4Y2": [0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00],      "X4Y3": [0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00],      "X4Y4": [0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00],      "X5Y2": [0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00],      "X5Y3": [0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00],      "X5Y4": [0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00],      "X6Y3": [0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00],      "X6Y4": [0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00],      "DIALR": [0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e],      "DIALL": [0x07, 0x00, 0x00, 0x00, 0x0a, 0x14, 0x08],      "DIALB": [0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00] } ``` #
**硬件说明**
## **一、组装结构爆炸图** ![爆炸图.png](//image.lceda.cn/pullimage/wS4ZOYv4ACU2lXMTXfJgKre2O9IwkULVtWaP8nfW.png) #
**设计原理**
主控部分:通过蓝牙与电脑通信,实现蓝牙键盘功能 通过espnow实现与自制设备通信 利用MPU6050实现foc旋钮闭环控制 利用WM8978实现音效功能 副控部分:通过wifi和点灯科技实现手机远程控制,及与米家设备联动控制,及支持小爱音箱语言控制 利用74HC165芯片实现对每个按键状态的采样 利用74HC595芯片实现对状态指示灯的控制 利用DS1302芯片实现定时功能的准确性 利用Max4466实现声音采样 #
**烧录方法**

**利用官方烧录器进行固件烧录,附件中附带了官方烧录器**

**主控烧录**

**副控烧录**

#
**复刻注意事项**
**键盘pcb打板厚度为1.6mm** **屏幕和电机驱动版pcb打板厚度为1.0mm(3205B去限位版云台电机打板厚度为1.6mm)** **键盘定位板厚度为1.5mm** **电机中间采用M2.5*27mm的铜柱焊接固定(3205B去限位版云台电机采用M2.5*2mm的铜柱)** **电机 云台电机2804 或 3205B去限位版云台电机** **径向磁铁 :外径10mm 内径6.3mm 厚度2mm(3205B去限位版云台电机不需要)** #
**别忘了点赞收藏哦!!!**
#
其他功能之后会渐渐完善,敬请期待!!!
# **其他** 2023.7 开始各种模块的打样测试 2023.9 开始功能框架架构及UI界面设计 2023.10.14 新增Surface dial功能,部分按钮新增防连击功能,优化按钮按下传输协议 2023.10.21重新定义键位顺序枚举, 优化键位触发发送协议以支持改键位映射代码 2023.10.26 完成各种模块的验证并完成集成电路设计,开始打样 2023.10.27 外壳设计完成 2023.11.13 完成样板的测试,开始外壳的打印申请 2023.12.5 完成样品组装及测试,进入医学生的考试月......(漫长的等待中) 2024.1.5 新增加部分按钮弹窗提示功能,优化部分功能并转用rtos系统开发 2024.2.3 新增旋钮对键位映射修改方法 2024.2.4 优化键位映射表切换程序 2024.2.7 新增番茄时钟定时器 2024.3.3 新增有线键盘、鼠标、手柄、surface dial;剔除无线键盘、无线鼠标 2024.3.31 新增基于HTML5的键位映射表生成器 2024.5.6 新增3205B去限位版电机对2804电机的替换设计,重新设计键位映射表生成器 ## 映射表生成器见附件中的(SmartKB32_2.0.html)文件
设计图
原理图
1 /
PCB
1 /
未生成预览图,请在编辑器重新保存一次
工程成员
侵权投诉
相关工程
换一批
加载中...
添加到专辑 ×

加载中...

温馨提示 ×

是否需要添加此工程到专辑?

温馨提示
动态内容涉嫌违规
内容:
  • 153 6159 2675

服务时间

周一至周五 9:00~18:00
  • 技术支持

support
  • 开源平台公众号

MP