• 【MicroPython ESP8266】配网示例


    【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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 📌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网络接口
    
    • 1
    • 2
    • 3
    • 📌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'))
    
    • 1
    • 📌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'))
    
    • 1
    • 2
    • 3
    • 4
    • 5

    📖通过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')
    >>> 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 📍如果在使用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()
            
    
    
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 🎯Shell调试窗口打印信息
      在这里插入图片描述
  • 相关阅读:
    虹科方案 | 虹科基于空口测试的新型5G毫米波测试方案
    使用dotnet-monitor分析在Kubernetes的应用程序:Sidecar模式
    【VRP问题】基于帝国企鹅优化算法求解冷链配送物流车辆调度优化研究
    防雷接地+防雷工程施工综合方案
    linux查看修改文件权限命令
    短链接推荐:一个可以监测用户行为的“营销神器”
    详解API接口如何安全的传输数据
    541.反转字符串
    实现http流式输出的最小实践
    AIDL学习
  • 原文地址:https://blog.csdn.net/weixin_42880082/article/details/126726603