MicroPython 开发ESP32应用教程 之 WIFI配置、连接及简单应用 WIFI及时间同步应用类的封装

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端口
- 支持时间服务器分层架构
- 精度通常在毫秒级

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

永远的元子

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

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

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

打赏作者

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

抵扣说明:

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

余额充值