MicroPython ESP8266配网示例以及network模块功能介绍

Posted perseverance52

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MicroPython ESP8266配网示例以及network模块功能介绍相关的知识,希望对你有一定的参考价值。

【MicroPython ESP8266】配网示例


⛳配网模块

  • 🎈 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) # 延时1print('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状态显示

micropython(esp8266)DHT11温湿度检测

micropython(esp8266)DHT11温湿度检测