当前位置: 首页 > news >正文

2.2 庐山派MicroPython network模块API详解:LAN/WLAN网络配置与实战

庐山派MicroPython网络配置实战:手把手教你玩转LAN和WiFi

最近在玩庐山派开发板,想让它连上网做个远程数据采集的小项目,第一步就卡在了网络配置上。MicroPython的network模块文档虽然全,但对新手来说直接看API手册有点干巴巴的,不知道从哪里下手。今天我就结合自己的踩坑经验,用最直白的方式,带你一步步搞定庐山派的有线(LAN)和无线(WLAN)网络配置。

这篇文章适合刚接触庐山派或者MicroPython网络编程的朋友。我会先讲清楚network模块是干什么的,然后分别详细拆解LAN(有线网络)和WLAN(WiFi无线网络)的每个API该怎么用,最后给出完整的、能直接运行的代码示例。学完你就能让庐山派轻松上网,为后续的物联网应用打好基础。

1. 网络配置第一步:认识network模块

简单来说,network模块就是庐山派开发板的“网卡驱动管理工具”。你想让板子通过网线或者WiFi连接到路由器,或者自己开一个WiFi热点让手机连接,都得先通过这个模块把网络接口配置好。

这就好比你要用电脑上网,得先插好网线或者连上WiFi,设置好IP地址。network模块干的就是这个“插网线、输密码、设IP”的活儿。只有先用它把网络通道打通了,你才能用后面要学的socket模块去收发数据,实现真正的网络通信。

所以,网络配置是网络通信的前提,这个顺序不能乱。

2. 有线网络(LAN)配置详解

如果你的庐山派板子有网线接口,或者通过扩展板接入了有线网络,那么就需要用到LAN类。有线连接通常更稳定,适合固定位置的设备。

2.1 创建LAN对象与激活接口

第一步,导入模块并创建一个有线网络对象。

import network # 创建一个有线网络对象 nic = network.LAN()

创建对象只是第一步,这个网络接口默认是关闭的,需要手动激活它。

# 激活网络接口 nic.active(True) # 你也可以查询接口当前是开还是关 current_state = nic.active() print("网络接口状态:", current_state) # True表示激活,False表示停用

注意nic.active(True)这行代码执行后,硬件层面的网络接口(比如PHY芯片)才开始工作。如果后续连接不上,首先检查这里是否成功激活了。

2.2 检查连接状态与配置IP

接口激活后,庐山派会尝试通过DHCP自动获取IP地址(前提是你的路由器开启了DHCP服务)。怎么知道它连上没有呢?

# 检查是否已经连接到网络(获取到IP) if nic.isconnected(): print("有线网络已连接!") else: print("未连接到网络。")

最常用的一个方法是ifconfig(),它既能看当前的网络参数,也能手动设置。

获取当前网络配置:

# 无参数调用,返回一个包含四元组的列表 config = nic.ifconfig() print("IP地址:", config[0]) print("子网掩码:", config[1]) print("网关:", config[2]) print("DNS服务器:", config[3]) # 输出可能类似:('192.168.1.100', '255.255.255.0', '192.168.1.1', '192.168.1.1')

手动设置静态IP地址:有时候自动获取IP不稳定,或者你需要固定IP方便管理,就可以手动设置。

# 设置静态IP、子网掩码、网关和DNS # 请根据你的实际网络环境修改这些值 nic.ifconfig(('192.168.0.4', '255.255.255.0', '192.168.0.1', '8.8.8.8')) print("静态IP设置完成:", nic.ifconfig())

2.3 高级配置:修改MAC地址

每个网络设备都有一个唯一的MAC地址。在极少数情况下(比如克隆设备),你可能需要修改它。这就要用到config()方法。

# 设置一个新的MAC地址 nic.config(mac="42:EA:D0:C2:0D:83") # 获取当前的MAC地址 current_mac = nic.config("mac") print("当前MAC地址:", current_mac)

提示:修改MAC地址要谨慎,确保新地址在本地网络中是唯一的,否则会引起网络冲突。

3. 无线网络(WLAN)配置实战

无线网络是物联网设备最常用的连接方式,灵活性高。庐山派的WLAN类功能更丰富,支持两种模式:连接到别人家的WiFi(STA模式),或者自己开热点让别人连(AP模式)。

3.1 选择模式并创建对象

首先,你要决定让板子扮演什么角色。

import network # 模式一:STA模式(客户端模式),连接现有的WiFi路由器 sta = network.WLAN(network.STA_IF) # 模式二:AP模式(热点模式),自己创建一个WiFi网络 ap = network.WLAN(network.AP_IF)

咱们最常用的是STA模式,让板子像手机一样去连接家里的WiFi。AP模式则适合在没有路由器的场景下,让手机直接连接板子进行配置或通信。

3.2 STA模式:连接现有WiFi网络

这是最核心、最常用的功能。步骤很固定:激活接口 -> 连接网络 -> 检查状态。

第一步:激活接口并连接

import network import time sta = network.WLAN(network.STA_IF) sta.active(True) # 激活STA接口 # 连接WiFi,替换成你的WiFi名称和密码 sta.connect('你的WiFi名称', '你的WiFi密码') print("正在连接...")

第二步:等待并检查连接结果连接不是瞬间完成的,需要一个小循环来等待。

# 等待连接完成,最多等10秒 for i in range(50): if sta.isconnected(): break time.sleep(0.2) # 等待200毫秒 if sta.isconnected(): print("连接成功!") print("网络配置:", sta.ifconfig()) # 查看获取到的IP地址 else: print("连接失败,请检查密码或信号强度。")

第三步:扫描周围的WiFi网络在连接之前,你可以先看看周围有哪些可用的网络。

sta.active(True) # 确保接口已激活 networks = sta.scan() for net in networks: # net是一个包含网络信息的元组,例如:(bssid, ssid, channel, RSSI, authmode, hidden) ssid = net[1].decode('utf-8') # ssid是字节串,需要解码 rssi = net[3] # 信号强度,负数,越接近0信号越好 print(f"WiFi名称: {ssid}, 信号强度: {rssi} dBm")

第四步:查看详细连接状态status()方法能提供非常详细的连接信息,调试的时候特别有用。

if sta.isconnected(): details = sta.status() print(details) # 输出示例: # bssid=c6:b5:b6:86:64:d7 # freq=2462 # ssid=my_home_wifi # ip_address=192.168.137.221

3.3 AP模式:创建WiFi热点

当你需要手机或电脑直接连接庐山派时,就用到AP模式了。配置过程比STA模式更简单,因为你是“服务器”端。

import network ap = network.WLAN(network.AP_IF) ap.active(True) # 激活AP接口 # 配置热点的名称、密码、频道等 ap.config(ssid='LushanPi_AP', channel=6, key='12345678', hidden=False) print("热点已创建!") print("热点名称(SSID):", ap.config('ssid')) print("热点IP地址:", ap.ifconfig()[0]) # AP模式下的板子自身IP

当有其他设备连接上这个热点时,ap.isconnected()会返回True

3.4 WLAN的通用配置方法

无论是STA还是AP模式,ifconfig()config()方法都是通用的,用法和LAN类相似。

设置静态IP(STA或AP模式都适用):

# 假设在STA模式下,设置静态IP sta.ifconfig(('192.168.0.10', '255.255.255.0', '192.168.0.1', '8.8.8.8'))

使用config()查询和设置更多参数:config()方法在WLAN中更强大,可以管理很多WiFi特有的参数。

# 设置参数(以AP模式为例) ap.config(ssid='MyHotspot', channel=11, password='securepass', hidden=False) # 获取单个参数 print("当前频道:", ap.config('channel')) print("是否隐藏SSID:", ap.config('hidden')) # 支持的常用参数列表

为了方便查阅,我把WLAN.config()支持的主要参数整理成了表格:

参数名描述示例值
mac设备的MAC地址(字节格式)b'\xde\xad\xbe\xef\xfe\xed'
ssidWiFi网络名称(字符串)"LushanPi_Network"
channelWiFi频道(整数,1-13)6
hidden是否隐藏网络名称(布尔值)False
passwordWiFi连接密码(字符串)"MyPassword123"

4. 完整代码示例与常见问题

光说不练假把式,这里给你两个我实际项目中常用的代码块,可以直接复制使用。

示例1:自动连接WiFi(STA模式,带超时和重试)

import network import time def connect_to_wifi(ssid, password, timeout=10): """ 连接指定WiFi :param ssid: WiFi名称 :param password: 密码 :param timeout: 超时时间(秒) :return: 连接成功返回True,失败返回False """ sta = network.WLAN(network.STA_IF) if not sta.active(): sta.active(True) if not sta.isconnected(): print(f'正在连接网络:{ssid}') sta.connect(ssid, password) start_time = time.time() while not sta.isconnected(): if time.time() - start_time > timeout: print('连接超时!') return False time.sleep(0.5) print('.', end='') print('\n连接成功!') config = sta.ifconfig() print(f'IP地址:{config[0]}') else: print('已连接到网络') print(f'IP地址:{sta.ifconfig()[0]}') return True # 使用函数连接你的WiFi connect_to_wifi('你的WiFi名', '你的密码')

示例2:快速创建一个配置热点(AP模式)

import network def setup_ap_mode(ssid='LushanPi_Config', password='88888888'): """ 将板子设置为AP模式,用于配置 """ ap = network.WLAN(network.AP_IF) ap.active(True) # 配置热点 ap.config(ssid=ssid, password=password, channel=6) # 设置热点自身的IP地址(默认通常是192.168.4.1) ap.ifconfig(('192.168.4.1', '255.255.255.0', '192.168.4.1', '8.8.8.8')) print(f'配置热点已启动!') print(f'热点名称:{ssid}') print(f'热点密码:{password}') print(f'请连接此WiFi,然后访问 http://192.168.4.1 进行配置') return ap # 创建热点 my_ap = setup_ap_mode()

踩坑提醒:几个常见问题

  1. 连接不上WiFi?首先用scan()函数看看能不能搜到目标WiFi,确认信号强度(RSSi值大于-70比较好)。然后检查密码和加密方式(家用WiFi一般是WPA2)。
  2. active(True)执行后没反应? 确保你的庐山派固件支持网络功能,并且硬件(如WiFi模块)已正确连接。
  3. 获取不到IP地址? 检查路由器DHCP服务是否开启,或者尝试使用ifconfig()设置静态IP。
  4. AP模式手机搜不到? 检查hidden参数是否为False,并且频道channel设置在设备支持的范围内(1-13)。

网络配置是物联网项目的敲门砖,虽然步骤有点多,但一旦跑通,后面基于socketMQTT的数据通信就水到渠成了。建议你先把上面的代码在庐山派上实际运行一遍,看看效果,遇到问题多尝试,理解每个API的作用。

http://www.jsqmd.com/news/469281/

相关文章:

  • NVIDIA Profile Inspector开源工具:释放显卡潜能的性能优化配置指南
  • 基于HXD039B2的HomeAssistant专用红外空调网关
  • Janus-Pro-7B部署教程:HuggingFace模型下载+本地路径配置详解
  • SmolVLA创意写作效果展示:生成多种风格的市场文案与故事
  • Redis数据兼容性设计:从Jackson到Fastjson的版本迭代避坑指南
  • JDY-31-SPP蓝牙模块:从AT指令到数据透传的实战指南
  • DownKyi:高效获取B站视频的专业下载工具
  • Kettle8.2转换组件实战:Excel数据列转行高效处理
  • Jetson Orin实战:从零部署本地大模型与多模态AI应用
  • OFA视觉问答模型性能监控指南:Prometheus+Grafana实战
  • 告别游戏卡顿:OpenSpeedy变速工具让你的游戏体验焕然一新
  • 解锁音乐自由:ncmdump工具的技术突破与场景落地
  • 从零到一:手把手教你构建压测体系与实战分析
  • Xshell高效操作指南(会话管理、快捷复制粘贴、多屏协作、日志追踪、串口配置)
  • Qwen3-Embedding-4B法律文书检索:合同条款匹配系统搭建教程
  • RePKG:重新定义Wallpaper Engine资源处理效率的技术突破
  • 若依ruoyi Vue前端Nginx服务器部署实战与疑难解析
  • GHelper:重构华硕笔记本硬件控制逻辑的轻量级解决方案
  • wan2.1-vae开源协议解读:Apache 2.0许可下商用/修改/分发边界说明
  • 非线性光耦电路设计全解析:从STM32到隔离串口通信实战
  • 如何高效追踪Elsevier投稿进度:智能审稿状态监控工具全解析
  • 2026年选择评价好的伺服插纸机生产厂家,从这几点入手,专业的插纸机品牌赋能企业生产效率提升与成本优化 - 品牌推荐师
  • Python环境配置全攻略:从下载到运行
  • Fish Speech 1.5文本转语音WebUI:5分钟快速部署,新手零基础上手
  • 3个突破式步骤:ncmdump破解NCM格式限制完全指南
  • KUKA机器人CCU板信号指示灯故障诊断与维护指南
  • 【AI N8N】从零到一:构建个人AI工作流并封装为MCP服务的全栈实践
  • 3秒定位手机号:location-to-phone-number开源工具的技术突破与实战价值
  • 从解耦到稳定:LADRC在永磁同步电机双环控制中的实战解析
  • Kali实战手记:从监听网卡到握手包捕获的Wi-Fi安全测试全流程