2026年10月27日 星期二

用 Codex 與 Thonny 打造 Pico 2 W 智慧生活專案

Codex × Thonny × Raspberry Pi Pico 2 W

用自然語言打造智慧生活小專案

本文示範如何使用 Codex 協助操作 Thonny,從 Hello World 開始,逐步完成 LED 閃爍,以及可由手機控制的 Pico 2 W 內建網站。

01Hello World
確認開發環境
02LED 閃爍
控制板載硬體
03手機控制
建立內建 AP 網站

Codex 在這個專案中的角色

Codex 可以依照自然語言提示,協助開啟 Thonny、輸入程式、切換到 MicroPython(Raspberry Pi Pico)直譯器,並執行程式。以下畫面是部落格用的操作示意:左側是 Codex 對話,右側是 Thonny 編輯器與 Shell。

範例一:執行 Hello World

Codex 提示詞請在 Thonny 執行 Hello World 程式
Codex 與 Thonny
Codex
請在 Thonny 執行 Hello World 程式
已開啟 Thonny,輸入程式並執行。
Thonny
Thonny — <untitled>
print("Hello World")
>>> Hello World

這個步驟可用來確認 Thonny 與 Python 執行環境正常。

範例二:讓 Pico LED 每秒閃爍

Codex 提示詞用 Thonny 執行控制 Pico 板子上的 LED 每秒鐘閃爍一次
Codex 與 Thonny
Codex
用 Thonny 執行控制 Pico 板子上的 LED 每秒鐘閃爍一次
已切換為 MicroPython(Raspberry Pi Pico),並執行 LED 程式。
Thonny / MicroPython
MicroPython (Raspberry Pi Pico)
from machine import Pin from time import sleep led = Pin("LED", Pin.OUT) while True: led.toggle() sleep(1)
MPY: soft reboot

執行前請確認 Pico 透過 USB 連接電腦,並在 Thonny 選擇 Raspberry Pi Pico 的 MicroPython 直譯器。

範例三:用手機控制 Pico 2 W LED

Codex 提示詞Raspberry Pi Pico 2 W 內建一個網站,可以經由手機來控制板上的 LED ON/OFF
補充提示詞可以內建 AP
Codex 與 Thonny
Codex
可以內建 AP
已建立 Pico 2 W 熱點與 LED 控制網站。
SSID: Pico2W-LED
Password: picoled123
Open http://192.168.4.1
Thonny / Pico 2 W
MicroPython — Raspberry Pi Pico 2 W
ap = network.WLAN(network.AP_IF) ap.config(ssid="Pico2W-LED", password="picoled123") ap.active(True) if b"GET /on" in request: led.on() elif b"GET /off" in request: led.off()
Wi-Fi AP ready
Open http://192.168.4.1

手機連線到 Pico2W-LED,密碼為 picoled123,再開啟 http://192.168.4.1,即可看到 LED ON 與 LED OFF 按鈕。

完整網站程式

import network
import socket
from machine import Pin

led = Pin("LED", Pin.OUT)
ap = network.WLAN(network.AP_IF)
ap.config(ssid="Pico2W-LED", password="picoled123")
ap.active(True)

while not ap.active():
    pass

print("Open http://192.168.4.1")
addr = socket.getaddrinfo("0.0.0.0", 80)[0][-1]
server = socket.socket()
server.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
server.bind(addr)
server.listen(1)

while True:
    client, remote = server.accept()
    request = client.recv(1024)
    if b"GET /on" in request:
        led.on()
    elif b"GET /off" in request:
        led.off()
    status = "ON" if led.value() else "OFF"
    page = "<h1>Pico 2 W LED</h1>"
    page += "<p>LED: " + status + "</p>"
    page += "<a href='/on'><button>LED ON</button></a>"
    page += " <a href='/off'><button>LED OFF</button></a>"
    response = "HTTP/1.1 200 OK" + chr(13) + chr(10)
    response += "Content-Type: text/html" + chr(13) + chr(10)
    response += "Connection: close" + chr(13) + chr(10) + chr(13) + chr(10)
    client.send((response + page).encode())
    client.close()
安全提醒:本文的 AP 名稱與密碼是示範用設定。實際使用時請更換密碼,並避免在公開環境中使用簡單密碼。

沒有留言:

張貼留言