class WINC – driver do shield WiFi¶
A classe WINC controla o módulo WiFi 802.11 b/g/n Atmel WINC1500 no OpenMV WiFi Shield. Disponível na OpenMV Cam M4, M7, H7, H7 Plus e Pure Thermal (as placas STM32 para as quais o WiFi shield foi projetado). Para placas com WiFi integrado (OpenMV Cam N6, OpenMV Cam RT1062, Arduino Giga) use WLAN em vez disso.
Exemplo – conectar a um ponto de acesso e imprimir o endereço:
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())
Exemplo – ativar um ponto de acesso aberto e esperar por um cliente:
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))
Construtores¶
- class network.WINC(mode: int = WINC.MODE_STA) None¶
Cria um objeto driver
WINCe ativa o WiFi shield.modeseleciona o modo de operação em que o módulo inicia:WINC.MODE_STA– estação / cliente. Conecte-se a um ponto de acesso comconnect(). Este é o padrão.WINC.MODE_AP– ponto de acesso. Configure o AP comstart_ap()e então aceite conexões de clientes.WINC.MODE_P2P– WiFi Direct.WINC.MODE_BSP– ativa apenas o BSP (sem rádio).WINC.MODE_FIRMWARE– modo de atualização de firmware; exigido porfw_dump()efw_update().
Nota
No modo AP, o WINC1500 tem limitações de hardware:
Apenas um cliente pode se conectar por vez.
Apenas segurança
OPENou WEP são suportadas.Um bug no firmware do módulo WiFi faz com que quaisquer sockets vinculados parem de funcionar quando o cliente se desconecta. Defina um timeout no socket do servidor para que ele lance uma exceção que você possa usar para reabri-lo.
Métodos¶
- active(is_active: bool | None = None) bool¶
Ativa ou desativa o WiFi shield.
Sem argumento, retorna o estado atual –
Trueenquanto o shield está inicializado e o rádio está ativo,Falsecaso contrário.active(True)realiza o handshake de firmware do WINC1500 via SPI e ativa o rádio nomodeconfigurado. Não tem efeito se a interface já estiver ativa.connect()chama isto automaticamente se ainda não tiver sido chamado; para qualquer outro método (scan(),rssi(),netinfo(), …) você deve chamaractive(True)primeiro.active(False)desliga o rádio novamente (o WINC volta ao modo apenas-BSP) e libera os pinos SPI.
- connect(ssid: str, key: str | None = None, *, security: int = WINC.WPA_PSK, channel: int = 1) None¶
Associa-se à rede WiFi
ssidusando a senhakey, o modo de segurançasecurity(um deOPEN,WPA_PSKou a constante 802.1X) no canal de rádiochannel.securityechannelsão somente nomeados.Após conectar, use o módulo
socketpara abrir portas TCP/UDP.Este método bloqueia até que a associação seja concluída ou falhe.
- config(ssid: str, key: str | None = None, *, security: int = WINC.WPA_PSK, channel: int = 1) None¶
Apelido de
connect(). Fornecido para compatibilidade com código que chamaconfigem outras interfacesnetwork.
- start_ap(ssid: str, key: str | None = None, *, security: int = WINC.OPEN, channel: int = 1) None¶
Apelido de
connect()usado após construir o objeto commode=MODE_APpara configurar e iniciar o ponto de acesso. O AP suporta apenas segurançaOPENou WEP; se WEP for usado,keyé obrigatório.
- disconnect() None¶
No modo STA, desassocia-se do ponto de acesso atualmente associado. O shield permanece ativo; chame
connect()para se reassociar. Não tem efeito quando não há associação atual.
- isconnected() bool¶
No modo STA, retorna
Truequando associado a um ponto de acesso e um endereço IPv4 foi obtido (via DHCP ouifconfig()). RetornaFalseenquanto ainda estiver na fase de autenticação / associação / DHCP.
- connected_sta() List[str]¶
No modo AP, retorna uma lista contendo o endereço IP do cliente atualmente conectado (ou uma lista vazia se nenhum cliente estiver conectado).
- wait_for_sta(timeout: int | None) List[str]¶
No modo AP, bloqueia até que um cliente se conecte e retorna uma lista contendo o endereço IP do cliente.
timeouté a espera máxima em milissegundos; passeNonepara esperar indefinidamente.
- ifconfig(config: Tuple[str, str, str, str] | None = None) Tuple[str, str, str, str]¶
Obtém ou define os parâmetros IPv4 da interface. A 4-tupla contém
(ip, subnet, gateway, dns)como strings em quádruplo decimal.Chamado sem argumento: retorna a configuração atual.
Chamado com uma 4-tupla: define uma configuração de IP estático no lugar daquela obtida por DHCP.
Exemplo – fixar um IP estático antes de conectar:
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)
Nota
WINCnão implementa a API modernaAbstractNIC.ipconfig(); useifconfig()aqui.
- netinfo() Tuple[int, int, str, str, str]¶
Retorna uma 5-tupla descrevendo a associação atual:
[0]RSSI como um inteiro (dBm).[1]Modo de segurança – uma das constantes de segurança.[2]String do SSID.[3]BSSID como uma string MAC"XX:XX:XX:XX:XX:XX".[4]Endereço IPv4 como uma string em quádruplo decimal.
- scan() List[Tuple[str, str, int, int, int, int]]¶
Procura por pontos de acesso próximos. Retorna uma lista de 6-tuplas:
[0]String do SSID.[1]BSSID como uma string MAC"XX:XX:XX:XX:XX:XX".[2]Número do canal.[3]RSSI em dBm.[4]Modo de segurança – uma das constantes de segurança.[5]Reservado (sempre1).
Pode ser chamado sem se associar primeiro a uma rede.
- rssi() int¶
Retorna o RSSI em dBm do ponto de acesso atualmente associado. Aproximadamente:
-30é excelente,-67é OK para streaming,-80é marginal,-90e abaixo é inutilizável. Só é significativo no modo STA enquantoisconnected()forTrue.
- fw_version() Tuple[int, int, int, int, int, int, int]¶
Retorna uma 7-tupla descrevendo as versões de firmware e driver do WINC1500:
[0]Maior do firmware.[1]Menor do firmware.[2]Patch do firmware.[3]Maior do driver.[4]Menor do driver.[5]Patch do driver.[6]Revisão de hardware do chip.
- fw_dump(path: str) None¶
Lê a flash interna do WINC1500 e grava a imagem de firmware resultante no arquivo em
pathno sistema de arquivos da OpenMV. Use isto para fazer backup da imagem atualmente instalada antes de chamarfw_update().Requer que o módulo tenha sido construído com
mode=MODE_FIRMWARE.
- fw_update(path: str) None¶
Apaga a flash interna do WINC1500 e a programa com a imagem binária em
path. A imagem deve corresponder ao layout esperado pelo firmware da OpenMV (normalmente fornecido pela Atmel / Microchip com o WINC SDK).A chamada bloqueia por vários segundos enquanto a flash é programada e verificada. Desligue e religue a OpenMV Cam após o retorno da chamada para que o WINC1500 inicie a partir da nova imagem.
Requer que o módulo tenha sido construído com
mode=MODE_FIRMWARE.
Constantes¶
- OPEN: int¶
Valor de segurança para uma rede sem criptografia. Passe para o argumento
securitydeconnect()/start_ap().
- WPA_PSK: int¶
Valor de segurança para WPA/WPA2 com uma chave pré-compartilhada. O padrão de
connect().
Nota
Também existe um valor de segurança WPA/WPA2 Enterprise (802.1X). O firmware o expõe sob o nome
802_1X, que não é um identificador Python válido – acesse-o viagetattr(network.WINC, "802_1X").- MODE_STA: int¶
Modo estação – conecta-se a um ponto de acesso como cliente. O modo padrão do construtor.
- MODE_BSP: int¶
Inicializa apenas o pacote de suporte à placa do WINC – o rádio não é ativado. Usado pelo fluxo de atualização de firmware.
- MODE_FIRMWARE: int¶
Modo de atualização de firmware. Exigido por
fw_dump()efw_update().