class WINC – WiFi shield sürücüsü

WINC sınıfı, OpenMV WiFi Shield üzerindeki Atmel WINC1500 802.11 b/g/n WiFi modülünü sürer. OpenMV Cam M4, M7, H7, H7 Plus ve Pure Thermal’da (WiFi shield’in tasarlandığı STM32 kartları) kullanılabilir. Yerleşik WiFi’ye sahip kartlar (OpenMV Cam N6, OpenMV Cam RT1062, Arduino Giga) için bunun yerine WLAN kullanın.

Örnek – bir erişim noktasına bağlanın ve adresi yazdırın:

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

Örnek – açık bir erişim noktası başlatın ve bir istemci bekleyin:

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

Kurucular

class network.WINC(mode: int = WINC.MODE_STA) None

Bir WINC sürücü nesnesi oluşturur ve WiFi shield’i açar.

mode, modülün başladığı çalışma modunu seçer:

Not

AP modunda WINC1500’ün donanım sınırlamaları vardır:

  • Aynı anda yalnızca bir istemci bağlanabilir.

  • Yalnızca OPEN veya WEP güvenliği desteklenir.

  • Bir WiFi modülü aygıt yazılımı (firmware) hatası, istemci bağlantısı kesildiğinde bağlı (bound) tüm soketlerin çalışmayı durdurmasına neden olur. Sunucu soketinde bir zaman aşımı ayarlayın; böylece yeniden açmak için kullanabileceğiniz bir istisna fırlatır.

Yöntemler

active(is_active: bool | None = None) bool

WiFi shield’i açar veya kapatır.

Argüman olmadan, geçerli durumu döndürür – shield başlatıldığında ve radyo açık olduğunda True, aksi takdirde False.

active(True), WINC1500 aygıt yazılımı (firmware) el sıkışmasını SPI üzerinden gerçekleştirir ve radyoyu yapılandırılmış mode ile açar. Arayüz zaten etkinse bir işlem yapmaz. connect(), henüz çağrılmamışsa bunu otomatik olarak çağırır; diğer herhangi bir yöntem için (scan(), rssi(), netinfo(), …) önce active(True) çağrısını yapmanız gerekir.

active(False), radyoyu yeniden kapatır (WINC yalnızca BSP moduna düşer) ve SPI pinlerini serbest bırakır.

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

security güvenlik modunu (OPEN, WPA_PSK veya 802.1X sabitlerinden biri) ve channel radyo kanalını kullanarak ssid WiFi ağıyla key parolasıyla ilişkilendirir. security ve channel yalnızca anahtar sözcüktür.

Bağlandıktan sonra TCP/UDP portlarını açmak için socket modülünü kullanın.

Bu yöntem, ilişkilendirme tamamlanana veya başarısız olana kadar bloke olur.

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

connect() yönteminin diğer adıdır. Diğer network arayüzlerinde config çağıran kodlarla uyumluluk için sağlanmıştır.

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

Nesne mode=MODE_AP ile oluşturulduktan sonra erişim noktasını yapılandırmak ve başlatmak için kullanılan connect() yönteminin diğer adıdır. AP yalnızca OPEN veya WEP güvenliğini destekler; WEP kullanılıyorsa key gereklidir.

disconnect() None

STA modunda, o anda ilişkilendirilmiş erişim noktasıyla ilişkilendirmeyi kaldırır. Shield etkin kalır; yeniden ilişkilendirmek için connect() çağrısını yapın. O anda ilişkilendirilmiş değilse işlem yapmaz.

isconnected() bool

STA modunda, bir erişim noktasıyla ilişkilendirildiğinde ve bir IPv4 adresi alındığında (DHCP veya ifconfig() aracılığıyla) True döndürür. Hâlâ kimlik doğrulama / ilişkilendirme / DHCP aşamasındayken False döndürür.

connected_sta() List[str]

AP modunda, o anda bağlı olan istemcinin IP adresini içeren bir liste döndürür (veya bağlı istemci yoksa boş bir liste).

wait_for_sta(timeout: int | None) List[str]

AP modunda, bir istemci bağlanana kadar bloke olur ve istemcinin IP adresini içeren bir liste döndürür. timeout milisaniye cinsinden maksimum bekleme süresidir; süresiz beklemek için None geçirin.

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

IPv4 arayüz parametrelerini alır veya ayarlar. 4’lü demet (ip, subnet, gateway, dns) değerlerini noktalı-dörtlü dizeler olarak içerir.

Argümansız çağrıldığında: geçerli yapılandırmayı döndürür.

Bir 4’lü demet ile çağrıldığında: DHCP ile edinilenin yerine statik bir IP yapılandırması ayarlar.

Örnek – bağlanmadan önce statik bir IP sabitleyin:

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)

Not

WINC, modern AbstractNIC.ipconfig() API’sini uygulamaz; burada ifconfig() kullanın.

netinfo() Tuple[int, int, str, str, str]

Geçerli ilişkilendirmeyi tanımlayan bir 5’li demet döndürür:

  • [0] RSSI, bir tam sayı olarak (dBm).

  • [1] Güvenlik modu – güvenlik sabitlerinden biri.

  • [2] SSID dizesi.

  • [3] BSSID, bir "XX:XX:XX:XX:XX:XX" MAC dizesi olarak.

  • [4] IPv4 adresi, noktalı-dörtlü bir dize olarak.

scan() List[Tuple[str, str, int, int, int, int]]

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

  • [0] SSID dizesi.

  • [1] BSSID, bir "XX:XX:XX:XX:XX:XX" MAC dizesi olarak.

  • [2] Kanal numarası.

  • [3] RSSI, dBm cinsinden.

  • [4] Güvenlik modu – güvenlik sabitlerinden biri.

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

Bir ağla önceden ilişkilendirilmeden çağrılabilir.

rssi() int

O anda ilişkilendirilmiş erişim noktasının RSSI değerini dBm cinsinden döndürür. Kabaca: -30 mükemmel, -67 akış için iyi, -80 sınırda, -90 ve altı kullanılamaz. Yalnızca STA modunda ve isconnected() True iken anlamlıdır.

fw_version() Tuple[int, int, int, int, int, int, int]

WINC1500 aygıt yazılımı (firmware) ve sürücü sürümlerini tanımlayan bir 7’li demet döndürür:

  • [0] Aygıt yazılımı (firmware) ana sürümü.

  • [1] Aygıt yazılımı (firmware) alt sürümü.

  • [2] Aygıt yazılımı (firmware) yaması.

  • [3] Sürücü ana sürümü.

  • [4] Sürücü alt sürümü.

  • [5] Sürücü yaması.

  • [6] Çip donanım revizyonu.

fw_dump(path: str) None

WINC1500’ün dahili flash belleğini okur ve ortaya çıkan aygıt yazılımı (firmware) görüntüsünü OpenMV’nin dosya sistemindeki path konumundaki dosyaya yazar. Bunu fw_update() çağrısından önce o anda yüklü olan görüntüyü yedeklemek için kullanın.

Modülün mode=MODE_FIRMWARE ile oluşturulmuş olmasını gerektirir.

fw_update(path: str) None

WINC1500’ün dahili flash belleğini siler ve path konumundaki ikili görüntüyle programlar. Görüntü, OpenMV aygıt yazılımının (firmware) beklediği düzenle eşleşmelidir (genellikle Atmel / Microchip tarafından WINC SDK ile sağlanır).

Çağrı, flash bellek programlanıp doğrulanırken birkaç saniye boyunca bloke olur. Çağrı döndükten sonra, WINC1500’ün yeni görüntüden başlaması için OpenMV Cam’in güç döngüsünü yapın.

Modülün mode=MODE_FIRMWARE ile oluşturulmuş olmasını gerektirir.

Sabitler

OPEN: int

Şifrelenmemiş bir ağ için güvenlik değeri. connect() / start_ap() yönteminin security argümanına geçirin.

WPA_PSK: int

Önceden paylaşılan bir anahtarla WPA/WPA2 için güvenlik değeri. connect() için varsayılandır.

Not

Ayrıca bir WPA/WPA2 Enterprise (802.1X) güvenlik değeri de mevcuttur. Aygıt yazılımı (firmware) bunu 802_1X adıyla sunar; bu geçerli bir Python tanımlayıcısı değildir – getattr(network.WINC, "802_1X") aracılığıyla erişin.

MODE_STA: int

İstasyon modu – bir erişim noktasına istemci olarak bağlanın. Varsayılan kurucu modu.

MODE_AP: int

Erişim noktası modu – WINC, istemcilerin ilişkilendirildiği AP olur.

MODE_P2P: int

WiFi-Direct (eşler arası) modu.

MODE_BSP: int

Yalnızca WINC kart destek paketini (BSP) başlatır – radyo açılmaz. Aygıt yazılımı (firmware) güncelleme akışı tarafından kullanılır.

MODE_FIRMWARE: int

Aygıt yazılımı (firmware) güncelleme modu. fw_dump() ve fw_update() tarafından gerektirilir.