用自然語言打造智慧生活小專案
本文示範如何使用 Codex 協助操作 Thonny,從 Hello World 開始,逐步完成 LED 閃爍,以及可由手機控制的 Pico 2 W 內建網站。
01Hello World
確認開發環境
確認開發環境
02LED 閃爍
控制板載硬體
控制板載硬體
03手機控制
建立內建 AP 網站
建立內建 AP 網站
Codex 在這個專案中的角色
Codex 可以依照自然語言提示,協助開啟 Thonny、輸入程式、切換到 MicroPython(Raspberry Pi Pico)直譯器,並執行程式。以下畫面是部落格用的操作示意:左側是 Codex 對話,右側是 Thonny 編輯器與 Shell。
範例一:執行 Hello World
Codex 提示詞
請在 Thonny 執行 Hello World 程式
Codex
請在 Thonny 執行 Hello World 程式
已開啟 Thonny,輸入程式並執行。
Thonny
Thonny — <untitled>
print("Hello World")
>>> Hello World
這個步驟可用來確認 Thonny 與 Python 執行環境正常。
範例二:讓 Pico LED 每秒閃爍
Codex 提示詞
用 Thonny 執行控制 Pico 板子上的 LED 每秒鐘閃爍一次
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
可以內建 AP
已建立 Pico 2 W 熱點與 LED 控制網站。
SSID: Pico2W-LED
Password: picoled123
Open http://192.168.4.1
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
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 名稱與密碼是示範用設定。實際使用時請更換密碼,並避免在公開環境中使用簡單密碼。
沒有留言:
張貼留言