一個簡單快速以 WiFi 的 STA 或 AP 模式來連網的元件庫
*** 只須加上 2~3 行指令, 就能讓你的 MCU 自動連上WiFi 或做為 AP ***
Step 1: 安裝函式庫
首先, 必須先上傳函式庫到 MCU 板子上 !
如果您尚不知如何上傳檔案至 MCU 時, 建議您可先參考我的另一篇 “MicroPython 如此簡單: 檔案管理”.
Step 2: 加入 My_Wifi 物件
from My_Wifi import myWifiwifi = myWifi() # 載入自動連網物件
wifi.connect() # 執行自動連網
只要程式碼中加入上面程式碼, 基本上以後您的 MCU 就可自動連上 Wifi 了 !!
應用範例
DEMO 1: Wifi AP 掃描器
from My_Wifi import myWifi
wifi = myWifi() # 掃描AP不需要 SSID 與 Password
for ap in wifi.scan():
print(ap)
您可以依自己要顯示的方式, 排版範例如下:
DEMO 2: STA (用戶端) 連線, 採用動態 IP (DHCP) 方式
當 MCU 做為終端用戶裝置, 以動態配置 IP 方式, 連上 WiFi AP。
wifi = myWifi(YOUR_WIFI_SSID, YOUR_WIFI_PSWD)
if wifi.connect():
wifi.disconnect(5) # 設定 5 秒後, 斷線
結果顯示 MCU 的連網 IP 為 DHCP 動態所配發的可用 IP, 192.168.43.110
DEMO 3: STA (用戶端) 連線, 採用指定 IP方式
想使用指定的固定 IP, 僅須在 myWifi 加上指定 IP 即可。
wifi = myWifi(YOUR_WIFI_SSID, YOUR_WIFI_PSWD, "192.168.43.121")
下圖結果顯示, MCU 的連網 IP 已被指派為事先設定的 192.168.43.121
可以透過網路指令驗證, 該 MCU 的 IP 192.168.43.121 已連在網路上了。
*** 注意: 在使用固定 IP 前, 建議要先確定哪個 IP 一定不會被使用, 否則很容易造成共用到其他裝置的 IP, 而造成網路封包派送時沖撞而癱瘓網路。 ***
DEMO 4: 熱點模式(AP)連線, 採用動態 IP (DHCP) 方式
以 MCU 微控板做為 AP, 提供連線服務給其它終端用戶裝置。
from My_Wifi import myWifiAPwifi = myWifiAP(AP_SSID, AP_PWD)if wifi.start(): # 啟動 AP 服務, 使用上次 Wifi 成功連線的 IP 與網段
wifi.stop(5) # 5 秒後, 關閉 AP
下圖結果顯示, 該 MCU 啟用 AP 模式, IP 為 192.168.4.1 (預設值)
可以透過連上該 AP 試試, 下圖我以手機測試連線, 連上後, 由手機可查得 AP 配給我的 IP 是 192.168.4.3, 而 Gateway 就是 MCU (192.168.4.1)
DEMO 5: 熱點模式(AP)連線, 採用指定 IP方式
與 STA 模式一樣, 想使用指定的固定 IP, 僅須加上想要的指定 IP 即可。
wifi = myWifiAP(AP_SSID, AP_PWD, "192.168.168.168")
下圖結果顯示, 該 MCU 的 AP 連網 IP 已被指派為 192.168.168.168
DEMO 6: 熱點模式(AP)連線, 使用特殊設定
有某些特殊情形下, 可能需要將 AP 設定為我們所要求的網路連線行為, 例如隱藏 SSID, 指定通道或加密方式 …etc
下圖結果顯示, 該 MCU 的 AP 連網 IP 被指定為 192.168.168.4, 閘道是 192.168.168.1, DNS 是 8.8.8.8, 通道為 2 與使用 WPA2-PSK 加密模式
DEMO 7: 雙網模式(STA + AP)連線
MCU 微控板做為內網 AP, 提供連線服務給其它終端用戶裝置。同時也是終端用戶, 連上外網的 AP。
from My_Wifi import myWifiSTA, myWifiAP# 熱點模式, 內網連線
my_ap = myWifiAP('ESPxx_AP', '*123456789*')
my_ap.setIP("192.168.168.1", "255.255.255.0", "192.168.168.1", "8.8.8.8")
my_ap.start() # 啟用 AP# 用戶模式, 外網連線
my_sta = myWifiSTA('YOUR_WIFI_SSID', 'YOUR_WIFI_PWD') my_sta.connect() # 連線, 預設為動態 IP
可以透過連上該 AP 試試, 下圖我以手機測試, 可發現手機已取得 IP 為 192.168.168.2, 而熱點則是 192.168.168.1 (MCU 的對內 IP)
同時 ping 網路 192.168.31.21 (MCU 對外 IP), 可發現也是連網服務中狀態。