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
WLANarayüz nesnesi oluşturur.interface_idhangi 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’yiconfig()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 haldeFalse.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çinNonegeçin.security(yalnızca anahtar sözcük) –SEC_*sabitlerinden biri.-1(varsayılan) otomatik seçer:keyboş olduğundaSEC_OPEN, aksi haldeSEC_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çinactive()(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ğundaTruedöndürür. Bağlantı hâlâ kimlik doğrulama/ilişkilendirme/DHCP aşamasındaykenFalsedöndürür.AP modunda, en az bir istasyon katıldığında
Truedö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 zaman1).
Tüm anahtar sözcük argümanları yalnızca CYW43 içindir:
passive–Trueise, 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 –dhcp4vehas_dhcp4(salt okunur), artı alma / ayarlama içinaddr4vegw4.
- 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 (6bytes)."pm"– güç yönetimi değeri."txpower"– dBm cinsinden iletim gücü."hostname"– DHCP/mDNS ana bilgisayar adı. Kullanımdan kaldırıldı; bunun yerinenetwork.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_POWERSAVEdeğ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 yerinenetwork.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 (6bytes)."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
WLANnesnesinin 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 vebuf, hem komut yükü hem de yanıt için kullanılan değiştirilebilir bir arabellektir. Geçerlicmddeğ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¶
- 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_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_OPENiçin geriye dönük uyumluluk takma adı. Yeni kodSEC_OPENkullanmalıdır. Yalnızca NINA.
- WEP: int¶
SEC_WEPiçin geriye dönük uyumluluk takma adı. Yeni kodSEC_WEPkullanmalıdır. Yalnızca NINA.
- WPA_PSK: int¶
SEC_WPA_WPA2için geriye dönük uyumluluk takma adı. Yeni kodSEC_WPA_WPA2kullanmalı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.