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 전용입니다:
passive–True이면 기본 능동 프로브 요청 스캔 대신 수동 스캔을 사용합니다.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 드라이버는 더 작은 인터페이스별 하위 집합을 구현합니다 –dhcp4및has_dhcp4(읽기 전용), 그리고 가져오기 / 설정용addr4와gw4입니다.
- 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 주소(6bytes)."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 주소(6bytes)."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 전용입니다.
상수¶
- SEC_WPA_WPA2: int¶
사전 공유 키를 사용하는 WPA / WPA2에 대한 보안 값.
connect()에 키가 제공될 때의 기본값입니다. 두 드라이버 모두에서 사용 가능합니다.
- SEC_WEP: int¶
WEP(Wired Equivalent Privacy)에 대한 보안 값. 레거시 액세스 포인트와의 호환성을 위해 제공됩니다 – WEP는 암호학적으로 취약하므로 새 배포에서는 사용하지 않아야 합니다. NINA 전용입니다.
- WPA_PSK: int¶
SEC_WPA_WPA2의 하위 호환 별칭. 새 코드는SEC_WPA_WPA2를 사용해야 합니다. NINA 전용입니다.