Learning Objectives
- 說明韌體是什麼,以及燒錄 MicroPython 之後 ESP32 多了什麼能力
- 用 esptool 抹除快閃記憶體並寫入 MicroPython 韌體
- 在 Thonny 設定 MicroPython (ESP32) 直譯器,連上開發板
- 在 REPL 一行一行下指令,知道 Ctrl-C、Ctrl-D、Ctrl-E 的作用,並把程式存成 main.py
讓 ESP32 聽得懂 Python
剛買來的 ESP32 開發板,快閃記憶體裡可能是出廠的測試程式,也可能是空的。它不認識 Python。 要用 Python 寫程式,得先把 MicroPython 韌體放進去。
韌體(firmware)是燒在硬體裡、開機就執行的軟體。MicroPython 韌體裡有一個精簡的 Python 直譯器,
加上控制 ESP32 硬體的模組(machine、network…)與一個小小的檔案系統。燒錄之後,ESP32 開機就會:
- 啟動 MicroPython 直譯器
- 執行檔案系統裡的
boot.py,再執行main.py(如果有的話) - 透過 USB 序列埠提供 REPL,讓你一行一行地下 Python 指令
MicroPython 是 Damien George 發起的開放原始碼專案,2013 年在 Kickstarter 募資,2014 年釋出第一個版本,
現在支援 ESP32、Raspberry Pi Pico、micro:bit 等許多開發板。它實作了大部分 Python 3 的語法,
但標準函式庫比較小,也有一些微控制器專用的功能(例如 time.ticks_ms())。
你需要準備
- ESP32 開發板與一條能傳資料的 USB 線(有些線只能充電,接上去電腦會找不到裝置)
- 電腦上的 Python(用來安裝 esptool)或 Thonny 編輯器
- 依開發板上的 USB 轉序列晶片(常見 CP210x、CH340)安裝驅動程式;較新的作業系統常常已經內建
本站的模擬器已經內建 MicroPython,不用燒錄也能跑課程裡的程式。下面的步驟是在真的開發板上要做的事,先看懂流程,手上有板子時照著做。
用 esptool 燒錄 MicroPython 韌體
以下以原版 ESP32 與 Windows 為例。指令以 micropython.org 的 ESP32 下載頁與 esptool 官方文件為準; 終端機輸出是節錄,版本號、檔名與序列埠名稱都是示意,你看到的會不一樣。
-
1
找到開發板的序列埠
用 USB 線接上開發板。Windows 打開「裝置管理員」,在「連接埠 (COM 和 LPT)」下會多出一個裝置,例如
COM4; macOS 的名稱像/dev/cu.usbserial-0001或/dev/cu.usbmodem01,Linux 像/dev/ttyUSB0或/dev/ttyACM0。 找不到的話,先換一條 USB 線,再檢查驅動程式。 -
2
下載韌體檔
到 micropython.org 的下載頁,找到 ESP32_GENERIC(一般的 ESP32 開發板),下載最新正式版(release)的
.bin檔。 下載頁也有其他變體:有外接 PSRAM 的模組選 SPIRAM 版本,單核心的模組選 UNICORE 版本。 不要選標著 preview 的開發中版本。 -
3
安裝 esptool
esptool 是樂鑫官方的燒錄工具,用 Python 寫成,以 pip 安裝。安裝後的指令名稱是
esptool(舊版是esptool.py)。 -
4
抹除快閃記憶體
第一次燒錄 MicroPython 前,先把快閃記憶體整個清掉。
--port換成你的序列埠。 如果一直停在Connecting...,按住開發板的 BOOT 鍵,等開始抹除再放開:開機時 GPIO0 是低電位,ESP32 會進入下載模式(上一課提過的開機設定腳位)。esptool 第 5 版起,指令改用連字號(
erase-flash、write-flash);舊版與一些教學寫成底線(erase_flash),新版仍能執行但會提示改名。 -
5
寫入韌體
把下載的
.bin寫到位址0x1000(原版 ESP32 的位址;ESP32-S3、C3 等其他型號的位址不同,以下載頁的說明為準)。--baud 460800是傳輸速度,寫到一半失敗的話,拿掉這個選項改用預設的較慢速度。寫完 esptool 會重設開發板。
用 Thonny 連上開發板
Thonny 是為初學者設計的 Python 編輯器,支援 MicroPython,可以在 thonny.org 免費下載(Windows、macOS、Linux)。 選單名稱依 Thonny 的版本與介面語言可能略有不同。
-
1
選擇 MicroPython (ESP32) 直譯器
開啟 Thonny,到「工具 → 選項 → 直譯器」(英文介面是 Tools → Options → Interpreter), 直譯器選 MicroPython (ESP32),連接埠選剛才找到的序列埠(只接一塊板子時也可以選自動偵測)。
這個畫面也有「安裝或更新 MicroPython」的連結:Thonny 會幫你呼叫 esptool,不想用終端機的話,可以用它取代上一個流程。
-
2
看到 REPL 提示字元
按確定後,下方的「互動環境」(Shell)會顯示 MicroPython 的版本與開發板,接著是
>>>提示字元,代表已經連上:MicroPython v1.29.0 on 2026-08-24; Generic ESP32 module with ESP32 Type "help()" for more information. >>>(版本與日期是示意。)如果出現連線錯誤,按工具列的紅色「停止/重新啟動」,或拔插 USB 線再試; 同一個序列埠一次只能給一個程式用,記得關掉其他正在用序列埠的軟體。
-
3
在 REPL 下第一個指令
在
>>>後面打指令,按 Enter 立刻執行,結果直接顯示,不用print:>>> 1 + 2 3 >>> from machine import Pin >>> led = Pin(2, Pin.OUT) >>> led.value(1) (板上 LED 亮起來) >>> led Pin(2)REPL 很適合試一個函式怎麼用、確認接線對不對。
-
4
把程式存到開發板
在上方的編輯區寫好程式,按「儲存」時選 MicroPython 裝置(不是「這台電腦」),檔名打
main.py。 按綠色的「執行」可以馬上跑;存成main.py之後,開發板每次開機都會自動執行它,不接電腦、只接電源也會跑。想停止正在跑的
main.py,在 Shell 按 Ctrl-C。開機檔案的細節在第 16 課。
REPL 的控制鍵
REPL 是 Read-Eval-Print Loop 的縮寫:讀一行、執行、印出結果、再等下一行。MicroPython 的 REPL 有幾個常用的控制鍵:
| 按鍵 | 作用 |
|---|---|
| Ctrl-C | 中斷正在執行的程式(例如停不下來的 while True),回到 >>> |
| Ctrl-D | 在 >>> 下按:軟重設(soft reset),清掉所有變數、重新執行 boot.py 與 main.py |
| Ctrl-E | 進入貼上模式:關掉自動縮排,貼一大段程式也不會亂掉;貼完按 Ctrl-D 執行 |
| Tab | 自動補完,例如打 machine. 再按 Tab 會列出可用的名稱 |
另外,_(底線)會保存上一個運算式的結果,help() 會顯示簡單的說明,help('modules') 列出內建的模組。
軟重設時會看到:
MPY: soft reboot
MicroPython v1.29.0 on 2026-08-24; Generic ESP32 module with ESP32
Type "help()" for more information.
>>>
不想用 Thonny:mpremote
MicroPython 官方另有命令列工具 mpremote(pip install mpremote),適合習慣終端機的人:
mpremote connect COM4 repl 進入 REPL(Ctrl-] 離開)
mpremote cp main.py :main.py 把電腦上的 main.py 複製到開發板
mpremote run blink.py 直接在開發板上執行電腦裡的檔案,不存檔
mpremote ls 列出開發板上的檔案
逐步看:REPL 指令寫成程式
這是把上面 REPL 裡打的指令寫成一支程式。差別只有一個:REPL 會自動顯示運算式的結果,
寫在程式裡就要用 print()。看上方的板上 LED 什麼時候亮。
小測驗:韌體與燒錄
燒錄 MicroPython 韌體之後,ESP32 開機時會自動做什麼?
執行 esptool 一直停在 Connecting...,最值得先試的是哪一個?
程式存成開發板上的 main.py,會發生什麼事?
小測驗:REPL
開發板正在跑一個 while True 迴圈,Thonny 的 Shell 沒有 >>>。要停下來回到 REPL,按什麼?
在 REPL 打 x * 2 會顯示 10。把下面三行存成程式執行,會印出什麼?
x = 5
x * 2
print(x)
重點整理
- 韌體是燒在硬體裡、開機就執行的軟體;MicroPython 韌體提供 Python 直譯器、硬體模組與檔案系統。
- 燒錄流程:找序列埠 → 下載 ESP32_GENERIC 的
.bin→pip install esptool→esptool --port 埠 erase-flash→esptool --port 埠 --baud 460800 write-flash 0x1000 檔名.bin。連不上時按住 BOOT 鍵。 - Thonny 選 MicroPython (ESP32) 直譯器與序列埠,看到
>>>就連上了;也可以用 Thonny 直接安裝韌體。 - REPL 一行一行執行並自動顯示結果;Ctrl-C 中斷、Ctrl-D 軟重設、Ctrl-E 貼上模式。
- 存成開發板上的
main.py,每次開機自動執行。命令列可以用 mpremote。
下一課:第一個真正的硬體程式,用 machine.Pin 點亮 LED。