MicroPython 如此簡單: WiFi 無線網路套件

Yungger
6 min readMay 29, 2022

一個簡單快速以 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), 可發現也是連網服務中狀態。

若覺得此文真對您有幫助, 點點左上方的拍手圖示, 鼓勵一下。若還想 請喝杯咖啡 鼓勵一下勇哥的繼續創作, 也感謝 😘 😘 !!

Yungger 勇哥

Maker & Freelancer

--

--