Pico 2 W × Thonny|第 2 次課程
Wi-Fi、IP 與網際網路連線
Pico 2 W 連上 Wi-Fi,只代表它加入了無線區域網路。要和其他網路或 Internet 上的服務通訊,還需要網路位址、閘道器與 DNS 等資訊。本篇帶你逐步連線、查看設定,並用明確的順序排查問題。
作者:施朝斌一、Wi-Fi 不等於 Internet
Wi-Fi 是裝置連接無線基地台(AP)的方式;Internet 則是由許多網路互相連接而成。Pico 成功連上基地台,是通訊的第一步,但基地台或校園網路仍可能受到登入驗證、網路政策或外部連線限制,因此「已連上 Wi-Fi」不一定表示「已能使用 Internet」。
可以用「校園地址」來想像:IP 像裝置的門牌,Gateway 像通往外部道路的出口,DNS 則像依照名稱查找地址的服務。
二、讓 Pico 2 W 連上 Wi-Fi
MicroPython 使用 network 模組管理無線網路。以下範例將 Pico 設為站台模式(Station),啟用 Wi-Fi,並使用課堂提供的網路名稱與密碼嘗試連線。
import network
import time
SSID = "請填入 Wi-Fi 名稱"
PASSWORD = "請填入 Wi-Fi 密碼"
wlan = network.WLAN(network.STA_IF)
wlan.active(True)
wlan.connect(SSID, PASSWORD)
for attempt in range(20):
if wlan.isconnected():
break
print("Connecting...", attempt + 1)
time.sleep(1)
if wlan.isconnected():
print("Connected!")
print("Network settings:", wlan.ifconfig())
else:
print("Connection failed. Check SSID, password, and network access.")
network.STA_IF表示 Pico 要連到既有的無線基地台,而不是自行建立基地台。active(True)啟用無線介面;connect()開始連線;isconnected()檢查連線狀態。範例設定最多等待約 20 秒,避免程式一直停在等待迴圈中。
三、讀懂 ifconfig() 回傳的資料
連線成功後,wlan.ifconfig()會回傳一組網路設定,依序包含 IP 位址、子網路遮罩、Gateway 與 DNS。可以先直接列印,再逐項辨認它們的用途。
if wlan.isconnected():
ip_address, netmask, gateway, dns = wlan.ifconfig()
print("IP address:", ip_address)
print("Netmask:", netmask)
print("Gateway:", gateway)
print("DNS:", dns)
- IP 位址:本例程式會顯示 Pico 實際取得的位址。位址可能因網路不同而改變,不要把課堂範例中的數字當成固定值。
- Netmask:協助判斷哪些位址屬於同一個區域網路。
- Gateway:通常是目前網路的路由器位址。
- DNS:提供網域名稱查詢服務的伺服器位址。
多數教學環境會由 DHCP(動態主機設定協定)自動分配這些資訊。若沒有取得有效的網路設定,可能是連線尚未完成、基地台未提供位址,或該網路需要額外驗證。
四、掃描附近的 Wi-Fi 基地台
掃描可以幫助我們觀察 Pico 附近看得到哪些 AP,以及訊號強度等資訊。掃描只是在查看無線環境,不代表已經連上某個網路。
import network
wlan = network.WLAN(network.STA_IF)
wlan.active(True)
for ap in wlan.scan():
print(ap)
每筆掃描結果會包含 SSID、基地台識別資訊、頻道、RSSI 訊號強度、安全模式與隱藏狀態等欄位;不同韌體的呈現形式可能略有差異。可比較同一地點不同 AP 的訊號,也可以移動 Pico 後重新掃描,觀察數值變化。
許多 IoT 開發板使用 2.4 GHz Wi-Fi。部署時要確認基地台提供裝置可用的頻段與安全設定;如果連不上,先檢查網路設備設定與課堂環境,不要直接推定是程式錯誤。
五、Pico 上不了網時,依序檢查
- 供電與 USB:確認 Pico 正常供電,Thonny 能和開發板互動。
- 基地台是否可見:執行掃描,確認目標網路出現在結果中。
- SSID 與密碼:檢查大小寫、空格與輸入內容;注意不要將密碼公開。
- Wi-Fi 是否已連線:以
wlan.isconnected()確認連線狀態。 - 是否取得網路設定:列印
wlan.ifconfig(),檢查 IP、Gateway 與 DNS。 - 是否能到達目標服務:依課堂允許的方式測試;校園網路可能限制 Ping 或其他連線方式。
每一步都記錄「成功到哪裡」,比反覆修改程式更容易找出問題。例如掃描看得到 AP、但無法連線,和已連線卻沒有取得 IP,代表問題可能在不同環節。
六、實作任務
- 連上教師指定或自己建立的測試 Wi-Fi。
- 列出附近 AP,觀察 SSID 與訊號強度。
- 印出 Pico 的 IP、Netmask、Gateway 與 DNS。
- 在程式中加入有限次數的重連嘗試,並顯示成功或失敗訊息。
- 挑戰:設計一個 Wi-Fi 狀態 LED,讓不同連線狀態有可辨識的燈號。
記錄實驗時,可以保留程式、連線結果與除錯步驟;公開分享前,記得移除 Wi-Fi 密碼及其他帳號資訊。
本篇重點回顧
- Wi-Fi 連線是加入無線區域網路,不等於一定能連上 Internet。
- Pico 以
network.WLAN(network.STA_IF)連接既有基地台。 ifconfig()提供 IP、Netmask、Gateway 與 DNS 等設定。- 依照供電、掃描、帳密、連線狀態、IP 設定與服務可達性的順序除錯。
- 不要將真實網路密碼放進公開程式碼或教材。
下一篇將從網路連線繼續前進,讓 Pico 2 W 建立 Web Server,並嘗試用瀏覽器與開發板互動。
沒有留言:
張貼留言