class WLAN – 내장 WiFi 인터페이스 제어

WLAN 클래스는 최신 OpenMV Cam의 온보드 WiFi 라디오를 구동합니다. 동일한 클래스가 보드의 WiFi MCU에 따라 서로 다른 두 가지 기반 드라이버를 감쌉니다:

  • CYW43 (Infineon CYW43xxx Murata WiFi 모듈). OpenMV Cam N6, OpenMV Cam RT1062, Arduino Portenta H7, Arduino Nicla Vision, Arduino Giga R1 WiFi에서 사용됩니다.

  • NINA W10 (u-blox NINA-W10 / ESP32-WROOM). Arduino Nano RP2040 Connect에서 사용됩니다.

두 드라이버는 동일한 메서드 이름을 노출하지만, 일부 인수와 허용되는 config() 키 집합이 다릅니다. 차이점은 아래에 표시되어 있습니다.

레거시 WINC1500 WiFi 실드를 사용하는 OpenMV 카메라(M4 / M7 / H7 / H7 Plus / Pure Thermal)는 대신 WINC 를 사용합니다.

사용 예시:

import network

# Enable the station interface and connect to a WiFi AP.
nic = network.WLAN(network.WLAN.IF_STA)
nic.active(True)
nic.connect("your-ssid", "your-key")
while not nic.isconnected():
    pass

print(nic.ipconfig("addr4"))

생성자

class network.WLAN(interface_id: int = WLAN.IF_STA) None

WLAN 인터페이스 객체를 생성합니다.

interface_id 는 어느 인터페이스에서 동작할지 선택합니다:

  • WLAN.IF_STA – 스테이션 / 클라이언트 모드. connect() 로 상위 액세스 포인트에 연결합니다. 기본값입니다.

  • WLAN.IF_AP – 액세스 포인트 모드. config() 로 AP를 구성하고 클라이언트 연결을 수락합니다.

동일한 물리적 라디오가 두 인터페이스 모두를 뒷받침하므로, 하나를 생성한다고 해서 다른 하나를 사용할 수 없는 것은 아닙니다.

메서드

active(is_active: bool | None = None) bool

WiFi 라디오를 켜거나 끕니다.

인수 없이 호출하면 현재 상태를 반환합니다 – 라디오가 켜져 있으면 True , 그렇지 않으면 False 입니다.

active(True) 는 WiFi MCU에 전원을 공급하고, 펌웨어를 로드하며(CYW43은 플래시에서 펌웨어 블롭을 가져오고, NINA는 현재 플래시된 펌웨어 버전을 검증합니다) 이 인터페이스의 lwIP netif를 활성화합니다. connect(), scan(), ipconfig() 등 다른 모든 메서드는 인터페이스가 활성 상태여야 합니다.

active(False) 는 라디오의 전원을 다시 끕니다. STA 인터페이스에서는 현재 AP와의 연결도 해제하고 netif를 해제합니다.

connect(ssid: str, key: str | None = None, *, security: int = -1, bssid: bytes | None = None, channel: int = -1) None

STA 인터페이스를 주어진 액세스 포인트와 연결합니다.

ssid – 네트워크 SSID(문자열 또는 바이트).

key – 비밀번호 / 사전 공유 키. 개방형 네트워크의 경우 None 을 전달합니다.

security (키워드 전용) – SEC_* 상수 중 하나입니다. -1 (기본값)은 자동으로 선택합니다: key 가 비어 있으면 SEC_OPEN, 그렇지 않으면 SEC_WPA_WPA2 입니다.

bssid (키워드 전용, CYW43 전용) – 이 6바이트 MAC 주소를 가진 AP로 연결을 제한합니다. NINA 드라이버에서는 무시됩니다.

channel (키워드 전용) – 선호하는 라디오 채널. 기본값은 “드라이버가 선택하도록 함”입니다.

disconnect() None

STA 모드에서는 현재 연결된 액세스 포인트와의 연결을 해제합니다. 인터페이스는 활성 상태로 유지됩니다. 다시 연결하려면 connect() 를 다시 호출하거나, 라디오의 전원을 완전히 끄려면 active() (False) 를 호출하세요. 현재 연결되어 있지 않으면 아무 동작도 하지 않습니다.

isconnected() bool

STA 모드에서는 액세스 포인트에 연결되어 있고 DHCP로부터 IPv4 주소를 획득했거나 ipconfig() 를 통해 정적으로 할당된 경우 True 를 반환합니다. 링크가 아직 인증/연결/DHCP 단계에 있는 동안에는 False 를 반환합니다.

AP 모드에서는 최소 한 개 이상의 스테이션이 접속한 경우 True 를 반환합니다.

scan(*, passive: bool = False, ssid: bytes | None = None, bssid: bytes | None = None) List[Tuple[bytes, bytes, int, int, int, int]]

주변의 액세스 포인트를 스캔하여 6-튜플 목록을 반환합니다:

  • [0] SSID(바이트, 숨겨진 네트워크의 경우 비어 있음).

  • [1] BSSID(6바이트 MAC, bytes ). binascii.hexlify() 로 변환하세요.

  • [2] 채널 번호.

  • [3] dBm 단위의 RSSI.

  • [4] 보안 모드( SEC_* 상수 중 하나).

  • [5] 예약됨(항상 1 ).

모든 키워드 인수는 CYW43 전용입니다:

  • passiveTrue 이면 기본 능동 프로브 요청 스캔 대신 수동 스캔을 사용합니다.

  • ssid – 스캔을 하나의 SSID로 제한합니다.

  • bssid – 스캔을 하나의 BSSID로 제한합니다.

스캔은 STA 인터페이스에서만 의미가 있습니다.

status() int
status(param: str) Any

연결 상태를 조회합니다.

인수 없이 호출하면 링크 상태를 작은 정수로 반환합니다(드라이버별 인코딩 – 참 값은 “연결됨”을 의미합니다).

문자열 인수와 함께 호출하면:

  • "rssi" – STA 모드에서 현재 RSSI를 dBm 단위로 반환합니다.

  • "stations" – AP 모드에서 연결된 스테이션 목록을 반환합니다. CYW43은 [(mac_bytes,), ...] 를 반환하고, NINA는 [ip_string, ...] 를 반환합니다.

ifconfig(config: Tuple[str, str, str, str] | None = None) Tuple[str, str, str, str] | None

IPv4 인터페이스 매개변수를 (ip, subnet, gateway, dns) 점으로 구분된 4자리 문자열의 4-튜플로 가져오거나 설정합니다.

참고

새 코드에서는 ipconfig() 를 사용하는 것이 좋습니다:

nic.ipconfig(addr4="192.168.0.4/24", gw4="192.168.0.1")
network.ipconfig(dns="8.8.8.8")
ipconfig(param: str) Any
ipconfig(**kwargs: Any) None

IPv4 / IPv6 인터페이스 매개변수를 가져오거나 설정합니다. CYW43 드라이버는 표준 lwIP 구현에 위임하며, AbstractNIC.ipconfig() 에 문서화된 전체 키 집합을 지원합니다. NINA 드라이버는 더 작은 인터페이스별 하위 집합을 구현합니다 – dhcp4has_dhcp4 (읽기 전용), 그리고 가져오기 / 설정용 addr4gw4 입니다.

config(param: str) Any
config(**kwargs: Any) None

WiFi 전용 인터페이스 매개변수를 가져오거나 설정합니다.

단일 위치 문자열 인수와 함께 호출하면 해당 매개변수의 값을 반환합니다. 키워드 인수와 함께 호출하면 하나 이상의 매개변수를 한 번에 설정합니다 – 실행 중인 AP에 영향을 주는 변경은 AP를 자동으로 내렸다가 다시 올립니다.

예시:

# Set up the access-point name and channel.
ap.config(ssid="My AP", channel=11)
# Query params one at a time.
print(ap.config("ssid"))
print(ap.config("mac"))

CYW43 드라이버 – 가져올 수 있는 매개변수:

  • "antenna" – 안테나 선택기(int).

  • "channel" – 현재 채널.

  • "ssid" / "essid" – 현재 SSID(문자열).

  • "security" – AP의 인증 모드( SEC_* 중 하나).

  • "mac" – 인터페이스 MAC 주소(6 bytes ).

  • "pm" – 전원 관리 값.

  • "txpower" – dBm 단위의 송신 전력.

  • "hostname" – DHCP/mDNS 호스트명. 사용 중단됨; 대신 network.hostname() 을 사용하세요.

CYW43 드라이버 – 설정 가능한 매개변수:

  • antenna=<int> – 안테나 선택기.

  • channel=<int> – AP 채널.

  • ssid=<str> / essid=<str> – AP SSID.

  • key=<str> / password=<str> – AP 사전 공유 키.

  • security=<int> – AP 인증 모드( SEC_* 중 하나).

  • pm=<int> – 전원 관리 모드( PM_NONE, PM_PERFORMANCE, PM_POWERSAVE 중 하나).

  • monitor=<int> – 모니터 / 전체 멀티캐스트 모드를 활성화합니다.

  • txpower=<int> – dBm 단위의 송신 전력.

  • trace=<int> – 내부 드라이버 추적 비트마스크.

  • hostname=<str> – DHCP/mDNS 호스트명. 사용 중단됨; 대신 network.hostname() 을 사용하세요.

NINA 드라이버 – 가져올 수 있는 매개변수:

  • "ssid" – 현재 SSID(문자열).

  • "security" – AP의 인증 모드.

  • "mac" / "bssid" – 인터페이스 MAC 주소(6 bytes ).

  • "fw_version" – 3-튜플 (major, minor, patch) .

NINA 드라이버 – 설정 가능한 매개변수: 호출은 connect() 로 전달되며 동일한 키워드 인수( ssid, key, security, channel )를 받습니다. AP 인터페이스에서만 유효합니다.

deinit() None

WiFi MCU의 전원을 껐다 켜고 드라이버가 보유한 모든 리소스(펌웨어 버퍼, lwIP netif, SPI/SDIO 버스)를 해제합니다. 이를 호출한 후에는 WLAN 객체를 사용하기 전에 다시 생성해야 합니다. 전체 재설정이 필요할 때(예: 라디오 펌웨어를 다시 플래시하기 전, 또는 멈춰 버린 드라이버 상태에서 복구할 때)는 active() (False) 대신 이것을 사용하세요. CYW43 전용입니다.

send_ethernet(buf: bytes) None

원시 이더넷 프레임 buf 를 IP 스택을 우회하여 드라이버의 송신 경로에 직접 주입합니다. 브리징, 사용자 정의 EtherType 프로토콜 등 L2 전용 소비자를 위한 것입니다. 프레임에는 목적지/소스 MAC와 EtherType이 포함되어야 합니다(FCS는 제외 – 하드웨어가 추가합니다). CYW43 전용입니다.

ioctl(cmd: int, buf: bytearray) None

드라이버별 제어 명령을 실행합니다. cmd 는 기반 라디오 펌웨어가 정의한 숫자 ioctl 코드이고, buf 는 명령 페이로드와 응답 모두에 사용되는 가변 버퍼입니다. 유효한 cmd 값 집합은 드라이버별이며 CYW43과 NINA 간에 이식되지 않습니다. 주로 저수준 테스트 스크립트와 칩 브링업 코드에서 사용됩니다.

상수

IF_STA: int

스테이션 / 클라이언트 인터페이스 식별자. STA 모드를 선택하려면 생성자에 전달하세요.

IF_AP: int

액세스 포인트 인터페이스 식별자. AP 모드를 선택하려면 생성자에 전달하세요.

SEC_OPEN: int

암호화되지 않은 네트워크에 대한 보안 값. 두 드라이버 모두에서 사용 가능합니다.

SEC_WPA_WPA2: int

사전 공유 키를 사용하는 WPA / WPA2에 대한 보안 값. connect() 에 키가 제공될 때의 기본값입니다. 두 드라이버 모두에서 사용 가능합니다.

SEC_WPA3: int

사전 공유 키를 사용하는 WPA3(SAE)에 대한 보안 값. CYW43 전용입니다.

SEC_WPA2_WPA3: int

WPA2 / WPA3 전환 모드에 대한 보안 값. CYW43 전용입니다.

SEC_WEP: int

WEP(Wired Equivalent Privacy)에 대한 보안 값. 레거시 액세스 포인트와의 호환성을 위해 제공됩니다 – WEP는 암호학적으로 취약하므로 새 배포에서는 사용하지 않아야 합니다. NINA 전용입니다.

OPEN: int

SEC_OPEN 의 하위 호환 별칭. 새 코드는 SEC_OPEN 을 사용해야 합니다. NINA 전용입니다.

WEP: int

SEC_WEP 의 하위 호환 별칭. 새 코드는 SEC_WEP 을 사용해야 합니다. NINA 전용입니다.

WPA_PSK: int

SEC_WPA_WPA2 의 하위 호환 별칭. 새 코드는 SEC_WPA_WPA2 를 사용해야 합니다. NINA 전용입니다.

PM_NONE: int

WiFi 전원 관리를 비활성화하려면 config(pm=...) 에 전달하세요. CYW43 전용입니다.

PM_PERFORMANCE: int

성능에 맞춰 조정된 WiFi 전원 관리를 활성화하려면 config(pm=...) 에 전달하세요. CYW43 전용입니다.

PM_POWERSAVE: int

최대 배터리 수명에 맞춰 조정된 WiFi 전원 관리를 활성화하려면 config(pm=...) 에 전달하세요. CYW43 전용입니다.