1. MAC 주소
ESP32 또는 ESP8266보드 또는 라즈베리파이 피코 W처럼 네트워크 통신 기능이 있는 마이크로컨트롤러들은 네트워크상에서 해당 장치를 인식하기 위해 MAC (Media Access Control) 주소라는 것을 가지게 된다.
MAC 주소는 인터넷상에서 특정 장치를 구별하기 위해 부여된 물리적 번호이다.
통상 8Bit로 단위의 6자리의 주소(총 48비트)로 구성되며, 앞의 3자리는 대개 해당 장치의 제조사를 구분하는 데 사용되며, 뒤의 3자리가 해당 장치에 부여되는 번호이다. 과거에는 특정 장치에 부여된 MAC 주소의 변경이 불가능했으나, 최근에는 MAC 주소가 Flash 메모리 등에 저장되어 변경할 수 있는 경우도 있다고 한다.
MAC 주소는 특정 네트워크 장치에 고유하게 부여되므로, MAC 주소를 이용하면 인터넷에서 특정 하드웨어에 접속하는 것이 가능해진다.
ESP32나 ESP8266보드에서는 인터넷 라우터를 통하지 않고, ESP 보드들 간의 직접 통신도 가능한데, 이때 통신을 할 특정 ESP 보드를 구별하기 위해 MAC 주소가 사용된다.
2. ESP32보드에서 MAC 주소 확인 방법
ESP32보드에서는 다음과 같이 네트워크를 활성화시키고, wlan.config 명령을 통해 MAC 주소를 확인할 수 있다.
import network
wlan = network.WLAN(network.STA_IF)
wlan.active(True)
if wlan.active():
mac_address = wlan.config("mac")
print("MAC Addr : ", mac_address)
print("Formatted:", ":".join(["{:02X}".format(byte) for byte in mac_address]))
else:
print("Wi-Fi Not active.")
내가 가진 ESP32 보드에서 이 코드를 실행시키면, 다음과 같이 Wifi 접속과 무관하게 해당 ESP32보드의 MAC 주소를 확인할 수가 있다.
3. 라즈베리파이 피코 W에서 MAC 주소 확인 방법
한편 라즈베리파이 피코 보드 W도 통신 기능이 있기 때문에, 당연히 MAC 주소가 할당되며,
위의 코드를 활용해서 MAC 주소를 확인할 수 있으나, 한 가지 다른 점이 있다.
즉, ESP 보드에서는 위의 코드 그대로 실행하면 MAC 주소 확인이 가능하나, 피코 보드에서는 다음과 같이 오류가 발생한다.
라즈베리파이 피코 보드에서는 다음과 같이 wlan.connect 명령을 추가해 주어야 MAC 주소를 확인할 수가 있다.
다만, WIFI 접속이 반드시 이루어져야 MAC 주소가 확인되는 것은 아니고, 이 wlan.connect 명령이 추가되기만 하면 MAC 주소 확인이 가능해진다.
그래서 다음과 같이 SSID나 PASSWORD를 임의로 할당하고 wlan.connect 명령을 시도해 주면 WIFI 접속이 이루어지지는 않지만 MAC 주소 확인은 가능한 상황이 된다.

