乐鑫技术交流
直播中

李春梅

7年用户 1765经验值
私信 关注
[问答]

求助,esp32c3连接WiFi之后如何获取MAC地址?

我把WiFi的信息存储在NVS中,能够读取到WiFi的ID和密码,但怎么读取MAC地址?????

回帖(1)

张虎豹

2024-6-19 16:23:23
要在ESP32-C3上获取MAC地址,您可以按照以下步骤操作:

1. 首先,确保您已经连接到WiFi。如果尚未连接,请使用`esp_wifi_connect()`函数连接到WiFi。

2. 获取WiFi接口的MAC地址。在ESP32-C3上,您可以使用`esp_wifi_get_mac()`函数来获取MAC地址。这个函数需要两个参数:一个是WiFi接口类型(STA或AP),另一个是一个指向`esp_mac_t`结构体的指针,用于存储MAC地址。

以下是获取MAC地址的示例代码:

```c
#include "esp_wifi.h"
#include "esp_log.h"

void app_main()
{
    // 连接到WiFi
    esp_wifi_connect();

    // 等待连接成功
    vTaskDelay(2000 / portTICK_PERIOD_MS);

    // 获取STA接口的MAC地址
    esp_mac_t mac;
    esp_err_t ret = esp_wifi_get_mac(ESP_IF_WIFI_STA, &mac);
    if (ret == ESP_OK) {
        ESP_LOGI("MAC Address", "STA MAC: " MACSTR, MAC2STR(mac));
    } else {
        ESP_LOGE("MAC Address", "Failed to get STA MAC address");
    }
}
```

这段代码首先连接到WiFi,然后等待连接成功。之后,它使用`esp_wifi_get_mac()`函数获取STA接口的MAC地址,并将其打印到控制台。

请注意,这里我们使用的是ESP-IDF开发框架。如果您使用的是其他开发环境,请根据相应的API进行调整。

关于从NVS中读取WiFi ID和密码,您可以使用`nvs_get_str()`函数来读取字符串类型的数据。以下是一个示例:

```c
#include "nvs_flash.h"
#include "esp_err.h"

esp_err_t read_wifi_credentials(nvs_handle_t handle, const char* ssid_key, const char* password_key, char* ssid, char* password)
{
    size_t length = 32; // 根据您的实际需求调整长度

    esp_err_t ret = nvs_get_str(handle, ssid_key, ssid, &length);
    if (ret != ESP_OK) {
        return ret;
    }

    length = 64; // 根据您的实际需求调整长度
    ret = nvs_get_str(handle, password_key, password, &length);
    return ret;
}
```

使用此函数,您可以从NVS中读取WiFi ID和密码。请确保在调用此函数之前已经打开了NVS存储,并获取了相应的句柄。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分