You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ESP32动态配置WiFi SSID问题:如何用变量设置SSID

ESP32 动态配置WiFi AP SSID(基于UUID)

ESP-IDF中wifi_config_t结构体的.ap.ssid是固定长度的字符数组(类型为uint8_t ssid[32]),并非指针,因此不能直接通过=将char数组变量赋值给它,必须用字符串拷贝的方式填充内容。以下是实现动态SSID(结合设备UUID)的正确步骤:

实现步骤

  1. 生成包含UUID的动态SSID字符串(注意长度不超过32字符,符合WiFi协议限制)
  2. 使用字符串拷贝函数将动态SSID写入配置结构体的ssid数组
  3. 正确设置ssid_len为SSID的实际长度

完整代码示例

#include <string.h>
#include "esp_wifi.h"
#include "esp_efuse.h"

// 获取设备UUID(以ESP32内置MAC地址片段为例)
void get_device_uuid(char *uuid_str, size_t max_len) {
    uint8_t mac[6];
    esp_efuse_mac_get_default(mac);
    // 取MAC地址后4字节作为UUID标识
    snprintf(uuid_str, max_len, "%02X%02X%02X%02X", mac[2], mac[3], mac[4], mac[5]);
}

void setup_wifi_ap() {
    // 1. 构建带UUID的动态SSID
    char dynamic_ssid[32];
    char uuid_str[10];
    get_device_uuid(uuid_str, sizeof(uuid_str));
    // 拼接前缀与UUID,确保不超过32字符
    snprintf(dynamic_ssid, sizeof(dynamic_ssid), "ESP32-%s", uuid_str);

    // 2. 初始化WiFi AP配置
    wifi_config_t ap_config = {
        .ap = {
            .password = WIFI_AP_PASSWORD,
            .channel = WIFI_AP_CHANNEL,
            .ssid_hidden = WIFI_AP_SSID_HIDDEN,
            .authmode = WIFI_AUTH_WPA2_PSK,
            .max_connection = WIFI_AP_MAX_CONNECTIONS,
            .beacon_interval = WIFI_AP_BEACON_INTERVAL,
        }
    };

    // 3. 拷贝动态SSID到配置结构体
    strncpy((char *)ap_config.ap.ssid, dynamic_ssid, sizeof(ap_config.ap.ssid) - 1);
    // 手动添加字符串结束符,避免溢出问题
    ap_config.ap.ssid[sizeof(ap_config.ap.ssid) - 1] = '\0';
    // 设置SSID实际长度
    ap_config.ap.ssid_len = strlen(dynamic_ssid);

    // 启动WiFi AP
    esp_wifi_set_mode(WIFI_MODE_AP);
    esp_wifi_set_config(WIFI_IF_AP, &ap_config);
    esp_wifi_start();
}

注意事项

  • WiFi SSID最大长度为32字符,使用snprintf可自动截断过长内容,避免数组溢出
  • 若无需密码,可将.password设为空字符串,并将.authmode改为WIFI_AUTH_OPEN
  • 可替换get_device_uuid函数实现自定义UUID生成逻辑(如芯片唯一ID、自定义标识等)

内容的提问来源于stack exchange,提问作者Jaeseo Lee

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 19:05:32