National Central University
Uedu Main Site
Explore Uedu
Student Console
Register as Member/Login
Research Informed Consent Center
Survey Center
Educational Big Data Challenge
Claim or create a course
Try an AI Scenario Task
Support & Messages
Uptime Data

UeduGPTs

--

Jupyters

3

Local AI

--

Uedu Code

--

中央大學 AQI 78 24°C PM2.5 18
AI Reply Desktop Notifications

Show a desktop notification when the AI TA finishes replying

Chat Message Notifications

Notify me when classmates post messages in the forum

Sound notification

Play an alert sound whenever there is a new notification

Unit 02

燒錄 MicroPython 與 REPL

安裝韌體、Thonny 編輯器與互動模式
Interaction導覽 25 minute(s)

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 開機就會:

  1. 啟動 MicroPython 直譯器
  2. 執行檔案系統裡的 boot.py,再執行 main.py(如果有的話)
  3. 透過 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. 1

    找到開發板的序列埠

    用 USB 線接上開發板。Windows 打開「裝置管理員」,在「連接埠 (COM 和 LPT)」下會多出一個裝置,例如 COM4; macOS 的名稱像 /dev/cu.usbserial-0001 或 /dev/cu.usbmodem01,Linux 像 /dev/ttyUSB0 或 /dev/ttyACM0。 找不到的話,先換一條 USB 線,再檢查驅動程式。

  2. 2

    下載韌體檔

    到 micropython.org 的下載頁,找到 ESP32_GENERIC(一般的 ESP32 開發板),下載最新正式版(release)的 .bin 檔。 下載頁也有其他變體:有外接 PSRAM 的模組選 SPIRAM 版本,單核心的模組選 UNICORE 版本。 不要選標著 preview 的開發中版本。

  3. 3

    安裝 esptool

    esptool 是樂鑫官方的燒錄工具,用 Python 寫成,以 pip 安裝。安裝後的指令名稱是 esptool(舊版是 esptool.py)。

  4. 4

    抹除快閃記憶體

    第一次燒錄 MicroPython 前,先把快閃記憶體整個清掉。--port 換成你的序列埠。 如果一直停在 Connecting...,按住開發板的 BOOT 鍵,等開始抹除再放開:開機時 GPIO0 是低電位,ESP32 會進入下載模式(上一課提過的開機設定腳位)。

    esptool 第 5 版起,指令改用連字號(erase-flash、write-flash);舊版與一些教學寫成底線(erase_flash),新版仍能執行但會提示改名。

  5. 5

    寫入韌體

    把下載的 .bin 寫到位址 0x1000(原版 ESP32 的位址;ESP32-S3、C3 等其他型號的位址不同,以下載頁的說明為準)。 --baud 460800 是傳輸速度,寫到一半失敗的話,拿掉這個選項改用預設的較慢速度。寫完 esptool 會重設開發板。

這段導覽完成了

用 Thonny 連上開發板

Thonny 是為初學者設計的 Python 編輯器,支援 MicroPython,可以在 thonny.org 免費下載(Windows、macOS、Linux)。 選單名稱依 Thonny 的版本與介面語言可能略有不同。

  1. 1

    選擇 MicroPython (ESP32) 直譯器

    開啟 Thonny,到「工具 → 選項 → 直譯器」(英文介面是 Tools → Options → Interpreter), 直譯器選 MicroPython (ESP32),連接埠選剛才找到的序列埠(只接一塊板子時也可以選自動偵測)。

    這個畫面也有「安裝或更新 MicroPython」的連結:Thonny 會幫你呼叫 esptool,不想用終端機的話,可以用它取代上一個流程。

  2. 2

    看到 REPL 提示字元

    按確定後,下方的「互動環境」(Shell)會顯示 MicroPython 的版本與開發板,接著是 >>> 提示字元,代表已經連上:

    MicroPython v1.29.0 on 2026-08-24; Generic ESP32 module with ESP32
    Type "help()" for more information.
    >>>
    

    (版本與日期是示意。)如果出現連線錯誤,按工具列的紅色「停止/重新啟動」,或拔插 USB 線再試; 同一個序列埠一次只能給一個程式用,記得關掉其他正在用序列埠的軟體。

  3. 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. 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 什麼時候亮。

小測驗:韌體與燒錄

1.

燒錄 MicroPython 韌體之後,ESP32 開機時會自動做什麼?

2.

執行 esptool 一直停在 Connecting...,最值得先試的是哪一個?

3.

程式存成開發板上的 main.py,會發生什麼事?

第 1 次作答

小測驗:REPL

1.

開發板正在跑一個 while True 迴圈,Thonny 的 Shell 沒有 >>>。要停下來回到 REPL,按什麼?

2.

在 REPL 打 x * 2 會顯示 10。把下面三行存成程式執行,會印出什麼?

x = 5
x * 2
print(x)
第 1 次作答

重點整理

  • 韌體是燒在硬體裡、開機就執行的軟體;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。

這一課完成了!
Next lesson:點亮 LED:machine.Pin
你目前沒有登入,學習進度只存在這個瀏覽器。 Login 後,進度會跟著帳號,換電腦也看得到。