FireBeetle USB KB/MS Shield
USB 键盘鼠标是最常见的输入设备了,之前如果想在 Arduino 上使用这两种设备,一个可行的方法是使用 USB Host Shield。这种方法的缺点是:成本比较高(MAX3421E芯片贵),操作复杂(SPI接口),资料少。因为这样缺点的存在,USBHost Shield 在使用上存在诸多不便。偶然间看到USB键鼠转串口通讯控制芯片CH9350(南京沁恒,WCH,阅读过我文章的朋友都知道CH340也是他们家的产品)。这款能够将 USB 键盘鼠标的有效信息转为串口数据。芯片特点如下:· 支持12Mbps全速USB传输和1.5Mbps低速USB传输,兼容USB V2.0。· 上位机端USB端口符合标准HID类协议,不需要额外安装驱动程序,支持内置HID类设备驱动的Windows、Linux、MAC等操作系统。· 同一芯片可配置为上位机模式和下位机模式,分别连接USB-Host主机和USB键盘、鼠标。· 支持USB键盘鼠标在BIOS界面使用,支持多媒体功能键,支持不同分辨率USB鼠标。· 支持各种品牌的USB键盘鼠标、USB无线键盘鼠标、USB转PS2线等。· 上位机端和下位机端支持热插拔。· 提供发送状态引脚,支持485通讯。· 串口支持115200/57600/38400串口通信波特率。· 内置晶振和上电复位电路,外围电路简单。· 支持5V、3.3V电源电压。· 提供LQFP-48无铅封装,兼容RoHS。
于是尝试给 ESP32 FireBeetle 绘制一个USBKeyboard/Mouse Shield,让 ESP32 能够轻松的获得 USB 键盘鼠标数据。第一步,设计电路。核心是 CH9350芯片,它能够一次性支持2个 USB Host接口,下图中的 USB1 和 USB2。LED1 和 LED2 是通讯指示灯,对应的 USB1 和 USB2 如果有正常的通讯,对应的 LED会熄灭。此外,还有一个USB_Power 是USB公头,用于从外部取电,避免 FireBeetle 供电不足的情况。
PCB 设计如下:
3D 预览如下:
做出来就是这样(美中不足的因为2个USB 母头的存在,这个板子稍微大一些。另外,这个芯片引脚比较密集,焊接费了一些功夫,如果你对自己焊接技术不放心,推荐直接 SMT 避免手工焊接):
因为芯片使用串口输出,所以很容易就能够获得数据。数据格式在 Data Sheet 上有描述:
解析数据会出现在 FireBeetle Serial2上。
Shield 电路图 + PCB (立创 EDA)
CH9350 DataSheet
感谢分享 版主 这个方案代码没发嘛? SevenOvO 发表于 2023-6-4 21:06
版主 这个方案代码没发嘛?
这个只是一个模块,我没有给他写库
具体的应用可以在这个项目看到
https://oshwhub.com/Zoologist/esp32-shi-
页:
[1]