首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >ESP32 Arduino-ide如何获得唯一的id

ESP32 Arduino-ide如何获得唯一的id
EN

Stack Overflow用户
提问于 2022-08-22 09:08:19
回答 1查看 1.1K关注 0票数 1

我试图自动为每个esp32设置一个唯一的id。在我使用提供esp_efuse_mac_get_default()方法的ESP对设备进行编程之前,这将返回一个8字节值,这个值在我所使用的所有设备上都是唯一的。

在arduino ide中,我看到的只是ESP.getEfuseMac()方法。这只返回6个字节,对于同一批(?)的所有设备都是相同的。

有没有办法在ESP32上获得一个8字节的UUID?

像ArduinoUniqueID这样的库也使用ESP.getEfuseMac(),因此无法使用。

EN

回答 1

Stack Overflow用户

发布于 2022-08-22 09:16:08

getEfuseMac返回64位整数。

代码语言:javascript
运行
复制
uint64_t EspClass::getEfuseMac(void)
{
    uint64_t _chipmacid = 0LL;
    esp_efuse_mac_get_default((uint8_t*) (&_chipmacid));
    return _chipmacid;
}

它应该返回它的MAC地址,这对于所有的人来说都是独一无二的。

在ESP32上,ESP.getEfuseMac()ESP.getChipId()都返回相同的MAC地址。

用:测试它

代码语言:javascript
运行
复制
Serial.printf("\nCHIP MAC: %012llx\n", ESP.getEfuseMac());
Serial.printf("\nCHIP MAC: %012llx\n", ESP.getChipId());

或者你可以这么做:

代码语言:javascript
运行
复制
uint32_t low     = ESP.getEfuseMac() & 0xFFFFFFFF; 
uint32_t high    = ( ESP.getEfuseMac() >> 32 ) % 0xFFFFFFFF;
uint64_t fullMAC = word(low,high);

Serial.printf("Low: %d\n",low);
Serial.printf("High: %d\n",high);
Serial.printf("Full: %d\n",fullMAC);

您也可以在Arduino中使用以色列国防军函数,因为它是在此基础上构建的。检查一下这个:

代码语言:javascript
运行
复制
void print_mac(const unsigned char *mac) {
    printf("%02X:%02X:%02X:%02X:%02X:%02X\n", mac[0],mac[1],mac[2],mac[3],mac[4],mac[5]);
}

void macTest(){
    unsigned char mac_base[6] = {0};
    esp_efuse_mac_get_default(mac_base);
    esp_read_mac(mac_base, ESP_MAC_WIFI_STA);
    unsigned char mac_local_base[6] = {0};
    unsigned char mac_uni_base[6] = {0};
    esp_derive_local_mac(mac_local_base, mac_uni_base);
    printf("Local Address: ");
    print_mac(mac_local_base); 
    printf("\nUni Address: ");
    print_mac(mac_uni_base);
    printf("MAC Address: ");
    print_mac(mac_base);
}

void setup(){
    Serial.begin(115200);
    delay(500);
    macTest();
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73442663

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档