4. WLAN 一步一步

WLAN 是 WiPy 的系统功能,因此它始终处于启用状态(即使在 中 machine.SLEEP),除非进入深度睡眠模式。

为了检索当前 WLAN 实例,请执行以下操作:

>>> from network import WLAN
>>> wlan = WLAN() # we call the constructor without params

您可以检查当前模式(始终 WLAN.AP在上电后):

>>> wlan.mode()

警告

当您按照以下说明更改 WLAN 模式时,您与 WiPy 的 WLAN 连接将中断。这意味着您将无法通过 WLAN 以交互方式运行这些命令。

有两种方法可以解决这个问题::
  1. 将此设置代码放入boot.py 文件 ,以便在重置后自动执行。

  2. 在 UART 上复制 REPL,以便您可以通过 USB 运行命令。

4.1. 连接到您的家庭路由器

WLAN网卡总是以 WLAN.AP mode启动,所以我们首先要配置成一个站:

from network import WLAN
wlan = WLAN(mode=WLAN.STA)

现在您可以继续扫描网络:

nets = wlan.scan()
for net in nets:
    if net.ssid == 'mywifi':
        print('Network found!')
        wlan.connect(net.ssid, auth=(net.sec, 'mywifikey'), timeout=5000)
        while not wlan.isconnected():
            machine.idle() # save power while waiting
        print('WLAN connection succeeded!')
        break

4.2. 启动时分配静态 IP 地址

如果您希望 WiPy 在启动后连接到您的家庭路由器,并使用固定 IP 地址以便您可以通过 telnet 或 FTP 访问它,请使用以下脚本作为 /flash/boot.py:

import machine
from network import WLAN
wlan = WLAN() # get current object, without changing the mode

if machine.reset_cause() != machine.SOFT_RESET:
    wlan.init(WLAN.STA)
    # configuration below MUST match your home router settings!!
    wlan.ifconfig(config=('192.168.178.107', '255.255.255.0', '192.168.178.1', '8.8.8.8'))

if not wlan.isconnected():
    # change the line below to match your network ssid, security and password
    wlan.connect('mywifi', auth=(WLAN.WPA2, 'mywifikey'), timeout=5000)
    while not wlan.isconnected():
        machine.idle() # save power while waiting

笔记

请注意我们如何检查重置原因和连接状态,这对于能够在 telnet 会话期间软重置 WiPy 而不中断连接至关重要。