Este código obtém um identificador único do ESP32 ou ESP8266 com base no endereço MAC da placa. Ele configura a comunicação serial, define o modo WiFi sem precisar conectar-se a uma rede e exibe o identificador único no monitor serial em formato hexadecimal. É útil para identificar dispositivos em projetos IoT.
File: DeviceID.ino
// Verifica se a placa é ESP32 ou ESP8266 e inclui a biblioteca WiFi correspondente
#ifdef ESP32
#include <WiFi.h> // Biblioteca para ESP32
#elif defined ESP8266
#include <ESP8266WiFi.h> // Biblioteca para ESP8266
#else
#error Placa inválida // Gera erro se a placa não for compatível
#endif
/*************************************
* deviceID - Obtém um identificador único do ESP baseado no MAC
*************************************/
uint64_t deviceID() {
uint8_t mac[6]; // Array para armazenar o MAC
WiFi.macAddress(mac); // Obtém o endereço MAC do dispositivo
uint64_t id = 0; // Variável para armazenar o ID único
for (int i = 0; i < 6; i++) {
id = (id << 8) | mac[i]; // Converte os 6 bytes do MAC para um único número de 64 bits
}
return id; // Retorna o ID único do dispositivo
}
void setup() {
// Inicializa a comunicação serial com velocidade apropriada para cada placa
#ifdef ESP32
Serial.begin(115200); // Velocidade padrão para ESP32
#else
Serial.begin(74480); // Velocidade padrão para ESP8266
#endif
WiFi.mode(WIFI_STA); // Define o modo WiFi para obter o MAC sem necessidade de conexão
delay(1000); // Aguarda um pouco para garantir a leitura do ID corretamente
// Exibe o ID único do dispositivo no monitor serial
Serial.println();
Serial.print(F("deviceID: ")); // Usa F() para economizar RAM no ESP8266
Serial.println(deviceID(), HEX); // Exibe o ID no formato hexadecimal
}
void loop() {
// Nada a fazer, pois o objetivo do programa é apenas exibir o ID no setup()
}