【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】
很多产品都有激活的要求,这个时候就要求产品有唯一ID。而这个唯一ID,可以是芯片的ID,也可以是模块的ID。当然esp32比较特殊一点,它是一个带wifi的mcu,所以我们就可以把mac地址当成ID。这样就比较好一点。
1、不需要连接线
目前这个mac不需要和其他模块通信,所以不需要外接连线。
2、mac唯一ID的由来
不管是模块,还是pc上面的网卡,都是唯一ID,这个是由mac模块本身的特性决定的。
3、ai编程
这部分都准备好了之后,就可以找chatgpt,或者是deepseek,直接问它如何获取芯片的mac id即可。不出意外的话,我们就可以得到这样的代码,
#include <stdio.h> #include <inttypes.h> #include "esp_system.h" #include "esp_mac.h" #include "esp_log.h" static const char *TAG = "UNIQUE_ID"; static void print_mac_address(void) { uint8_t mac[6]; esp_err_t ret = esp_read_mac(mac, ESP_MAC_WIFI_STA); if (ret == ESP_OK) { ESP_LOGI(TAG, "MAC Address (Unique ID): %02x:%02x:%02x:%02x:%02x:%02x", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]); } else { ESP_LOGE(TAG, "Failed to read MAC address: %s", esp_err_to_name(ret)); } } void app_main(void) { ESP_LOGI(TAG, "===== ESP32 Unique ID Example ====="); print_mac_address(); ESP_LOGI(TAG, "===== End of Example ====="); }4、代码编译和执行
整体内容还是比较简单的,基本上通过一个esp_read_mac函数,就可以获得全部mac地址的内容。加上mac地址本身具有唯一性,那么就可以用mac地址当成是esp32模块的id,这是比较好的一个做法。
当然,如之前所说,拿到代码之后,我们可以先编译一下,然后烧入和运行。没有问题的话,就可以把这个功能记下来了,等到后面用到的时候实际部署一下就可以。