今回は少し時間を取らされた事があったのでメモ
よくESP32のMACアドレスを調査する方法で以下のプログラムが紹介されている。
void setup(void) {
Serial.begin(115200);
Serial.println("-----------------");
uint8_t macBT[6];
esp_read_mac(macBT, ESP_MAC_BT);
Serial.printf("%02X:%02X:%02X:%02X:%02X:%02X\r\n", macBT[0], macBT[1], macBT[2], macBT[3], macBT[4], macBT[5]);
}
void loop() {
delay(1000);
}
しかしこれを実行すると以下のエラーとなる。
'ESP_MAC_BT' was not declared in this scope'ESP_MAC_BT' was not declared in this scope
どうもESP_MAC_BTがいつのころか定義されないようになっているみたいだ。
今後は以下のプログラムで確認した方が良さそうだ。
#include "esp_mac.h" // required - exposes esp_mac_type_t values
void setup() {
Serial.begin(115200);
while (!Serial) {
delay(100);
}
Serial.println("Interface\t\t\t\t\t\tMAC address (6 bytes, 4 universally administered, default)");
Serial.print("Wi-Fi Station (using 'esp_efuse_mac_get_default')\t");
Serial.println(getDefaultMacAddress());
Serial.print("WiFi Station (using 'esp_read_mac')\t\t\t");
Serial.println(getInterfaceMacAddress(ESP_MAC_WIFI_STA));
Serial.print("WiFi Soft-AP (using 'esp_read_mac')\t\t\t");
Serial.println(getInterfaceMacAddress(ESP_MAC_WIFI_SOFTAP));
Serial.print("Bluetooth (using 'esp_read_mac')\t\t\t");
Serial.println(getInterfaceMacAddress(ESP_MAC_BT));
Serial.print("Ethernet (using 'esp_read_mac')\t\t\t\t");
Serial.println(getInterfaceMacAddress(ESP_MAC_ETH));
}
void loop() { /* Nothing in loop */ }
String getDefaultMacAddress() {
String mac = "";
unsigned char mac_base[6] = {0};
if (esp_efuse_mac_get_default(mac_base) == ESP_OK) {
char buffer[18]; // 6*2 characters for hex + 5 characters for colons + 1 character for null terminator
sprintf(buffer, "%02X:%02X:%02X:%02X:%02X:%02X", mac_base[0], mac_base[1], mac_base[2], mac_base[3], mac_base[4], mac_base[5]);
mac = buffer;
}
return mac;
}
String getInterfaceMacAddress(esp_mac_type_t interface) {
String mac = "";
unsigned char mac_base[6] = {0};
if (esp_read_mac(mac_base, interface) == ESP_OK) {
char buffer[18]; // 6*2 characters for hex + 5 characters for colons + 1 character for null terminator
sprintf(buffer, "%02X:%02X:%02X:%02X:%02X:%02X", mac_base[0], mac_base[1], mac_base[2], mac_base[3], mac_base[4], mac_base[5]);
mac = buffer;
}
return mac;
}