2026年10月6日 星期二

Wi-Fi、IP 與網際網路連線|Pico 2 W

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」。

Wi-Fi/AP讓 Pico 以無線方式加入區域網路。
IP 位址標示 Pico 在網路中的位置,讓資料知道要送給哪一部裝置。
Gateway通常是路由器,負責把資料從本地網路轉送到其他網路。
DNS協助把網域名稱查詢成 IP 位址。

可以用「校園地址」來想像: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 秒,避免程式一直停在等待迴圈中。

保護網路密碼:請使用教師核准的測試網路或自己的行動熱點。不要把真實 Wi-Fi 密碼寫進公開的程式碼、截圖、作業或部落格;分享程式前,先改成提示文字或讀取本機設定檔。

三、讀懂 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 上不了網時,依序檢查

  1. 供電與 USB:確認 Pico 正常供電,Thonny 能和開發板互動。
  2. 基地台是否可見:執行掃描,確認目標網路出現在結果中。
  3. SSID 與密碼:檢查大小寫、空格與輸入內容;注意不要將密碼公開。
  4. Wi-Fi 是否已連線:以 wlan.isconnected()確認連線狀態。
  5. 是否取得網路設定:列印 wlan.ifconfig(),檢查 IP、Gateway 與 DNS。
  6. 是否能到達目標服務:依課堂允許的方式測試;校園網路可能限制 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,並嘗試用瀏覽器與開發板互動。

沒有留言:

張貼留言