ESP32S3使用esp-iot-solution SDK开发USBHID鼠标键盘教程

这篇具有很好参考价值的文章主要介绍了ESP32S3使用esp-iot-solution SDK开发USBHID鼠标键盘教程。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、前言

​ 手里最近翻到了一个ESP32S3开发板,于是想做个鼠标键盘玩玩,这是我第二次接触ESP32,上一次18年买的吃灰板子至今没上过电。新找到的S3看手册是支持OTG的,按照官方的教程搭建的WSL+VSCODE环境。然而一切准备就绪发现ESP-IDF里面没有USB-HIDdemo。没有demo怎么玩。于是乎查找资料找,找到了专为物联网开发SDK esp-iot-solution简介如下。该框架支持usb OTG 功能。
ESP32S3使用esp-iot-solution SDK开发USBHID鼠标键盘教程

二、环境搭建

​ 这里面要注意的是官方说明写的 esp-iot-solution支持的依赖是ESP-IDFv4.3。但是我这里用的是 esp-iot-solution其中的一个分支USB。按照官方的依赖V4.3做USB的话搞到地老天荒都搞不出来。原因是TinaUsb组件要ESP-IDF依赖是4.4。这个问题困扰了我好几天。

ESP32S3使用esp-iot-solution SDK开发USBHID鼠标键盘教程ESP32S3使用esp-iot-solution SDK开发USBHID鼠标键盘教程ESP32S3使用esp-iot-solution SDK开发USBHID鼠标键盘教程
​ 好了下面开始下载分支按照教程安装即可。

​ 仓库下载地址

​ https://github.com/espressif/esp-idf

​ https://github.com/espressif/esp-iot-solution

克隆 esp-iot-solution usb分支

clone -b usb/add_usb_solutions  --recursive https://github.com/espressif/esp-iot-solution

克隆 ESP-IDF4.4 分支

git clone -b release/v4.3 --recursive  https://github.com/espressif/esp-idf.git

克隆后如下图所示
ESP32S3使用esp-iot-solution SDK开发USBHID鼠标键盘教程

按照官方教程激活环境

​ 进入到usb_hid_device目录下,在CmakeLists.txt中增加一条指令保存,不要按官方手册都复制进去。
ESP32S3使用esp-iot-solution SDK开发USBHID鼠标键盘教程
ESP32S3使用esp-iot-solution SDK开发USBHID鼠标键盘教程

三、sdkmenu参数配置

1、设置开发环境

​ 这里面有个坑,如果配置内核开发板为ESPS3 目标芯片也为ESP32的话,就会报example 只支持ESP32错误。
ESP32S3使用esp-iot-solution SDK开发USBHID鼠标键盘教程​ 翻看官方issue发现类似问题,官方解释这是ESp32S3 bug 之后会修复,临时的解决办法是开发板设置SaoLa ESP32S2
ESP32S3使用esp-iot-solution SDK开发USBHID鼠标键盘教程

然后目标芯片设置成ESP32S3

idf.py set-target esp32s3

2、开始编译

​ 重新编译,漫长等待结果还是报错,不过这回的错误变了
ESP32S3使用esp-iot-solution SDK开发USBHID鼠标键盘教程

 error: unknown type name 'button_handle_t'

提示找不到类型名称,根据多年经验分析,这个情况多半是头文件没有包含进来或者源文件没有添加。

通过vscode 定位到该类型在iot_button.h

ESP32S3使用esp-iot-solution SDK开发USBHID鼠标键盘教程

​ 既然文件存在那么分析一下为啥找不到。看主程序的头文件引用,在主程序里面没有直接引用iot_button.h,那么最有可能在board.h中间接包含,打开board.h文件。
ESP32S3使用esp-iot-solution SDK开发USBHID鼠标键盘教程

​ 果然如我所料间接包含了,但是编译的时候还是找不到,通过分析发现,该board.h在目录esp32s3_usb_otg_ev路径下,这个目录是否被包含是根据是上文menuconfig中 boards options 选项选择开发板决定的,上文已经说了该SDK只支持esp32s2,为了适配S3开发板只能选择saola,所以导致生成的sdkconfig不包含esp32s3_usb_otg_ev路径,所以主程序不能找到board.h文件,间接的不能找到iot_button.h文件。
ESP32S3使用esp-iot-solution SDK开发USBHID鼠标键盘教程

​ 既然问题已经发现了,那就开始着手解决问题,第一步既然没有包含iot_button.h那么直接在主程序里包含好了,然后编译。
ESP32S3使用esp-iot-solution SDK开发USBHID鼠标键盘教程
​ 上述问题解决,但是又出现新问题了,iot_board_button_register_cb按键注册回调函数找不到。根据函数就知道了它也在board.h中。
ESP32S3使用esp-iot-solution SDK开发USBHID鼠标键盘教程
ESP32S3使用esp-iot-solution SDK开发USBHID鼠标键盘教程
ESP32S3使用esp-iot-solution SDK开发USBHID鼠标键盘教程

​ 通过程序分析,该函数模注册个按键事件模拟鼠标或者键盘发送数据,不影响主体USB相关功能,而且按键发送程序,不一定要用demo的写法,所以这是个可有可无的功能,后期可以自己从写,为了大业先屏蔽掉,然后编译。
ESP32S3使用esp-iot-solution SDK开发USBHID鼠标键盘教程

哈哈 终于编译通过了
ESP32S3使用esp-iot-solution SDK开发USBHID鼠标键盘教程

3、程序烧录

​ 串口烧录要频繁在现实与虚拟环境切换串口麻烦,所以这里通过flash烧录软件进行烧录如下图,主要偏移地址和S2不一样。
ESP32S3使用esp-iot-solution SDK开发USBHID鼠标键盘教程

​ 烧写完成后将将开发板插到电脑上,见证奇迹时刻了。
ESP32S3使用esp-iot-solution SDK开发USBHID鼠标键盘教程

四、错误集合解决办法

1、这个错误的原因就是sdk版本低不支持S3

 error: 'ADC_BUTTON_WIDTH' undeclared (first use in this function); did you mean 'ADC_BUTTON_ATTEN'?

ESP32S3使用esp-iot-solution SDK开发USBHID鼠标键盘教程

没有S3的定义,增加一个宏定义即可

ESP32S3使用esp-iot-solution SDK开发USBHID鼠标键盘教程

2、这个错误的原因就是ESP-IDF和add_usb_solutions同名组件版本不一致造成的,我的临时做法是将add_usb_solutions下的audio改个名字。重新编译问题即可解决。

 error: unknown type name 'i2s_dac_mode_t'
     i2s_dac_mode_t          dac_mode;               /*!< DAC mode configurations - see i2s_dac_mode_t*/

ESP32S3使用esp-iot-solution SDK开发USBHID鼠标键盘教程

结语

有朋友反馈,找不到我,今打油诗一首

加流一壶真千金
微云澹日映寒流
信意麾毫无点误
KING_SONGING
唱奇腾怪可删修
歌咏康衢了此生
的然民仰如父母
国家涵养自建隆
王俭归来幕府非

有朋自远发来,不亦说乎!文章来源地址https://www.toymoban.com/news/detail-484018.html

到了这里,关于ESP32S3使用esp-iot-solution SDK开发USBHID鼠标键盘教程的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【ESP32S3 Sense接入百度在线语音识别】

    视频地址: ESP32S3 Sense接入百度在线语音识别 目前这是我使用的ESP32S3官方硬件👍👍👍(小小的身材有大大的力量)只需要35元加摄像头麦克风79元,后期我会整理相关专栏进行Arduino系统学习😘😘😘。有需要可以购买xiao开发板💕💕💕,SeeedXIAO ESP32S3 Sense硬件购买地址:

    2024年04月10日
    浏览(45)
  • ESP32S3系列--SPI主机驱动详解(一)

    SPI是一种串行同步接口,可用于与外围设备进行通信。 ESP32S3自带4个SPI外设,其中SPI0/SPI1内部专用,共用一组信号线,通过一个仲裁器访问外部Flash和PSRAM;SPI2/3各自使用一组独立的信号线;开发者可以使用SPI2/3控制外部SPI从设备(Slave device);其中SPI2作为主设备有6个片选,数据

    2023年04月09日
    浏览(43)
  • 【ESP32S3 Sense接入语音识别+MiniMax模型对话】

    围绕ESP32S3 Sense接入语音识别+MiniMax模型对话展开,首先串口输入“1”字符,随后麦克风采集2s声音数据,对接百度在线语音识别,将返回文本结果丢入MiniMax模型,进而返回第二次结果文本,实现语言对话文本效果。以上一共有两次调用,后期只需加入tts模块就可完整对话。

    2024年04月16日
    浏览(65)
  • 【EPS32S3学习笔记】ESP32+OPENCV+人脸识别 本地部署

    提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 例如:第一章 Python 机器学习入门之pandas的使用 提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档 提示:这里可以添加本文要记录的大概内容: 从https://github.com/joachimBurket/esp32-

    2024年02月09日
    浏览(61)
  • 【EPS32S3学习笔记】ESP32+OPENCV+OV2640+LVGL

    提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 例如:第一章 Python 机器学习入门之pandas的使用 提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档 提示:这里可以添加本文要记录的大概内容: 前面已经完成了ESP32S3+LVGL+OV2640的工

    2024年02月06日
    浏览(59)
  • ESP32S3学习——LEDC LED PWM 控制器

    芯片:esp32s3 开发环境:espidfv4.4 1)LED 控制器 (LEDC) 主要用于控制 LED,也可产生 PWM 信号用于 其他设备 的控制。 该控制器有 8 路通道 ,可以产生独立的波形来驱动 RGB LED 等设备。 LED PWM 控制器可在 无需 CPU 干预 的情况下 自动改变占 空比,实现亮度和颜色渐变(因为这个功能

    2024年02月06日
    浏览(41)
  • 视频图像处理算法opencv在esp32及esp32s3上面的移植,也可以移植openmv

    opencv 在 esp32 及 esp32s3 上面的移植 Opencv 简介       OpenCV 是一个基于 Apache2.0 许可(开源)发行的跨平台计算机视觉和机器学习软件库,可以运行在 Linux 、 Windows 、 Android 和 Mac OS 操作系统上,它轻量级而且高效—— 由一系列 C 函数和少量 C++ 类构成,同时提供了 Python 、 R

    2024年02月09日
    浏览(39)
  • 【ESP32S3 Sense接入语音识别+MiniMax模型+TTS模块语音播报】

    讲解视频: ESP32S3 AI助手使用MiniMax大模型生产工具1 大家好,今天的教程将围绕如何实现精准的语音播报功能展开,我们用到了ESP32S3 Sense接入语音识别+MiniMax模型对话+SNR9816TTS模块。 目前这是我使用的ESP32S3官方硬件👍👍👍(小小的身材有大大的力量)只需要35元加摄像头麦

    2024年04月12日
    浏览(58)
  • ESP32网络应用 -- ESP32-S3使用HTTP协议获取城市天气数据

    超文本传输协议(Hypertext Transfer Protocol,HTTP),是一种建立在TCP协议之上,应用非常广泛的请求-响应协议,关于HTTP协议的详细描述,网上已经不乏文章,此处不再详细论述。 作为一款网络功能强大Wi-Fi SOC芯片,ESP32-S3可以通过ESP-IDF编程框架提供的应用程序接口,方便地构建

    2024年02月09日
    浏览(37)
  • esp32-S3专题二:内存1之RAM使用

    esp32-S3模块内部的存储分为ROM,RAM,SPRAM,RTC内存,FLASH,种类很多,几乎可以不使用外接存储器的情况下,可以进行很多业务场景,十分有用。现在我们逐一讲解一下他们的作用和使用方法。 384 KB 内部 ROM, 作用:ESP32技术手册明确说明:Internal ROM 是只读存储器,不可编程。In

    2024年02月15日
    浏览(34)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包