class WINC – מנהל התקן של מגן WiFi#

המחלקה WINC מפעילה את מודול ה-WiFi‏ Atmel WINC1500‏ 802.11 b/g/n שעל מגן ה-WiFi של OpenMV. זמין ב-OpenMV Cam M4, M7, H7, H7 Plus ו-Pure Thermal (לוחות ה-STM32 שעבורם תוכנן מגן ה-WiFi). עבור לוחות עם WiFi מובנה (OpenMV Cam N6, OpenMV Cam RT1062, Arduino Giga) השתמש ב-WLAN במקום זאת.

דוגמה – התחברות לנקודת גישה והדפסת הכתובת:

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

דוגמה – העלאת נקודת גישה פתוחה והמתנה ללקוח:

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

בנאים#

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

יוצר אובייקט מנהל התקן WINC ומעלה את מגן ה-WiFi.

mode בוחר את מצב הפעולה שבו המודול מתחיל:

הערה

במצב AP יש ל-WINC1500 מגבלות חומרה:

  • רק לקוח אחד יכול להתחבר בכל פעם.

  • רק אבטחת OPEN או WEP נתמכת.

  • באג בקושחת מודול ה-WiFi גורם לכל ה-socket-ים המקושרים להפסיק לעבוד כאשר הלקוח מתנתק. הגדר פסק זמן ב-socket של השרת כך שהוא יזרוק חריגה שתוכל להשתמש בה כדי לפתוח אותו מחדש.

מתודות#

active(is_active: bool | None = None) bool#

מעלה או מוריד את מגן ה-WiFi.

ללא ארגומנט, מחזיר את המצב הנוכחי – True כאשר המגן מאותחל והרדיו פעיל, False אחרת.

active(True) מבצע את לחיצת היד של קושחת WINC1500 דרך SPI ומעלה את הרדיו במצב ה-mode שהוגדר. זוהי פעולה ריקה אם הממשק כבר פעיל. connect() קורא לזה אוטומטית אם הוא עדיין לא נקרא; עבור כל מתודה אחרת (scan(), rssi(), netinfo(), …) עליך לקרוא תחילה ל-active(True).

active(False) מכבה את הרדיו בחזרה (ה-WINC יורד למצב BSP בלבד) ומשחרר את פיני ה-SPI.

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

מתחבר לרשת ה-WiFi‏ ssid באמצעות הסיסמה key, מצב אבטחה security (אחד מ-OPEN, WPA_PSK או הקבוע של 802.1X) בערוץ הרדיו channel. security ו-channel הם מילות מפתח בלבד.

לאחר ההתחברות השתמש במודול socket כדי לפתוח פורטים של TCP/UDP.

מתודה זו חוסמת עד שההתחברות מסתיימת או נכשלת.

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

כינוי של connect(). מסופק לתאימות עם קוד שקורא ל-config בממשקי network אחרים.

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

כינוי של connect() המשמש לאחר בניית האובייקט עם mode=MODE_AP כדי להגדיר ולהפעיל את נקודת הגישה. ה-AP תומך רק באבטחת OPEN או WEP; אם נעשה שימוש ב-WEP, key נדרש.

disconnect() None#

במצב STA, מנתק את ההתחברות מנקודת הגישה המשויכת כעת. המגן נשאר פעיל; קרא ל-connect() כדי להתחבר מחדש. פעולה ריקה כאשר לא משויך כעת.

isconnected() bool#

במצב STA מחזיר True כאשר משויך לנקודת גישה וגם התקבלה כתובת IPv4 (דרך DHCP או ifconfig()). מחזיר False בעוד נמצא בשלב האימות / השיוך / DHCP.

connected_sta() List[str]#

במצב AP, מחזיר רשימה המכילה את כתובת ה-IP של הלקוח המחובר כעת (או רשימה ריקה אם אין לקוח מחובר).

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

במצב AP, חוסם עד שלקוח מתחבר ומחזיר רשימה המכילה את כתובת ה-IP של הלקוח. timeout הוא ההמתנה המרבית באלפיות שנייה; העבר None כדי להמתין ללא הגבלה.

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

מקבל או מגדיר פרמטרים של ממשק IPv4. הטופל בן 4 האיברים מכיל (ip, subnet, gateway, dns) כמחרוזות נקודה-רביעייה.

נקרא ללא ארגומנט: מחזיר את התצורה הנוכחית.

נקרא עם טופל בן 4 איברים: מגדיר תצורת IP סטטית במקום זו שהושגה דרך DHCP.

דוגמה – קיבוע IP סטטי לפני התחברות:

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)

הערה

WINC אינו מממש את ה-API המודרני AbstractNIC.ipconfig(); השתמש כאן ב-ifconfig().

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

מחזיר טופל בן 5 איברים המתאר את השיוך הנוכחי:

  • [0] RSSI כמספר שלם (dBm).

  • [1] מצב אבטחה – אחד מקבועי האבטחה.

  • [2] מחרוזת SSID.

  • [3] BSSID כמחרוזת MAC בפורמט "XX:XX:XX:XX:XX:XX".

  • [4] כתובת IPv4 כמחרוזת נקודה-רביעייה.

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

סורק נקודות גישה סמוכות. מחזיר רשימה של טופלים בני 6 איברים:

  • [0] מחרוזת SSID.

  • [1] BSSID כמחרוזת MAC בפורמט "XX:XX:XX:XX:XX:XX".

  • [2] מספר ערוץ.

  • [3] RSSI ב-dBm.

  • [4] מצב אבטחה – אחד מקבועי האבטחה.

  • [5] שמור (תמיד 1).

ניתן לקרוא לו ללא שיוך מוקדם לרשת.

rssi() int#

מחזיר את ה-RSSI ב-dBm של נקודת הגישה המשויכת כעת. בגדול: -30 הוא מצוין, -67 תקין להזרמה, -80 גבולי, -90 ומטה אינו שמיש. בעל משמעות רק במצב STA כאשר isconnected() הוא True.

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

מחזיר טופל בן 7 איברים המתאר את גרסאות הקושחה ומנהל ההתקן של WINC1500:

  • [0] קושחה ראשי (major).

  • [1] קושחה משני (minor).

  • [2] תיקון (patch) קושחה.

  • [3] מנהל התקן ראשי (major).

  • [4] מנהל התקן משני (minor).

  • [5] תיקון (patch) מנהל התקן.

  • [6] גרסת חומרת השבב.

fw_dump(path: str) None#

קורא את זיכרון הפלאש (flash) הפנימי של WINC1500 וכותב את תמונת הקושחה המתקבלת לקובץ ב-path במערכת הקבצים של OpenMV. השתמש בכך כדי לגבות את התמונה המותקנת כעת לפני קריאה ל-fw_update().

דורש שהמודול ייבנה עם mode=MODE_FIRMWARE.

fw_update(path: str) None#

מוחק את זיכרון הפלאש (flash) הפנימי של WINC1500 ומתכנת אותו עם תמונת הקובץ הבינארי ב-path. התמונה חייבת להתאים לפריסה שקושחת OpenMV מצפה לה (מסופקת בדרך כלל על ידי Atmel / Microchip עם ה-WINC SDK).

הקריאה חוסמת למשך מספר שניות בזמן שזיכרון הפלאש מתוכנת ומאומת. בצע מחזור הפעלה (power-cycle) ל-OpenMV Cam לאחר שהקריאה חוזרת כדי שה-WINC1500 יתחיל מהתמונה החדשה.

דורש שהמודול ייבנה עם mode=MODE_FIRMWARE.

קבועים#

OPEN: int#

ערך אבטחה עבור רשת לא מוצפנת. העבר לארגומנט security של connect() / start_ap().

WPA_PSK: int#

ערך אבטחה עבור WPA/WPA2 עם מפתח משותף מראש. ברירת המחדל עבור connect().

הערה

קיים גם ערך אבטחה של WPA/WPA2 Enterprise (802.1X). הקושחה חושפת אותו תחת השם 802_1X, שאינו מזהה Python תקין – גש אליו דרך getattr(network.WINC, "802_1X").

MODE_STA: int#

מצב תחנה – התחברות לנקודת גישה כלקוח. מצב הבנאי של ברירת המחדל.

MODE_AP: int#

מצב נקודת גישה – ה-WINC הופך ל-AP שאליו לקוחות משתייכים.

MODE_P2P: int#

מצב WiFi-Direct (עמית-לעמית).

MODE_BSP: int#

מאתחל את חבילת תמיכת הלוח (BSP) של ה-WINC בלבד – הרדיו אינו מועלה. משמש בתהליך עדכון הקושחה.

MODE_FIRMWARE: int#

מצב עדכון קושחה. נדרש על ידי fw_dump() ו-fw_update().