<button id="ssm6u"><optgroup id="ssm6u"></optgroup></button>
  • 跳轉至

    管理WiFi網絡

    概要

    ESP32自帶了WiFi模塊,因此我們可以很容易的讓ESP32接入網絡。

    在MicroPython下,我們可以使用 network模塊來配置ESP32的網絡模式:

    • STA 作為站點接入WiFi網絡

    • AP 作為熱點,允許其他設備接入ESP32

    本篇我們分別講解這兩種模式。

    熱點模式(AP)

    熱點模式允許用戶將自己的ESP32配置為熱點,這讓多個ESP32芯片之間的無線連接在不借助外部路由器網絡的情況下成為可能。

    import network
    
    ap = network.wifi(network.AP_IF) # 創建一個熱點
    ap.active(True)         # 激活熱點
    ap.config(essid='ESP-AP') # 為熱點配置essid(即熱點名稱)
    

    以上三行代碼,就簡單的將你的ESP32配置成了一個開放的AP熱點:

    你現在可以在你手機或電腦的WiFi列表中找到它了。

    站點模式(STA)

    更多的情況下,我們會想要將ESP32連接到WiFi網絡。

    import network
    
    wifi = network.wifi(network.STA_IF) # 創建一個Wifi站點
    wifi.active(True)       # 激活該站點
    wifi.scan()             # 掃描周圍的可用網絡
    

    獲取當前esp32的mac地址

    >>> wifi.config('mac')    
    b'0\xae\xa4\x84"d'
    

    檢查你是否已經連接到網絡

    >>> wifi.isconnected()      
    False
    

    連接到某個WiFi,essid指WiFi名稱,password指WiFi密碼
    >>> wifi.connect('essid', 'password') 
    

    PS: 上圖中How_Router_Home是筆者家中WiFi的名稱,[email protected]是該WiFi的密碼

    獲取當前WiFi連接的信息

    IP/子網掩碼/網關/DNS

    >>> wifi.ifconfig()  
    ('192.168.0.117', '255.255.255.0', '192.168.0.1', '192.168.0.1')
    

    輸出數據從左至右分別對應于:

    • 內外IP

    • 子網掩碼

    • 網關

    • DNS

    封裝一個連接WiFi的函數

    你可以將WiFi連接的步驟按照官網這樣,寫成一個函數:

    def do_connect():
        import network
        wifi = network.WLAN(network.STA_IF)
        wifi.active(True)
        if not wifi.isconnected():
            print('connecting to network...')
            wifi.connect('essid', 'password')
            while not wifi.isconnected():
                pass
        print('network config:', wifi.ifconfig())
    

    更好的WiFi連接方法

    EMP項目

    emp-1zlab中封裝了emp_wifi模塊, 它可以幫助你記住已有的wifi連接,更方便的為大家連接wifi

    以上的代碼,是ESP 8266的micropython文檔中,官方所提及的一段代碼,用于連接wifi,但是他的功能過于簡陋,無法滿足諸多迫切需求(記住密碼,切換網絡,自動連接),對于WiFi的連接,筆者曾寫過一篇文章詳細的講述wifi連接的正確姿勢。具體內容請閱讀1Z實驗室-簡書專題

    network模塊 API文檔

    class network.WLAN(mode)

    mode:模式

    • network.STA_IF 站點模式,連接到上游WiFi接入點

    • network.AP_IF 熱點模式,允許其他WiFi客戶端連接

    定義WLAN

    import network
    wlan = network.WLAN(network.STA_IF)    #創建WLAN對象
    

    函數

    wlan.active(is_active)

    函數說明:帶有參數時,為是否激活WiFi,不帶參數為查詢當前狀態。

    is_active:是否激活

    • True 激活網絡接口

    • False 停用網絡接口

    wlan.scan()

    函數說明:掃描可用的無線網絡(僅在STA接口上進行掃描),返回有關WiFi接入點信息的元組列表。

    (ssid,bssid,channel,RSSI,authmode,hidden)
    bssid:接入點的硬件地址,以二進制形式返回為字節對象??梢允褂?code>ubinascii.hexlify()將其轉換為ASCII格式
    authmode

    • AUTH_OPEN = 0

    • AUTH_WEP = 1

    • AUTH_WPA_PSK = 2

    • AUTH_WPA2_PSK = 3

    • AUTH_WPA_WPA2_PSK = 4

    • AUTH_MAX = 6

    hidden

    • False 可見

    • True 隱藏

    wlan.isconnected()

    函數說明:檢查站點是否連接到AP。
    在STA模式下,如果連接到WiFi接入點并具有有效的IP地址則返回True,否則返回False。
    在AP模式下,當站點連接時返回True,否則返回False。

    wlan.connect(essid, password)

    函數說明:連接到無線網絡。

    essid:WiFi名稱
    password:WiFi密碼

    wlan.config(essid, channel)

    函數說明: 獲取接口的MAC adddress或者設置WiFi接入點名稱和WiFi通道。

    essid:WiFi賬戶名
    channel:WiFi通道

    wlan.ifconfig([(ip,mask, gateway, dns)])

    函數說明:
    不帶參數時,返回一個4元組(ip, subnet_mask, gateway, DNS_server)。

    ip:IP地址
    mask:子網掩碼
    gateway:網關

    帶參數時,配置靜態IP。例如

    wlan.ifconfig(config = ('192.168.0.4', '255.255.255.0', '192.168.0.1', '8.8.8.8')
    

    wlan.disconnect()

    函數說明:斷開與當前連接的無線網絡的連接。

    wlan.status()

    函數說明:返回無線連接的當前狀態。


    韩国精品无码一区二区三区,精品无码一区二区三区AV,欧洲丰满美熟女乱又伦AV,亚洲午夜久久久影院伊人