Raspberry Pi Pico W 程式設計教材

從 MicroPython 開發環境、GPIO、PWM、ADC、Wi-Fi 連線,到 HTTP 與 MQTT 應用,建立 Pico W 在 IoT 課程中的完整實作基礎。

適合電子系、嵌入式系統、微控制器、智慧裝置與物聯網課程。

Pico W MicroPython Wi-Fi IoT

一、教學目標

  • 理解 Raspberry Pi Pico W 與一般單板電腦的差異
  • 學會安裝 MicroPython 與使用 Thonny 開發
  • 熟悉 GPIO、按鈕輸入、LED、PWM 與 ADC 讀值
  • 學會讓 Pico W 連上 Wi-Fi 並進行網路通訊
  • 能完成 MQTT 或 HTTP 為基礎的 IoT 小專題

二、Pico W 適合做什麼

  • 感測器資料收集與上傳
  • 低成本控制器與教學實驗平台
  • Wi-Fi 連網開關、簡易監測站
  • IoT 裝置原型設計
  • 搭配 Raspberry Pi 或伺服器做前後端整合
Pico W 是微控制器,不是完整 Linux 電腦。它啟動快、耗電低,適合硬體控制與網路節點。

三、Pico W 與 Raspberry Pi 的差異

項目 Raspberry Pi 5 Pico W
類型單板電腦微控制器開發板
作業系統可執行 Linux通常執行 MicroPython 或 C/C++ 韌體
啟動時間較長非常快
硬體控制適合,但偏高階應用非常適合即時 I/O 控制
網路功能完整網路堆疊具 Wi-Fi,可做輕量 IoT 應用
適用課題伺服器、網站、AI、影像感測器、控制器、低功耗 IoT 節點

四、硬體規格與注意事項

Pico W 的 GPIO 不可直接接 5V 訊號。若外部模組是 5V,應使用分壓、電平轉換器或相容的介面電路。

五、開發環境安裝流程

1. 準備工具

2. 安裝 MicroPython 韌體

  1. 按住 Pico W 的 BOOTSEL 按鈕
  2. 插入 USB 連接電腦
  3. 電腦會出現可攜式磁碟
  4. 將對應的 .uf2 韌體檔拖曳進去

3. 使用 Thonny 設定直譯器

教學上建議先用 Thonny,因為它同時提供編輯器、Shell、檔案上傳與執行環境,對初學者最友善。

六、第一個程式:Hello Pico W

先確認程式可以正常下載到板子並執行。

print("Hello, Pico W!")

可以先在 Thonny 直接執行,再將程式存成板子上的 main.py,讓裝置重新開機後也能自動執行。

七、GPIO 輸出:點亮 LED

接線建議

MicroPython 範例

from machine import Pin
from time import sleep

led = Pin(15, Pin.OUT)

while True:
    led.toggle()
    sleep(0.5)
若使用 Pico W 板上 LED,某些版本可以用 Pin("LED", Pin.OUT) 控制,教學時可依實際韌體版本調整。

八、GPIO 輸入:按鈕讀取

按鈕範例可讓學生理解數位輸入、上拉電阻與條件判斷。

from machine import Pin
from time import sleep

button = Pin(14, Pin.IN, Pin.PULL_UP)
led = Pin(15, Pin.OUT)

while True:
    if button.value() == 0:
        led.value(1)
    else:
        led.value(0)
    sleep(0.05)
使用 Pin.PULL_UP 時,按鈕按下通常會讀到 0。這是初學者很常混淆的地方。

九、PWM:控制 LED 亮度或蜂鳴器

from machine import Pin, PWM
from time import sleep

pwm = PWM(Pin(15))
pwm.freq(1000)

for duty in range(0, 65535, 2000):
    pwm.duty_u16(duty)
    sleep(0.05)

for duty in range(65535, 0, -2000):
    pwm.duty_u16(duty)
    sleep(0.05)

可以延伸成:

十、ADC:讀取類比訊號

Pico W 可透過 ADC 讀取可變電阻、光敏電阻或其他類比感測訊號。

from machine import ADC
from time import sleep

adc = ADC(26)

while True:
    value = adc.read_u16()
    print(value)
    sleep(0.2)

如果要轉成電壓,可用近似公式:

voltage = value * 3.3 / 65535

十一、讓 Pico W 連上 Wi-Fi

這是 Pico W 與一般 Pico 的重要差異,也是進入 IoT 應用的核心能力。

import network
import time

ssid = "你的WiFi名稱"
password = "你的WiFi密碼"

wlan = network.WLAN(network.STA_IF)
wlan.active(True)
wlan.connect(ssid, password)

for _ in range(20):
    if wlan.isconnected():
        break
    print("連線中...")
    time.sleep(1)

if wlan.isconnected():
    print("Wi-Fi 連線成功")
    print("IP:", wlan.ifconfig()[0])
else:
    print("Wi-Fi 連線失敗")
教學時可提醒學生:SSID 與密碼大小寫有差,且 2.4GHz Wi-Fi 相容性通常比 5GHz 更好。

十二、HTTP 範例:向網頁伺服器發出請求

若已安裝支援的 urequests 模組,可以進一步測試 HTTP 通訊。

import network
import time
import urequests

ssid = "你的WiFi名稱"
password = "你的WiFi密碼"

wlan = network.WLAN(network.STA_IF)
wlan.active(True)
wlan.connect(ssid, password)

while not wlan.isconnected():
    time.sleep(1)

response = urequests.get("http://httpbin.org/get")
print(response.text)
response.close()

這一段可延伸成:

十三、MQTT 範例:發佈感測資料

若課程已搭配 Mosquitto 或 Node-RED,可直接讓 Pico W 發佈資料到 Broker。

import network
import time
from umqtt.simple import MQTTClient
from machine import ADC

ssid = "你的WiFi名稱"
password = "你的WiFi密碼"
mqtt_server = "192.168.1.100"
client_id = "pico_w_01"
topic = b"iot/picow/light"

wlan = network.WLAN(network.STA_IF)
wlan.active(True)
wlan.connect(ssid, password)

while not wlan.isconnected():
    time.sleep(1)

adc = ADC(26)
client = MQTTClient(client_id, mqtt_server)
client.connect()

while True:
    value = adc.read_u16()
    client.publish(topic, str(value))
    print("publish:", value)
    time.sleep(2)
這份教材與 repo 內的 MQTT 教材可以互相搭配:Pico W 負責送資料,Raspberry Pi 或 Python 程式負責接收與顯示。

十四、建議課堂實驗流程

  1. 完成開發環境安裝與 Hello Pico W
  2. 做 LED 閃爍與按鈕控制
  3. 加入 PWM 與 ADC 感測
  4. 完成 Wi-Fi 連線測試
  5. 將感測值上傳到 MQTT 或 HTTP 服務
  6. 搭配 Node-RED、Flask 或資料庫做視覺化

十五、常見錯誤與排除

問題 可能原因 處理方式
Thonny 找不到板子線材只支援充電、連接埠未選對改用可傳輸資料的 USB 線,重新選擇 Port
程式上傳失敗直譯器設定錯誤確認選的是 MicroPython (Raspberry Pi Pico)
LED 不亮腳位接錯、極性相反、沒接 GND重新檢查接線與程式腳位編號
Wi-Fi 連不上SSID/密碼錯誤、訊號差、頻段不相容確認 2.4GHz 網路、重新檢查帳密
MQTT 無法連線Broker IP 錯誤、防火牆、Topic 設定不一致先用電腦端測試 Broker,再回頭檢查 Pico W

十六、課堂專題方向

十七、與本課程其他教材的搭配方式

這樣的教材順序可以形成「微控制器感測 → 網路傳輸 → 儀表板 → Web 後台」的完整 IoT 教學路線。