kelas WLAN -- mengendalikan antarmuka WiFi bawaan¶
Kelas WLAN mengendalikan radio WiFi yang terpasang di OpenMV Cam modern. Kelas yang sama membungkus dua driver yang berbeda tergantung pada MCU WiFi board:
CYW43 (modul WiFi Infineon CYW43xxx Murata). Digunakan oleh OpenMV Cam N6, OpenMV Cam RT1062, Arduino Portenta H7, Arduino Nicla Vision, dan Arduino Giga R1 WiFi.
NINA W10 (u-blox NINA-W10 / ESP32-WROOM). Digunakan oleh Arduino Nano RP2040 Connect.
Kedua driver memiliki nama metode yang sama tetapi berbeda dalam beberapa argumen dan kumpulan kunci config() yang diterima. Perbedaan ditandai di bawah ini.
Kamera OpenMV dengan perisai WiFi WINC1500 lama (M4 / M7 / H7 / H7 Plus / Pure Thermal) menggunakan WINC sebagai gantinya.
Contoh penggunaan:
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"))
Konstruktor¶
- class network.WLAN(interface_id: int = WLAN.IF_STA) None¶
Buat objek antarmuka
WLAN.interface_idmemilih antarmuka yang akan dioperasikan:WLAN.IF_STA-- mode stasiun / klien. Sambungkan ke titik akses hulu denganconnect(). Ini adalah mode default.WLAN.IF_AP-- mode titik akses. Konfigurasikan AP denganconfig()dan terima koneksi klien.
Radio fisik yang sama mendukung kedua antarmuka; membuat satu tidak menghalangi yang lain.
Metode¶
- active(is_active: bool | None = None) bool¶
Aktifkan atau nonaktifkan radio WiFi.
Tanpa argumen, kembalikan status saat ini --
Truesaat radio aktif,Falsejika tidak.active(True)mengaktifkan MCU WiFi, memuat firmware-nya (CYW43 mengambil blob firmware dari flash; NINA memvalidasi versi firmware yang sedang di-flash) dan menjalankan lwIP netif untuk antarmuka ini. Semua metode lain --connect(),scan(),ipconfig()dan lainnya -- mengharuskan antarmuka aktif.active(False)mematikan radio kembali. Pada antarmuka STA ini juga memutus asosiasi dari AP saat ini dan merilis netif.
- connect(ssid: str, key: str | None = None, *, security: int = -1, bssid: bytes | None = None, channel: int = -1) None¶
Hubungkan antarmuka STA dengan titik akses yang diberikan.
ssid-- SSID jaringan (string atau bytes).key-- kata sandi / kunci yang telah dibagikan sebelumnya. BerikanNoneuntuk jaringan terbuka.security(hanya kata kunci) -- salah satu dari konstantaSEC_*.-1(default) memilih otomatis:SEC_OPENsaatkeykosong,SEC_WPA_WPA2jika tidak.bssid(hanya kata kunci, khusus CYW43) -- batasi asosiasi ke AP dengan alamat MAC 6-byte ini. Diabaikan oleh driver NINA.channel(hanya kata kunci) -- saluran radio yang diinginkan. Default adalah "biarkan driver memilih".
- disconnect() None¶
Dalam mode STA, putuskan asosiasi dari titik akses yang sedang diasosiasikan. Antarmuka tetap aktif; panggil
connect()lagi untuk mengasosiasikan ulang, atauactive()(False)untuk mematikan radio sepenuhnya. Tidak melakukan apa-apa saat tidak sedang diasosiasikan.
- isconnected() bool¶
Dalam mode STA, kembalikan
Truesaat diasosiasikan dengan titik akses dan alamat IPv4 telah diperoleh dari DHCP (atau ditetapkan secara statis melaluiipconfig()). MengembalikanFalsesaat tautan masih dalam fase autentikasi/asosiasi/DHCP.Dalam mode AP, kembalikan
Truesaat setidaknya satu stasiun telah bergabung.
- scan(*, passive: bool = False, ssid: bytes | None = None, bssid: bytes | None = None) List[Tuple[bytes, bytes, int, int, int, int]]¶
Pindai titik akses di sekitar dan kembalikan daftar 6-tuple:
[0]SSID (bytes; kosong untuk jaringan tersembunyi).[1]BSSID (MAC 6-byte,bytes). Konversi denganbinascii.hexlify().[2]Nomor saluran.[3]RSSI dalam dBm.[4]Mode keamanan (salah satu dari konstantaSEC_*).[5]Dicadangkan (selalu1).
Semua argumen kata kunci hanya untuk CYW43:
passive-- jikaTrue, gunakan pemindaian pasif daripada pemindaian probe-request aktif default.ssid-- batasi pemindaian ke satu SSID.bssid-- batasi pemindaian ke satu BSSID.
Pemindaian hanya bermakna pada antarmuka STA.
- status() int¶
- status(param: str) Any
Kueri status koneksi.
Tanpa argumen, kembalikan status tautan sebagai bilangan bulat kecil (pengkodean spesifik driver -- nilai truthy berarti "diasosiasikan").
Dengan argumen string:
"rssi"-- dalam mode STA, kembalikan RSSI saat ini dalam dBm."stations"-- dalam mode AP, kembalikan daftar stasiun yang terhubung. CYW43 mengembalikan[(mac_bytes,), ...]; NINA mengembalikan[ip_string, ...].
- ifconfig(config: Tuple[str, str, str, str] | None = None) Tuple[str, str, str, str] | None¶
Dapatkan atau tetapkan parameter antarmuka IPv4 sebagai 4-tuple dari string dotted-quad
(ip, subnet, gateway, dns).Catatan
Pilih
ipconfig()untuk kode baru: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
Dapatkan atau tetapkan parameter antarmuka IPv4 / IPv6. Driver CYW43 mendelegasikan ke implementasi lwIP standar dan mendukung kumpulan kunci lengkap yang didokumentasikan pada
AbstractNIC.ipconfig(). Driver NINA mengimplementasikan subset per-antarmuka yang lebih kecil --dhcp4danhas_dhcp4(hanya-baca), ditambahaddr4dangw4untuk get / set.
- config(param: str) Any¶
- config(**kwargs: Any) None
Dapatkan atau tetapkan parameter antarmuka spesifik WiFi.
Dengan satu argumen string posisional, kembalikan nilai parameter tersebut. Dengan argumen kata kunci, tetapkan satu atau lebih parameter sekaligus -- perubahan yang mempengaruhi AP yang sedang berjalan menyebabkan AP dimatikan dan dinyalakan kembali secara otomatis.
Contoh:
# 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"))
Driver CYW43 -- parameter yang dapat dibaca:
"antenna"-- pemilih antena (int)."channel"-- saluran saat ini."ssid"/"essid"-- SSID saat ini (string)."security"-- mode auth AP (salah satu dariSEC_*)."mac"-- alamat MAC antarmuka (6bytes)."pm"-- nilai manajemen daya."txpower"-- daya pancar dalam dBm."hostname"-- nama host DHCP/mDNS. Tidak dianjurkan; gunakannetwork.hostname()sebagai gantinya.
Driver CYW43 -- parameter yang dapat diatur:
antenna=<int>-- pemilih antena.channel=<int>-- saluran AP.ssid=<str>/essid=<str>-- SSID AP.key=<str>/password=<str>-- kunci yang telah dibagikan sebelumnya untuk AP.security=<int>-- mode auth AP (salah satu dariSEC_*).pm=<int>-- mode manajemen daya (salah satu dariPM_NONE,PM_PERFORMANCE,PM_POWERSAVE).monitor=<int>-- aktifkan mode monitor / all-multicast.txpower=<int>-- daya pancar dalam dBm.trace=<int>-- bitmask jejak driver internal.hostname=<str>-- nama host DHCP/mDNS. Tidak dianjurkan; gunakannetwork.hostname()sebagai gantinya.
Driver NINA -- parameter yang dapat dibaca:
"ssid"-- SSID saat ini (string)."security"-- mode auth AP."mac"/"bssid"-- alamat MAC antarmuka (6bytes)."fw_version"-- 3-tuple(major, minor, patch).
Driver NINA -- parameter yang dapat diatur: panggilan diteruskan ke
connect()dan menerima argumen kata kunci yang sama (ssid,key,security,channel). Hanya valid pada antarmuka AP.
- deinit() None¶
Matikan daya MCU WiFi dan lepaskan setiap sumber daya yang dipegang driver (buffer firmware, lwIP netif, bus SPI/SDIO). Setelah memanggil ini, objek
WLANharus direkonstruksi sebelum digunakan. Gunakan ini daripadaactive()(False)saat Anda membutuhkan reset penuh (misalnya, sebelum me-reflash firmware radio atau untuk memulihkan dari status driver yang tersangkut). Hanya CYW43.
- send_ethernet(buf: bytes) None¶
Injeksikan frame Ethernet mentah
buflangsung ke jalur transmisi driver, melewati tumpukan IP. Ditujukan untuk konsumen hanya-L2 -- bridging, protokol EtherType kustom, dan sejenisnya. Frame harus mencakup MAC tujuan/sumber dan EtherType (tanpa FCS -- hardware menambahkannya). Hanya CYW43.
- ioctl(cmd: int, buf: bytearray) None¶
Keluarkan perintah kontrol spesifik driver.
cmdadalah kode ioctl numerik yang didefinisikan oleh firmware radio yang mendasarinya danbufadalah buffer yang dapat diubah yang digunakan untuk payload perintah dan respons. Kumpulan nilaicmdyang valid spesifik untuk driver dan tidak portabel antara CYW43 dan NINA. Digunakan sebagian besar oleh skrip uji level rendah dan kode chip-bring-up.
Konstanta¶
- IF_STA: int¶
Pengidentifikasi antarmuka stasiun / klien. Berikan ke konstruktor untuk memilih mode STA.
- SEC_WPA_WPA2: int¶
Nilai keamanan untuk WPA / WPA2 dengan kunci yang telah dibagikan sebelumnya. Default saat kunci disediakan ke
connect(). Tersedia di kedua driver.
- SEC_WPA3: int¶
Nilai keamanan untuk WPA3 (SAE) dengan kunci yang telah dibagikan sebelumnya. Hanya CYW43.
- SEC_WEP: int¶
Nilai keamanan untuk WEP (Wired Equivalent Privacy). Disediakan untuk kompatibilitas dengan titik akses lama -- WEP telah rusak secara kriptografis dan tidak boleh digunakan pada penerapan baru. Hanya NINA.
- WPA_PSK: int¶
Alias kompatibilitas untuk
SEC_WPA_WPA2. Kode baru harus menggunakanSEC_WPA_WPA2. Hanya NINA.