4431| 4
|
[ESP8266/ESP32] 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上。 |
SevenOvO 发表于 2023-6-4 21:06 这个只是一个模块,我没有给他写库 具体的应用可以在这个项目看到 https://oshwhub.com/Zoologist/esp32-shi- |
© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed