class WLAN -- 内蔵WiFiインターフェースの制御¶
WLAN クラスは、最新のOpenMV Camに搭載されたオンボードWiFi無線を駆動します。同じクラスが、ボードのWiFi MCUに応じて2つの異なる基盤ドライバをラップします:
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で使用されます。
2つのドライバは同じメソッド名を公開していますが、いくつかの引数と受け付ける config() キーのセットが異なります。相違点については以下で示しています。
レガシーなWINC1500 WiFiシールド (M4 / M7 / H7 / H7 Plus / Pure Thermal) を備えたOpenMVカメラは、代わりに 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モードでは、少なくとも1つのステーションが参加した場合に
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-- スキャンを1つのSSIDに限定します。bssid-- スキャンを1つの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要素タプルとして取得または設定します。注釈
新しいコードでは
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固有のインターフェースパラメータを取得または設定します。
単一の位置文字列引数を指定すると、そのパラメータの値を返します。キーワード引数を指定すると、一度に1つ以上のパラメータを設定します -- 動作中の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_WEP: int¶
WEP (Wired Equivalent Privacy) 用のセキュリティ値。レガシーなアクセスポイントとの互換性のために提供されています -- WEPは暗号学的に破られており、新規の運用では使用すべきではありません。NINAのみ。
- WPA_PSK: int¶
SEC_WPA_WPA2の後方互換エイリアス。新しいコードではSEC_WPA_WPA2を使用すべきです。NINAのみ。