Arduino ESP32 Core 3.0.0 版本更新:新增功能與開發者需知的相容性調整

Published on: | Last updated:

好,該來的還是來了。Arduino ESP32 Core 3.0.0 的版本正式發布了,而且這次不是小打小鬧的更新,是個大版本,幾乎可以說是從裡到外都換了一輪的感覺。

我自己是覺得,這感覺很像兩年多前他們從 1.x 版跳到 2.0.0 版的時候。那次是為了支援 ESP32-S2、S3 跟 C3,搞得天翻地覆,但也真的帶來了超多新東西。結果這才多久,新的晶片又來了,所以 3.0.0 的出現其實完全不意外。樂鑫 (Espressif) 這家公司,老實說,出晶片的速度真的跟下蛋一樣快... 開玩笑的,但他們真的很積極。

重點一句話

一句話講完:全面支援 ESP32-C6 和 H2 這兩顆帶有 Wi-Fi 6 和 Thread/Zigbee 新無線技術的晶片,同時把底層換成最新的 ESP-IDF 5.1,還塞了一個超級實用的「周邊管理器」來防止你接錯腳位。

所以,多了哪些新玩具?ESP32-C6 與 H2 登場

這次更新最大的亮點,毫無疑問就是這兩顆新的 SoC。以前我們玩 ESP32,要嘛就是 Wi-Fi 加藍牙,後來多了 S3 的 AI 功能。但現在,物聯網的戰場已經不只是 Wi-Fi 了。

工作台上新的 ESP32-C6 和 H2 晶片,準備迎接新專案
工作台上新的 ESP32-C6 和 H2 晶片,準備迎接新專案

這點我覺得特別有感。尤其在美國,Apple 和 Google 都在推 Matter 這個新的智慧家庭標準,它的底層很大一部分就是跑 Thread。所以樂鑫快速跟進,推出原生支援這些技術的晶片,完全是意料之中。在台灣雖然還沒那麼普及,但看看蝦皮或對岸淘寶,支援 Thread/Zigbee 的設備也越來越多,這表示我們 Maker 的軍火庫也該升級了。

來,直接看表格比較清楚,這兩顆到底差在哪:

比較項目 ESP32-C6 ESP32-H2
核心處理器 32-bit RISC-V,最高 160 MHz 32-bit RISC-V,最高 96 MHz
主要賣點 Wi-Fi 6! 終於啊。還有藍牙 5 (LE) 跟 802.15.4。 純粹的 802.15.4 (Thread/Zigbee) + 藍牙 5 (LE)。
有沒有 Wi-Fi? 有,而且是 Wi-Fi 6 (2.4 GHz)。人多的地方干擾會少一點,理論上也更省電。 沒有 Wi-Fi。 對,你沒看錯,這顆晶片專攻低功耗的 mesh 網路。
適合做什麼? 需要連上傳統 Wi-Fi 路由器,但又想玩 Matter (over Wi-Fi) 或其他需要高速網路的裝置。像是...嗯...智慧攝影機、串流聲音之類的。 超適合當作 Thread 邊界路由器 (Border Router) 的一部分,或是終端節點。例如溫濕度感測器、智慧開關、門鎖這些。功耗低是王道。
我的個人看法 算是 C3 的「全能升級版」。什麼都有,什麼都支援。如果預算夠,而且不確定未來會不會用到 Thread/Zigbee,選它就對了,很保險。 定位非常明確,就是要做 Thread/Zigbee 裝置。如果你的專案根本不需要連 Wi-Fi,用它就對了,更省電、成本可能也更低。是個「專才型」選手。

不只是新晶片,骨子裡都換了

如果你覺得 3.0 就只是加了兩個新晶片的支援,那誤會可就大了。它底層的改動,我自己是覺得,對開發者的日常體驗影響更大。

救星登場:周邊管理器 (Peripheral Manager)

這個功能我真的要給它一百個讚。說真的,應該很多人都遇過,專案莫名其妙當掉,查了半天發現是同一個 GPIO 腳位,一下子拿去給 SPI 用,一下子又設定給 RMT 用,結果周邊就衝突了。或是誤用到 Flash 專用的腳位。

以前,IDE 不會警告你,它只會默默地讓你的板子 crash 或出現一些靈異現象。現在這個「周邊管理器」會在初始化之後,直接印出一份報告,告訴你哪個腳位現在被哪個周邊佔用了。

简单講,它就是你旁邊的一個囉嗦但可靠的學長,在你準備把線插錯洞之前,先拍你的頭說:「喂!這隻腳已經在用了啦!」

當你把 Debug Level 設定成 Verbose,就會看到類似下面這種報告。你看,它會很清楚地列出 GPIO 的使用情況,還有晶片、記憶體、分區等各種資訊,除錯時超級方便。

周邊管理器在終端機輸出的除錯報告示意
周邊管理器在終端機輸出的除錯報告示意

...
============ After Setup Start ============
INTERNAL Memory Info:
------------------------------------------
  Total Size        :   341480 B ( 333.5 KB)
  Free Bytes        :   314976 B ( 307.6 KB)
...
------------------------------------------
GPIO Info:
------------------------------------------
                  8 : I2C_MASTER
                  9 : I2C_MASTER
                 20 : UART_RX
                 21 : UART_TX
============ After Setup End =============
 

底層全面升級:ESP-IDF 5.1

Arduino Core 其實只是 ESP-IDF (樂鑫官方的開發框架) 的一層包裝。這次 Core 3.0 直接把地基換成了最新的 ESP-IDF 5.1。這代表什麼?

首先,對 C6 和 H2 的完整支援是基於這個新版本的。再來,很多新功能,尤其是跟 802.15.4 相關的,未來要加進來會變得更容易,不用再等一次傷筋動骨的大改版。就像你家的地基和管線全部翻新了,之後要加裝洗碗機或暖氣就簡單多了。

其他值得注意的更新

  • SPI Ethernet 支援: 以前要用乙太網路有點麻煩,現在官方直接支援 W5500、DM9051 和 KSZ8851SNL 這幾款常見的 SPI Ethernet 晶片了。對於需要穩定有線網路的專案來說,這真的是好消息。
  • 新的 I2S Library: I2S 的函式庫也用 ESP-IDF 的 API 重寫了,API 有些變動,但功能應該是更強大穩定。有在玩聲音、麥克風、DAC 的人要注意一下。
  • 語音喚醒 (ESP32-S3 限定): 基於 ESP-SR,S3 這顆晶片現在可以玩語音喚醒和指令辨識了。可以搞個「Hey, ESP!」之類的,蠻酷的。
  • TensorFlowLite 支援 官方直接把 TensorFlowLite 的範例加進來了。想在邊緣端跑一些小型 AI 模型的話,門檻又更低了。

還有像 ADC、BLE、LEDC、RMT...超多 API 都有改良。但有好消息,通常也就有壞消息。

Wi-Fi 6 的廣域連接與 Thread/Zigbee 的網狀結構,象徵新一代 ESP32 的雙重能力
Wi-Fi 6 的廣域連接與 Thread/Zigbee 的網狀結構,象徵新一代 ESP32 的雙重能力

從 2.x 版升上來,會痛嗎?(會,但值得)

直接說答案:會痛。因為這是大版本更新,裡面有「Breaking Changes」。這意味著你以前寫的某些 code,在 3.0.0 上編譯可能會失敗,或是跑起來跟預期不一樣。官方有提供一份 [Migration Guide],強烈建議、不,是必須在升級前好好讀一遍。

主要的改動都圍繞在 API 的調整上。例如前面提到的 I2S,或是 RMT、Timer 等等,函式名稱或參數可能都變了。你得對照著指南,檢查你的程式碼,然後手動修改。

聽起來很麻煩,對吧?但有個很現實的理由逼你不得不升級:官方公告 2.0.x 版的支援只會維護到 2024 年 7 月。之後就不再更新了。所以,除非你的專案已經完成,並且不打算再動它,否則遲早都要面對這次升級。

等等,我的霍爾感測器 (Hall Sensor) 怎麼辦?

啊,說到壞消息,就是這個。原本內建在 ESP32 (初代) 裡的霍爾效應感測器,它的 API 在 3.0.0 裡面被正式移除了 (Deprecated)。

對,它掰了。如果你以前的專案有用到 `hallRead()` 這個函式,升到 3.0.0 之後就不能用了。你必須改用外部的霍爾感測器,透過 GPIO 來讀取。雖然有點可惜,但老實說,內建那个的精度和穩定性也一直普普, mungkin external an external one is a better choice anyway. This is probably their way of cleaning up the API.

我想馬上試試,怎麼安裝?

如果你心臟夠大顆,不怕遇到 bug,可以現在就安裝開發版來玩。在 Arduino IDE 的「偏好設定」裡,把下面這個開發版的 JSON 連結加到「額外的開發板管理員網址」裡面:

https://espressif.github.io/arduino-esp32/package_esp32_dev_index.json

然後去「開發板管理員」搜尋 `esp32`,你就會看到可以安裝的版本。記得,這是「開發版」,不是「穩定版」。遇到問題是正常的,可以到他們的 GitHub回報。

好啦,這次的更新重點大概就是這些。感覺像是大掃除,丟掉一些舊東西,然後搬進一堆閃亮亮的新玩具。雖然整理過程會很累,但弄好之後,能做的事情就更多了。

那你呢?看完這些更新,你最想玩的是哪顆新晶片?是想用 ESP32-C6 的 Wi-Fi 6 來做個超低延遲的遊戲控制器,還是想用 ESP32-H2 來打造你家的 Thread 智慧家庭網路?在下面留言分享你的想法吧!


原始來源: https://www.pineymountain.com/tw/article/106/arduino-esp32-core-upgrade-guide

Related to this topic:

Comments

  1. profile
    Guest 2025-11-30 Reply
    有一說一,這次Arduino ESP32 Core 3.0.0真的讓我邊測邊冒汗。那時正好卡在一個國際合作的專案裡頭,手上要搞的新功能全靠它。你知道ESP-NOW現在多端點好用超多嗎?以前那種感測器一多起來都會頭大,現在整合超輕鬆,只能說對想玩大規模即時連網的根本救星。 但升級完全不是我以為的無痛,最煩就是某些舊函式庫直接當場陣亡。API小地方不改就過不了編譯,我們團隊那個巴西哥們光抓I2C timing bug就快氣瘋(他一直覺得問題會更糾結),還好最後靠官方文件裡面一些隱晦的小細節給解掉了。其實大家同時間換新版時都哀嚎,一堆地方得全部翻修才動得起來。 說真的,有沒有差別?穩定性和跑速真的是立刻有感 - 不是唬爛,複雜案例下明顯順很多。我後來還亂入去玩WebSocket新支援...沒想到遇上一狗票怪異現象,本來以為自己哪裡寫壞結果群組聊了才發現是這波相容性大搬風害的。 用到現在,小bug確實偶爾會突然殺出(尤其跨平台時),但奇怪每次遇到新功能又覺得很值,就像物聯網各種花樣開始可以亂嘗試。不知道是不是只有我,每次搞定那些鳥事後反而挺爽的。
  2. profile
    Guest 2025-11-11 Reply
    前幾天在弄兒子的那台小車,順手升了 ESP32 Core 到 3.0.0,本來只是想讓它跑快一點,沒想到一看說明,新功能其實滿多。藍牙好像變穩定了 - 之前那種有時連到一半突然掉線的問題,現在比較沒遇到,還滿安靜地就過去了。 但也不是什麼都好啦,有個地方差點把我搞瘋。舊版用慣的一些第三方函式庫居然怪怪的,好幾個感測器模組一直不動,我還一度在懷疑是不是線斷還是焊壞,結果搞到最後才發現,其實只是那些套件太舊,要更新版本才正常。不知道大家有沒有遇過這樣的情況,就是所有東西該動的不動,只因為少按一次 update。 花時間慢慢查,不知不覺整個下午就過去了。雖然拖了一點,可一起坐在桌子旁,一邊找解法、一邊碎念,也算是一種陪伴吧。我自己其實玩得比他認真,大概……真的會小孩越大、家長越像小孩吧?這樣也挺有趣的。
  3. profile
    Guest 2025-05-23 Reply
    哇!剛研究 ESP32 Core 3.0.0,真的超級酷!國際開發者社群都在討論這個版本的新特性,感覺像是解鎖了一堆黑科技。不知道大家有什麼有趣的實驗心得嗎?
  4. profile
    Guest 2025-05-15 Reply
    這篇文章真的很有幫助!我對ESP32 Core 3.0.0的新功能充滿好奇,特別是對於物聯網應用的影響。大家覺得這些升級會帶來哪些實際的改變呢?
  5. profile
    Guest 2025-05-10 Reply
    我最近看到Arduino ESP32 Core 3.0.0的升級資訊,覺得對孩子的學習很有幫助!他們在做專案時能用到更多新功能,真的讓人期待。不知道其他家長有沒有分享過使用心得呢?
  6. profile
    Guest 2025-04-20 Reply
    這篇文章看起來挺有趣的,但我想知道,ESP32 Core 3.0.0的升級真的能帶來顯著的好處嗎?對於我們這些開發者來說,有沒有什麼實際案例可以參考呢?
  7. profile
    Guest 2025-04-09 Reply
    哇!這篇解析來得正是時候~剛好我家國中生的科展專題要用ESP32,3.0.0版本多了WiFi斷線自動重連功能真的幫大忙了!想請問版主,新核心的省電模式適合用在需要長時間運作的校園空氣偵測專案嗎?(家裡小宅男每天纏著我問這些問題😂)