ESP32 - 将两个或多个 SDK 示例项目合二为一

ESP32 - combining two or more SDK example projects into one

tl;dr -- 如何将一对 SDK 项目组合在一起并使“menuconfig”系统正常工作?


我有一个关于 ESP32 模块的简单项目:让 ESP32 提供一个新的专用 WiFi 网络,允许智能 phone 直接连接到 ESP32。连接后,phone 可以将其网络浏览器指向 ESP32 的 IP 地址(硬编码为 192.168.1.1),ESP32 将接受来自 phone 的 HTTP 连接。因此,用户将拥有一个简单的界面,通过该界面使用 HTML 数据输入表单、按钮等与 ESP32 进行交互。

请注意,此连接仅适用于 ESP32,此项目根本不需要互联网连接。

幸运的是,该模块的 SDK 包含很多示例,我已经设法让 Web 服务器和 WiFi 接入点正常工作,但不是同时。这是两个示例项目(“... examples/protocols/http_server/simple”和“... examples/wifi/getting_started/softAP”)。

到目前为止,我发现 WiFi 接入点软件在“后台”运行,甚至在 main() 函数结束后仍继续运行。这意味着我应该能够引入另一个示例中的 Web 服务器代码并在 main() 函数中执行它。我很确定这将是可行的(如果我弄错了请纠正我)。

问题:

这两个示例项目中的每一个都包含一个“idf.py menuconfig”命令,允许用户快速更改任何重要设置,例如 WiFi SSID 或 HTTP 基本身份验证密码。

我想在两个项目合并后保留这个菜单系统,因为它非常有用,并且在一定程度上减少了在重新编译之前更改代码所涉及的人为错误。

是否有一种简单的方法可以将来自两个 SDK 示例项目的 menuconfig 系统组合成一个可用于完全配置由两个代码库组合而成的项目的单一系统?

更多信息:我在 Ubuntu 20 虚拟机上使用 ESP-IDF 开发套件,通过 USB 连接到 ESP32。

很简单。 menuconfig 项在组件的 Kconfig.projbuild 文件中进行了描述。如果您想将这些项目从一个项目添加到另一个项目,您只需将一个 main/Kconfig.projbuild 文件的内容复制粘贴到另一个文件即可。有关详细信息,请参阅 ESP IDF documentation