1. ESP32 WiFi基础概念与模式解析
第一次接触ESP32的WiFi功能时,我被它灵活的工作模式所吸引。这块小小的芯片竟然能同时支持AP(Access Point)和STA(Station)两种模式,这在嵌入式开发领域堪称"瑞士军刀"级别的存在。
AP模式就像我们家里的无线路由器,可以让其他设备连接到自己创建的网络。实测中,我用ESP32搭建的AP可以同时连接5-8个终端设备,传输速率稳定在2-4Mbps,完全能满足大多数IoT场景的需求。而STA模式则让ESP32变身成为普通上网设备,可以连接到现有的WiFi网络。两种模式通过esp_wifi_set_mode()函数切换,切换时间通常在300-500ms之间。
重要提示:虽然ESP32支持AP+STA混合模式,但实际使用中发现这会导致内存占用增加约30%,在资源紧张的项目中建议谨慎使用。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. STA模式启动流程深度剖析
2.1 初始化阶段的关键步骤
STA模式的启动就像给设备办理入网手续。首先需要通过esp_netif_create_default_wifi_sta()创建网络接口,这个步骤相当于给设备"上户口"。接着调用esp_wifi_init()初始化WiFi驱动,我在日志中发现这个操作会占用约12KB的堆内存。
配置阶段最易出错的是wifi_config_t结构体填写。实测表明,如果ssid长度超过32字节或password超过64字节,会导致连接失败且不报错。建议添加长度校验:
c复制if(strlen(config.sta.ssid) > 32 || strlen(config.sta.password) > 64){
ESP_LOGE(TAG, "SSID/PWD length exceeded!");
return ESP_FAIL;
}
2.2 连接过程与事件处理
调用esp_wifi_start()后,设备开始扫描网络。这里有个隐藏坑点:默认扫描信道是1-13,但如果你的路由器工作在14信道(日本地区),需要特别配置:
c复制wifi_scan_config_t scan_conf = {
.scan_type = WIFI_SCAN_TYPE_ACTIVE,
.scan_time.ac
