Micropython——network配置和使用

本文详细介绍了MicroPython中的network模块,包括其基本概念、主要功能、常用方法及类的使用方式,并通过示例展示了如何利用network模块实现客户端连接WiFi及作为接入点开启WiFi。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、network是什么?

此模块提供网络驱动程序和路由配置。要使用此模块,必须安装具有网络功能的MicroPython变体/构建。此模块中提供了特定硬件的网络驱动程序,用于配置硬件网络接口。然后,配置接口提供的网络服务可通过usocket模块使用。


2、network方法和类使用?

  • classnetwork.WLAN(interface_id)

创建 WLAN 网络接口对象。支持的接口是 network.STA_IF(站又名客户端,连接到上游 WiFi 接入点)和network.AP_IF(接入点,允许其他 WiFi 客户端连接)。以下方法的可用性取决于接口类型。例如,只有 STA 接口可以连接WLAN.connect() 到接入点。

这里可以看到我们是作为客户端连接WiFi还是作为接入开启WiFi

  • WLAN.active([is_active])

如果传递布尔参数,则激活(“up”)或停用(“down”)网络接口。否则,如果没有提供参数,则查询当前状态。大多数其他方法需要活动接口。

  • WLAN.connect(ssid=None, password=None, *, bssid=None)

使用指定的密码连接到指定的无线网络。如果给出了bssid,则连接将被限制为具有该 MAC 地址的接入点(在这种情况下还必须指定ssid)。

  • WLAN.disconnect()

断开当前连接的无线网络

  • 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 – 隐藏

  • WLAN.status([param])

返回无线连接的当前状态。

当不带参数调用时,返回值描述网络链接状态。可能的状态定义为常量:

STAT_IDLE – 无连接,无活动,

STAT_CONNECTING –正在进行连接,

STAT_WRONG_PASSWORD – 由于密码错误而失败,

STAT_NO_AP_FOUND – 失败,因为没有接入点回复,

STAT_CONNECT_FAIL – 由于其他问题而失败,

STAT_GOT_IP – 连接成功。

当使用一个参数调用时,param应该是一个字符串,命名要检索的状态参数。WiFI STA 模式支持的参数有: 'rssi'.

  • WLAN.isconnected()

在 STA 模式的情况下,True如果连接到 WiFi 接入点并具有有效的 IP 地址,则返回。在 AP 模式下,True 当站点连接时返回。False 否则返回。

  • 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'))

  • lan.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)

### Micropython多文件项目结构开发指南 Micropython支持多文件项目的开发方式,这使得开发者能够更好地组织代码逻辑,提高可维护性模块化程度。以下是关于如何构建管理一个多文件的Micropython项目的内容。 #### 1. 文件导入机制 在Micropython中,可以通过`import`语句来加载其他Python文件作为模块使用。例如,在一个名为`main.py`的主程序文件中,可以这样引入另一个文件中的函数: ```python from utils import my_function my_function() ``` 这里假设存在一个叫做`utils.py`的文件,并且其中定义了一个名称为`my_function`的方法[^1]。 #### 2. 目录布局建议 合理的目录结构有助于清晰表达各个组件之间的关系以及促进团队协作。下面给出了一种推荐的多文件Micropython项目结构示例: ``` project/ │ ├── main.py # 主入口文件 ├── config.py # 配置参数设置 ├── lib/ # 自己编写的库或者第三方依赖包 │ ├── helper.py # 辅助工具类方法集合 │ └── network.py # 网络通信相关操作封装 └── modules/ # 功能模块划分区域 ├── camera_module.py └── sensor_module.py ``` 这种分层设计不仅让整个工程看起来井然有序,还便于后续扩展新特性或修复现有问题时定位目标位置更加迅速准确[^2]。 #### 3. 初始化脚本执行顺序 当设备启动后,默认会寻找特定命名规则下的初始化脚本来运行。对于大多数基于ESP系列芯片的产品而言,通常会有两个这样的特殊文件——`boot.py` `main.py` 。前者负责处理一些基础性的准备工作比如连接WiFi网络;后者则承担起实际业务流程控制的任务角色[^4]。 - **boot.py**: 执行一次性的配置任务,如Wi-Fi连接、GPIO初始化等。 - **main.py**: 应用的核心逻辑所在之处,可能包括循环监听事件、调用不同功能模块等功能。 需要注意的是,如果不需要某些默认行为(例如自动尝试加入已保存过的无线热点),可以选择忽略编写对应的初始化部分[^3]。 #### 4. 使用冻结模块减少内存占用 为了节省有限的Flash存储空间资源,还可以考虑采用Frozen Modules技术将选定好的几个重要源码打包进固件内部去部署到目标硬件平台上。这样一来既保留了原有灵活性优势同时也有效降低了外部依赖带来的额外负担。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Xa_L

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值