class WINC -- driver shield WiFi¶
Kelas WINC mengendalikan modul WiFi Atmel WINC1500 802.11 b/g/n pada OpenMV WiFi Shield. Tersedia pada OpenMV Cam M4, M7, H7, H7 Plus dan Pure Thermal (board STM32 yang dirancang untuk shield WiFi ini). Untuk board dengan WiFi bawaan (OpenMV Cam N6, OpenMV Cam RT1062, Arduino Giga) gunakan WLAN sebagai gantinya.
Contoh -- terhubung ke access point dan cetak alamatnya:
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())
Contoh -- hidupkan access point terbuka dan tunggu klien:
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))
Konstruktor¶
- class network.WINC(mode: int = WINC.MODE_STA) None¶
Membuat objek driver
WINCdan menghidupkan shield WiFi.modememilih mode operasi yang digunakan modul saat memulai:WINC.MODE_STA-- stasiun / klien. Terhubung ke access point denganconnect(). Ini adalah default.WINC.MODE_AP-- access point. Konfigurasikan AP denganstart_ap(), lalu terima koneksi klien.WINC.MODE_P2P-- WiFi Direct.WINC.MODE_BSP-- hanya menginisialisasi BSP (tanpa radio).WINC.MODE_FIRMWARE-- mode pembaruan firmware; diperlukan olehfw_dump()danfw_update().
Catatan
Dalam mode AP, WINC1500 memiliki batasan hardware:
Hanya satu klien yang dapat terhubung dalam satu waktu.
Hanya keamanan
OPENatau WEP yang didukung.Bug pada firmware modul WiFi menyebabkan semua socket yang terikat berhenti bekerja ketika klien memutuskan koneksi. Atur timeout pada socket server agar ia memunculkan pengecualian yang dapat Anda gunakan untuk membukanya kembali.
Metode¶
- active(is_active: bool | None = None) bool¶
Menghidupkan atau mematikan shield WiFi.
Tanpa argumen, mengembalikan status saat ini --
Trueselama shield diinisialisasi dan radio aktif,Falsejika tidak.active(True)melakukan jabat tangan firmware WINC1500 melalui SPI dan menghidupkan radio dalammodeyang dikonfigurasi. Operasi ini tidak melakukan apa-apa jika antarmuka sudah aktif.connect()memanggil ini secara otomatis jika belum dipanggil; untuk metode lainnya (scan(),rssi(),netinfo(), ...) Anda harus memanggilactive(True)terlebih dahulu.active(False)mematikan radio kembali (WINC beralih ke mode BSP-only) dan melepaskan pin SPI.
- connect(ssid: str, key: str | None = None, *, security: int = WINC.WPA_PSK, channel: int = 1) None¶
Berasosiasi dengan jaringan WiFi
ssidmenggunakan kata sandikey, mode keamanansecurity(salah satu dariOPEN,WPA_PSKatau konstanta 802.1X) pada radiochannel.securitydanchannelhanya dapat digunakan sebagai kata kunci.Setelah terhubung, gunakan modul
socketuntuk membuka port TCP/UDP.Metode ini memblokir hingga asosiasi berhasil atau gagal.
- config(ssid: str, key: str | None = None, *, security: int = WINC.WPA_PSK, channel: int = 1) None¶
Alias dari
connect(). Disediakan untuk kompatibilitas dengan kode yang memanggilconfigpada antarmukanetworklainnya.
- start_ap(ssid: str, key: str | None = None, *, security: int = WINC.OPEN, channel: int = 1) None¶
Alias dari
connect()yang digunakan setelah membuat objek denganmode=MODE_APuntuk mengonfigurasi dan memulai access point. AP hanya mendukung keamananOPENatau WEP; jika WEP digunakan,keywajib diberikan.
- disconnect() None¶
Dalam mode STA, melepaskan asosiasi dari access point yang sedang aktif. Shield tetap aktif; panggil
connect()untuk berasosiasi kembali. Tidak melakukan apa-apa jika saat ini tidak sedang berasosiasi.
- isconnected() bool¶
Dalam mode STA, mengembalikan
Trueketika berasosiasi dengan access point dan alamat IPv4 telah diperoleh (melalui DHCP atauifconfig()). MengembalikanFalseselama masih dalam fase autentikasi / asosiasi / DHCP.
- connected_sta() List[str]¶
Dalam mode AP, mengembalikan daftar yang berisi alamat IP klien yang sedang terhubung (atau daftar kosong jika tidak ada klien yang terhubung).
- wait_for_sta(timeout: int | None) List[str]¶
Dalam mode AP, memblokir hingga klien terhubung dan mengembalikan daftar berisi alamat IP klien.
timeoutadalah waktu tunggu maksimum dalam milidetik; berikanNoneuntuk menunggu tanpa batas.
- ifconfig(config: Tuple[str, str, str, str] | None = None) Tuple[str, str, str, str]¶
Mendapatkan atau mengatur parameter antarmuka IPv4. Tuple 4 elemen berisi
(ip, subnet, gateway, dns)sebagai string dotted-quad.Dipanggil tanpa argumen: mengembalikan konfigurasi saat ini.
Dipanggil dengan 4-tuple: mengatur konfigurasi IP statis sebagai pengganti konfigurasi yang diperoleh dari DHCP.
Contoh -- tetapkan IP statis sebelum terhubung:
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)
Catatan
WINCtidak mengimplementasikan API modernAbstractNIC.ipconfig(); gunakanifconfig()di sini.
- netinfo() Tuple[int, int, str, str, str]¶
Mengembalikan 5-tuple yang mendeskripsikan asosiasi saat ini:
[0]RSSI sebagai int (dBm).[1]Mode keamanan -- salah satu dari konstanta keamanan.[2]String SSID.[3]BSSID sebagai string MAC"XX:XX:XX:XX:XX:XX".[4]Alamat IPv4 sebagai string dotted-quad.
- scan() List[Tuple[str, str, int, int, int, int]]¶
Memindai access point di sekitarnya. Mengembalikan daftar 6-tuple:
[0]String SSID.[1]BSSID sebagai string MAC"XX:XX:XX:XX:XX:XX".[2]Nomor kanal.[3]RSSI dalam dBm.[4]Mode keamanan -- salah satu dari konstanta keamanan.[5]Dicadangkan (selalu1).
Dapat dipanggil tanpa terlebih dahulu berasosiasi dengan jaringan.
- rssi() int¶
Mengembalikan RSSI dalam dBm dari access point yang sedang berasosiasi. Secara kasar:
-30sangat baik,-67cukup untuk streaming,-80sangat lemah,-90ke bawah tidak dapat digunakan. Hanya bermakna dalam mode STA ketikaisconnected()bernilaiTrue.
- fw_version() Tuple[int, int, int, int, int, int, int]¶
Mengembalikan 7-tuple yang mendeskripsikan versi firmware dan driver WINC1500:
[0]Major firmware.[1]Minor firmware.[2]Patch firmware.[3]Major driver.[4]Minor driver.[5]Patch driver.[6]Revisi hardware chip.
- fw_dump(path: str) None¶
Membaca flash internal WINC1500 dan menulis citra firmware yang dihasilkan ke file pada
pathdi filesystem OpenMV. Gunakan ini untuk mencadangkan citra yang sedang terpasang sebelum memanggilfw_update().Mengharuskan modul dibuat dengan
mode=MODE_FIRMWARE.
- fw_update(path: str) None¶
Menghapus flash internal WINC1500 dan memprogram ulang dengan citra biner pada
path. Citra harus sesuai dengan tata letak yang diharapkan oleh firmware OpenMV (biasanya disediakan oleh Atmel / Microchip bersama WINC SDK).Pemanggilan ini memblokir selama beberapa detik saat flash diprogram dan diverifikasi. Lakukan power-cycle pada OpenMV Cam setelah pemanggilan selesai agar WINC1500 memulai dari citra baru.
Mengharuskan modul dibuat dengan
mode=MODE_FIRMWARE.
Konstanta¶
- OPEN: int¶
Nilai keamanan untuk jaringan tanpa enkripsi. Diberikan ke argumen
securitydariconnect()/start_ap().
Catatan
Nilai keamanan WPA/WPA2 Enterprise (802.1X) juga tersedia. Firmware mengeksposnya dengan nama
802_1X, yang bukan merupakan identifier Python yang valid -- akseslah melaluigetattr(network.WINC, "802_1X").- MODE_BSP: int¶
Inisialisasi hanya paket dukungan board (BSP) WINC -- radio tidak dihidupkan. Digunakan oleh alur pembaruan firmware.
- MODE_FIRMWARE: int¶
Mode pembaruan firmware. Diperlukan oleh
fw_dump()danfw_update().