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בוחר את מצב הפעולה שבו המודול מתחיל:WINC.MODE_STA– תחנה / לקוח. התחבר לנקודת גישה באמצעותconnect(). זוהי ברירת המחדל.WINC.MODE_AP– נקודת גישה. הגדר את ה-AP באמצעותstart_ap(), ולאחר מכן קבל חיבורי לקוחות.WINC.MODE_P2P– WiFi Direct.WINC.MODE_BSP– העלאת ה-BSP בלבד (ללא רדיו).WINC.MODE_FIRMWARE– מצב עדכון קושחה; נדרש על ידיfw_dump()ו-fw_update().
הערה
במצב 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/WPA2 Enterprise (802.1X). הקושחה חושפת אותו תחת השם
802_1X, שאינו מזהה Python תקין – גש אליו דרךgetattr(network.WINC, "802_1X").- MODE_BSP: int¶
מאתחל את חבילת תמיכת הלוח (BSP) של ה-WINC בלבד – הרדיו אינו מועלה. משמש בתהליך עדכון הקושחה.
- MODE_FIRMWARE: int¶
מצב עדכון קושחה. נדרש על ידי
fw_dump()ו-fw_update().