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 WINC dan menghidupkan shield WiFi.

mode memilih mode operasi yang digunakan modul saat memulai:

Catatan

Dalam mode AP, WINC1500 memiliki batasan hardware:

  • Hanya satu klien yang dapat terhubung dalam satu waktu.

  • Hanya keamanan OPEN atau 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 -- True selama shield diinisialisasi dan radio aktif, False jika tidak.

active(True) melakukan jabat tangan firmware WINC1500 melalui SPI dan menghidupkan radio dalam mode yang 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 memanggil active(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 ssid menggunakan kata sandi key, mode keamanan security (salah satu dari OPEN, WPA_PSK atau konstanta 802.1X) pada radio channel. security dan channel hanya dapat digunakan sebagai kata kunci.

Setelah terhubung, gunakan modul socket untuk 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 memanggil config pada antarmuka network lainnya.

start_ap(ssid: str, key: str | None = None, *, security: int = WINC.OPEN, channel: int = 1) None

Alias dari connect() yang digunakan setelah membuat objek dengan mode=MODE_AP untuk mengonfigurasi dan memulai access point. AP hanya mendukung keamanan OPEN atau WEP; jika WEP digunakan, key wajib 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 True ketika berasosiasi dengan access point dan alamat IPv4 telah diperoleh (melalui DHCP atau ifconfig()). Mengembalikan False selama 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. timeout adalah waktu tunggu maksimum dalam milidetik; berikan None untuk 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

WINC tidak mengimplementasikan API modern AbstractNIC.ipconfig(); gunakan ifconfig() 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 (selalu 1).

Dapat dipanggil tanpa terlebih dahulu berasosiasi dengan jaringan.

rssi() int

Mengembalikan RSSI dalam dBm dari access point yang sedang berasosiasi. Secara kasar: -30 sangat baik, -67 cukup untuk streaming, -80 sangat lemah, -90 ke bawah tidak dapat digunakan. Hanya bermakna dalam mode STA ketika isconnected() bernilai True.

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 path di filesystem OpenMV. Gunakan ini untuk mencadangkan citra yang sedang terpasang sebelum memanggil fw_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 security dari connect() / start_ap().

WPA_PSK: int

Nilai keamanan untuk WPA/WPA2 dengan pre-shared key. Default untuk connect().

Catatan

Nilai keamanan WPA/WPA2 Enterprise (802.1X) juga tersedia. Firmware mengeksposnya dengan nama 802_1X, yang bukan merupakan identifier Python yang valid -- akseslah melalui getattr(network.WINC, "802_1X").

MODE_STA: int

Mode stasiun -- terhubung ke access point sebagai klien. Mode konstruktor default.

MODE_AP: int

Mode access point -- WINC menjadi AP tempat klien berasosiasi.

MODE_P2P: int

Mode WiFi Direct (peer-to-peer).

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() dan fw_update().