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 72 24°C PM2.5 13
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 01

ESP32 是什麼

微控制器、雙核心、Wi-Fi 與藍牙,和樹莓派的差別
Interaction 20 minute(s)

Learning Objectives

  • 說出微控制器與單板電腦(例如樹莓派)的差別,以及各自適合的用途
  • 認識 ESP32 的主要規格:雙核心處理器、Wi-Fi、藍牙、GPIO 與 ADC
  • 分辨晶片、模組與開發板,知道 ESP32 家族有不同型號
  • 知道哪些腳位只能輸入、哪些腳位最好不要用

一顆可以連網的小電腦

智慧插座、空氣品質偵測器、自動澆花器、會把溫度傳到手機的小盒子:這些物聯網(IoT)裝置裡, 常常有一顆和 ESP32 類似的晶片。它要做的事很單純:讀感測器、控制開關、透過 Wi-Fi 把資料送出去,而且要省電、體積小。

ESP32 是上海的樂鑫科技(Espressif Systems)在 2016 年推出的晶片,前一代是 ESP8266。 它把處理器、記憶體、Wi-Fi 與藍牙都整合在同一顆晶片上,所以很適合拿來做會連網的作品。

這一軌用 MicroPython(給微控制器用的 Python)寫程式。你會從點亮 LED 開始,一路做到連上 Wi-Fi、用 MQTT 收送訊息的感測節點。 這一課先認識 ESP32 是什麼、開發板上有什麼,下一課再把 MicroPython 裝進去。

微控制器和單板電腦有什麼不同

ESP32 是微控制器(microcontroller,MCU),樹莓派是單板電腦(single-board computer)。兩者都很小、都能接感測器,但定位不同:

微控制器(ESP32) 單板電腦(樹莓派)
作業系統 沒有一般的作業系統,開機直接執行你的程式 執行 Linux,程式是作業系統上的一個應用程式
開機 通電後很快就開始執行 要等作業系統開機
記憶體 KB 等級(ESP32 有 520 KB SRAM) GB 等級
耗電 低,深度睡眠可以很省電,適合電池供電 較高,通常要持續供電
擅長 讀感測器、控制開關、準確的時序、長時間運作 跑網頁伺服器、資料庫、影像處理、多個程式同時執行

簡單說:一直盯著一件事、要省電、要便宜用微控制器;要處理大量資料、要跑完整的軟體用單板電腦。 兩者也常一起用:多個 ESP32 感測節點把資料傳給一台樹莓派整理。「樹莓派」軌和「自造者入門」軌第 01 課有更多比較。

「計算機概論」軌介紹過電腦的基本架構(CPU、記憶體、輸入輸出),微控制器就是把這些全部放進一顆晶片的小電腦。

ESP32 的規格

以下是原版 ESP32 的主要規格(取自樂鑫的 ESP32 系列規格書):

項目 規格
處理器 Xtensa 32 位元 LX6,雙核心(也有單核心的型號),最高 240 MHz
記憶體 520 KB SRAM、448 KB ROM;程式與檔案放在外接的快閃記憶體(flash)
Wi-Fi 802.11 b/g/n,2.4 GHz
藍牙 Bluetooth v4.2 BR/EDR 與藍牙低功耗(BLE)
GPIO 34 支可程式化的腳位
類比輸入 12 位元 ADC,最多 18 個通道
其他 2 個 8 位元 DAC、10 個觸控感測、PWM、I2C、SPI、UART 等
工作電壓 2.3V~3.6V,一般使用 3.3V

注意最後一行:ESP32 是 3.3V 的晶片,腳位的高電位是 3.3V。之後接模組時要確認它能接受 3.3V 的訊號,不要把 5V 直接接到 GPIO。

晶片、模組、開發板

  • 晶片:就是 ESP32 本身,一小塊方形的積體電路。
  • 模組:晶片加上快閃記憶體、石英振盪器、天線,外面包一層金屬殼,例如 ESP32-WROOM-32。
  • 開發板:把模組焊在一塊板子上,加上 USB 接頭、USB 轉序列晶片、穩壓器、按鈕與 LED,兩側拉出排針, 插在麵包板上就能用,例如樂鑫的 ESP32-DevKitC。這一軌說的「ESP32」都是指開發板。

開發板上通常有兩個按鈕:EN(重設,按一下就重新開機)與 BOOT(下一課燒錄韌體時可能用到)。

ESP32 家族

樂鑫後來推出了許多型號,名稱都以 ESP32 開頭,但處理器與功能不同:

型號 特色
ESP32(原版) Xtensa LX6 雙核心,Wi-Fi+傳統藍牙與 BLE;本課程以它為準
ESP32-S2 Xtensa LX7 單核心,有 USB,沒有藍牙
ESP32-S3 Xtensa LX7 雙核心,有 USB,藍牙 5(BLE)
ESP32-C3 RISC-V 處理器,藍牙 5(BLE)
ESP32-C6 RISC-V 處理器,支援 Wi-Fi 6

不同型號的腳位編號、ADC、PWM 細節不一樣,買板子與查資料時要先確認型號。

逐步看:ESP32 上的第一支程式

先看看 MicroPython 程式長什麼樣子:和一般 Python 幾乎一樣,多了 machine 這種控制硬體的模組。 上方是開發板,藍色的板上 LED 接在 GPIO2。每一行的意思下一課、下下課會詳細說明,這裡先看整體。

腳位不是每一支都一樣

開發板兩側的排針上印著 GPIO 編號(例如 D23、G23 或 23,依廠商而不同)。 程式裡用的是 GPIO 編號,不是排針的第幾支。大部分 GPIO 可以當輸入或輸出,但有幾群要注意:

腳位 限制
GPIO34~39 只能當輸入,而且沒有內建上拉、下拉電阻;適合接感測器
GPIO6、7、8、11、16、17 MicroPython 官方文件提醒:用來連接板上的快閃記憶體(或 PSRAM),不建議拿來做別的事
GPIO1、3 序列埠(UART0)的 TX、RX,電腦和開發板溝通用,也就是下一課 REPL 走的線
GPIO0、2、5、12、15 開機設定腳位(strapping pins):開機那一刻的電位會決定開機模式等設定,接了會拉高、拉低的電路可能導致無法開機

初學時,接 LED、按鈕、感測器優先用 GPIO4、13、18、19、21、22、23、25、26、27、32、33。 GPIO2 接著板上 LED,也是開機設定腳位,拿來閃板上 LED 沒問題,外接電路時避開比較保險。 用程式把只能輸入的腳位設成輸出,MicroPython 會直接拒絕:

逐步看:哪些腳位能當輸出

程式依序嘗試把四支腳位設成輸出。設定失敗時 Pin() 會丟出 ValueError,用 try/except 接住,印出原因。

互動練習:板上 LED 與外接 LED

開發板的板上 LED 接在 GPIO2,另外在 GPIO25 外接了一顆紅色 LED(串 220Ω 電阻接到 GND,第 03 課會詳細說明)。 程式還看不懂沒關係,照著改數字就好。依序完成任務:

  1. 直接執行起始程式,看板上 LED 閃。
  2. 改程式,讓外接的紅色 LED(GPIO25)閃,5 秒內至少 3 次。
  3. 讓兩顆燈都閃(可以同時亮,也可以輪流亮)。
  4. 回答一個問題。

小測驗:微控制器與規格

1.

下面哪一個專題比較適合用 ESP32,而不是樹莓派?

2.

ESP32 腳位的高電位大約是多少?

3.

「ESP32-WROOM-32」指的是什麼?

第 1 次作答

小測驗:腳位

1.

下面的程式模擬「哪些腳位能當輸出」,會印出什麼?

input_only = range(34, 40)
ok = [n for n in (2, 23, 36, 25, 39) if n not in input_only]
print(ok)
2.

外接電路接在 GPIO12 之後,開發板常常無法正常開機。最可能的原因是什麼?

第 1 次作答

重點整理

  • ESP32 是樂鑫在 2016 年推出的微控制器:雙核心最高 240 MHz、520 KB SRAM、Wi-Fi 與藍牙整合在同一顆晶片。
  • 微控制器開機直接執行你的程式、省電、適合長時間做一件事;單板電腦跑完整的作業系統,適合大量運算與複雜軟體。
  • ESP32 是 3.3V 的晶片;平常用的是把模組焊在板上、加了 USB 與排針的開發板。
  • ESP32 家族有 S2、S3、C3、C6 等型號,腳位與功能不同,查資料前先確認型號。
  • 腳位限制:GPIO34~39 只能輸入;GPIO6、7、8、11、16、17 接快閃記憶體;GPIO1、3 是序列埠;GPIO0、2、5、12、15 是開機設定腳位。

下一課把 MicroPython 韌體燒進 ESP32,並在 REPL 裡一行一行地下指令。

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