天天看點

MicroPython-On-ESP8266——自動連接配接WIFI與開啟webreplMicroPython-On-ESP8266——自動連接配接WIFI與開啟webrepl

MicroPython-On-ESP8266——自動連接配接WIFI與開啟webrepl

1. 啟動即連接配接wifi

esp8266晶片的核心作為即為作為網絡連接配接的橋梁,前面咱們也學習了使用

network

庫将開發闆當作熱點或者連接配接到現有網絡中。後面需要使用urequests子產品作網絡請求什麼的,都是需要先連接配接到網絡才行。

1.1. 啟動方法

micropython固件包刷到開發闆上後,裡面是有一個

boot.py

檔案的,而且這個檔案不能删除。

開發闆上電啟動後,會先執行

boot.py

中的代碼,然後才繼續執行

main.py

中代碼。後期學習過程中,主要的業務邏輯都會寫在main檔案中,那咱們就可以把連接配接wifi代碼段放到boot檔案中,這樣就可以專心排程業務功能了。

之前學習網絡子產品時,有學習到連接配接現有wifi的功能

def do_connect():
    sta_if = network.WLAN(network.STA_IF)
    sta_if.active(False)
    if not sta_if.isconnected():
        print('connecting to network...')
        sta_if.active(True)
        sta_if.connect('essid', 'password')  # 修改為自己wifi密碼
        while not sta_if.isconnected():
            pass
    print('network config:', sta_if.ifconfig())
           

那隻要把這段代碼放到

boot.py

中并啟動do_connect函數即可了。

1.2. 配置boot.py檔案

查後面的webrepl資料時,找到一個别人配置的boot.py檔案,封裝得比較好,拿來學習學習。

原位址:https://www.jianshu.com/p/c2ddd4fd05be

def do_connect():
    import json
    import network
    # 嘗試讀取配置檔案wifi_confi.json,這裡我們以json的方式來存儲WIFI配置
    # wifi_config.json在根目錄下
    
    # 若不是初次運作,則将檔案中的内容讀取并加載到字典變量 config
    try:
        with open('wifi_config.json','r') as f:
            config = json.loads(f.read())
    # 若初次運作,則将進入excpet,執行配置檔案的建立        
    except:
        essid = input('wifi name:') # 輸入essid
        password = input('wifi passwrod:') # 輸入password
        config = dict(essid=essid, password=password) # 建立字典
        with open('wifi_config.json','w') as f:
            f.write(json.dumps(config)) # 将字典序列化為json字元串,存入wifi_config.json
            
    #以下為正常的WIFI連接配接流程        
    wifi = network.WLAN(network.STA_IF)  
    if not wifi.isconnected(): 
        print('connecting to network...')
        wifi.active(True) 
        wifi.connect(config['essid'], config['password']) 
        import time
        time.sleep(5) #一般睡個5-10秒,應該綽綽有餘
        
        if not wifi.isconnected():
            wifi.active(False) #關掉連接配接,免得repl死循環輸出
            print('wifi connection error, please reconnect')
            import os
            # 連續輸錯essid和password會導緻wifi_config.json不存在
            try:
                os.remove('wifi_config.json') # 删除配置檔案
            except:
                pass
            do_connect() # 重新連接配接
        else:
            print('network config:', wifi.ifconfig()) 

if __name__ == '__main__':
    do_connect()
           

把wifi和密碼放到了外部json配置檔案中,首次使用需要在REPL中輸入,後面有了配置檔案就會自己連接配接到網絡了。

2. 使用webrepl

前面學習過程中,調試和上傳程式代碼這些的都是在REPL中進行的,實際上micropython還提供了一種webrepl調試方法,在開發闆連接配接到網絡後,再可開啟該功能,就可以通過websocket方式與開發闆互動了。這樣省去每次都還要連接配接序列槽USB線來調試的麻煩。

2.1. 初始化webrepl

要開啟webrepl功能,首先還是得連線後在REPL下初始化該子產品

import webrepl_set
           

在REPL中執行這條語句,系統自會提示安裝webrepl服務,需要配置一個網絡連接配接的密碼,自己記得就行了。

MicroPython-On-ESP8266——自動連接配接WIFI與開啟webreplMicroPython-On-ESP8266——自動連接配接WIFI與開啟webrepl

2.2. 啟動webrepl服務

初始化好以後就可以啟動webrepl了,咱們還是在REPL中繼續執行

import webrepl
webrepl.start()
           
MicroPython-On-ESP8266——自動連接配接WIFI與開啟webreplMicroPython-On-ESP8266——自動連接配接WIFI與開啟webrepl

webrepl.start()

方法在啟動服務時,需要這裡可以在參數裡指定port端口(預設是8266)和password密碼的。

MicroPython-On-ESP8266——自動連接配接WIFI與開啟webreplMicroPython-On-ESP8266——自動連接配接WIFI與開啟webrepl

2.3. 連接配接到webrepl

服務啟來了,那咱們就可以使用websocket來連接配接和互動了,這裡使用官方部署的線上環境用戶端就行。

進入位址: http://micropython.org/webrepl

進入後,填寫正确的位址和端口(剛才已經把port改為了8888,需要對應),connect後輸入密碼就會提示連接配接成功了。

MicroPython-On-ESP8266——自動連接配接WIFI與開啟webreplMicroPython-On-ESP8266——自動連接配接WIFI與開啟webrepl

當然了,需要本機與開發闆連接配接到了同一個wifi網絡才可以正常通路得到。

因為咱們在連接配接wifi網絡時使用的是STA_IF模式,是以這裡通路webrepl時需要用路由給配置設定的内網ip,192.168.4.1這個就不能用來連接配接了。

2.3. 設定開發闆啟動即開啟webrepl

前面已經在

boot.py

啟動檔案中配置好了開發闆啟動即連接配接到wifi網絡,那要再開啟webrepl也就容易了,把啟動服務指令加到連接配接網絡後面就行

if __name__ == '__main__':
    do_connect()
    import webrepl
    webrepl.start()
           

繼續閱讀