class WINC – WiFi 실드 드라이버¶
WINC 클래스는 OpenMV WiFi Shield의 Atmel WINC1500 802.11 b/g/n WiFi 모듈을 구동합니다. OpenMV Cam M4, M7, H7, H7 Plus 및 Pure Thermal(WiFi 실드가 설계 대상으로 삼은 STM32 보드)에서 사용 가능합니다. WiFi가 내장된 보드(OpenMV Cam N6, OpenMV Cam RT1062, Arduino Giga)에서는 대신 WLAN을 사용하십시오.
예제 – 액세스 포인트에 연결하고 주소를 출력:
import network
wlan = network.WINC()
wlan.connect("SSID", "KEY", security=network.WINC.WPA_PSK)
print("status: ", "connected" if wlan.isconnected() else "off")
print("rssi: ", wlan.rssi(), "dBm")
print("interface: ", wlan.ifconfig())
print("netinfo: ", wlan.netinfo())
예제 – 개방형 액세스 포인트를 올리고 클라이언트를 대기:
import network
wlan = network.WINC(mode=network.WINC.MODE_AP)
wlan.start_ap("OpenMV-Cam", security=network.WINC.OPEN, channel=6)
print("waiting for a station to associate...")
print(wlan.wait_for_sta(timeout=None))
생성자¶
- class network.WINC(mode: int = WINC.MODE_STA) None¶
WINC드라이버 객체를 생성하고 WiFi 실드를 올립니다.mode는 모듈이 시작할 동작 모드를 선택합니다:WINC.MODE_STA– 스테이션 / 클라이언트.connect()로 액세스 포인트에 연결합니다. 이것이 기본값입니다.WINC.MODE_AP– 액세스 포인트.start_ap()로 AP를 구성한 다음 클라이언트 연결을 수락합니다.WINC.MODE_P2P– WiFi Direct.WINC.MODE_BSP– BSP만 올립니다(라디오 없음).WINC.MODE_FIRMWARE– 펌웨어 업데이트 모드.fw_dump()및fw_update()에 필요합니다.
참고
AP 모드에서 WINC1500에는 하드웨어 제약이 있습니다:
한 번에 하나의 클라이언트만 연결할 수 있습니다.
OPEN또는 WEP 보안만 지원됩니다.WiFi 모듈 펌웨어 버그로 인해 클라이언트가 연결을 끊으면 바인딩된 소켓이 모두 동작을 멈춥니다. 서버 소켓에 타임아웃을 설정하여 예외를 발생시키고, 이를 이용해 소켓을 다시 열 수 있습니다.
메서드¶
- active(is_active: bool | None = None) bool¶
WiFi 실드를 켜거나 끕니다.
인수가 없으면 현재 상태를 반환합니다 – 실드가 초기화되고 라디오가 올라온 동안에는
True, 그렇지 않으면False입니다.active(True)는 SPI를 통해 WINC1500 펌웨어 핸드셰이크를 수행하고 구성된mode로 라디오를 올립니다. 인터페이스가 이미 활성화되어 있으면 아무 동작도 하지 않습니다.connect()는 아직 호출되지 않았다면 이것을 자동으로 호출합니다. 다른 메서드(scan(),rssi(),netinfo(), …)의 경우 먼저active(True)를 호출해야 합니다.active(False)는 라디오를 다시 종료하고(WINC가 BSP 전용 모드로 내려감) SPI 핀을 해제합니다.
- connect(ssid: str, key: str | None = None, *, security: int = WINC.WPA_PSK, channel: int = 1) None¶
비밀번호
key, 보안 모드security(OPEN,WPA_PSK또는 802.1X 상수 중 하나)를 사용하여 라디오channel에서 WiFi 네트워크ssid에 연결합니다.security와channel은 키워드 전용 인수입니다.연결한 후에는
socket모듈을 사용하여 TCP/UDP 포트를 엽니다.이 메서드는 연결이 완료되거나 실패할 때까지 차단됩니다.
- config(ssid: str, key: str | None = None, *, security: int = WINC.WPA_PSK, channel: int = 1) None¶
connect()의 별칭입니다. 다른network인터페이스에서config를 호출하는 코드와의 호환성을 위해 제공됩니다.
- start_ap(ssid: str, key: str | None = None, *, security: int = WINC.OPEN, channel: int = 1) None¶
mode=MODE_AP로 객체를 생성한 후 액세스 포인트를 구성하고 시작하는 데 사용되는connect()의 별칭입니다. AP는OPEN또는 WEP 보안만 지원하며, WEP을 사용하는 경우key가 필요합니다.
- disconnect() None¶
STA 모드에서 현재 연결된 액세스 포인트와의 연결을 해제합니다. 실드는 활성 상태를 유지하며, 다시 연결하려면
connect()를 호출하십시오. 현재 연결되어 있지 않으면 아무 동작도 하지 않습니다.
- isconnected() bool¶
STA 모드에서 액세스 포인트에 연결되어 있고 IPv4 주소가 (DHCP 또는
ifconfig()를 통해) 획득되었을 때True를 반환합니다. 아직 인증 / 연결 / DHCP 단계에 있는 동안에는False를 반환합니다.
- wait_for_sta(timeout: int | None) List[str]¶
AP 모드에서 클라이언트가 연결될 때까지 차단한 다음 클라이언트의 IP 주소를 담은 리스트를 반환합니다.
timeout은 밀리초 단위의 최대 대기 시간이며, 무한정 대기하려면None을 전달하십시오.
- ifconfig(config: Tuple[str, str, str, str] | None = None) Tuple[str, str, str, str]¶
IPv4 인터페이스 파라미터를 가져오거나 설정합니다. 4-튜플은
(ip, subnet, gateway, dns)를 점-사분 문자열로 담습니다.인수 없이 호출하면 현재 구성을 반환합니다.
4-튜플과 함께 호출하면 DHCP로 획득한 구성 대신 정적 IP 구성을 설정합니다.
예제 – 연결하기 전에 정적 IP를 고정:
wlan = network.WINC() wlan.ifconfig(("192.168.1.100", "255.255.255.0", "192.168.1.1", "192.168.1.1")) wlan.connect(SSID, key=KEY, security=network.WINC.WPA_PSK)
참고
WINC는 최신AbstractNIC.ipconfig()API를 구현하지 않습니다. 여기서는ifconfig()를 사용하십시오.
- netinfo() Tuple[int, int, str, str, str]¶
현재 연결 상태를 설명하는 5-튜플을 반환합니다:
[0]RSSI를 정수(dBm)로.[1]보안 모드 – 보안 상수 중 하나.[2]SSID 문자열.[3]BSSID를"XX:XX:XX:XX:XX:XX"MAC 문자열로.[4]IPv4 주소를 점-사분 문자열로.
- scan() List[Tuple[str, str, int, int, int, int]]¶
주변 액세스 포인트를 스캔합니다. 6-튜플의 리스트를 반환합니다:
[0]SSID 문자열.[1]BSSID를"XX:XX:XX:XX:XX:XX"MAC 문자열로.[2]채널 번호.[3]RSSI(dBm).[4]보안 모드 – 보안 상수 중 하나.[5]예약됨(항상1).
먼저 네트워크에 연결하지 않고도 호출할 수 있습니다.
- rssi() int¶
현재 연결된 액세스 포인트의 RSSI를 dBm으로 반환합니다. 대략:
-30은 우수,-67은 스트리밍에 적당,-80은 한계,-90이하는 사용 불가입니다. STA 모드에서isconnected()가True인 동안에만 의미가 있습니다.
- fw_version() Tuple[int, int, int, int, int, int, int]¶
WINC1500 펌웨어와 드라이버 버전을 설명하는 7-튜플을 반환합니다:
[0]펌웨어 메이저.[1]펌웨어 마이너.[2]펌웨어 패치.[3]드라이버 메이저.[4]드라이버 마이너.[5]드라이버 패치.[6]칩 하드웨어 리비전.
- fw_dump(path: str) None¶
WINC1500의 내부 플래시를 읽어 그 결과 펌웨어 이미지를 OpenMV 파일시스템의
path위치 파일에 씁니다.fw_update()를 호출하기 전에 현재 설치된 이미지를 백업하는 데 사용하십시오.모듈이
mode=MODE_FIRMWARE로 생성되어 있어야 합니다.
상수¶
- OPEN: int¶
암호화되지 않은 네트워크에 대한 보안 값입니다.
connect()/start_ap()의security인수에 전달하십시오.
참고
WPA/WPA2 Enterprise (802.1X) 보안 값도 존재합니다. 펌웨어는 이를
802_1X라는 이름으로 노출하는데, 이는 유효한 Python 식별자가 아니므로getattr(network.WINC, "802_1X")를 통해 접근하세요.- MODE_FIRMWARE: int¶
펌웨어 업데이트 모드.
fw_dump()및fw_update()에 필요합니다.