使用esp32s2模组制作一个USB键盘
最近想做一个USB小键盘,刚好手里有个esp32s2的模组,就直接使用了。
esp32s2是esp32-s系列里唯一带有全速 USB OTG 接口的芯片,刚好能够使用。
使用开发的idf库版本是:idf4.3
安装的开发环境看这里(也是我写的):
修改库文件
虽然idf4.3版本的SDK里存在USB的协议,但是我们无法通过菜单来配置USB,菜单配置的USB 默认的只有USB CDC的配置,我们需要添加一些代码,能够在菜单选项配置里,选择USB HID设备。
修改你安装目录的 esp-idf/components/tinyusb/Kconfig 文件,这个菜单配置的文件。

在如图所示的位置添加相关代码,左边是未修改的,右边是修改后的,主要的作用是让菜单配置出现USB HID的选项,从而调用USB设备。

增加的代码如下:
2.使能配置
用官方的ESP-IDF 4.3 CMD 工具,进入到
esp-idf\examples\peripherals\usb\tusb_serial_device 文件下,使用 idf.py menuconfig 进入菜单配置里,进入到如图的配置里,就会新增的一个USB(HID)选项,保存以后,我们就可以调用这个USB(HID)的库了。

3.键盘鼠标驱动修改
我们可以使用上面例程的工程,把例程复制到其他地方,修改一些代码:
修改这些后,我们编译,编译的时候会出现一个错误

这个错误是这里多了逗号的原因,不知道是不是官方哪个开发人员粗心的原因
,在\esp-idf\components\tinyusb\tinyusb\src\class\hid\hid.h 多了两个逗号,如下图所示,只要需要删除这个两个逗号就可以成功编译了。

将这个下载到开发板,电脑上就会出现键盘和鼠标连接到电脑的提示。
4.键盘操作
经过上一步后,增加鼠标和键盘的驱动,我们就可以愉快的使用库函数来驱动键盘了.
如代码所示,会发送alt按键和A按键上报给电脑,这个是简单的上报按键值的函数,如有需要,自己加上相关按键扫描这些。
(按键值的按键值在 components\tinyusb\tinyusb\src\class\hid\hid.h 下查看)
基本上键盘的操作就这些了,鼠标的同理,在components\tinyusb\tinyusb\src\class\hid\hid_device.c 有相关函数,调用即可。