ESP32的应用范围有多广,相信不用多说大家都明白,尤其是在物联网领域,所以今天我们就来讲解WIFI的配置、连接及其简单应用。

跟往常一样,我们还是先介绍WIFI的相关知识
一、硬件与软件基础
1.1 ESP32-C3无线特性
ESP32-C3是乐鑫推出的RISC-V架构物联网芯片,配备:
- 2.4 GHz WiFi 4(802.11b/g/n)
- Bluetooth 5 LE
- 低功耗设计(仅22uA深度睡眠电流)
1.2 MicroPython优势
- 交互式开发(REPL)
- 简化硬件操作
- 丰富的网络库支持
- 与CPython高度兼容
二、MicroPython WiFi模块详解
2.1 核心对象说明
import network
wlan = network.WLAN(network.STA_IF) # 创建工作站对象
wlan.active(True) # 激活接口
2.2 关键方法解析
| 方法 | 参数 | 说明 |
| connect() | ssid, password | 连接目标AP |
| disconnect() | 断开当前连接 | |
| scan() | 扫描可用网络 | |
| isconnected() | 返回连接状态 | |
| ifconfig() | [(ip, mask, gw, dns)] | 获取/设置网络参数 |
三、WiFi连接实战
3.1 基础连接代码
def configwifi(self,ssid,password):
if not self.wlan.isconnected():
self.ssid = ssid
self.password = password
print(" 正在连接到",ssid)
self.wlan.connect(ssid,password)
max_wait = 10
while max_wait > 0:
if self.wlan.isconnected():
break
max_wait -= 1
print("等待连接……",max_wait)
time.sleep(1)
if not self.wlan.isconnected():
return False
# print("连接失败")
else:
return True
# print("连接成功")
# print("网络配置:",self.wlan.ifconfig())
3.2 增强型连接(含错误处理)
def smart_connect(ssid, password):
wlan = network.WLAN(network.STA_IF)
wlan.active(True)
if wlan.isconnected():
wlan.disconnect()
visible_nets = {net[0].decode(): net for net in wlan.scan()}
if ssid not in visible_nets:
raise ValueError(f"{ssid} not found")
authmode = visible_nets[ssid][4]
print(f"Security: {authmode}") # 0=OPEN, 1=WEP, etc.
try:
wlan.connect(ssid, password)
for _ in range(15):
if wlan.isconnected():
print(f"IP: {wlan.ifconfig()[0]}")
return True
time.sleep(1)
return False
except OSError as e:
print(f"Connection error: {e}")
return False
3.3 增加网络配置保存、重启时自动连接功能
self.wlan = network.WLAN(network.STA_IF)
self.wlan.active(True)
ssid,password = self.load_wificonfig()
if ssid and password:
print(ssid,password)
self.wlan.connect(ssid,password)
self.ssid = ssid
self.password = password
def save_wificonfig(self):
with open ("wificonfig.txt","w") as f:
f.write(self.ssid+"\n")
f.write(self.password+"\n")
def load_wificonfig(self):
try:
with open("wificonfig.txt","r") as f:
ssid = f.readline().strip()
password = f.readline().strip()
return ssid,password
except:
return None,None
四、网络时间同步
4.1 NTP协议原理
- 使用UDP 123端口
- 支持时间服务器分层架构
- 精度通常在毫秒级

最低0.47元/天 解锁文章
705

被折叠的 条评论
为什么被折叠?



