开发者生态
morning
在 ESP32 上自动进行 Wi-Fi 设置测试
摘要
The first thing a customer does with a new Wi-Fi-enabled connected product is complete the Wi-Fi setup, so it has to be reliable and work every time, no matter what else changes in the product. This i...
the
and
phone
network
The
ESP32
Groundrun
board
connected
with
2026-10-01
1 阅读
约8分钟阅读
adunk
字号:
客户使用新的支持 Wi-Fi 的互联产品要做的第一件事就是完成 Wi-Fi 设置,因此无论产品发生什么其他变化,它都必须可靠且每次都能正常工作。这是我们可以使用 Groundrun 系统完成的事情。我们来设置一下吧。设置 首先,我们需要让硬件进入循环,就像我们在 ESP32 上测试无线 (OTA) 更新时所做的那样。我们使用 Espressif 的 ESP32-C6 开发板进行此测试。有了 Groundrun,进入循环很容易:我们只需这样做: Android 手机 Groundrun 设备 ESP32-C6 开发板 ESP32-C6 开发板和 Android 手机,均通过 USB 连接到 Groundrun 设备。通过 USB 将 ESP32-C6 板连接到 Groundrun 设备。通过 USB 将 Android 手机连接到同一个 Groundrun 设备。就是这样。 Wi-Fi 调试 在连接的设备上设置 Wi-Fi 网络的方法有多种,ESP32 系列支持其中的多种方法: 蓝牙。手机通过蓝牙低功耗与开发板配对,并直接向其发送网络名称和密码。软AP。该板启动自己的临时 Wi-Fi 网络,手机加入该网络以在板切换到真实网络之前发送真实凭证。 Wi-Fi 强制门户。相同的软 AP 网络,但手机会直接重定向到用于输入凭据的网页,就像酒店或机场 Wi-Fi 登录页面的工作方式一样。无需应用程序。智能配置。 Espressif 自己的技术,作为 ESPTouch v2 在 ESP32 上运行,并内置于他们的 ESP-IDF SDK 中。手机保持与家庭网络的连接,并以编码数据包流的形式广播凭证;该板尚未连接到任何网络,通过以混杂模式监听来接收它们。 WPS(Wi-Fi 保护设置)。 Wi-Fi 联盟的行业标准。按下路由器上的按钮即可让板自行加入,直接与路由器协商凭据。我们的目标是测试所有这些。手机保持与家庭网络的连接,并以编码数据包流的形式广播凭证;该板尚未连接到任何网络,通过以混杂模式监听来接收它们。智能手机应用程序 在典型情况下,您已经有一个智能手机应用程序。在我们的例子中,我们需要一些简单的东西,只是为了演示如何连接 Wi-Fi,所以我们要求 Claude 开发一个快速应用程序。它需要在正确的时刻为这五种方法中的每一种发送正确的字节,仅此而已。该应用程序不需要看起来很好,而且也确实不需要。该应用程序不需要看起来很好,而且也确实不需要。应用程序的主屏幕,每个机制一个按钮。固件 对于现有连接的产品,固件已写入。在这种情况下,我们需要遵循让 AI 开发工具理解它的最佳实践(请参阅如何开始在互联产品开发中使用 AI 编码代理)。我们要求 Claude 为我们开发固件代码。 Groundrun 系统在这方面提供了帮助,它提供了使用 ESP32 固件的技能,我们最终得到了实现上述每个 Wi-Fi 设置机制的代码文件。由于 Claude Code 可以访问设备及其硬件,因此它可以独立完成这项工作。我们给它计划、目标和停止条件,所以它知道目标是什么以及何时停止。生成的固件代码如下所示(这是 WPS 机制): void app_main(void) { ESP_ERROR_CHECK(nvs_flash_init()); ESP_ERROR_CHECK(esp_netif_init()); ESP_ERROR_CHECK(esp_event_loop_create_default()); esp_netif_t *sta_netif = esp_netif_create_default_wifi_sta();断言(sta_netif); wifi_init_config_t cfg = WIFI_INIT_CONFIG_DEFAULT(); ESP_ERROR_CHECK(esp_wifi_init(&cfg)); ESP_ERROR_CHECK(esp_event_handler_register(WIFI_EVENT, ESP_EVENT_ANY_ID, &wifi_event_handler, NULL)); ESP_ERROR_CHECK(esp_event_handler_register(IP_EVENT, IP_EVENT_STA_GOT_IP, &got_ip_event_handler, NULL)); ESP_ERROR_CHECK(esp_wifi_set_mode(WIFI_MODE_STA)); /* 在启动 * 驱动程序之前,读取 esp_wifi 自己的配置存储已保存的任何 Wi-Fi 凭证(WIFI_STORAGE_FLASH,默认值 - 由 NVS 支持)。刚被大规模擦除的主板上没有任何内容; * 已经完成一次 WPS 并重新启动的主板可以这样做。 */ wifi_config_t 存储的配置; memset(&stored_config, 0, sizeof(stored_config)); esp_err_t get_config_err = esp_wifi_get_config(WIFI_IF_STA, &stored_config); bool has_stored_creds = (get_config_err == ESP_OK) && (stored_config.sta.ssid[0] != '\0'); ESP_ERROR_CHECK(esp_wifi_start()); if (has_stored_creds) { esp_wifi_connect(); } else { start_wps();设置用户流程 这里的用户流程很简单:用户打开应用程序,输入 Wi-Fi 密码,然后 ESP32 加入网络。具体细节因方法而异,因此五种方法中的每一种都有自己的到达目标的路径,在 Groundrun 的流程构建器中一步步写出。流程构建器中的 SmartConfig 流程,作为步骤列表。相同的流程,作为安装程序、应用程序和开发板之间的序列图。克劳德用 Groundrun 绘制了地图
这篇文章对您有帮助吗?
订阅66必读
每日精选科技资讯,直达你的邮箱