目的
ESP32的一大特色就是對無線網絡的支持,本文將介紹使用MicroPython建立/連接無線網絡。
無線局域網(WLAN)
函數說明
MicroPython中使用無線網主要是用到了 network
模塊中的 WLAN
類,具體函數說明如下:
class network.WLAN(interface_id)
構造函數,用於聲明WLAN對象,參數可選network.STA_IF
(連接到已有無線網)、network.AP_IF
(作爲網絡接入點);WLAN.active([is_active])
不填參數使用返回無線網絡功能狀態,填入True
則啓用無線網絡,填入False
則停用無線網絡;WLAN.connect(ssid=None, password=None, *, bssid=None)
STA模式下用於連接到無線網絡,參數分別是ssid
網絡名、password
密碼、bssid
網絡設備的mac地址;WLAN.disconnect()
用於斷開當前網絡連接;WLAN.scan()
STA模式下掃描環境中可用的無線網,返回一個表示無線網絡信息的元組組成的列表,無線網絡信息格式如下:
(ssid, bssid, channel, RSSI, authmode, hidden)
bssid以二進制形式表示,可以用ubinascii.hexlify()轉換爲ASCII形式;
channel爲信道號,2.4G網絡信道號爲1~13,基於信道污染原因,常取1、6、11;
RSSI爲信號強度,數值越小信號越好;
authmode爲加密方式,爲別爲0 – open
、1 – WEP
、2 – WPA-PSK
、3 – WPA2-PSK
、4 – WPA/WPA2-PSK
;
hidden表示是否無線網絡隱藏,False – 0 – visible – 可見的
、True – 1 – hidden –隱藏的
;WLAN.status([param])
不填寫參數時返回網絡工作狀態:
STAT_IDLE – 無線網絡未開啓;
STAT_CONNECTING – 正在連接;
STAT_WRONG_PASSWORD – 因密碼錯誤連接失敗;
STAT_NO_AP_FOUND – 未找到接入點;
STAT_CONNECT_FAIL – 其它原因連接失敗;
STAT_GOT_IP – 連接成功獲得IP;
STA模式下還可以填入'rssi'
作爲參數獲取當前網絡信號強度;WLAN.isconnected()
STA模式下如果已聯網且有IP則返回True;
AP模式下如果有設備接入則返回True;WLAN.ifconfig([(ip, subnet, gateway, dns)])
不帶參數使用時將返回當前設備網絡參數,參數將以一個帶四個項的元組組織,參數分別爲IP地址、子網掩碼、網關地址、DNS服務器地址;
帶參數使用時可以設置設備網絡參數,例如下面方式:
nic.ifconfig(('192.168.0.4', '255.255.255.0', '192.168.0.1', '8.8.8.8'))
WLAN.config('param')
WLAN.config(param=value, ...)
用來查詢或修改設備網絡參數,需要通過命名關鍵詞參數方式使用,可用參數如下:
mac – 設備物理地址
essid – ap模式網絡名稱
channel – 信道號
hidden – 是否隱藏
authmode – 加密方式
password – ap模式密碼
dhcp_hostname – dhcp主機名
使用演示
STA模式
上圖中我連接了名爲(SSID) AAA 、密碼是12345678的無線網絡,連上網絡後打印了IP、子網掩碼、網關、DNS服務器信息。
AP模式
上圖中啓用了無線接入點,網絡名稱是lalala、加密方式是WPA/WPA2-PSK、密碼是12345678;
WebREPL
在之前的文章演示中都是通過串口和開發板進行交互的,在啓用網絡功能後我們就可以通過網絡進行交互了,如下圖演示:
上圖就是通過瀏覽器訪問開發板IP地址進行的交互,上面輸入密碼時和Linux習慣一樣,不會顯示輸入的情況。在登錄成功後按 Ctrl + B
可以進入Shell調試。在該工具中也可以傳輸文件。
在使用該工具前需要先在開發板上進行設置:
設置時輸入密碼和端口號,端口號也可以缺省,缺省的情況下默認端口號爲8266。對於webrepl的設置會保存於文件中,重啓設備後也有效。可以使用 webrepl.stop() 方法關閉服務。可以寫一個自動初始化網絡的代碼保存爲 main.py
放到模塊中,這樣在下次啓動後就可以直接通過網絡進行調試了。
WebREPL下載地址:https://github.com/micropython/webrepl
WebREPL在線託管版本地址:http://micropython.org/webrepl
總結
無線網絡功能使用比較簡單,更多內容可以參考下面鏈接:
http://docs.micropython.org/en/latest/library/network.WLAN.html