class WINC -- trình điều khiển shield WiFi¶
Lớp WINC điều khiển mô-đun WiFi Atmel WINC1500 802.11 b/g/n trên OpenMV WiFi Shield. Có sẵn trên OpenMV Cam M4, M7, H7, H7 Plus và Pure Thermal (các bo mạch STM32 mà shield WiFi được thiết kế cho). Đối với các bo mạch có WiFi tích hợp (OpenMV Cam N6, OpenMV Cam RT1062, Arduino Giga), hãy dùng WLAN thay thế.
Ví dụ -- kết nối với điểm truy cập và in địa chỉ:
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())
Ví dụ -- khởi động điểm truy cập mở và chờ kết nối từ client:
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))
Hàm khởi tạo¶
- class network.WINC(mode: int = WINC.MODE_STA) None¶
Tạo đối tượng trình điều khiển
WINCvà khởi động shield WiFi.modechọn chế độ hoạt động mà mô-đun khởi động:WINC.MODE_STA-- trạm / client. Kết nối với điểm truy cập bằngconnect(). Đây là chế độ mặc định.WINC.MODE_AP-- điểm truy cập. Cấu hình AP bằngstart_ap(), sau đó chấp nhận kết nối client.WINC.MODE_P2P-- WiFi Direct.WINC.MODE_BSP-- chỉ khởi động BSP (không có radio).WINC.MODE_FIRMWARE-- chế độ cập nhật firmware; được yêu cầu bởifw_dump()vàfw_update().
Ghi chú
Ở chế độ AP, WINC1500 có các giới hạn phần cứng:
Chỉ một client có thể kết nối tại một thời điểm.
Chỉ bảo mật
OPENhoặc WEP được hỗ trợ.Một lỗi firmware trong mô-đun WiFi khiến các socket đã gắn kết ngừng hoạt động khi client ngắt kết nối. Đặt timeout trên socket máy chủ để nó tạo ra một ngoại lệ mà bạn có thể sử dụng để mở lại socket đó.
Phương thức¶
- active(is_active: bool | None = None) bool¶
Khởi động hoặc tắt shield WiFi.
Khi không có đối số, trả về trạng thái hiện tại --
Truekhi shield đã được khởi tạo và radio đang hoạt động,Falsetrong trường hợp khác.active(True)thực hiện bắt tay firmware WINC1500 qua SPI và khởi động radio ởmodeđã cấu hình. Đây là thao tác không làm gì nếu giao diện đã đang hoạt động.connect()tự động gọi phương thức này nếu chưa được gọi; đối với bất kỳ phương thức nào khác (scan(),rssi(),netinfo(), ...) bạn phải gọiactive(True)trước.active(False)tắt radio (WINC chuyển về chế độ BSP only) và giải phóng các chân SPI.
- connect(ssid: str, key: str | None = None, *, security: int = WINC.WPA_PSK, channel: int = 1) None¶
Kết nối với mạng WiFi
ssidbằng mật khẩukey, chế độ bảo mậtsecurity(một trongOPEN,WPA_PSKhoặc hằng số 802.1X) trên kênh radiochannel.securityvàchannellà chỉ từ khóa.Sau khi kết nối, hãy sử dụng mô-đun
socketđể mở các cổng TCP/UDP.Phương thức này chặn cho đến khi quá trình liên kết hoàn tất hoặc thất bại.
- config(ssid: str, key: str | None = None, *, security: int = WINC.WPA_PSK, channel: int = 1) None¶
Bí danh của
connect(). Được cung cấp để tương thích với code gọiconfigtrên các giao diệnnetworkkhác.
- start_ap(ssid: str, key: str | None = None, *, security: int = WINC.OPEN, channel: int = 1) None¶
Bí danh của
connect()được sử dụng sau khi khởi tạo đối tượng vớimode=MODE_APđể cấu hình và khởi động điểm truy cập. AP chỉ hỗ trợ bảo mậtOPENhoặc WEP; nếu WEP được sử dụng thìkeylà bắt buộc.
- disconnect() None¶
Ở chế độ STA, hủy liên kết khỏi điểm truy cập đang liên kết. Shield vẫn hoạt động; gọi
connect()để liên kết lại. Không làm gì khi hiện không liên kết.
- isconnected() bool¶
Ở chế độ STA, trả về
Truekhi đã liên kết với điểm truy cập và đã nhận được địa chỉ IPv4 (qua DHCP hoặcifconfig()). Trả vềFalsetrong khi vẫn đang ở giai đoạn xác thực / liên kết / DHCP.
- connected_sta() List[str]¶
Ở chế độ AP, trả về danh sách chứa địa chỉ IP của client đang kết nối (hoặc danh sách rỗng nếu không có client nào kết nối).
- wait_for_sta(timeout: int | None) List[str]¶
Ở chế độ AP, chặn cho đến khi client kết nối và trả về danh sách chứa địa chỉ IP của client.
timeoutlà thời gian chờ tối đa tính bằng mili giây; truyềnNoneđể chờ vô hạn.
- ifconfig(config: Tuple[str, str, str, str] | None = None) Tuple[str, str, str, str]¶
Lấy hoặc đặt các tham số giao diện IPv4. 4-tuple chứa
(ip, subnet, gateway, dns)dưới dạng các chuỗi dấu chấm-quad.Gọi không có đối số: trả về cấu hình hiện tại.
Gọi với 4-tuple: đặt cấu hình IP tĩnh thay thế cho cấu hình đã nhận qua DHCP.
Ví dụ -- gắn IP tĩnh trước khi kết nối:
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)
Ghi chú
WINCkhông triển khai APIAbstractNIC.ipconfig()hiện đại; hãy dùngifconfig()ở đây.
- netinfo() Tuple[int, int, str, str, str]¶
Trả về 5-tuple mô tả liên kết hiện tại:
[0]RSSI dưới dạng int (dBm).[1]Chế độ bảo mật -- một trong các hằng số bảo mật.[2]Chuỗi SSID.[3]BSSID dưới dạng chuỗi MAC"XX:XX:XX:XX:XX:XX".[4]Địa chỉ IPv4 dưới dạng chuỗi dấu chấm-quad.
- scan() List[Tuple[str, str, int, int, int, int]]¶
Quét các điểm truy cập lân cận. Trả về danh sách các 6-tuple:
[0]Chuỗi SSID.[1]BSSID dưới dạng chuỗi MAC"XX:XX:XX:XX:XX:XX".[2]Số kênh.[3]RSSI tính bằng dBm.[4]Chế độ bảo mật -- một trong các hằng số bảo mật.[5]Dành riêng (luôn là1).
Có thể gọi mà không cần liên kết với mạng trước.
- rssi() int¶
Trả về RSSI tính bằng dBm của điểm truy cập đang liên kết. Ước chừng:
-30là xuất sắc,-67là ổn cho streaming,-80là ranh giới,-90trở xuống là không sử dụng được. Chỉ có ý nghĩa ở chế độ STA khiisconnected()làTrue.
- fw_version() Tuple[int, int, int, int, int, int, int]¶
Trả về 7-tuple mô tả các phiên bản firmware và driver của WINC1500:
[0]Phiên bản chính của firmware.[1]Phiên bản phụ của firmware.[2]Bản vá của firmware.[3]Phiên bản chính của driver.[4]Phiên bản phụ của driver.[5]Bản vá của driver.[6]Phiên bản phần cứng chip.
- fw_dump(path: str) None¶
Đọc bộ nhớ flash nội bộ của WINC1500 và ghi ảnh firmware kết quả vào file tại
pathtrên hệ thống file của OpenMV. Dùng để sao lưu ảnh đang cài đặt trước khi gọifw_update().Yêu cầu mô-đun đã được khởi tạo với
mode=MODE_FIRMWARE.
- fw_update(path: str) None¶
Xóa bộ nhớ flash nội bộ của WINC1500 và lập trình lại bằng ảnh nhị phân tại
path. Ảnh phải khớp với bố cục mà firmware OpenMV mong đợi (thường được cung cấp bởi Atmel / Microchip cùng với WINC SDK).Lời gọi bị chặn trong vài giây trong khi flash đang được lập trình và xác minh. Tắt và bật lại nguồn OpenMV Cam sau khi lời gọi trả về để WINC1500 khởi động từ ảnh mới.
Yêu cầu mô-đun đã được khởi tạo với
mode=MODE_FIRMWARE.
Hằng số¶
- OPEN: int¶
Giá trị bảo mật cho mạng không mã hóa. Truyền vào đối số
securitycủaconnect()/start_ap().
Ghi chú
Cũng tồn tại một giá trị bảo mật WPA/WPA2 Enterprise (802.1X). Firmware hiển thị nó dưới tên
802_1X, không phải là định danh Python hợp lệ -- hãy truy cập nó quagetattr(network.WINC, "802_1X").- MODE_STA: int¶
Chế độ trạm -- kết nối với điểm truy cập với tư cách là client. Chế độ hàm khởi tạo mặc định.
- MODE_BSP: int¶
Chỉ khởi tạo gói hỗ trợ bo mạch WINC -- radio không được khởi động. Được sử dụng trong quy trình cập nhật firmware.
- MODE_FIRMWARE: int¶
Chế độ cập nhật firmware. Được yêu cầu bởi
fw_dump()vàfw_update().