使用 WPA2 和 MicroPython 连接 SPWF04SA

Connect SPWF04SA using WPA2 and MicroPython

我正在尝试使用内置的 MicroPython 解释器将 STM32 Nucleo WIFI 扩展板 (SPWF04SA) 连接到我们的无线网络。根据数据表,它应该是受支持的。

我可以使用

列出可用网络
import network
wlan = WLAN()
nets = wlan.scan()
for net in nets:
    print(net)

然后我得到

(ssid='PE0000', bssid='00:13:60:FF:8F:2D', auth='WPA2 ', channel=4, rssi=-65)
(ssid='PE9000', bssid='02:13:60:FF:8F:2D', auth='WPA2 ', channel=4, rssi=-67)
(ssid='PE0200', bssid='B8:C7:5D:07:CF:D3', auth='WPA2 ', channel=6, rssi=-85)

然后我尝试使用以下方式连接到网络 PE9000(或任何一个):

wlan.connect('PE9000',(WLAN.WPA2,'xxxx'))

我得到:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: type object 'WLAN' has no attribute 'WPA2'

如果我尝试使用 WLAN.WPA 作为安全类型,我不会收到错误消息,但很明显,它不会连接到网络。

如有任何帮助,我们将不胜感激。

我的 ESP8266 模块也遇到了同样的问题。我在下面包含了一些帮助我解决问题的代码。我正在使用 micropython 1.9.2。

    configuration_filename = 'configuration.json'

    station_config = network.WLAN(network.STA_IF)

    if not station_config.isconnected():
        with open(configuration_filename, 'r') as configuration_file:
            json_configuration = configuration_file.read()
            json_config = json.loads(json_configuration)

            ssid = json_config['ssid']
            password = json_config['password']
            station_config.connect(ssid, password)
            while not station_config.isconnected():
                machine.idle() # save power while waiting
            print('WLAN connection succeeded!')        

我终于让它工作了。万一其他人遇到这个问题,这些板的语法似乎有点不标准。而不是调用 wlan.connect() 我不得不使用以下内容:

w.init(mode=WLAN.STA, ssid='PE9000', auth=(WLAN.WPA, 'xxxx'))

即使我指定的是 WPA 而不是 WPA2,它仍然必须弄清楚并连接。