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 WINC và khởi động shield WiFi.

mode chọn chế độ hoạt động mà mô-đun khởi động:

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 OPEN hoặ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 -- True khi shield đã được khởi tạo và radio đang hoạt động, False trong 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ọi active(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 ssid bằng mật khẩu key, chế độ bảo mật security (một trong OPEN, WPA_PSK hoặc hằng số 802.1X) trên kênh radio channel. securitychannel là 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ọi config trên các giao diện network khá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ới mode=MODE_AP để cấu hình và khởi động điểm truy cập. AP chỉ hỗ trợ bảo mật OPEN hoặc WEP; nếu WEP được sử dụng thì key là 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ề True khi đã liên kết với điểm truy cập đã nhận được địa chỉ IPv4 (qua DHCP hoặc ifconfig()). Trả về False trong 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. timeout là thời gian chờ tối đa tính bằng mili giây; truyền None để 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ú

WINC không triển khai API AbstractNIC.ipconfig() hiện đại; hãy dùng ifconfig() ở đâ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: -30 là xuất sắc, -67 là ổn cho streaming, -80 là ranh giới, -90 trở xuống là không sử dụng được. Chỉ có ý nghĩa ở chế độ STA khi isconnected()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 path trên hệ thống file của OpenMV. Dùng để sao lưu ảnh đang cài đặt trước khi gọi fw_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ố security của connect() / start_ap().

WPA_PSK: int

Giá trị bảo mật cho WPA/WPA2 với khóa chia sẻ trước. Mặc định cho connect().

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ó qua getattr(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_AP: int

Chế độ điểm truy cập -- WINC trở thành AP mà các client kết nối vào.

MODE_P2P: int

Chế độ WiFi-Direct (ngang hàng).

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