Checking browser support…
在瀏覽器裡開發 MicroPython 與 CircuitPython 開發板 —— REPL、程式編輯器、檔案管理,什麼都不用裝。
Talks to your board locally over Web Serial — no code leaves your browser.
Checking browser support…
這是為「板子上直接跑 Python 解譯器」的裝置所打造的瀏覽器 IDE —— MicroPython(ESP32、Raspberry Pi Pico、micro:bit 等)與 CircuitPython(Adafruit 系列板子)。因為解譯器本來就住在板子上,你的 .py 檔不必編譯就能直接執行:「瀏覽器沒辦法建置 C/C++ 韌體」這個經典限制在這裡根本不成立。透過 Web Serial API 連上之後,程式編輯器、REPL 終端機與檔案管理都是在本機和板子對話 —— 沒有任何東西上傳到伺服器。
這個工具說的是 MicroPython 的 raw REPL 協定。你按下執行時,它會中斷板子正在做的事、把板子切進 raw REPL,用 raw-paste 模式串流你的程式(帶視窗流量控制,所以大一點的腳本也能乾淨傳完,不會被友善 REPL 的自動縮排弄壞),執行它,再把輸出原封不動送回終端機。Ctrl-C 中斷正在執行的程式,Ctrl-D 觸發軟重置。板上檔案系統的操作 —— 列出、讀取、寫入、刪除 —— 都是透過同一條通道執行小段 Python 程式,再解析板子印出來的內容完成的。
檔案管理會列出板子上有什麼,並讓你編輯、上傳、下載與刪除檔案。把編輯器分頁存成 main.py(CircuitPython 則是 code.py),板子下次重置就會自動執行它 —— 這正是這類板子存在的意義。CircuitPython 要特別注意:當你的電腦以可寫入的方式掛上 CIRCUITPY 這個 USB 磁碟時,板子會把自己的檔案系統掛成唯讀,所以從網頁寫入會失敗,得先退出磁碟才行;工具會偵測你連的是哪一種,並把這件事說明清楚。
起步範例庫涵蓋了大家最常做的第一件事 —— 閃 LED、讀類比感測器、連上 Wi-Fi、把數值串流到即時繪圖器 —— 都能一鍵載入。你自己寫的程式片段會存在瀏覽器的 localStorage,永遠不會離開這台裝置。
任何跑 MicroPython 或 CircuitPython、並以 USB 序列裝置現身的板子:ESP32/ESP8266、Raspberry Pi Pico、micro:bit、Adafruit Feather/QT Py 等等。它需要 Chromium 瀏覽器(桌面版的 Chrome、Edge 或 Opera;Android 版 Chrome 148 以上),因為 Web Serial API 是 Chromium 專屬的 —— Safari 與 Firefox 並未實作。
不用 Python、不用 IDE、不用工具鏈,解譯器本來就在板子上。在 macOS、Linux 與 ChromeOS 上,板子不需要任何驅動步驟就會被認出來;在 Windows 上,有些板子可能需要 CH340 或 CP210x 的 USB 轉序列驅動程式,那和 Arduino IDE 用的是同一支。
兩者都跑在同一套 raw REPL 上,所以編輯器和終端機的用法完全一樣。差別在開機自動執行的檔案(main.py 對 code.py)以及檔案系統:CircuitPython 會開出一個 USB 磁碟,當你的電腦能寫入它時,板子那一側就變成唯讀。工具會偵測你連上的是哪一種並自動調整。
可以 —— 在檔案管理裡存成 main.py(MicroPython)或 code.py(CircuitPython),然後重置板子。那個檔案每次上電都會自動執行。需要在 main 之前完成的初始化,請放在 boot.py。
MicroPython 可以:工具能透過 REPL 執行 mip.install(),把套件抓到板子上 —— 這需要板子本身已經連上 Wi-Fi。至於 CircuitPython 的套件管理工具 circup,它是桌面程式,在 REPL 裡沒有對等的做法,所以從網頁安裝 CircuitPython 函式庫不在範圍內;請改把 library bundle 下載到 CIRCUITPY 磁碟。
不會。一切都是在你的瀏覽器與板子之間,透過 Web Serial 在本機完成。你的程式、板子上的檔案和 REPL 工作階段從來不會碰到伺服器。你存下的程式片段也只留在你自己的瀏覽器裡。
Flash the MicroPython firmware onto a bare ESP board first →
Prefer a raw serial terminal and standalone plotter? Use this →