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服務,需要配置一個網絡連接配接的密碼,自己記得就行了。
2.2. 啟動webrepl服務
初始化好以後就可以啟動webrepl了,咱們還是在REPL中繼續執行
import webrepl
webrepl.start()
webrepl.start()
方法在啟動服務時,需要這裡可以在參數裡指定port端口(預設是8266)和password密碼的。
2.3. 連接配接到webrepl
服務啟來了,那咱們就可以使用websocket來連接配接和互動了,這裡使用官方部署的線上環境用戶端就行。
進入位址: http://micropython.org/webrepl
進入後,填寫正确的位址和端口(剛才已經把port改為了8888,需要對應),connect後輸入密碼就會提示連接配接成功了。
當然了,需要本機與開發闆連接配接到了同一個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()