站内搜索
发作品签到
基于 ESP32-P4 的 HID 设备拓展坞
专业版

基于 ESP32-P4 的 HID 设备拓展坞

简介

支持鼠标、键盘、翻页笔等 HID 设备,目前不支持CDC串口和存储设备,该项目是希望将电脑上的高速USB口留给存储设备等高速设备,并且消除传统USB拓展坞中的连接线,让桌面更加优雅。

简介:支持鼠标、键盘、翻页笔等 HID 设备,目前不支持CDC串口和存储设备,该项目是希望将电脑上的高速USB口留给存储设备等高速设备,并且消除传统USB拓展坞中的连接线,让桌面更加优雅。
星火计划2026
复刻成本:0

开源协议

MIT License

(未经作者授权,禁止转载)
创建时间:2026-07-09 16:11:08更新时间:2026-07-10 12:33:26

描述

OPEN SOURCE HARDWARE

基于 ESP32-P4 的 HID 设备拓展坞

基于 ESP32-P4 双 USB Host 与蓝牙 HID 传输的四口 HID 设备拓展坞,支持键盘、鼠标、手柄数据采集,并配备触摸屏状态界面、端口电流监测和过流保护。

▶ 查看项目演示视频
ESP32-P44× USB-ABluetooth HIDLVGL Touch UI

常规 USB 拓展坞总会拖着一段卷线,让桌面变乱也不够优雅;而键盘、鼠标、手柄这类普通 HID 设备并不需要占用电脑宝贵的高速 USB 接口,更希望把高速口留给移动硬盘、采集卡等真正需要带宽的设备。

本项目尝试把常用 HID 外设从有线 USB 拓展中解放出来,用无线方式完成输入转发,让桌面连接更清爽;背面磁吸与多位置供电接口也让设备可以贴在不同角度和位置,进一步减少线缆对摆放方式的限制。

ESP32 Wireless USB HUB 外壳渲染图
PROJECT OVERVIEW

项目组成与工作链路

设备通过 ESP32-P4 的 USB Host 能力接入键盘、鼠标、手柄等 HID 外设,并将 HID 输入数据通过无线方式转发;屏幕与触摸界面负责端口状态、用电信息和参数设置。

硬件模块
ESP32-P4
双 USB Root、USB Host 枚举与多端点采集
CH334P HUB
两颗 USB HUB 扩展出四个逻辑接口
INA226 ×4
逐端口电压、电流、功率检测
2.0 寸触摸屏
320×240 LVGL 图形界面与端口设置
固件工作链路
1
USB Host 自动采集:读取键盘、鼠标、手柄等 HID 设备的真实输入报告。
2
无线传输处理:固件会区分键盘按键、鼠标运动和手柄输入等 HID 数据,兼顾可靠性与实时性。
3
蓝牙 HID 输出:对端连接后转发键盘、鼠标和手柄输入。
4
GUI 实时联动:设备插拔、电流功率和过流阈值同步到触摸屏 UI。
设备主界面斜 45 度展示
FEATURES

核心功能亮点

围绕“多 HID 外设接入、低延迟无线转发、可视化管理、安全供电”四个目标设计。

🔌四口 HID 设备接入
对外暴露 1~4 号逻辑枚举接口,便于 UI 与业务层统一管理。
自动读取真实 USB IN 报告,支持热插拔与多设备并行。
面向 Keyboard、Mouse、Gamepad/Joystick 等常见 HID 设备。
四个 HID 设备接入并显示主界面
端口设置界面
📊触摸屏可视化管理
LVGL 图形界面显示端口连接状态、空闲数量和系统页面。
每个端口可显示电压、电流、功率并支持阈值设置。
设备接入、断开与蓝牙连接事件自动同步到 UI 状态。
端口供电与过流保护
四路 INA226 独立采样,500ms 周期刷新端口用电数据。
DIO7003HDST5 控制每路 USB 电源开关,实现端口级断电保护。
过流持续超过设定时间后自动关闭对应端口,降低外设异常风险。
📡无线 HID 输入转发
QoS0 处理键盘、鼠标点击和手柄关键输入,保障按键可靠性。
QoS1 鼠标运动走快路径,链路繁忙时优先保留最新运动帧。
针对不同 HID 输入类型进行分级处理,让键盘、鼠标和手柄输入更稳定。
HARDWARE

硬件设计概览

PCB 集成 ESP32-P4 主控、ESP32-PICO 蓝牙/无线协处理、双 USB HUB、四路电流检测、端口电源开关、LCD 与触摸接口。

🧠
ESP32-P4NRW32
USB Host 与系统主控
📶
ESP32-PICO-V3
蓝牙/无线传输
🔀
CH334P ×2
USB 2.0 HUB 扩展
🛡️
INA226 + DIO7003
监测与电源保护
PCB 正面已焊接器件
PCB 正面:主控、显示接口、USB 与电源管理集中布局
PCB 背面已焊接器件
PCB 背面:接口、无源器件与布线走向展示
关键硬件连接
模块
信号/器件
连接说明
说明
LCD
GPIO19~42
8 位并口、TE、背光、复位和控制信号
屏幕接口与背光控制
INA226
GPIO47/48, 0x40/0x42/0x4C/0x45
I2C 采集四路 USB 端口电压、电流、功率
四路独立采样
Touch
GPIO16/17/13/18
CST816 触摸控制器 I2C、INT 与 RST
触摸输入接口
端口电源
GPIO43~46
DIO7003HDST5 四路 USB VBUS 开关控制
端口级开关保护
ENCLOSURE

外壳与实物展示

项目配套定制外壳,正面保留屏幕、四个 USB-A 端口和 Type-C 接口开孔;背面内置磁铁,可磁吸在机箱、支架、金属桌架等不同角度位置,配合三个位置的供电接口,让设备可以随心摆放,不再被线缆方向限制。

设备斜 45 度实物展示
🧩
一体式桌面形态
屏幕倾斜可视、接口集中在正面,背面磁吸结构可固定在不同角度,适合键鼠接收器与调试线缆长期插拔。
🔧
面向装配调试
三处供电接口可根据摆放方向选择进线位置,配合磁吸安装,桌面、机箱侧板或支架边缘都能灵活放置。
设备正面
正面接口与屏幕
设备背面
背面结构展示
上电开机页面
上电开机界面
BOM

关键物料清单

下表摘录主控、USB、检测、电源与显示相关关键器件,便于了解项目硬件组成与复刻采购重点。

#
Name
Description
Qty
Designator
LCSC
1
ESP32-P4NRW32
主控 MCU
1
U15
C22387510
2
ESP32-PICO-V3
无线/蓝牙协处理
1
U10
C967022
3
CH334P
USB 2.0 HUB
2
U13,U19
C5373042
4
INA226AIDGSR
电流/电压/功率监测
4
U7,U11,U14,U18
C49851
5
DIO7003HDST5
USB 端口电源开关
4
U5,U9,U12,U17
C403841
6
U-A-24DS-W-1
Type-A 母座
4
USB1~USB4
C530628
7
HC-TYPE-C-6P-012A
Type-C 母座
3
U1,U2,U3
C19274013
8
ADUM3160BRWZ-RL
USB 隔离器
1
U16
C284149
9
GD25Q128ESIG
外部 Flash
1
U20
C2758105
屏幕购买店铺参考
项目中的屏幕可参考下图店铺信息进行选购。不同批次屏幕的排线、触摸芯片、接口定义可能存在差异,下单前建议核对尺寸、分辨率、接口方向与触摸版本。
屏幕购买店铺参考
结构件购买店铺参考
磁铁 × 3
磁吸安装
用于设备背面的磁吸固定,建议按结构尺寸选择合适规格,安装前确认磁铁方向与固定位置。
磁铁购买店铺参考
螺丝 × 4
外壳固定
用于外壳与 PCB 固定,建议按结构件孔位和沉孔深度核对长度,避免过长顶到 PCB。
螺丝购买店铺参考
FIRMWARE FLASH

固件烧录与上电验证

项目提供可直接烧录的固件包,无需搭建开发环境,按教程完成烧录后即可体验完整功能。

1
准备固件
准备项目提供的固件包,并确认开发板、USB 线和串口驱动工作正常。
2
按地址烧录
参考烧录教程完成固件写入,烧录前请确认目标芯片、串口号和供电状态。
3
连接验证
烧录完成后上电进入主界面,插入 USB HID 设备,观察端口状态、电流与功率刷新。
烧录位置辅助标注
下载接口标注
烧录前请先确认下载接口位置;可以先焊接两个 2×2 排针,方便连接下载工具,连接串口后再按教程进入下载模式。
下载接口标注
上拉电阻标识
ESP32-PICO-V3 固定内部 Flash 电压后,再焊接该位置的上拉电阻。
上拉电阻标识
IMPORTANT NOTE
ESP32-PICO-V3 烧录前注意事项
ESP32-PICO-V3 的 IO12 为启动引脚,焊接上拉电阻前需要先烧录一次性编程器,用于固定内部 Flash 电压。操作时将 ESP32 的 BOOT 接地,然后上电进入下载模式;在 ESP-IDF 环境中输入命令 espefuse --port COMx --do-not-confirm set_flash_voltage 3.3V,其中 COMx 为连接 ESP32 的串口号。最后出现 Successful 即表示烧录成功。
RESOURCES

开源资料目录

页面内容围绕项目展示、硬件组成、固件烧录和制作过程整理,可直接用于开源项目介绍。

🖼️
项目展示图片
展示外壳渲染、PCB 正反面、设备实物、开机界面、主界面与端口设置界面。
💻
固件烧录资料
提供可直接体验的固件包,并配套烧录说明与视频教程。
📐
硬件设计资料
提供硬件设计与物料信息,可用于核对器件、网络连接和后续 PCB 复刻。
ESP32 Wireless USB HUB
一个集 USB Host、HID 设备采集、无线输入转发、触摸屏 UI 与端口保护于一体的开源硬件项目。
EPILOGUE
写在最后的话

这是我第一次制作一个完整的项目,从项目设计、硬件选型、PCB 设计、样板验证,到软件开发,最后再到结构设计,完整跑了一遍从想法到成品的流程。整个过程中项目经历了三次大的版本调整:最开始使用的是 ESP32-S3 + USB/IP 的方案,等到基本实现完之后,才发现 USB/IP 在电脑开机但系统尚未启动之前无法使用;同时 S3 只有一个 USB 通道,触点只有 8 个,最多只能支持两个相对复杂的 HID 设备。

后续我把方案换成了 ESP32-P4。最初的设想是一个 P4 作为发送端,一个 S3 作为接收端,两端通过 ESP-NOW 通信;但后来又意识到,这并不符合项目初衷,因为接收端依然会占用电脑的一个 USB 接口。

于是我又重新制定了一次方案,改为 ESP32-P4 + 蓝牙。但做着做着又发现,P4 的官方底层并不支持高速 USB 经过拓展坞芯片后再转接全速/低速设备。当时真的有一种天塌了的感觉:如果不使用高速 USB 通道,触点数仍然只有 8 个;而高速 USB 通道的触点数有 16 个。后来查阅了大量资料,发现有一种叫 USB 隔离器的器件,可以约束两侧 USB 信号的速率。通过 USB 隔离器,我将高速 USB 约束到全速,从而实现了对全速和低速设备的兼容。

不过很快又遇到了新的难题:即便有 16 个触点,对于四端口 USB 来说依然非常紧张。我一开始甚至想降低项目目标,改成双端口。后来在查阅芯片手册时发现,P4 其实有两个 USB 通道,一个高速 USB,一个全速 USB。于是突发奇想:能不能让两边的 USB 通道各接入一个拓展坞芯片,各自管理两个下行端口?为此我做了验证板。制作过程中又发现乐鑫官方底层存在限制,借助 AI 工具,我最终成功突破了限制,实现了双 USB 拓展坞芯片的枚举,也算是勉强完成了最初的项目需求。

这次项目除了让我完整跑通了一遍产品开发流程,也让我学到了很多做产品时才会遇到的经验;同时也促使我学习了许多以前完全没有接触过的新技术。这次比赛让我受益匪浅,也让我对把一个想法真正做成作品这件事有了更深的理解。

设计图

未生成预览图,请在编辑器重新保存一次

BOM

暂无BOM

3D模型

序号文件名称下载次数
1
顶壳.stl
7
2
底壳.stl
7

附件

序号文件名称下载次数
1
固件和烧录工具.zip
7
克隆工程
添加到专辑
0
0
分享
侵权投诉
知识产权声明&复刻说明

本项目为开源硬件项目,其相关的知识产权归创作者所有。创作者在本平台上传该硬件项目仅供平台用户用于学习交流及研究,不包括任何商业性使用,请勿用于商业售卖或其他盈利性的用途;如您认为本项目涉嫌侵犯了您的相关权益,请点击上方“侵权投诉”按钮,我们将按照嘉立创《侵权投诉与申诉规则》进行处理。

请在进行项目复刻时自行验证电路的可行性,并自行辨别该项目是否对您适用。您对复刻项目的任何后果负责,无论何种情况,本平台将不对您在复刻项目时,遇到的任何因开源项目电路设计问题所导致的直接、间接等损害负责。

底部导航