Micropython——network配置和使用
1、network是什么?
此模块提供网络驱动程序和路由配置。要使用此模块,必须安装具有网络功能的MicroPython变体/构建。此模块中提供了特定硬件的网络驱动程序,用于配置硬件网络接口。然后,配置接口提供的网络服务可通过usocket模块使用。
2、network方法和类使用?
1、
classnetwork.WLAN(interface_id)
创建 WLAN 网络接口对象。支持的接口是 network.STA_IF(站又名客户端,连接到上游 WiFi 接入点)和network.AP_IF(接入点,允许其他 WiFi 客户端连接)。以下方法的可用性取决于接口类型。例如,只有 STA 接口可以连接WLAN.connect() 到接入点。
这里可以看到我们是作为客户端连接WiFi还是作为接入开启WiFi
2、
WLAN.active([is_active])
如果传递布尔参数,则激活(“up”)或停用(“down”)网络接口。否则,如果没有提供参数,则查询当前状态。大多数其他方法需要活动接口。
3、
WLAN.connect(ssid=None, password=None, *, bssid=None)
使用指定的密码连接到指定的无线网络。如果给出了bssid,则连接将被限制为具有该 MAC 地址的接入点(在这种情况下还必须指定ssid)。
4、
WLAN.disconnect()
断开当前连接的无线网络。
5、
WLAN.scan()
扫描可用的无线网络。
扫描只能在 STA 接口上进行。返回包含 WiFi 接入点信息的元组列表:
(ssid, bssid, channel, RSSI, authmode, hidden)
bssid是访问点的硬件地址,以二进制形式,作为字节对象返回。您可以使用 ubinascii.hexlify() 将其转换为 ASCII 格式。
authmode 有五个值:
0 – open
1 – WEP
2 – WPA-PSK
3 – WPA2-PSK
4 – WPA/WPA2-PSK
和两个隐藏:
0 – 可见
1 – 隐藏
6、
WLAN.status([param])
返回无线连接的当前状态。
当不带参数调用时,返回值描述网络链接状态。可能的状态定义为常量:
STAT_IDLE – 无连接,无活动,
STAT_CONNECTING –正在进行连接,
STAT_WRONG_PASSWORD – 由于密码错误而失败,
STAT_NO_AP_FOUND – 失败,因为没有接入点回复,
STAT_CONNECT_FAIL – 由于其他问题而失败,
STAT_GOT_IP – 连接成功。
当使用一个参数调用时,param应该是一个字符串,命名要检索的状态参数。WiFI STA 模式支持的参数有: 'rssi'.
7、
WLAN.isconnected()
在 STA 模式的情况下,True如果连接到 WiFi 接入点并具有有效的 IP 地址,则返回。在 AP 模式下,True 当站点连接时返回。False 否则返回。
8、
WLAN.ifconfig([(ip, subnet, gateway, dns)])
获取/设置 IP 级网络接口参数:IP 地址、子网掩码、网关和 DNS 服务器。当不带参数调用时,此方法返回一个包含上述信息的 4 元组。要设置上述值,请传递带有所需信息的 4 元组。例如:
nic.ifconfig(('192.168.0.4', '255.255.255.0', '192.168.0.1', '8.8.8.8'))
9、
wlan.config(essid, channel)
获取或设置一般网络接口参数。
ssid:WiFi账户名
channel:WiFi通道
4、示例
1、作为客户端连接WIFI
import network
import utime
ssid = '********'
password ='********'
wifi = network.WLAN(network.STA_IF) #创建WLAN对象
wifi.active(True) #这里True表示激活网络接口,False表示停用网络接口
wifi.connect(ssid,password) #连接WIFI
while True:
if (wifi.inconnect()):
break
else:
time.sleep(0.2)
print("----这是IFCONFIG_data---------")
print(wifi.ifconfig())
print("----这是CONFIG_data---------")
print(wifi.config())
2、作为接入开启WiFi
import network
import utime
ap_if = network.WLAN(network.AP_IF)
ap_if.active(True)
ap_if.config(essid='My AP', channel=11)