class WLAN – yerleşik WiFi arayüzlerini denetler

WLAN sınıfı, modern OpenMV Cam’lerdeki yerleşik WiFi radyolarını sürer. Aynı sınıf, kartın WiFi MCU’suna bağlı olarak iki farklı alt sürücüyü sarmalar:

  • CYW43 (Infineon CYW43xxx Murata WiFi modülü). OpenMV Cam N6, OpenMV Cam RT1062, Arduino Portenta H7, Arduino Nicla Vision ve Arduino Giga R1 WiFi tarafından kullanılır.

  • NINA W10 (u-blox NINA-W10 / ESP32-WROOM). Arduino Nano RP2040 Connect tarafından kullanılır.

İki sürücü de aynı metot adlarını sunar, ancak birkaç argümanda ve kabul edilen config() anahtarları kümesinde farklılık gösterir. Farklar aşağıda belirtilmiştir.

Eski WINC1500 WiFi shield’ına (M4 / M7 / H7 / H7 Plus / Pure Thermal) sahip OpenMV kameralar bunun yerine WINC kullanır.

Örnek kullanım:

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"))

Yapıcılar

class network.WLAN(interface_id: int = WLAN.IF_STA) None

Bir WLAN arayüz nesnesi oluşturur.

interface_id hangi arayüz üzerinde çalışılacağını seçer:

  • WLAN.IF_STA – istasyon / istemci modu. connect() ile bir üst erişim noktasına bağlanın. Bu, varsayılandır.

  • WLAN.IF_AP – erişim noktası modu. AP’yi config() ile yapılandırın ve istemci bağlantılarını kabul edin.

Aynı fiziksel radyo her iki arayüzü de destekler; birini oluşturmak diğerini engellemez.

Metotlar

active(is_active: bool | None = None) bool

WiFi radyosunu açar veya kapatır.

Argümansız çağrıldığında geçerli durumu döndürür – radyo açıkken True, aksi halde False.

active(True) WiFi MCU’sunu güçlendirir, aygıt yazılımını (firmware) yükler (CYW43, firmware blob’unu flash bellekten çeker; NINA, o anda flash’lanmış firmware sürümünü doğrular) ve bu arayüz için lwIP netif’i başlatır. Diğer tüm metotlar – connect(), scan(), ipconfig() ve benzerleri – arayüzün etkin olmasını gerektirir.

active(False) radyoyu yeniden kapatır. STA arayüzünde bu, ayrıca geçerli AP’den ayrılır ve netif’i serbest bırakır.

connect(ssid: str, key: str | None = None, *, security: int = -1, bssid: bytes | None = None, channel: int = -1) None

STA arayüzünü verilen erişim noktasıyla ilişkilendirir.

ssid – ağ SSID’si (string veya bytes).

key – parola / önceden paylaşılan anahtar. Açık bir ağ için None geçin.

security (yalnızca anahtar sözcük) – SEC_* sabitlerinden biri. -1 (varsayılan) otomatik seçer: key boş olduğunda SEC_OPEN, aksi halde SEC_WPA_WPA2.

bssid (yalnızca anahtar sözcük, yalnızca CYW43) – ilişkilendirmeyi bu 6 baytlık MAC adresine sahip AP ile sınırlandırır. NINA sürücüsü tarafından göz ardı edilir.

channel (yalnızca anahtar sözcük) – tercih edilen radyo kanalı. Varsayılan, “sürücünün seçmesine izin ver”.

disconnect() None

STA modunda, o anda ilişkilendirilmiş erişim noktasından ayrılır. Arayüz etkin kalır; yeniden ilişkilendirmek için connect() çağrısını tekrarlayın veya radyoyu tamamen kapatmak için active() (False) kullanın. O anda ilişkilendirilmemişken işlem yapmaz.

isconnected() bool

STA modunda, bir erişim noktasıyla ilişkilendirilmiş ve DHCP’den bir IPv4 adresi alınmış (veya ipconfig() aracılığıyla statik olarak atanmış) olduğunda True döndürür. Bağlantı hâlâ kimlik doğrulama/ilişkilendirme/DHCP aşamasındayken False döndürür.

AP modunda, en az bir istasyon katıldığında True döndürür.

scan(*, passive: bool = False, ssid: bytes | None = None, bssid: bytes | None = None) List[Tuple[bytes, bytes, int, int, int, int]]

Yakındaki erişim noktalarını tarar ve 6’lı demetlerden oluşan bir liste döndürür:

  • [0] SSID (bytes; gizli ağlar için boş).

  • [1] BSSID (6 baytlık MAC, bytes). binascii.hexlify() ile dönüştürün.

  • [2] Kanal numarası.

  • [3] dBm cinsinden RSSI.

  • [4] Güvenlik modu (SEC_* sabitlerinden biri).

  • [5] Ayrılmış (her zaman 1).

Tüm anahtar sözcük argümanları yalnızca CYW43 içindir:

  • passiveTrue ise, varsayılan etkin probe-request taraması yerine pasif tarama kullanır.

  • ssid – taramayı tek bir SSID ile sınırlandırır.

  • bssid – taramayı tek bir BSSID ile sınırlandırır.

Tarama yalnızca bir STA arayüzünde anlamlıdır.

status() int
status(param: str) Any

Bağlantı durumunu sorgular.

Argümansız çağrıldığında bağlantı durumunu küçük bir tamsayı olarak döndürür (sürücüye özgü kodlama – truthy değer “ilişkilendirilmiş” anlamına gelir).

String argümanıyla:

  • "rssi" – STA modunda, geçerli RSSI’yi dBm cinsinden döndürür.

  • "stations" – AP modunda, bağlı istasyonların bir listesini döndürür. CYW43 [(mac_bytes,), ...] döndürür; NINA [ip_string, ...] döndürür.

ifconfig(config: Tuple[str, str, str, str] | None = None) Tuple[str, str, str, str] | None

IPv4 arayüz parametrelerini (ip, subnet, gateway, dns) noktalı dörtlü string’lerinden oluşan 4’lü demet olarak alır veya ayarlar.

Not

Yeni kod için ipconfig() tercih edin:

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 arayüz parametrelerini alır veya ayarlar. CYW43 sürücüsü standart lwIP uygulamasına devreder ve AbstractNIC.ipconfig() üzerinde belgelenen tüm anahtar kümesini destekler. NINA sürücüsü arayüz başına daha küçük bir alt küme uygular – dhcp4 ve has_dhcp4 (salt okunur), artı alma / ayarlama için addr4 ve gw4.

config(param: str) Any
config(**kwargs: Any) None

WiFi’ye özgü arayüz parametrelerini alır veya ayarlar.

Tek bir konumsal string argümanıyla, o parametrenin değerini döndürür. Anahtar sözcük argümanlarıyla, bir veya daha fazla parametreyi aynı anda ayarlar – çalışan bir AP’yi etkileyen değişiklikler, AP’nin otomatik olarak kapatılıp tekrar açılmasına neden olur.

Örnek:

# 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 sürücüsü – alınabilir parametreler:

  • "antenna" – anten seçici (int).

  • "channel" – geçerli kanal.

  • "ssid" / "essid" – geçerli SSID (string).

  • "security" – AP’nin kimlik doğrulama modu (SEC_* değerlerinden biri).

  • "mac" – arayüz MAC adresi (6 bytes).

  • "pm" – güç yönetimi değeri.

  • "txpower" – dBm cinsinden iletim gücü.

  • "hostname" – DHCP/mDNS ana bilgisayar adı. Kullanımdan kaldırıldı; bunun yerine network.hostname() kullanın.

CYW43 sürücüsü – ayarlanabilir parametreler:

  • antenna=<int> – anten seçici.

  • channel=<int> – AP kanalı.

  • ssid=<str> / essid=<str> – AP SSID’si.

  • key=<str> / password=<str> – AP önceden paylaşılan anahtarı.

  • security=<int> – AP kimlik doğrulama modu (SEC_* değerlerinden biri).

  • pm=<int> – güç yönetimi modu (PM_NONE, PM_PERFORMANCE, PM_POWERSAVE değerlerinden biri).

  • monitor=<int> – monitör / tüm-çoklu yayın (all-multicast) modunu etkinleştirir.

  • txpower=<int> – dBm cinsinden iletim gücü.

  • trace=<int> – dahili sürücü izleme bit maskesi.

  • hostname=<str> – DHCP/mDNS ana bilgisayar adı. Kullanımdan kaldırıldı; bunun yerine network.hostname() kullanın.

NINA sürücüsü – alınabilir parametreler:

  • "ssid" – geçerli SSID (string).

  • "security" – AP’nin kimlik doğrulama modu.

  • "mac" / "bssid" – arayüz MAC adresi (6 bytes).

  • "fw_version"(major, minor, patch) şeklinde 3’lü demet.

NINA sürücüsü – ayarlanabilir parametreler: çağrı connect() metoduna iletilir ve aynı anahtar sözcük argümanlarını kabul eder (ssid, key, security, channel). Yalnızca AP arayüzünde geçerlidir.

deinit() None

WiFi MCU’sunu güç döngüsünden geçirir ve sürücünün tuttuğu her kaynağı (firmware arabellekleri, lwIP netif, SPI/SDIO veri yolu) serbest bırakır. Bunu çağırdıktan sonra WLAN nesnesinin kullanılmadan önce yeniden oluşturulması gerekir. Tam bir sıfırlama gerektiğinde (örneğin, radyonun firmware’ini yeniden flash’lamadan önce veya takılı kalmış bir sürücü durumundan kurtarmak için) active() (False) yerine bunu kullanın. Yalnızca CYW43.

send_ethernet(buf: bytes) None

Ham Ethernet çerçevesi buf‘u IP yığınını atlayarak doğrudan sürücünün iletim yoluna enjekte eder. Yalnızca L2 tüketicileri için tasarlanmıştır – köprüleme, özel EtherType protokolleri ve benzerleri. Çerçeve hedef/kaynak MAC ve EtherType içermelidir (FCS yok – onu donanım ekler). Yalnızca CYW43.

ioctl(cmd: int, buf: bytearray) None

Sürücüye özgü bir denetim komutu verir. cmd, alttaki radyo firmware’i tarafından tanımlanan sayısal ioctl kodudur ve buf, hem komut yükü hem de yanıt için kullanılan değiştirilebilir bir arabellektir. Geçerli cmd değerleri kümesi sürücüye özgüdür ve CYW43 ile NINA arasında taşınabilir değildir. Çoğunlukla düşük seviyeli test betikleri ve çip-başlatma kodu tarafından kullanılır.

Sabitler

IF_STA: int

İstasyon / istemci arayüzü tanımlayıcısı. STA modunu seçmek için yapıcıya geçin.

IF_AP: int

Erişim noktası arayüzü tanımlayıcısı. AP modunu seçmek için yapıcıya geçin.

SEC_OPEN: int

Şifrelenmemiş bir ağ için güvenlik değeri. Her iki sürücüde de mevcuttur.

SEC_WPA_WPA2: int

Önceden paylaşılan anahtarlı WPA / WPA2 için güvenlik değeri. connect() metoduna bir anahtar sağlandığında varsayılandır. Her iki sürücüde de mevcuttur.

SEC_WPA3: int

Önceden paylaşılan anahtarlı WPA3 (SAE) için güvenlik değeri. Yalnızca CYW43.

SEC_WPA2_WPA3: int

WPA2 / WPA3 geçiş modu için güvenlik değeri. Yalnızca CYW43.

SEC_WEP: int

WEP (Wired Equivalent Privacy) için güvenlik değeri. Eski erişim noktalarıyla uyumluluk için sağlanmıştır – WEP kriptografik olarak kırılmıştır ve yeni dağıtımlarda kullanılmamalıdır. Yalnızca NINA.

OPEN: int

SEC_OPEN için geriye dönük uyumluluk takma adı. Yeni kod SEC_OPEN kullanmalıdır. Yalnızca NINA.

WEP: int

SEC_WEP için geriye dönük uyumluluk takma adı. Yeni kod SEC_WEP kullanmalıdır. Yalnızca NINA.

WPA_PSK: int

SEC_WPA_WPA2 için geriye dönük uyumluluk takma adı. Yeni kod SEC_WPA_WPA2 kullanmalıdır. Yalnızca NINA.

PM_NONE: int

WiFi güç yönetimini devre dışı bırakmak için config(pm=...) metoduna geçin. Yalnızca CYW43.

PM_PERFORMANCE: int

Performans için ayarlanmış WiFi güç yönetimini etkinleştirmek için config(pm=...) metoduna geçin. Yalnızca CYW43.

PM_POWERSAVE: int

Maksimum pil ömrü için ayarlanmış WiFi güç yönetimini etkinleştirmek için config(pm=...) metoduna geçin. Yalnızca CYW43.