MicroPython ESP8266配网示例以及network模块功能介绍
Posted perseverance52
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MicroPython ESP8266配网示例以及network模块功能介绍相关的知识,希望对你有一定的参考价值。
【MicroPython ESP8266】配网示例
- ✨本实验基于
Thonny
平台开发。 - 🎈相关篇《MicroPython ESP32 手动入网配置调试过程》
⛳配网模块
- 🎈 esp8266配网依赖
network
模块。 - 📍官方文档参考:
https://docs.micropython.org/en/v1.9.4/esp8266/library/network.html
🧲通过
Shell
调试窗口,查询network
模块的具体参数信息。
>>> import network
>>> help(network)
object <module 'network'> is of type module
__name__ -- network
WLAN -- <function>
phy_mode -- <function>
STA_IF -- 0 #STA站点模式
AP_IF -- 1 #AP模式
STAT_IDLE -- 0 # STA站点模式
STAT_CONNECTING -- 1# STA站点模式下连接
STAT_WRONG_PASSWORD -- 2 #STA站点模式下连接,密码错误返回的代码
STAT_NO_AP_FOUND -- 3 # 站点模式下没有找到对应的WiFi信号
STAT_CONNECT_FAIL -- 4 #STA站点模式下连接失败,返回的代码
STAT_GOT_IP -- 5 # STA站点模式下获取到IP的返回代码
MODE_11B -- 1 #wifi信号协议类别
MODE_11G -- 2
MODE_11N -- 3
AUTH_OPEN -- 0
AUTH_WEP -- 1
AUTH_WPA_PSK -- 2 # 加密类型
AUTH_WPA2_PSK -- 3
AUTH_WPA_WPA2_PSK -- 4
- 📌
network.phy_mode([mode])
:获取或设置 PHY 模式。
如果提供了mode参数,则将 mode 设置为其值。如果不带参数调用该函数,则返回当前模式。
- 可能的模式定义为常量:
- MODE_11B – IEEE 802.11b,
- MODE_11G – IEEE 802.11g,
- MODE_11N – IEEE 802.11n.
- 📌
wlan.active([is_active])
如果传递布尔参数,则激活(“向上”)或停用(“向下”)网络接口。否则,如果没有提供参数,则查询当前状态。大多数其他方法需要一个活动接口(未定义在非活动接口上调用它们的行为)。
sta_if.active(True)# 启用STA网络接口
sta_if.active(False)# 停用STA网络接口
sta_if.active()# 查询STA网络接口
- 📌
wlan.status([param])
:查询接口的动态状态信息。当不带参数调用时,返回值描述网络链接状态。否则 param应该是一个字符串,命名要检索的特定状态参数。
返回类型和值取决于网络介质/技术。可能支持的一些参数是:
- WiFi STA:用于’rssi’检索AP信号的RSSI
- WiFi AP:用于 ‘stations’ 检索连接到该 AP 的所有 STA 的列表。该列表包含形式为 (MAC, RSSI) 的元组。
- 📌
wlan.ifconfig([(ip, subnet, gateway, dns)])
:获取/设置 IP 级网络接口参数:IP 地址、子网掩码、网关和 DNS 服务器。当不带参数调用时,此方法返回一个包含上述信息的 4 元组。要设置上述值,请传递带有所需信息的 4 元组。例如:
wlan.ifconfig(('192.168.0.4', '255.255.255.0', '192.168.0.1', '8.8.8.8'))
- 📌
wlan.config('param')
或.config(param=value, ...)
:获取或设置一般网络接口参数。这些方法允许使用超出标准 IP 配置的附加参数(如 处理 ifconfig())。这些包括特定于网络和特定于硬件的参数。设置参数时,应使用关键字参数语法,可以一次设置多个参数。查询时,参数名应以字符串形式引用,一次只能查询一个参数:
# Set WiFi access point name (formally known as ESSID) and WiFi channel
ap.config(essid='My AP', channel=11)
# Query params one by one
print(ap.config('essid'))
print(ap.config('channel'))
📖通过Shell调试窗口,一步一步配网全过程
MicroPython v1.19.1 on 2022-06-18; ESP module with ESP8266
Type "help()" for more information.
>>> import network
>>> wlan = network.WLAN(network.STA_IF)
>>> wlan.active(True)
>>> wlan.scan()
[(b'MERCURY_2.4G_135F', b'\\x90v\\x9fP\\x13_', 1, -80, 4, 0), (b'MERCURY_2.4G_135E', b'\\x90v\\x9fP\\x13^', 1, -69, 4, 0), (b'MERCURY_D268G', b'D\\xf9q\\xdb\\x87\\xd9', 11, -57, 4, 0), (b'MERCURY_Guest', b'F\\xf9q\\xdb\\x87\\xd9', 11, -58, 4, 0), (b'CMCC-DyVv', b'\\xa0\\x91\\xc8\\xd1\\xce\\x90', 5, -68, 4, 0), (b'TP-LINK_F5D0', b'4\\x96r\\x18\\xf5\\xd0', 6, -80, 4, 0), (b'TP-LINK_2D07', b' k\\xe7\\xdc-\\x07', 11, -87, 4, 0)]
>>> wlan.isconnected()
True
>>> print('network config:', wlan.ifconfig())
network config: ('192.168.0.120', '255.255.255.0', '192.168.0.1', '192.168.0.1')
>>>
- 📍如果在使用
wlan.isconnected()
命令查询本设备连接状态是为False
时,可以执行这条命令:wlan.connect('wifi名称', 'WiFi密码')
进行配网。需要在上述命令当中填写自己的WiFi信息,可以参考wlan.scan()
查询到的周围网络环境下搜索到的WiFi信息进行填写。
📖完整程序配网示例
from machine import Pin
import utime # 延时使用
led = Pin(2, Pin.OUT) #用machine模块的pin功能设置引脚2为输出。板载led
def do_connect():
import network # 配网需要引入的模块
sta_if = network.WLAN(network.STA_IF)
if not sta_if.isconnected():
print('connecting to network...')
sta_if.active(True)
sta_if.connect('WiFi名称', 'WiFi密码')# 填写WiFi信息
while not sta_if.isconnected():
pass
print('network config:', sta_if.ifconfig())
def blink():
led.value(not led.value()) #将引脚2状态取反
utime.sleep(2) # 延时1秒
print('perseverance')
do_connect()
if __name__ == "__main__":
while True:
blink()
- 🎯Shell调试窗口打印信息
以上是关于MicroPython ESP8266配网示例以及network模块功能介绍的主要内容,如果未能解决你的问题,请参考以下文章
MicroPython ESP32/8266定时器中断示例解析
Micropython esp32/8266网页点灯控制示例
Micropython esp32/8266AP模式下网页点灯控制示例
Micropython esp32/8266AP模式下网页点灯控制示例+自定义GPIO状态显示